• h264编码笔记(nal_ref_idc)


    一、nal_ref_idc定义

     X264关于nal_ref_idc的枚举定义:

              

    nal_ref_idc不等于0时,规定NAL单元的内容包含一个序列参数集,或一个图像参数集,或一个参考图像条带,或一个参考图像的条带数据分割。
    如果一个包含一个条带或条带数据分割的NAL 单元的nal_ref_idc等于0时,该条带或条带数据分割是一个非参考图像的一部分。
    对于序列参数集或序列参数集扩展或图像参数集的NAL单元,nal_ref_idc不应等于0。当一个特定的图像的一个条带或条带数据分割NAL单元的nal_ref_idc等于0,该图像的所有条带或条带数据划分NAL单元都应该等于0。
    IDR NAL单元的nal_ref_idc不应等于0,即nal_unit_type等于5的NAL单元。
    所有nal_unit_type等于6、9、10、11或12的NAL单元其nal_ref_idc都应等于0。 

    当nal_uint_type为1时,nal_ref_idc代表该帧是否被参考,若该帧没有被参考,nal_ref_idc则为0。

    在视频传输过程中,对于P帧或者B帧的nal_ref_idc为0的帧,不进行数据恢复时,不会对后续视频有影响。

    二、扩展应用

    GOP#1第一帧是IDR帧,后面接着连续的三个B帧,再后面连着P帧,再接三个B帧,循环反复。
    解码工作顺序:

    1、解码I帧;2、解码第一个P帧;3 解码前三个B帧,这3个B帧依赖于 IDR帧和第一个P帧,IDR帧和第一个P帧解码完后,才解码前三个B帧,而B帧没有被任何其他帧参考。

    这三个B帧的NAL头里面的nal_ref_idc字段就为0(NAL_PRIORITY_DISPOSABLE)。这三个B帧丢失,不会导致后续的P帧和B帧解析不出来,仅会掉帧。所以在音视频传输时,可以根据实际情况,权衡一下是否需要恢复。

  • 相关阅读:
    docker安装 akshare
    国庆放假作业2
    AI:145-智能监控系统下的行人安全预警与法律合规分析
    CPU流水线与指令乱序执行
    MySQL基本操作之创建数据库
    设计模式学习(十八):迭代器模式
    游戏模拟器成了外挂帮凶,灰产对抗再升级
    多模态模型文本预处理方式
    kubelet证书延期
    leetcode **891. 子序列宽度之和(2022.11.18)
  • 原文地址:https://blog.csdn.net/CrystalShaw/article/details/126349272