H.264-SPS解析

1. H.264简介
  MPEG 和 VCEG 联合开发了一个比早期研发的MPEG 和H.263性能更好的视频压缩编码标准,这就是被命名为AVC,也被称为ITU-T H.264 建议和 MPEG-4的第10 部分的标准,简称为H.264/AVC或H.264。2003年3月正式被ITU-T所通过并在国际上正式颁布。为适应高清视频压缩的需求,2004年又增加了FRExt部分;为适应不同码率及质量的需求,2006年又增加了可伸缩编码 SVC。
 
2. H.264编码格式
  H.264支持4:2:0的连续或隔行视频的编码和解码。H.264压缩与H.263、MPEG-4相比,视频压缩比提高了一倍。
H.264的功能分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer)
 
3. H.264传输
  H.264的编码视频序列包括一系列的NAL单元,每个NAL单元包含一个RBSP。编码片(包括数据分割片IDR片)和序列RBSP结束符被定义为VCL NAL单元,其余为NAL单元。典型的RBSP单元序列如图1所示。每个单元都按独立的NAL单元传送。单元的信息头(一个字节)定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据。
                 SPS  SEI  PPS  I片  图像定界符  P片 P片
                      图1 RBSP序列举例
 
4. H.264 SPS解析
 
seq_parameter_set_rbsp( ) {
C
Descriptor
     profile_idc  /*指明所用 profile */
0
u(8)
     constraint_set0_flag
0
u(1)
     constraint_set1_flag
0
u(1)
     constraint_set2_flag
0
u(1)
     constraint_set3_flag
0
u(1)
     reserved_zero_4bits /* equal to 0 */
0
u(4)
     level_idc  /*指明所用 level */
0
u(8)
     seq_parameter_set_id /*指明本序列参数集的 id 号,这个id 号将被picture 参数集引用,本句法元素的值应该在[0,31] */
0
ue(v)
     if( profile_idc = = 100 | | profile_idc = = 110 | |
          profile_idc = = 122 | | profile_idc = = 144 ) {
 
 
         chroma_format_idc
0
ue(v)
         if( chroma_format_idc = = 3 )
 
 
              residual_colour_transform_flag
0
u(1)
         bit_depth_luma_minus8
0
ue(v)
         bit_depth_chroma_minus8
0
ue(v)
         qpprime_y_zero_transform_bypass_flag
0
u(1)
         seq_scaling_matrix_present_flag
0
u(1)
         if( seq_scaling_matrix_present_flag )
 
 
              for( i = 0; i < 8; i++ ) {
 
 
                  seq_scaling_list_present_flag[ i ]
0
u(1)
                   if( seq_scaling_list_present_flag[ i ] )
 
 
                       if( i < 6 )
 
 
                           scaling_list( ScalingList4x4[ i ], 16,
                                                UseDefaultScalingMatrix4x4Flag[ i ])
0
 
                       else
 
 
                           scaling_list( ScalingList8x8[ i – 6 ], 64,
                                                UseDefaultScalingMatrix8x8Flag[ i – 6 ] )
0
 
              }
 
 
     }
 
 
     log2_max_frame_num_minus4  /*这个句法元素主要是为读取另一个句法元素frame_num 服务*/
0
ue(v)
     pic_order_cnt_type
0
ue(v)
     if( pic_order_cnt_type = = 0 )
 
 
         log2_max_pic_order_cnt_lsb_minus4
0
ue(v)
     else if( pic_order_cnt_type = = 1 ) {
 
 
0
u(1)
         offset_for_non_ref_pic
0
se(v)
         offset_for_top_to_bottom_field
0
se(v)
         num_ref_frames_in_pic_order_cnt_cycle
0
ue(v)
         for( i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++ )
 
 
              offset_for_ref_frame[  i ]
0
se(v)
     }
 
 
     num_ref_frames
0
ue(v)
     gaps_in_frame_num_value_allowed_flag
0
u(1)
     pic_width_in_mbs_minus1
0
ue(v)
     pic_height_in_map_units_minus1
0
ue(v)
     frame_mbs_only_flag
0
u(1)
     if( !frame_mbs_only_flag )
 
 
         mb_adaptive_frame_field_flag
0
u(1)
     direct_8x8_inference_flag
0
u(1)
     frame_cropping_flag
0
u(1)
     if( frame_cropping_flag ) {  /*解码器是否要将图像裁剪后输出,如果是,后面为裁剪的左右上下的宽度 */
 
 
         frame_crop_left_offset
0
ue(v)
         frame_crop_right_offset
0
ue(v)
         frame_crop_top_offset
0
ue(v)
         frame_crop_bottom_offset
0
ue(v)
     }
 
 
     vui_parameters_present_flag
0
u(1)
     if( vui_parameters_present_flag )
 
 
         vui_parameters( )
0
 
     rbsp_trailing_bits( )
0
 
}
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值