SVC中也有trace文件。设置如下:
在工程H264AVCCommonLibStatic中将TraceFile.h中
#define ENCODER_TRACE 0//将这里的0设置为1就可。
运行后,就会在你的工作目录中(我的是data)生成TraceEncoder*.txt文件。每个文件的大小基本上固定。
但是这里要注意:必须提前Build Solution!!!这样才能起作用。
得到文件可能很大,用word和notepad都不能打开。那样可以使用UltraEdit打开文件。
-------------------- SEQUENCE PARAMETER SET --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 7 [00111]
@8 SPS: profile_idc u(8) 77 [01001101]
@16 SPS: constraint_set0_flag u(1) 0 [0]
@17 SPS: constraint_set1_flag u(1) 1 [1]
@18 SPS: constraint_set2_flag u(1) 0 [0]
@19 SPS: constraint_set3_flag u(1) 1 [1]
@20 SPS: reserved_zero_4bits u(4) 0 [0000]
@24 SPS: level_idc u(8) 11 [00001011]
@32 SPS: seq_parameter_set_id ue(v) 0 [1]
@33 SPS: log2_max_frame_num_minus_4 ue(v) 5 [00110]
@38 SPS: pic_order_cnt_type ue(v) 0 [1]
@39 SPS: log2_max_pic_order_cnt_lsb_minus4 ue(v) 2 [011]
@42 SPS: num_ref_frames ue(v) 0 [1]
@43 SPS: gaps_in_frame_num_value_allowed_flag u(1) 1 [1]
@44 SPS: pic_width_in_mbs_minus1 ue(v) 10 [0001011]
@51 SPS: pic_height_in_map_units_minus1 ue(v) 8 [0001001]
@58 SPS: frame_mbs_only_flag u(1) 1 [1]
@59 SPS: direct_8x8_inference_flag u(1) 1 [1]
@60 SPS: frame_cropping_flag u(1) 0 [0]
@61 SPS: vui_parameters_present_flag u(1) 0 [0]
-------------------- SUBSET SEQUENCE PARAMETER SET --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 15 [01111]
@8 SPS: profile_idc u(8) 86 [01010110]
@16 SPS: constraint_set0_flag u(1) 0 [0]
@17 SPS: constraint_set1_flag u(1) 1 [1]
@18 SPS: constraint_set2_flag u(1) 0 [0]
@19 SPS: constraint_set3_flag u(1) 1 [1]
@20 SPS: reserved_zero_4bits u(4) 0 [0000]
@24 SPS: level_idc u(8) 12 [00001100]
@32 SPS: seq_parameter_set_id ue(v) 0 [1]
@33 SPS: chroma_format_idc ue(v) 1 [010]
@36 SPS: bit_depth_luma_minus8 ue(v) 0 [1]
@37 SPS: bit_depth_chroma_minus8 ue(v) 0 [1]
@38 SPS: qpprime_y_zero_transform_bypass_flag u(1) 0 [0]
@39 SPS: seq_scaling_matrix_present_flag u(1) 0 [0]
@40 SPS: log2_max_frame_num_minus_4 ue(v) 5 [00110]
@45 SPS: pic_order_cnt_type ue(v) 0 [1]
@46 SPS: log2_max_pic_order_cnt_lsb_minus4 ue(v) 2 [011]
@49 SPS: num_ref_frames ue(v) 0 [1]
@50 SPS: gaps_in_frame_num_value_allowed_flag u(1) 1 [1]
@51 SPS: pic_width_in_mbs_minus1 ue(v) 21 [000010110]
@60 SPS: pic_height_in_map_units_minus1 ue(v) 17 [000010010]
@69 SPS: frame_mbs_only_flag u(1) 1 [1]
@70 SPS: direct_8x8_inference_flag u(1) 1 [1]
@71 SPS: frame_cropping_flag u(1) 0 [0]
@72 SPS: vui_parameters_present_flag u(1) 0 [0]
@73 SPS: inter_layer_deblocking_filter_control_present_flag u(1) 0 [0]
@74 SPS: extended_spatial_scalability u(2) 0 [00]
@76 SPS: chroma_phase_x_plus1_flag u(1) 0 [0]
@77 SPS: chroma_phase_y_plus1 u(2) 1 [01]
@79 SPS: seq_tcoeff_level_prediction_flag u(1) 0 [0]
@80 SPS: slice_header_restriction_flag u(1) 0 [0]
@81 SPS: svc_vui_parameters_present_flag u(1) 0 [0]
@82 SPS: additional_extension2_flag u(1) 0 [0]
-------------------- PICTURE PARAMETER SET --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 8 [01000]
@8 PPS: pic_parameter_set_id ue(v) 0 [1]
@9 PPS: seq_parameter_set_id ue(v) 0 [1]
@10 PPS: entropy_coding_mode_flag u(1) 1 [1]
@11 PPS: pic_order_present_flag u(1) 1 [1]
@12 PPS: num_slice_groups_minus1 ue(v) 0 [1]
@13 PPS: num_ref_idx_l0_active_minus1 ue(v) 0 [1]
@14 PPS: num_ref_idx_l1_active_minus1 ue(v) 0 [1]
@15 PPS: weighted_pred_flag u(1) 0 [0]
@16 PPS: weighted_bipred_idc u(2) 0 [00]
@18 PPS: pic_init_qp_minus26 se(v) -16 [00000100001]
@29 PPS: pic_init_qs_minus26 se(v) 0 [1]
@30 PPS: chroma_qp_index_offset se(v) 0 [1]
@31 PPS: deblocking_filter_control_present_flag u(1) 0 [0]
@32 PPS: constrained_intra_pred_flag u(1) 1 [1]
@33 PPS: redundant_pic_cnt_present_flag u(1) 0 [0]
-------------------- PICTURE PARAMETER SET --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 8 [01000]
@8 PPS: pic_parameter_set_id ue(v) 1 [010]
@11 PPS: seq_parameter_set_id ue(v) 0 [1]
@12 PPS: entropy_coding_mode_flag u(1) 1 [1]
@13 PPS: pic_order_present_flag u(1) 1 [1]
@14 PPS: num_slice_groups_minus1 ue(v) 0 [1]
@15 PPS: num_ref_idx_l0_active_minus1 ue(v) 0 [1]
@16 PPS: num_ref_idx_l1_active_minus1 ue(v) 0 [1]
@17 PPS: weighted_pred_flag u(1) 0 [0]
@18 PPS: weighted_bipred_idc u(2) 0 [00]
@20 PPS: pic_init_qp_minus26 se(v) -16 [00000100001]
@31 PPS: pic_init_qs_minus26 se(v) 0 [1]
@32 PPS: chroma_qp_index_offset se(v) 0 [1]
@33 PPS: deblocking_filter_control_present_flag u(1) 0 [0]
@34 PPS: constrained_intra_pred_flag u(1) 1 [1]
@35 PPS: redundant_pic_cnt_present_flag u(1) 0 [0]
-------------------- PICTURE PARAMETER SET --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 8 [01000]
@8 PPS: pic_parameter_set_id ue(v) 2 [011]
@11 PPS: seq_parameter_set_id ue(v) 0 [1]
@12 PPS: entropy_coding_mode_flag u(1) 1 [1]
@13 PPS: pic_order_present_flag u(1) 1 [1]
@14 PPS: num_slice_groups_minus1 ue(v) 0 [1]
@15 PPS: num_ref_idx_l0_active_minus1 ue(v) 0 [1]
@16 PPS: num_ref_idx_l1_active_minus1 ue(v) 0 [1]
@17 PPS: weighted_pred_flag u(1) 0 [0]
@18 PPS: weighted_bipred_idc u(2) 0 [00]
@20 PPS: pic_init_qp_minus26 se(v) -16 [00000100001]
@31 PPS: pic_init_qs_minus26 se(v) 0 [1]
@32 PPS: chroma_qp_index_offset se(v) 0 [1]
@33 PPS: deblocking_filter_control_present_flag u(1) 0 [0]
@34 PPS: constrained_intra_pred_flag u(1) 0 [0]
@35 PPS: redundant_pic_cnt_present_flag u(1) 0 [0]
-------------------- PREFIX UNIT --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 14 [01110]
@8 NAL unit header: reserved_one_bit u(1) 1 [1]
@9 NAL unit header: idr_flag u(1) 1 [1]
@10 NAL unit header: priority_id u(6) 0 [000000]
@16 NAL unit header: no_inter_layer_pred_flag u(1) 1 [1]
@17 NAL unit header: dependency_id u(3) 0 [000]
@20 NAL unit header: quality_id u(4) 0 [0000]
@24 NAL unit header: temporal_id u(3) 0 [000]
@27 NAL unit header: use_ref_base_pic_flag u(1) 0 [0]
@28 NAL unit header: discardable_flag u(1) 0 [0]
@29 NAL unit header: output_flag u(1) 1 [1]
@30 NAL unit header: reserved_three_2bits u(2) 3 [11]
@32 store_ref_base_pic_flag u(1) 0 [0]
@33 additional_prefix_nal_unit_extension_flag u(1) 0 [0]
-------------------- Slice # 0 Frame # 0 --------------------
@0 NAL unit header: forbidden_zero_bit u(1) 0 [0]
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
@3 NAL unit header: nal_unit_type u(5) 5 [00101]
@8 SH: first_mb_in_slice ue(v) 0 [1]
@9 SH: slice_type ue(v) 2 [011]
@12 SH: pic_parameter_set_id ue(v) 0 [1]
@13 SH: frame_num u(9) 0 [000000000]
@22 SH: idr_pic_id ue(v) 0 [1]
@23 SH: pic_order_cnt_lsb u(6) 0 [000000]
@29 SH: delta_pic_order_cnt_bottom se(v) 0 [1]
@30 DRPM: no_output_of_prior_pics_flag u(1) 1 [1]
@31 DRPM: long_term_reference_flag u(1) 0 [0]
@32 SH: slice_qp_delta se(v) 0 [1]
以上都是一些信息,所有的都可在标准中查到相应的意思,就不在累述。可以查找相应的部分查找。
这里只说一点后的数字。如
@1 NAL unit header: nal_ref_idc u(2) 3 [11]
这里面的前部分不在说明。可以在标准中找到。只说3 [11],其中3是十进制[]中的01代码是3的二进制表示,其他的雷同。这里就是说nal_ref_idc=3,编码后的二进制是11.值得注意的是这里是u(2),只得是无符号整数。
如果是ue(v),它是unsigned integer Exp-Golomb-coded,它的形式如下:
[M zero][1][INFO]这里面,前M个0和中间的“1”都是前缀,INFO是信息。他所表示的值是
2^M+INFO-1;注意这里的INFO是二进制的值。
至于se(v),可以这样计算2*abs(syntax element value),而后面的那个[]中的值再用ue(v)的计算方法就行了。比如: se(v) -16[00000100001] 那么就是:2*16=2^5+1-1
-------------------- MB # 0 --------------------
0 0x01fe 62 0 - 0
MbMode ae(v) 0
1 0x01f5 14 0 - 1
IntraPredModeLuma ae(v) -1
2 0x01d0 11 0 - 0
3 0x0149 0 0 - 1
4 0x0160 0 1 - 0
5 0x0160 0 0 - 0
IntraPredModeLuma ae(v) 1
6 0x0160 12 0 - 1
IntraPredModeLuma ae(v) -1
7 0x0178 9 0 - 1
IntraPredModeLuma ae(v) -1
8 0x01b8 7 0 - 0
9 0x0128 1 0 - 1
10 0x0100 0 0 - 0
11 0x0100 1 0 - 0
IntraPredModeLuma ae(v) 1
12 0x0100 8 0 - 0
13 0x0142 2 0 - 1
14 0x013c 1 0 - 0
15 0x0178 2 0 - 0
IntraPredModeLuma ae(v) 1
16 0x01b4 9 0 - 1
IntraPredModeLuma ae(v) -1
17 0x0104 7 0 - 1
IntraPredModeLuma ae(v) -1
18 0x0190 5 0 - 1
IntraPredModeLuma ae(v) -1
19 0x0140 4 0 - 1
IntraPredModeLuma ae(v) -1
20 0x011c 2 0 - 1
IntraPredModeLuma ae(v) -1
21 0x0100 1 0 - 0
22 0x0100 3 0 - 0
23 0x010a 4 0 - 0
24 0x012c 5 0 - 0
IntraPredModeLuma ae(v) 0
25 0x017a 2 0 - 1
IntraPredModeLuma ae(v) -1
26 0x013c 1 0 - 1
IntraPredModeLuma ae(v) -1
27 0x0100 0 0 - 0
28 0x0100 6 0 - 1
29 0x01a4 4 0 - 1
30 0x0152 2 0 - 0
IntraPredModeLuma ae(v) 3
31 0x0168 1 0 - 0
32 0x0182 3 0 - 1
33 0x0164 2 0 - 0
34 0x018c 3 0 - 1
IntraPredModeLuma ae(v) 5
35 0x0164 13 1 - 0
...
Cbp ae(v) 47
42 0x01c6 22 0 - 0
DQp ae(v) 0
...
这是第一个宏块的信息。首先看
0 0x01fe 62 0 - 0
MbMode ae(v) 0
这里面第一行的数字是一个编号,没什么实质的意思,应该只是计数,对应g_nSymbolCounter[g_nLayer]++;第二个对应m_uiRange; 第三个是m_uiState;第四个是MPS(Most probale Symbol);第五个是符号“-”没有实质性意思,只是分割符。第六个值是uiSymbol,这个值对应表9-36、表9-37等表格。这些的信息可以找cabaEncoder.cpp中找到。这里是说它的mb_type是I_4*4。所以后面有16个4*4块。随后就是16个4*4块帧内0-8中方向模式的选择。然后是色度快的模式。然后是Cbp:Coded Block Pattern它的意思,可以去找相关的论文看。 DQp就是Delta Qp。随后就是亮度信息和色度的信息了。