第一章 前言
第三章 有关 SPS 和 PPS 的一切
第四章 有关 Slice 的一切
第七章 帧间编码
第八章 残差的熵编码: CAVLC 和 CABAC
上一小节我们已经了解到了 NALU 中第一个字节中所包含的信息,这一个小节,我们用代码来实现一下。
之前的课程中,我们已经成功提取出来了 RBSP。现在,RBSP 的第一个字节其实就是我们要处理的数据。
RBSP rbsp;
ret = ebsp.GetRBSP(rbsp);
if(ret){
break;
}
uint8_t naluHead = rbsp.buf[0];
这一个字节的内存布局如下图:
了解了其储存方式,也就很容易把代码写出来了
int forbidden_bit = (naluHead >> 7) & 1;
int nal_ref_idc = (naluHead >> 5) & 3;
int nal_unit_type = (naluHead >> 0) & 0x1f;
https://github.com/redknotmiaoyuqiao/EyerH264Decoder/tree/main/Lesson_2_6_NALU_Head