H264的POC能是负数吗?关于IntraDelay带来的先来P帧,再来IDR的效果

关于H264,有同学问,POC号必须是>=0吗? 有同学答“不一定,我见过负数的POC号!”。

下面我们来看个码流,这个码流是用JM19.1编出来的。

注意我们编的时候设置的是 pic_order_cnt_type=0,且log2_max_pic_order_cnt_lsb_minus4=0。并且在cfg中配置了IntraDelay            = 1,

最后这个IntraDelay就会将第一帧编出一个P帧,并且它的POC号是个-2。

在这个码流里,我们先设置工具显示为“显示顺序”显示,第一个截图是首帧的,有几个看点:

(1)首先它是个P帧,他的POC号是-2,而且注意,它的参考列表是List0,也就是所谓的前向参考。

虽然这个箭头是向“后”画的。如果我们把码流工具设置为解码顺序显示,将是这样的:

从这个现象来看,平时说的 “前向参考”,参考帧就是时间线上(也就是采集/显示顺序)上比当前帧要“早”。只是说的参考的List0队列而已。参考帧的显示顺序,可能是在当前帧之后的。

(2)第2个看点,就是此帧的POC是-2的时候,它的pic_order_cnt_lsb元素的值是14。因为我们设置的log2_max_pic_order_cnt_lsb_minus4为0,意味着MaxPicOrderCntLsb为16,所以POC为-2的时候,码流里将pic_order_cnt_lsb写为14非常合理。此时pic_order_cnt_lsb元素的值逢16就会折叠。具体到我们这个码流,因为是帧编码,所以该字段取值就是0,2,4,6,8,10,12,14,0,2....这些可能性。

关于pic_order_cnt_type的三种花样,想了解更多的,可以看博主其他文章哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手冲编解码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值