openH264帧类型的确定

在openh264中帧类型只有IDR帧和P帧,IDR帧的确定根据三个条件进行判定:
1、关键帧的间隔——intraPeriod,这个值在编码配置文件中进行设置;
2、是否有场景切换;
3、是否将当前帧作为IDR帧的标志,第一帧肯定是IDR帧。
只要满足三个条件中的一个就可以将该帧定位IDR帧。
针对条件1:
如果编码当前帧的索引编号FrameIndex大于等于intraPeriod,即将bIdrPeriodFlag设为true,否则为false。
针对条件2:
a. 场景切换检测出场景为LARGE_CHANGE_SCENE时,场景切换的标志bSceneChangeFlag设为true,否则为false。
b. 在编码配置文件中设置场景切换检测标志enableSceneChangeDetect为true或false。
c. 编码确定的空间层数是否小于编码配置文件中设置的空间层数。
d. 当前帧的索引编号FrameIndex是否小于VGOP_SIZE<<1。
对上述4个条件,如果满足:

if(a || !b || c || d)	
    changeFlag = false;
else
    changeFlag = bSceneChangeFlag;

帧对条件3:
将当前帧作为IDR帧的标志bEncCurFrmAsIdrFlag,在初始化层的函数中InitDqLayers()中设置该标志为true,确定第一帧为IDR帧,后续根据其他情况进行修改。

if(bIdrPeriodFlag || changeFlag || bEncCurFrmAsIdrFlag)
  iFrameType = IDR;
else
  iFrameType = P;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值