xilinx vcu 介绍

xilinx vcu 介绍
注:以下内容是总结自赛灵思的vcu文档<H.264/H.265 Video CodecUnit v1.2 Solutions> ,pg252

一、编码相关知识
1.1 I帧、P帧、B帧
● I帧即Intra-coded picture(帧内编码图像帧),不参考其他图像帧,只利用本帧的信息进行编码
● P帧即Predictive-codedPicture(预测编码图像帧),利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码
● B帧即Bidirectionallypredicted picture(双向预测编码图像帧),提供最高的压缩比,它既需要之前的图
像帧(I帧或P帧),也需要后来的图像帧(P帧),采用运动预测的方式进行帧间双向预测编码

1.2 GOP
这是图像组(Group of Pictures)的意思,表示编码的视频序列分成了一组一组的有序的帧的集合进行编码。每个GOP一定是以一个I帧开始的,但是却不一定指代的是两个I帧之间的距离。因为一个GOP内可能包含几个I帧,只有第一个I帧(也就是第一帧)才是关键帧。在程序cfg中,GOP的长度和两个I帧的距离也是两个不同参数指定的(如IntraPeriod和GOP Size或者类似的参数)。所以,两个I帧的间距不可能大于GOP的长度,一般情况是更小的。

1.3 IDR
IDR词儿的全称是Instantaneous Decoding Refresh,是在H.264中定义的结构。在H.264中,IDR帧一定是I帧,而且一定是GOP的开始,也是H.264 GOP的关键帧。但是反过来却不成立,I帧不一定是IDR帧。

1.4 GDR
GDR(Gradual Decoding Refresh),这是一种特别的P帧,每个GDR包含一个I-Slice,几个连续的GDR帧可以起到一个I帧相同的作用,但由于GDR帧的大小与P帧接近,因此可以起到平滑码率的作用,减少超大I帧对网络的冲击,减少传输延迟,同时也能起到阻隔错误的作用。

二、VCU 编码器基本结构结构

2.1 Encoder Buffer
Encoder Buffer可以存储编码用的参考帧,这些参考帧可以提前从DDR中预读取到Encoder Buffer中,这样可以降低总线带宽压力,但会降低视频质量。使能Encoder Buffer 的命令如下所示:

gst-launch-1.0 videotestsrc ! omxh265enc prefetch-buffer=true ! fakesink
2.2 编码器的输入输出数据格式
Video Codec Unit(VCU) 输入和输出都是是NV12/NV16格式的视频,Y分量存放在一块连续内存区,UV分量交替存放在Y分量后面的连续内存。具体信息,可以参考的“Source Frame Format”小节。

三、sync ip
linux sync ip驱动文件:kernel-source/drivers/staging/xlnxsync/xlnxsync.c,驱动加载成功后,会在/dev下生成xlnxsync0节点

四、vcu 编码四种延时模式
vcu的延时模式:

(1)普通延时模式:有I、P、B帧、

(2)没有重新排序的延时模式:这种模式没有B帧,因为B帧需要双向预测,会增加一帧延时。可以支持仅I帧,I帧和P帧、低延时P帧。(IPPP…IPPP…)

(3)低延时模式:这种模式下编码器的输出和解码器的输入是切片模式的,也就是说不需要等到一帧编完在送解码,编码和解码可以同步。如果是将编码的码流取走发送的话这种模式下编码和发送码流可以同步进行。但是编码器的输入和解码器的输出还是工作在帧模式,也就是说需要等到完整一帧才能编码,解码完一帧才输出。

(4)赛灵思低延时模式:这种模式下编解码器的输入输出是切片的,获取码流,编码,发送码流这三个步骤可以同步进行。这个需要sync ip支持。(IPPP…)

详细介绍参考PG252的VCU Latency Modes章节

五、vcu参数
5.1 使用Xilinx’s ultra low-latency模式

下面这段是编码器的参数配置

omxh265enc num-slices=8 control-rate=low-latency gop-mode=low-delay-p target-bitrate=25000 cpb-size=500 gdr-mode=horizontal initial-delay=250 periodicity-idr=240 filler-data=0 prefetch-buffer=true
编码参数解释见文档的“GStreamer Encoding Parameters”章节

num-slices=8:切8片编码
control-rate=low-latency:编码码率使用低延时码率
gop-mode=low-delay-p:第一帧为I帧,后面都是P帧(IPPPPP…)
target-bitrate=25000:vcu目标编码速率25000kb/s
cpb-size=500:编码图片缓存区大小
gdr-mode=horizontal:GDR帧为水平模式
initial-delay=250:
periodicity-idr=240:两个IDR帧之间有240帧
filler-data=0:
prefetch-buffer=true:使用Encoder Buffer

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值