基于leopardboard dm365的gstreamer框架实现的一些功能

一、TI在gstreamer体系下增加的插件
目录/opt/LeopardBoardDM365sdkEVAL2011Q2/proprietary/dvsdk-4_02_00_06/dvsdk/gstreamer-ti_svnr919/src
x(代表c,h)


gstticodecplugin.c  主要是注册TI提供的插件


1、插件代码:
音频解码插件 gsttiauddec1.x
音频编码插件 gsttiaudenc1.x
色彩空间转换加速器插件 gsttic6xcolorspace.x
显示插件 gsttidisplaysink2.x
用来捕获管道性能的数据的插件 gsttidmaiperf.x
video输出插件 gsttidmaivideosink.x
JPEG图像解码插件 gsttiimgdec1.x
JPEG图像编码插件 gsttiimgenc1.x
解码器插件TIViddec2 gsttividdec2.x
编码器插件TIVidenc1 gsttividdenc1.x
视频帧缩放插件 gsttividresize.x


2、一些全局定义:
定义:使用DMAI实现一个循环缓存区 gstticircbuffer.x
定义:提供一个查询平台提供到
编解码器信息到函数体 gstticodecs.x
定义:包含所有elements通用函数结构gstticommonutils.x
定义:实现把一个已经存在到DMAI缓存区
放到gstreamer缓存区,
以便给pipeline使用 gsttidmaibuffertransport.x
定义一些用来解码的函数和参数信息 gsttiquicktime_xxxx.x
3、参数定义:
特定型号芯片的配置参数,
包括插件默认的参数,
需要链接的文件的路径等 gstticodecplugin_dmxxx.cfg
xxxx平台编解码器的信息(名称) gstticodecs_xxxx.c
为TIVidenc插件准备GstBuffer
的插件,主要是把内存复制到
连续的物理缓存 gsttiprepencbuf.x


二、gstreamer体系的代码
目录/opt/LeopardBoardDM365sdkEVAL2011Q2/proprietary/gst-dmai-plugins/src/src
x(代表c,h)


  注册插件、提供主要函数 gstticodecplugin 
1、插件
dmaiaccel插件,
把gst缓存转换成dmai缓存(可能时)
或者仅仅复制数据到dmai缓存 gsttidmaiaccel.x
dmaiperf插件,
用来捕获管道性能的数据的插件 gsttidmaiperf.x
通用的缩放插件 gsttidmairesizer.x
dmai视频输出接口插件 gsttidmaivideosink.x
priority插件,
修改了线程的优先级和调度 gsttipriority.x
2、一些全局定义:
特定型号芯片的配置参数,
包括插件默认的参数,
需要链接的文件的路径等 dmxxx.cfg
定义:各种分辨率,视频格式的支持能力 cap.x
定义:音频编解码器到调用接口 gsttiauddec.x
定义:包含所有elements通用的
函数、结构 gstticommonutils.x
定义:实现把一个已经存在到DMAI缓存区
放到gstreamer缓存区,
以便给pipeline使用 gsttidmaibuffertransport.x
定义:DMAI基础上的通用解码器插件 gsttidmaidec.x
定义:DMAI基础上的通用编码器插件 gsttidmaienc.x


3、参数定义:
提供通用的图像解码器接口 gsttiimgdec.x
提供通用的图像编码器接口 gsttiimgenc.x
解析xxx文件格式的文件 gsttisupport_xxx.x
提供通用的视频解码器接口 gsttividdec.x
提供通用的视频编码器接口 gsttividenc.x
提供给所有插件使用的各分辨率参数 ittiam_caps.x
提供通用编解码器属性 ittiam_encoders.x
提供大部分TI编解码器属性 ti_encoders.x


三、目录/opt/LeopardBoardDM365sdkEVAL2011Q2/fs/apps
在这个目录,包含了gstreamer的主框架,和基本插件。

四、各插件参数


1、v4l2src参数:
默认使用的输入设备定义为:#define DEFAULT_PROP_DEVICE   "/dev/video0"
queue-size:streaming模式下驱动中缓存到数量,最小1,最大16,默认size=2,
always-copy:缓存区是否可以直接被mmap使用,默认true
input-src:选择输入源,默认留空,好像也不可以设置
chain-ipipe:使用ipipe工具链,会调用resizer,previewer驱动,默认true
force-720p-30:强制驱动工作在720p-30fps模式,默认false,leopard不支持此设置
num-buffers:输出缓存区的数量,录像时用到,决定录像文件的大小和时间长度。
2、dmaiaccel插件,
把gst缓存转换成dmai缓存(如果有必要),或者仅仅复制数据到dmai缓存,应该所用来加快速度的
   调用v4l2src之后,需要设置输出参数


3、dmaiperf插件,
提升管道的性能,数据处理速度。
engine-name:引擎名字,比如decode,encode
print-arm-load:打印cpu加载信息,默认false
4、TIDmaiVideoSink插件,
视频显示输出,
sync:时钟到同步标志
accelFrameCopy:使用硬件加速,拷贝视频帧,默认true
videoOutput:输出设备,SVIDEO,COMPOSITE,COMPONENT,DVI,LCD,AUTO
videoStd:视频格式,D1_NTSC,D1_PAL, 480P, 576P, 720P_60, 720P_50, 等


enable-last-buffer:使能最后一帧特性


5、dmaienc_h264插件
实现对数据进行h264格式的编码
encodingpreset:使用编码预置算法到类型,
0:默认,1:高质量,2:高速度,3:使用外部定义的参数
ratecontrol:使用速率控制算法,
1:恒定比特率CBR,适用视频会议
2:可变比特率,适合存储
3:通过非实时应用切换使用两种控制
4:不使用速率控制算法
5:用户定义的外部参数
intraframeinterval:内部连续的两帧之间的间隔
0:仅第一个I帧跟随所有P帧
1:无内部帧
2:连续IP序列(如果无B帧)
N:(n-1) P序列在I帧之间
idrinterval:两个连续的IDR帧间的间隔,0--2147483647,默认0
targetbitrate:目标比特率,1000-2000 0000,默认600 0000
outputBufferSize:输出缓存区大小,0 - 2147483647 Default: 0


6、qtmux多路复用器


7、queue简单的数据队列


8、rtph264pay


五、实现一些功能的常用
1、canera(mt9p031)输入,经过dmai缓存,加速,composite输出D1_NTSC
gst-launch -e v4l2src chain-ipipe=true always-copy=false  \
! dmaiaccel \
! video/x-raw-yuv,format=\(fourcc\)NV12, width=640, height=480, framerate=\(fraction\)30/1 \
!dmaiperf \
! TIDmaiVideoSink sync=false accelFrameCopy=false videoOutput=composite videoStd=D1_NTSC sync=false enable-last-buffer=false&


2、canera(mt9p031)输入,经过dmai缓存,加速,h264编码,保存到文件,mp4格式


gst-launch -e v4l2src always-copy=true chain-ipipe=true num-buffers=200 \
! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480' \
! dmaiaccel \
! dmaienc_h264 encodingpreset=2 ratecontrol=2 intraframeinterval=23 idrinterval=46 targetbitrate=6000000 \
! dmaiperf \
! qtmux \
! filesink location=test01.mp4 sync=false enable-last-buffer=false&


3、camera输入,打包成ts流,udp方式发送到网络


gst-launch -e v4l2src chain-ipipe=true always-copy=FALSE \
! 'video/x-raw-yuv,format=(fourcc)NV12,width=640,height=480,framerate=(fraction)30/1' \
! queue \
! dmaiaccel \
! dmaienc_h264 encodingpreset=2 targetbitrate=600000 maxbitrate=5000000 intraframeinterval=25 \
 outputBufferSize=5000000 ratecontrol=2 headers=true \
! dmaiperf print-arm-load=true \
! mpegtsmux \
! udpsink ts-offset = 100000000 port=1234 host=227.1.1.1 enable-last-buffer=false sync=true &
注:参数说明
1) width 640 800 1024 1280 1280 1600 1920 2048 2176
height 480 600 768 720 1024 1200 1080 1536 1944
framerate (30或60)/1 65/1 47/1 (45或23)/1 42/1 31/1 31/1 21/1 14/1
以上参数要一一对应
2)ts-offset参数与udp输出的fps和cpu使用率成反比
3)ratecontrol速率控制算法也影响udp输出的fps和cpu使用率
4)targetbitrate增大也会增加cpu到使用率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值