【发布时间】:2017-05-29 08:59:39
【问题描述】:
目前,我正在使用 Yocto/OE 在 i.mx6 嵌入式 Linux 上使用视频支持编译 PJSIP。到目前为止,我已经成功地让 PJSIP 与音频工作。 据我了解,在 Linux 上,您依赖于 SDL2 和 FFMPEG,Autotools 配置脚本应该能够自动检测所有这些。 一个问题是配置脚本无法找到 SDL2 的安装位置。即使我使用 with-sdl=... 输入路径,我也会注意到找不到 sdl-config,因此在稍后编译期间,没有任何 SDL 视频设备代码被编译。 关于 FFMPEG,PJSIP 是否也适用于 libav?我问这个问题是因为在 Yocto 中我们已经包含了 libav,而对于 FFmpeg,我们必须创建一个自定义配方。
此外,由于我无法获得自动检测所有依赖项的工具,我开始“冒险”自己在 config_site.h 中设置以下定义语句:
do_configure_prepend () {
export LD="${CC}"
echo "export CFLAGS += -D_REENTRANT -I${STAGING_INCDIR}/SDL2" > user.mak
echo "export LDFLAGS += -lSDL2" >> user.mak
echo "export LDFLAGS += -lGLESv2" >> user.mak
bbnote "enabling video support"
echo "#define PJMEDIA_HAS_VIDEO 1" > ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_OPENGL 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_OPENGL_ES 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_SDL 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_QT 1" >> ${S}/pjlib/include/pj/config_site.h
echo "#define PJMEDIA_VIDEO_DEV_HAS_FFMPEG 1" >> ${S}/pjlib/include/pj/config_site.h
}
注意:我启用/禁用了相互独立的定义语句。
我发现的是:
- 定义 PJMEDIA_VIDEO_DEV_HAS_QT:仅适用于 iOS,启用此功能无法编译
- define PJMEDIA_VIDEO_DEV_HAS_OPENGL(_ES):仅适用于 Android,启用此选项无法编译
- define PJMEDIA_VIDEO_DEV_HAS_SDL: 给出编译错误,可能是因为 sdl-config 没有运行?
- define PJMEDIA_VIDEO_DEV_HAS_FFMPEG:由于缺少 FFmpeg 头文件而导致编译错误
所以我的问题是:
关于为什么找不到 sdl2-config 的任何想法?需要吗? 我们可以将 FFmpeg 切换为 libav 吗?为什么?为什么不? 关于OpenGL,即使我们基于i.mx6的平台支持OpenGLES2,为什么我们不能使用它?为什么它可以在 Android 而不是嵌入式 Linux 上运行?
【问题讨论】:
标签: embedded-linux yocto pjsip