【目的】依赖平台硬件实现视频输入流的电子倍焦(SCALE裁剪)功能
【平台】Imx6q GPU Gstreamer1.0
【思想】电子倍焦,就是图像裁剪后的图像放大,放大可以使用软件算法,也可以使用硬件。
【软件方法】gstreamer的plugin:videoscale可以用于视频图像裁剪,但是是基于软件的,会有如下弊端:
1、纯软件的视频处理,消耗cpu非常高;
2、某些场景下,比如物理地址连续的一些plugin,如imxg2dcompositor,不支持videoscale/appsrc等形式的使用;
【间接方法】动态修改src的分辨率,来实现间接的电子倍焦效果,并且该方法最后的图像质量非常高。如果你的摄像头是FPGA等自定义数据,又不支持动态配置分辨率功能,则
可以使用下面的硬件方法。
【硬件方法】
1、使用gst-imx-plugin:imxg2dcompositor,该plugin是基于GPU-G2D的硬件混流,能够将多路视频流混合成一路视频流输出。
imxg2dcompositor的动态sink_n支持x/y_pose,width/height的属性,能够约定混流后输出的视频流的该sink_n的分辨率;
2、编写一个gstreamer-plugin模块scale_xxx,用于实现对输入视频流裁剪(降低分辨率),以及输出。需要注意,该插件的缓存物理地址要连续。
【视频流】
src -> scale_xxx -> imxg2dcompositor->sink