再探HEVC——理解不同类型的I帧

本文探讨了HEVC中I帧的不同类型,包括CRA、IDR和BLA,以及它们在OpenGOP和ClosedGOP中的角色。重点解析了CRA帧的编码效率优势和可能导致的解码问题,以及RADL和RASL的概念,帮助理解HEVC视频编码和流媒体中的随机接入点。
摘要由CSDN通过智能技术生成

软编的265码流和Android MediaCodec硬编的265码流,I帧的nalu type有所不同

翻看265标准文档,可以发现I帧的nalu type分以下几种

NAL_UNIT_CODED_SLICE_BLA,       // 16   // Current name in the spec: BLA_W_LP  
NAL_UNIT_CODED_SLICE_BLANT,     // 17   // Current name in the spec: BLA_W_DLP  
NAL_UNIT_CODED_SLICE_BLA_N_LP,  // 18  
NAL_UNIT_CODED_SLICE_IDR,       // 19  // Current name in the spec: IDR_W_DLP  
NAL_UNIT_CODED_SLICE_IDR_N_LP
HEVC码流中的类型可以通过分析NAL单元头和Slice头中的信息来判断。以下是一些可能有用的代码片段: ```c++ // 定义NAL单元类型 typedef enum { NAL_UNIT_CODED_SLICE_TRAIL = 0, NAL_UNIT_CODED_SLICE_STSA = 1, NAL_UNIT_CODED_SLICE_RADL = 2, NAL_UNIT_CODED_SLICE_RASL = 3, NAL_UNIT_RESERVED_VCL_4 = 4, NAL_UNIT_RESERVED_VCL_5 = 5, NAL_UNIT_RESERVED_VCL_6 = 6, NAL_UNIT_RESERVED_VCL_7 = 7, NAL_UNIT_CODED_SLICE_IDR_W_RADL = 9, NAL_UNIT_CODED_SLICE_IDR_N_LP = 10, NAL_UNIT_CODED_SLICE_CRA = 11, NAL_UNIT_RESERVED_IRAP_VCL12 = 12, NAL_UNIT_RESERVED_IRAP_VCL13 = 13, NAL_UNIT_RESERVED_VCL14 = 14, NAL_UNIT_RESERVED_VCL15 = 15, NAL_UNIT_RESERVED_NVCL16 = 16, NAL_UNIT_RESERVED_NVCL17 = 17, NAL_UNIT_RESERVED_NVCL18 = 18, NAL_UNIT_RESERVED_NVCL19 = 19, NAL_UNIT_RESERVED_NVCL20 = 20, NAL_UNIT_RESERVED_NVCL21 = 21, NAL_UNIT_RESERVED_NVCL22 = 22, NAL_UNIT_RESERVED_NVCL23 = 23, NAL_UNIT_UNSPECIFIED_24 = 24, NAL_UNIT_UNSPECIFIED_25 = 25, NAL_UNIT_UNSPECIFIED_26 = 26, NAL_UNIT_UNSPECIFIED_27 = 27, NAL_UNIT_UNSPECIFIED_28 = 28, NAL_UNIT_UNSPECIFIED_29 = 29, NAL_UNIT_UNSPECIFIED_30 = 30, NAL_UNIT_UNSPECIFIED_31 = 31 } NalUnitType; // 解析NAL单元头的数据,获取NAL单元类型 NalUnitType nal_unit_type = (NalUnitType)((nal_unit_header[0] & 0x7E) >> 1); // 解析Slice头的数据,获取slice_type int slice_type = ((slice_header[1] >> 1) & 0x7); // 判断类型 if (nal_unit_type == NAL_UNIT_CODED_SLICE_IDR_W_RADL || nal_unit_type == NAL_UNIT_CODED_SLICE_IDR_N_LP) { // IDR } else if (slice_type == 2 || slice_type == 4) { // P } else if (slice_type == 1 || slice_type == 3) { // B } else { // 其他类型 } ``` 需要注意的是,不同的编码器可能会对类型的编码方式有所不同,因此上述代码仅供参考。在实际应用中,需要根据具体的编码器和码流格式进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhanghui_cuc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值