H.264文件分析
一、分析SPS和PPS中的主要信息
使用H264Visa工具打開.264文件,觀察SPS與PPS。
SPS(Sequence Parameter Set):
1、profile_idc: 標識當前H.264碼流的profile。
(H.264中定義了三種常用的檔次profile:
? 基準檔次:baseline profile;
? 主要檔次:main profile;
? 擴展檔次:extended profile;)
2、constraint_setn_flag(n為數字): 等于1時表示必須遵從附錄 A.2.n 所指明的所有制約條件。等于 0 時表示不必遵從所有條件。
3、level_idc: 標識當前碼流的level。level級別為level_idc/10,例如該圖所示文件的level為3.1。
4、seq_parameter_set_id: 本序列參數集的id號。
5、log2_max_frame_num_minus4: 用于算出MaxFrameNum,MaxFrameNum = 2*exp( log2_max_frame_num_minus4 + 4 ) 。
6、pic_order_cnt_type: 標識picture order count的編碼方法。
7、num_ref_frames: 參考幀隊列可能達到的最大長度。
8、gaps_in_frame_num_value_allowed_flag: 等于1時表示是否允許frame_num可以不連續。
9、pic_width_in_mbs_minus1: 圖像橫向的宏塊數減1。圖像寬度=(pic_width_in_mbs_minus1+1)*16。
10、pic_height_in_map_units_minus1: 圖像縱向的宏塊數減1。圖像高度= (pic_height_in_map_units_minus1+1)*16。
11、frame_mbs_only_flag: 等于0時表示本序列中所有圖像的編碼模式都是幀,等于1時表示本序列中的編碼模式可能是幀或場或幀場自適應。
12、derect_8x8_inference_flag: 標識運動向量的預測方法,frame_mbs_only_flag為0時此處應為1。
13、frame_cropping_flag: 標識是否需要對輸出圖像進行裁剪,要裁剪時需要在后面寫出frame_cropping_rect_left_offset,frame_cropping_rect_right_offset,frame_cropping_rect_top_offset,frame_cropping_rect_bottom_offset。
14、vui_parameters: 標識碼流中是否有vui子結構。
由對應取值可知:
遵從附錄A.2.0與A.2.1中的制約條件
分辨率:864*480
profile:baseline profile
level:3.1
具有vui子結構
PPS(Picture Parameter Set):
1、pic_parameter_set_id: 本圖像參數集的id號。
2、seq_parameter_set_id: 本圖像參數集所引用的序列參數集的id號。
3、entropy_coding_mode_flag: 等于0時表示熵編碼使用CAVLC,等于1時表示熵編碼使用CABAC。
4、pic_order_present_flag: POC 的三種計算方法在片層還各需要用一些句法元素作為參數,本句法元素等于1時表示在片頭會有句法元素指明這些參數;本句法元素等于0時,表示片頭不會給出這些參數,這些參數使用默認值。
5、num_slice_groups_minus1: 圖像的片組數減1。等于0時表示不使用片組模式。
6、num_ref_idx_l0_active_minus1: 幀模式中表示參考幀隊列長度減1,場模式中表示參考幀隊列長度減1后除以2。
7、weighted_pred_flag: 標識是否允許P和SP片的加權預測。
8、weighted_bipred_idc: 等于0時表示默認的加權預測被應用到B切片中,等于1時表示外部的加權預測被應用到B切片中,等于2時表示內部的加權預測被應用到B切片中。
9、pic_init_qp_minus26: SliceQPY的初始值減26,取值范圍為-26~25。
10、pic_init_qs_minus26 SP或SI切片中的SliceQSY的初始值減26,取值范圍為-26~25。
11、chroma_qp_index_offset: 在查QPC表時,對于QPY和QSY應該加上的偏移量,取值范圍為-12~12。
12、
deblocking_filter_control_present_flag: 標識在切片頭處用來控制解塊濾波的特征值是否存在,等于1時存在。
constrained_intra_pred_flag:
等于1時表示幀內編碼的宏塊不能用幀間編碼的宏塊的像素作為自己的預測,即幀內編碼的宏塊只能用鄰近幀內編碼的宏塊的像素作為自己的預測。等于0時無限制。
**redundant_pic_cnt_present_flag: ** 標識redundant_pic_cnt是否存在,等于1時存在。
由對應參數可知:
編碼方式:CAVLC
不使用片組模式
可以進行幀間預測
二、分析一個GOP所含的信息
橫坐標為幀數,縱坐標為比特數。紅色為I幀,藍色為P幀,綠色為B幀。由圖可知本GOP無B幀。
逐幀查看info得知該文件中每幀的所有qp均為16。
1、I幀
該文件只有第一幀為I幀。
查看此I幀的空間特性:
所有塊均均為紅色,即采用幀內編碼。
共1620個I宏塊。
2、P幀
查看P幀的空間特性:
紅色為幀內編碼,藍色為前向編碼,黃色表示內容與上一幀相同不需要編碼。
其中有28個I宏塊,1592個P宏塊,P宏塊中有650個P_Skip。
3.B幀
本文件不包含B幀。
總結
- 上一篇: MPEG原理分析及MPEG音频编码器的调
- 下一篇: H.264编码实验