久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JM代碼閱讀之一SODB RBSP EBSP NALU | JM Code Notes 1 – SODB RBSP EBSP NALU | lsharemy

 SamBookshelf 2013-12-31

JM版本16.0,配置文件encoder_baseline.cfg,,H.264標準文檔(03/2010)版,。

通過對碼流的第一個NALU(SPS)的形成來分析。

首先給出編碼后的最終碼流(SPS + PPS):
00 00 00 01 67 42 00 28 F3 05 89 C8 00 00 00 01 68 C9 4A 38 80

SPS(紅色部分)轉換成二進制:00000000 00000000 00000000 00000001 01100111 01000010 00000000 00101000 11110011 00000101 10001001 11001000

然后介紹一個碼流分析工具:Elecard StreamEye Tools

用這個工具分析用JM編碼得到的碼流,,它會給出各個NALU的信息

其中SPS的內容如下:
profile_idc = 66 (PROFILE_IDC_Baseline) (01000010)
constraint_set0_flag = 0
constraint_set1_flag = 0
constraint_set2_flag = 0
constraint_set3_flag = 0
reserved_zero_4bits = 0
level_idc = 40(00101000)
seq_parameter_set_id = 0 ue_v
log2_max_frame_num_minus4 = 0 ue_v
pic_order_cnt_type = 0 ue_v
log2_max_pic_order_cnt_lsb_minus4 = 0 ue_v
num_ref_frames = 5 ue_v
gaps_in_frame_num_value_allowed_flag = 0
pic_width_in_mbs_minus1 = 10 (176) ue_v
pic_height_in_map_units_minus1 = 8 (144) ue_v
frame_mbs_only_flag = 1
direct_8x8_inference_flag = 1
frame_cropping_flag = 0
vui_parameters_present_flag = 0

其中每一個參數對應碼流中的位置用顏色對應關系給出,,其中后面標有ue_v的是采用Exp-Golomb-coded編碼的,暫時還沒有研究,。其他沒有顏色的bit為一些填充或頭部,,后面詳細分析。

—————————————————————————————————

好吧,,下面分析這個NALU是怎么形成的:00 00 00 01 67 42 00 28 F3 05 89 C8

首先形成的是String Of Data Bits (SODB),,請參考標準文檔7.2.3.1.1部分

01000010 00000000 00101000 11110011 00000101 10001001 1100

這個就是形成的SODB,轉換成16進制,,可以發(fā)現它就是上面碼流的42 00 28 F3 05 89 C這一段,。

然后要形成的是Raw Byte Sequence Packet (RBSP),它其實就是在SODB后面加上

RBSP trailing bits的結果,,見標準文檔7.2.3.1,,目的是為了形成整數字節(jié)。

填充規(guī)則見標準文檔的7.4.1部分,,大概為先填充一個1(rbsp_stop_one_bit),,然后都填充0(rbsp_alignment_zero_bit),所以對于上面的SODB,,填充一個1,,3個0之后,便得到了
01000010 00000000 00101000 11110011 00000101 10001001 11001000
即42 00 28 F3 05 89 C8

現在,,碼流的后面7個字節(jié)都得到了,,現在要得到的是Extended Byte Sequence Packet (EBSP),它在RBSP基礎上填加了仿校驗字節(jié),,防止與起始碼沖突,,如果出現連續(xù)的三個字節(jié)00000000 00000000 000000xx,著插入一個0×03,,變成00000000 00000000 00000003 000000xx,。在上面的RBSP中沒有出現這樣的序列,所以木有改變什么,。

最后在EBSP前面加上一個4字節(jié)的起始碼00 00 00 01和一個NAL unit type字節(jié)就形成最后的Network Abstraction Layer Unit (NALU)

NAL unit type字節(jié)包含三個字段(具體含義見7.4.1):67 <==> 0 11 00111
forbidden_zero_bit,,總為0
nal_ref_idc,2個bit,表示該NAL的重要性,,是00的話,,說明它可以被安全的丟棄,這里SPS的這個指為3(11),,即最高值,。參考RFC 3984。(現在知道這個字節(jié)叫作NAL unit type octet了)
nal_unit_type,,5個bit,,在7.4.1中的table 7-1中有說明。這里值為7(00111),,表示NAL中是SPS,,驗證成功:-D

——————————————————————————————————————–

在JM代碼中,,輸出SPS和PPS的實現在函數int start_sequence(ImageParameters *p_Img, InputParameters *p_Inp)中,,有興趣的小朋友自己研究研究吧。

最后把PPS的信息也貼出來:

pic_parameter_set_id = 0
seq_parameter_set_id = 0
entropy_coding_mode_flag = 0
pic_order_present_flag = 0
num_slice_groups_minus1 = 0
num_ref_idx_L0_active_minus1 = 4
num_ref_idx_L1_active_minus1 = 4
weighted_pred_flag = 0
weighted_bipred_idc = 0
pic_init_qp_minus26 = 0
pic_init_qs_minus26 = 0
chroma_qp_index_offset = 0
deblocking_filter_control_present_flag = 0
constrained_intra_pred_flag = 0
redundant_pic_cnt_present_flag = 0

.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

相關文章:

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多