一段H264數據的分析


?????????
???????

目錄(?)[-]

  1. 分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01
  2. 分析00 00 00 01 68 CE 38 80 00 00 00 01

?

分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01

H264的數據流分為兩種,一種是NAL UNIT stream(RTP),一種是 bits stream,
兩者可以互相轉換。我們分析的這個是 bit stream,根據Annex B
00 00 00 01 67 42 00 1E 99 A0 B1 31 是 一個NAL,在兩個00 00 00 01之間
0110 0111?0100 0010 0000 0000 0001 1110 1001 1001 1010 0000 1011 0001 0011 0001
forbidden_zero_bit(1)?= 0
nal_ref_idc(2)= 11
nal_unit_type(5)?= 0 0111:
seq_parameter_set_rbsp( )
所以 processSPS

0110 0111?0100 0010?0000 0000 0001 1110 1001 1001 1010 0000 1011 0001 0011 0001
profile_idc(8):42:0100 0010


0110 0111 0100 0010?0000 0000?0001 1110 1001 1001 1010 0000 1011 0001 0011 0001

constraint_set0_flag(1):0
constraint_set1_flag(1):0
constraint_set2_flag(1):0
constraint_set3_flag(1):0
reserved_zero_4bits(4):0

0110 0111 0100 0010 0000 0000?0001 1110 1001 1001 1010?0000 1011 0001 0011 0001

level_idc(8):1E
seq_parameter_set_id(UE(V)):

ue(v): unsigned integer Exp-Golomb-coded syntax element with the left bit first. The parsing process for this descriptor is specified in subclause 9.1
uvlC: 1001:根據Table9.1 , value= 0,只占1bit.
根據profile_idc忽略掉一部分。
log2_max_frame_num_minus4(ue(v): 001 10,len = 5,value= 5
pic_order_cnt_type(ue(v)):01 1,len = 3,value = 2
根據pic_order_cnt_type忽略幾個參數
num_ref_frames(ue):010,len = 3,value = 1


0110 0111 0100 0010 0000 0000 0001 1110 1001 1001 1010?0000 1011 0001 0011 0001
gaps_in_frame_num_value_allowed_flag(1) = 0
pic_width_in_mbs_minus1(ue):000 1011 ,len = 7,value = 10;
pic_height_in_map_units_minus1(ue):0001 001,len = 7,value = 8
frame_mbs_only_flag(1) = 1
忽略1
direct_8x8_inference_flag(1):0
忽略
vui_parameters_present_flag(1):0
忽略
NALU結束

分析00 00 00 01 68 CE 38 80 00 00 00 01

0110 1000(68)
forbidden_zero_bit(1)?= 0
nal_ref_idc(2)= 11
nal_unit_type(5)?=01000:
pic_parameter_set_rbsp( ),7.3.2.2
1100?(C)
pic_parameter_set_id (ue)=0
seq_parameter_set_id(ue)=0
entropy_coding_mode_flag(1) :0,?重要的flag,0?表示編碼Exp-Golomb coded and CAVLC,1表示CABAC
pic_order_present_flag(1):0

1110?(E)
num_slice_groups_minus1(ue):0
忽略
num_ref_idx_l0_active_minus1(ue):0
num_ref_idx_l1_active_minus1(ue):0
weighted_pred_flag(1);0
0011 1000 1000 0000?
(38 80)
weighted_bipred_idc(2):00
pic_init_qp_minus26?/
* relative to 26 */(se):0
pic_init_qs_minus26?/* relative to 26 */(se):0
chroma_qp_index_offset(se):0
deblocking_filter_control_present_flag(1);0
constrained_intra_pred_flag(1):0
redundant_pic_cnt_present_flag(1):0
忽略
NALU結束

65 88 80 21 71 27 1B 88…….3888*16 byte
65:0110 0101
forbidden_zero_bit(1)?= 0
nal_ref_idc(2)= 11
nal_unit_type(5)?=0 0101:
slice_layer_without_partitioning_rbsp( ),IDR湞
Slice
Slice_Header:
first_mb_in_slice(ue):0
slice_type(ue):000 1000 = 7
pic_parameter_set_id(ue) = 0
80 21:000 0000 0010 0001
frame_num(u(v): frame_num
?is used as an identifier for pictures and shall be represented by log2_max_frame_num_minus4 + 4 bits,9 bits = 0
忽略
if( nal_unit_type = = 5 ) //IDR frame
idr_pic_id(u(e)):0
忽略N多

ref_pic_list_reordering( ) 見7。3。3。1忽略,Islice,SI slice,B slice
nal_ref_idc? ?=11 所以dec_ref_pic_marking( )
nal_unit_type = 5,所以
no_output_of_prior_pics_flag(1):0
long_term_reference_flag(1):0
忽略

。。71 27
001 0111 0001 0010 0111
slice_qp_delta(se(v):001 01?,4:-2
忽略

slice_data( ):7.3.4
對I-Slice:忽略N多
進入
if( moreDataFlag ) { if( MbaffFrameFlag && ( CurrMbAddr % 2 = = 0 | |? ?? ?? ?? ?? ?? ?( CurrMbAddr % 2 = = 1 && prevMbSkipped ) ) )mb_field_decoding_flag
macroblock_layer( )
}
mb_field_decoding_flag忽略
macroblock_layer( )
mb_type(ue(v):0
mb_pred( mb_type )
prev_intra4x4_pred_mode_flag[?luma4x4BlkIdx?]?(1bit,?對babac是ae(v)):1
1 27:0001 0010 0111
prev_intra4x4_pred_mode_flag[
?1?] : 0001,0,001
0010 0111
prev_intra4x4_pred_mode_flag[?2?] : 0010,0,010
prev_intra4x4_pred_mode_flag[
?3] : 0111,0,111
……16個
1b 88 00 3e cf.?
intra_chroma_pred_mode(ue(v))?:?最后的一個1bit:0

接下來是macroblock_layer的coded_block_pattern和run level,既系數
c0 06 ad a0 18
1100 0000 0000 0110 1010 0000 0001 1000
coded_block_pattern(me(v):0,根據
,= 47,0x2f
mb_qp_delta(se(v):0 len =1
residual( )見7.3.5.3
residual_block( LumaLevel[ i8x8 * 4 + i4x4 ], 16 )
coeff_token(ce(v): 00 0000 0000 0110 1
nc = 0(left block and top block?相關的):

len: {? ?// 0702

{ 1, 6, 8, 9,10,11,13,13,13,14,14,15,15,16,16,16,16},

{ 0, 2, 6, 8, 9,10,11,13,13,14,14,15,15,15,16,16,16},

{ 0, 0, 3, 7, 8, 9,10,11,13,13,14,14,15,15,16,16,16},

{ 0, 0, 0, 5, 6, 7, 8, 9,10,11,13,14,14,15,15,16,16},

},

{

{ 2, 6, 6, 7, 8, 8, 9,11,11,12,12,12,13,13,13,14,14},

{ 0, 2, 5, 6, 6, 7, 8, 9,11,11,12,12,13,13,14,14,14},

{ 0, 0, 3, 6, 6, 7, 8, 9,11,11,12,12,13,13,13,14,14},

{ 0, 0, 0, 4, 4, 5, 6, 6, 7, 9,11,11,12,13,13,13,14},

},

{

{ 4, 6, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9,10,10,10,10},

{ 0, 4, 5, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9,10,10,10},

{ 0, 0, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10},

{ 0, 0, 0, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 9,10,10,10},

},

code:

{ 1, 5, 7, 7, 7, 7,15,11, 8,15,11,15,11,15,11, 7,4},

{ 0, 1, 4, 6, 6, 6, 6,14,10,14,10,14,10, 1,14,10,6},

{ 0, 0, 1, 5, 5, 5, 5, 5,13, 9,13, 9,13, 9,13, 9,5},

{ 0, 0, 0, 3, 3, 4, 4, 4, 4, 4,12,12, 8,12, 8,12,8},

},

{

{ 3,11, 7, 7, 7, 4, 7,15,11,15,11, 8,15,11, 7, 9,7},

{ 0, 2, 7,10, 6, 6, 6, 6,14,10,14,10,14,10,11, 8,6},

{ 0, 0, 3, 9, 5, 5, 5, 5,13, 9,13, 9,13, 9, 6,10,5},

{ 0, 0, 0, 5, 4, 6, 8, 4, 4, 4,12, 8,12,12, 8, 1,4},

},

{

{15,15,11, 8,15,11, 9, 8,15,11,15,11, 8,13, 9, 5,1},

{ 0,14,15,12,10, 8,14,10,14,14,10,14,10, 7,12, 8,4},

{ 0, 0,13,14,11, 9,13, 9,13,10,13, 9,13, 9,11, 7,3},

{ 0, 0, 0,12,11,10, 9, 8,13,12,12,12, 8,12,10, 6,2},

},
根據表查的:
code = 13,len = 15,i= 12,j=2
所以numcoeff = 12,numtrailingones = 2
010 0000 0001 1000: totalzeros:根據numcoeff

int lentab[TOTRUN_NUM][16] =

{

?

{ 1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},

{ 3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},

{ 4,3,3,3,4,4,3,3,4,5,5,6,5,6},

{ 5,3,4,4,3,3,3,4,3,4,5,5,5},

{ 4,4,4,3,3,3,3,3,4,5,4,5},

{ 6,5,3,3,3,3,3,3,4,3,6},

{ 6,5,3,3,3,2,3,4,3,6},

{ 6,4,5,3,2,2,3,3,6},

{ 6,6,4,2,2,3,2,5},

{ 5,5,3,2,2,2,4},

{ 4,4,3,3,1,3},

{ 4,4,2,1,3},?numcoeff開始

{ 3,3,1,2},

{ 2,2,1},

{ 1,1},

};

int codtab[TOTRUN_NUM][16] =

{

{1,3,2,3,2,3,2,3,2,3,2,3,2,3,2,1},

{7,6,5,4,3,5,4,3,2,3,2,3,2,1,0},

{5,7,6,5,4,3,4,3,2,3,2,1,1,0},

{3,7,5,4,6,5,4,3,3,2,2,1,0},

{5,4,3,7,6,5,4,3,2,1,1,0},

{1,1,7,6,5,4,3,2,1,1,0},

{1,1,5,4,3,3,2,1,1,0},

{1,1,1,3,3,2,2,1,0},

{1,0,1,3,2,1,1,1,},

{1,0,1,3,2,1,1,},

{0,1,1,2,1,3},

{0,1,1,1,1},?numcoeff開始

{0,1,1,1},

{0,1,1},

{0,1},

};

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253180.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253180.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253180.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海華模組:WIFI、BT、SoC模組列表

各種模塊廣泛應用于網絡攝像頭、智能機器人、兒童故事機、詞典筆、智能音箱、智能家電等需要實現無線聯網設備的消費類電子產品。 模塊化有很大的有點:集成設計、減少調試工作,避開開發盲區、加速將產品推向市場! 下面介紹下海華各類通訊模…

JAVA-初步認識-第七章-構造函數和一般函數的區別

一. 構造函數是對象一創建,就被調用了。(調用這個詞很特殊,是涉及到實體時,才會有調用的過程) 還有一點想說的是,構造函數的聲明應該是固定的,不然沒法隨著對象的創建一起執行,必須是類名括號的形式。 二. …

深入理解哈希表

轉自:https://bestswifter.com/hashtable/ 這篇文章由一個簡單的問題引出: 有兩個字典,分別存有 100 條數據和 10000 條數據,如果用一個不存在的 key 去查找數據,在哪個字典中速度更快? 有些計算機常識的讀者都會立刻回…

Linux服務器ftp+httpd部署

一、ftp安裝 1、安裝vsftpd 命令:yum -y install vsftpd 2、修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 3、按i進入insert模式后,按以下要求修改 anonymous_enableYES 改為anonymous_enableNO chroot_local_userYES #去掉前面的注釋 …

高清網絡攝像機主流芯片方案之安霸、TI和海思對比

高清網絡視頻監控發展到今天,市場也開始進入真正的高清時代,諸多有實力的高清攝像機廠家的產品線也逐漸完善起來,高清網絡視頻監控的配套產品有更加豐富和成熟。與此同時困擾很多人的高清網絡攝像機與后端平臺或者與后端NVR互聯互通的問題也在…

ios審核4.3被拒,快速通過IOS4.3問題

最近有許多開發者遇到了因為審核條款 4.3(后文統一簡稱 4.3)審核條款 4.3(后文統一簡稱 4.3),這種情況 常見于大家上傳重復應用的時候,因為App Store 已經有了很多相似的應用 而被打回,今天我們…

正基模組:WIFI/BT/GPS/FM模組列表

各種模塊廣泛應用于網絡攝像頭、智能機器人、兒童故事機、詞典筆、智能音箱、智能家電等需要實現無線聯網設備的消費類電子產品。 模組由于其特性,給終端硬件開發帶來巨大的便利性和實用性,具體小結如下: Feature特點:1. 模塊均采用郵票孔形…

計算機網絡基礎教程---強烈推薦!來自銳捷官方網站

一、計算機網絡基礎教程 說明:每個教程的時間大約為6分鐘,以問題為導向,以項目為驅動。1、第一章 IPV4地址介紹 http://www.ruijie.com.cn/fw/zxpx/4092、第二章 TCP/IP協議簇介紹 http://www.ruijie.com.cn/fw/zxpx/4103、第三章 ARP協議工作…

楊冪掐點祝福唐嫣,打破不和傳言,情感營銷還能這么玩?

發現今天的蜂蜜泡水特別地甜,舍友說,同樣地蜂蜜同樣多的水泡出來的水有什么不一樣,肯定是你心情變好了。說得好像也有道理,想想最近這么多甜蜜的事,一開始是穎寶結婚,不久唐嫣和羅晉也宣布結婚,…

RTP/RTCP協議介紹

1流媒體協議 當前在Internet上傳輸音頻和視頻等信息主要有兩種方式:下載和流式傳輸。 下載情況下,用戶需要先下載整個媒體文件到本地,然后才能播放媒體文件。流式傳輸是指傳輸之前首先對多媒體進行預處理(降低質量和高效壓縮),然后…

推薦一款軟件(作業)

在過去,每當我遇見不認識的英文單詞時我的解決方法是:查閱英漢詞典,后來在我擁有手機之后,我的解決方法是:上網百度,而現在我的解決方法是:“有道翻譯官”。是的,我要介紹的這款軟件便是“有道翻…

網易有道最新力作 有道詞典筆3 結構拆解

2020年12月1日,有道品牌推出了一款硬件新品,名叫有道詞典筆3。 網易有道于2019年8月推出可以“一掃查詞”的有道詞典筆2代,搭載了OCR(光學字符識別)技術的產品,大大改變了傳統的學習方式,查詞效…

DataGridView動態添加新行的兩種方法

簡單介紹如何為DataGridView控件動態添加新行的兩種方 法: 方法一: int indexthis.dataGridView1.Rows.Add();this.dataGridView1.Rows[index].Cells[0].Value "1"; this.dataGridView1.Rows[index].Cells[1].Value "2"; this.dat…

使用glew和glad 新建窗口

一、添加頭文件 首先&#xff0c;將頭文件加到項目的.cpp文件中 1 #include <glad/glad.h> 2 #include <GLFW/glfw3.h> 注&#xff1a; 包含glad的頭文件一定要在包含glfw的頭文件之前使用。因為glad的頭文件包含了正確的openGL頭文件&#xff08;例如GL/gl.h&…

有道詞典筆3新增功能掃讀和點讀是怎么集成的?

2020年12月1日&#xff0c;有道品牌推出了一款硬件新品&#xff0c;名叫有道詞典筆3。 相對有道于2019年8月推出后來被稱為“爆品”的有道詞典筆2來說&#xff0c;有道3硬件最大最明顯差別是屏幕變的更大了&#xff0c;同時增加了點讀功能&#xff08;點讀筆點讀特定教材的功能…

??RTP協議分析

RTP協議分析 一&#xff0e; RTP協議背景.......................................................................................................... 1 二&#xff0e; RTP協議原理及工作機制........................................................................…

mongodb 部署

安裝mongodb-3.4 1&#xff09;將安裝包上傳至服務器 2&#xff09;對壓縮文件進行解壓 tar -zxvf mongodb-linux-x86_64-suse12-v3.4-latest.tar.gz 3&#xff09;把解壓出來的文件修改一下名字&#xff0c;并挪到指定安裝路徑 sudo mv mongodb-linux-x86_64-suse12-3.4.6-22-…

如何選擇一款優秀的兒童讀寫臺燈?

如何選擇一款優秀的兒童閱讀臺燈&#xff1f;除了品牌、外觀、材質、價格等因素外&#xff0c;最關鍵的是技術參數。 先說結論&#xff0c;滿足如下幾點參數&#xff0c;當數優選&#xff1a; 1-光通量&#xff1a;500lm以上 2-顯色指數&#xff1a;≥95 3-色溫&#xff1a…

Python與操作系統有關的模塊

Os模塊Python的標準庫中的os模塊主要涉及普遍的操作系統功能。可以在Linux和Windows下運行&#xff0c;與平臺無關。os.sep 可以取代操作系統特定的路徑分割符。os.name字符串指示你正在使用的平臺。比如對于Windows&#xff0c;它是’nt’&#xff0c;而對于Linux/Unix用戶&am…

數據對拍代碼 c++

碼了一晚上才碼出這個&#xff0c;有點簡陋&#xff0c;待更新 注意&#xff1a;1、數據路徑自己在代碼中修改&#xff0c;直接重定向即可 2、要配置好環境&#xff0c;將cb安裝路徑里的MinGW\bin路徑放到path中 3、三份代碼記得先編譯一遍&#xff0c;再運行這份代碼 #include…