一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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ā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    大伊香蕉一区二区三区| 精品人妻av区波多野结依| 亚洲欧美日韩精品永久| 蜜臀人妻一区二区三区| 日韩精品视频免费观看| 国产福利在线播放麻豆| 亚洲中文在线男人的天堂| 国产欧美一区二区另类精品| 邻居人妻人公侵犯人妻视频| 久久免费精品拍拍一区二区 | 久久精品国产99精品最新| 制服丝袜美腿美女一区二区| 亚洲一区二区三区免费的视频| 婷婷色网视频在线播放| 国产精品伦一区二区三区四季 | 欧美一区二区三区喷汁尤物| 日韩精品中文在线观看| 在线观看中文字幕91| 亚洲日本久久国产精品久久| 欧美激情一区=区三区| 欧美精品一区二区水蜜桃| 日韩免费国产91在线| 色婷婷成人精品综合一区| 日本高清视频在线观看不卡| 在线免费国产一区二区三区| 1024你懂的在线视频| 老司机精品视频在线免费| 日韩一区中文免费视频| 国产在线不卡中文字幕| 狠色婷婷久久一区二区三区| 区一区二区三中文字幕| 欧美午夜视频免费观看| 国产日韩欧美一区二区| 妻子的新妈妈中文字幕| 中文字幕亚洲人妻在线视频| 日本精品中文字幕人妻| 国产原创激情一区二区三区| 国产成人精品99在线观看| 欧美激情区一区二区三区| 欧美有码黄片免费在线视频| 国产成人精品在线一区二区三区|