每一个Slice总体来看都由两部分组成,一部分作为Slice header,用于保存Slice的总体信息(如当前Slice的类型等),另一部分为Slice body,通常是一组连续的宏块结构(或者宏块跳过信息),如下图所示: 4. Slice Header结构 Slice header:中主要保存了当前slice的一些全局的信息,slice body中的宏块在进行解码时需依赖这些信息。
weighted_pred_flag,标识位,表示在P/SP slice中是否开启加权预测。 weighted_bipred_idc,表示在B Slice中加权预测的方法,取值范围为[0,2]。0表示默认加权预测,1表示显式加权预测,2表示隐式加权预测。 pic_init_qp_minus26和pic_init_qs_minus26,表示初始的量化参数。实际的量化参数由该参数、slice header中的...
首先做一下说明,slice_header()如果存在,那片头中的语法元素 pic_parameter_set_id 、 frame_num、 field_pic_flag、bottom_field_flag、 idr_pic_id、 pic_order_cnt_lsb 、 delta_pic_order_cnt_bottom 、delta_pic_order_cnt[ 0 ] 、delta_pic_order_cnt[ 1 ] 、 sp_for_switch_flag 和 slice_gr...
上图H264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成,一个片又由一个或多个宏块(MB)组成,一个宏块由多个子块组成,子块即16x16的yuv数据。宏块是作为H264编码的基本单位。 场和帧:视频的一场或一帧可用来产生一个编码图像。 片:每个图象中,若干宏块被排列成片的形式。片分...
在 H264 中完全没有 I 帧、P 帧、B 帧、IDR 帧的概念,之所以沿⽤这些说法是为了表明数据的编码模式。H264 码流的组织形式从⼤到⼩排序是:视频序列(video sequence)、图像(frame/field-picture)、⽚组(slice group)、⽚(slice)、宏块(macroblock)、⼦块(sub-block)、像素(pixel)。⼆、码流功能...
3、 NALU = NALU Header + NALU Body(通常是RBSP(Raw Byte Sequence Payload 原始字节序列载荷)数据) NALU Header = SPS + PPS + I Slice NALU Body = P/B Slice 4、 1 SPS + 1PPS + 1 SEI + 1 I帧 + N(P/B)帧 SPS(Sequence Parameter Set):SPS包含了视频序列的参数和配置信息,如编码标准、...
H264编码结构解析 H264除了实现了对视频的压缩处理之外,为了⽅便⽹络传输,提供了对应的视频编码和分⽚策略;类似于⽹络数据封装成IP帧,在H264中将其称为组(GOP, group of pictures)、⽚(slice)、宏块(Macroblock)这些⼀起组成了H264的码流分层结构;H264将其组织成为序列(GOP)、图⽚(pictrue)...
通过上图可以看到,nal_unit_type的取值除了H.264编码占用了一部分以外(取值为0~23),剩下的一部分(取值为24~31)在RTP打包时会使用。常见的RBSP数据结构类型有IDR_SLICE、SPS、PPS和SEI,它们的NAL Header取值一般如下:想了解更多精彩内容,快来关注美畅物联 更多技术分享可访问“美畅物联”官网或公众号。
SLICE Header:解析Header SLICE data:解析slice数据 MarcoBlock:怎么还原出一个宏块完整的YUV数据 macroblock_layer mb_pred 帧内预测的part的预测模式获取 CAVLC residual 残差数据获取 帧内预测的part的预测数据 和 图像数据恢复 deblocking ……待定 2.2 项目计划 ...