//gstreamer官方网站
http://gstreamer.freedesktop.org/modules/qt-gstreamer.html
视频可以成功预览
sudo gst-launch-0.10 v4l2src device=/dev/video3 sensor_name="adv7280m_a 3-0020" inputnum=1 ! video/x-r
在视频不能压缩,但能够预览时,会出现这个问题:
dce.c:459 init error: could not get plugin ioctl base:-22
与可以压缩的内核对比lsmod出来的东西,发现缺少模块
这个其实是由于内核中一些模块没有装载成功所导致的,视频压缩时用到了这些模块(按装载的先后顺序)
virtio.ko
virtio_ring.ko
virtio_rpmsg_bus.ko
remoteproc.ko
omap_remoteproc.ko
rpmsg_omx.ko
rpmsg_resmgr.ko
rpmsg_resmgr_common.ko
omap_rpmsg_resmgr.ko
omapdce.ko
omaprpc.ko
如果上述模块没有全部装载,则会导致dce 初始化出错。
解决办法是在内核重新编译后,需要根据当前的内核源码重新编译这些模块。
模块编译命令:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- M=drivers/virtio modules
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- M=drivers/remoteproc modules
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- M=drivers/rpmsg modules
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- M=drivers/staging/omaprpc modules
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- M=drivers/staging/omapdce modules
在编译模块时,可能会出现
WARNING: "set_xyz" [drivers/usb/test/xyz.ko] undefined!之类的问题
这是由于某些模块(假设为B模块)不仅依赖于内核uImage本身,而且还依赖于其他内核模块(假设为A模块),我们需要在编译A模块时产生的
Module.symvers追加到内核目录下的Module.symvers,用这个命令:
cat Module.symvers >> Kernel_DIR/Module.symvers
然后再编译B模块,就不会产生 undefined!之类的问题。