?? [原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - h_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - powered by discuz!.htm
字號(hào):
?
+
條件關(guān)聯(lián)的就是必然出現(xiàn)的。例如,7.3.1 小節(jié)表中的 forbidden_zero_bit 就沒(méi)有 if
條件關(guān)聯(lián),所以它必然出現(xiàn)在碼流中;<BR>(2)、每個(gè)語(yǔ)法表最后一列都對(duì)所在行語(yǔ)法元素的熵編碼方式做了規(guī)定,而最后一列各個(gè)符號(hào)具體是代表什么編碼方式那就去看
7.2 小節(jié)最后的部分;<BR>(3)、看 7.4 小節(jié)與語(yǔ)法表對(duì)應(yīng)的語(yǔ)義部分,例如你查的語(yǔ)法表是
7.3.1,那么該語(yǔ)法表里出現(xiàn)的語(yǔ)法元素的解釋就在 7.4.1 小節(jié)中。<BR><BR>3、NALU
的前面三個(gè)語(yǔ)法元素所組成的一個(gè)字節(jié)我們稱為 NALU 頭,其余部分(也就是語(yǔ)法表 7.3.1 中的其余部分)我們稱為 NALU 體。對(duì)
NALU 體的解析要看 7.3.2 小節(jié)。因?yàn)?NALU 有很多種類型,所以要針對(duì) NALU 的不同類型去解析 NALU 體(表 7-1
說(shuō)明了不同 NALU 對(duì)應(yīng)的語(yǔ)法表)。例如,如果當(dāng)前的 NALU 是 SPS,那么當(dāng)然就要看 7.3.1 小節(jié);如果當(dāng)前的 NALU 是
DPA,那么當(dāng)然就要看 7.3.2.9.1 小節(jié)了;<BR><BR>4、對(duì)于屬于 VCL 的 NALU(哪些 NALU 是 VCL
NALU 呢?如果你看了 nal_unit_type 的語(yǔ)義,你就應(yīng)該知道),例如表 7-1 中類型為 5 的 NALU,根據(jù)表 7-1
我們知道 NALU 體的語(yǔ)法表是 7.3.2.8。而從 7.3.2.8 我們可以看到,對(duì)這種 NALU 的 NALU
體解析實(shí)際就是對(duì)片級(jí)語(yǔ)法進(jìn)行解析。語(yǔ)法表 7.3.2.8 顯示片級(jí)語(yǔ)法解析首先要解析
slice_header()(這種帶括號(hào)的表示是另一個(gè)語(yǔ)法結(jié)構(gòu)),那么 slice_header() 怎么解析呢?往下看,7.3.3
的所有內(nèi)容都被第一行的 slice_header() 包括在內(nèi),所以 7.3.3 就是對(duì) slice_header()
這個(gè)語(yǔ)法層的碼流規(guī)定;<BR><BR>5、按照語(yǔ)法表 7.3.2.8 解析完了 slice_header() 就該解析
slice_data() 了。下面以最常見(jiàn)的 I 幀(CAVLC 熵編碼、非
MBAFF)的解析過(guò)程為例簡(jiǎn)單描述怎么繼續(xù)讀標(biāo)準(zhǔn)。這時(shí)在碼流中出現(xiàn)的第一個(gè) slice_data() 層的語(yǔ)法元素是語(yǔ)法表 7.3.4
中的 macroblock_layer(),也就是說(shuō)直接到了宏塊層的語(yǔ)法解析,那就要又要看 7.3.5
小節(jié)了;<BR><BR>6、基于我們對(duì)編解碼流程的了解,我們知道解碼是一個(gè)預(yù)測(cè)值加殘差得到重建圖像的過(guò)程,那么我們下面的解碼過(guò)程就要分成兩步走了:首先,得到預(yù)測(cè)值;其次,得到殘差?;谖覀儗?duì)
H.264 關(guān)鍵技術(shù)的了解,我們知道 intra 宏塊(提醒:我們舉的例子是 I 幀,因此解析的是 intra
宏塊)的預(yù)測(cè)值是需要使用到預(yù)測(cè)模式的,所以我們需要解析語(yǔ)法表 7.3.5 中的 mb_pred(mb_type) 語(yǔ)法層,那么又去看
7.3.5.1 小節(jié)。按照 7.3.5.1 小節(jié)解析出宏塊或塊的預(yù)測(cè)方式后我們?cè)趺从?jì)算預(yù)測(cè)值呢?去看標(biāo)準(zhǔn) 8.3
小節(jié);得到預(yù)測(cè)值后我們繼續(xù)按照語(yǔ)法表 7.3.5 解析語(yǔ)法元素直到 residual() 語(yǔ)法層,這就又要去看 7.3.5.3
小節(jié);按照 7.3.5.3 小節(jié)解析出殘差系數(shù)后我們?nèi)绾伟阉€原成真實(shí)的殘差呢?去看標(biāo)準(zhǔn) 8.5
小節(jié);<BR><BR>7、預(yù)測(cè)值和殘差都有了,加起來(lái)就是解碼圖像了。解碼的主要工作到此也算基本完成了。當(dāng)然,上面的過(guò)程中還會(huì)用到標(biāo)準(zhǔn)其他章節(jié)的相關(guān)內(nèi)容(例如,8.5
小節(jié)會(huì)用到 5.7 小節(jié)中定義的 InverseRasterScan),這就留給大家自己去學(xué)習(xí)了。<BR><BR><BR>
上面講了如何讀標(biāo)準(zhǔn),那么如何讀代碼呢?非常簡(jiǎn)單,因?yàn)槟悻F(xiàn)在已經(jīng)知道了代碼中各個(gè)函數(shù)所實(shí)現(xiàn)的功能以及標(biāo)準(zhǔn)各個(gè)章節(jié)所涉及的內(nèi)容,那么你就該知道標(biāo)準(zhǔn)某個(gè)部分的內(nèi)容與代碼中的哪個(gè)函數(shù)對(duì)應(yīng),因此對(duì)于你想詳細(xì)了解實(shí)現(xiàn)過(guò)程的模塊,對(duì)照標(biāo)準(zhǔn)去仔細(xì)啃那個(gè)函數(shù)吧。對(duì)于代碼中不明白的變量或者參數(shù),把程序跑起來(lái),看第
1 個(gè) MB 解碼時(shí)候該變量的值是多少,第 23 個(gè) MB
解碼時(shí)候該變量的值是多少……多做幾個(gè)觀察值,注意不要選擇特殊位置,然后總結(jié)一下規(guī)律,這樣你就自然能分析出該變量的作用和含義了。<BR><BR><BR>
以上講的是解碼過(guò)程,編碼過(guò)程就是解碼的反過(guò)程,因此同理。<BR><BR><BR><BR><BR><BR>——天之驕子(firstime)——<BR>
2008年8月5日<BR><BR>[<I> 本帖最后由 firstime
于 2008-9-4 11:35 AM 編輯 </I>]</DIV></TD></TR>
<TR>
<TD vAlign=bottom><BR><BR><BR><IMG alt=""
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/sigline.gif"><BR>
<DIV class=signature
style="OVERFLOW: hidden; max-height: 20em; maxHeight: 245px">歡迎加入我們的QQ群:12923082。新加入者請(qǐng)先仔細(xì)閱讀論壇中的《群成員須知》!</DIV></TD></TR>
<TR>
<TD align=right><A onclick=scroll(0,0)
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###"><IMG
alt=頂部
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/top.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=spaceborder style="MARGIN-BOTTOM: 4px; WIDTH: 98%">
<TABLE class=t_row cellSpacing=0 cellPadding=4 width="100%" align=center>
<TBODY>
<TR style="HEIGHT: 100%">
<TD class=t_user vAlign=top width="18%"><A class=bold
href="http://bbs.chinavideo.org/viewpro.php?uid=57263"
target=_blank>lzhgang</A> <BR>
<DIV class=smalltxt>新手上路<BR><IMG alt="Rank: 1"
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/star_level1.gif"><BR><BR><BR><BR>UID
57263<BR>精華 0<BR>積分 0<BR>帖子 42<BR>閱讀權(quán)限 10<BR>注冊(cè) 2008-6-5<BR>狀態(tài) 離線
</DIV></TD>
<TD
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
vAlign=top width="82%">
<TABLE class=t_msg cellSpacing=0 cellPadding=4 border=0>
<TBODY>
<TR>
<TD>
<DIV>
<DIV class="right t_number"><A class=bold
onclick="window.clipboardData.setData('text','http://bbs.chinavideo.org/viewthread.php?tid=4164&page=1#pid13305')"
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###">#2</A></DIV>
<DIV style="PADDING-TOP: 4px">發(fā)表于 2008-8-5 11:58 AM <A
href="http://bbs.chinavideo.org/viewpro.php?uid=57263">資料</A> <A
href="http://bbs.chinavideo.org/pm.php?action=send&uid=57263"
target=_blank>短消息</A> <A
href="http://wpa.qq.com/msgrd?V=1&Uin=793791505&Site=視頻技術(shù)論壇&Menu=yes"
target=_blank><IMG alt=QQ
src="E:\My Documents\hcf\H.264\[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files\qq1_offline(1).gif"
border=0></A> </DIV></DIV></TD></TR>
<TR>
<TD class=line style="PADDING-TOP: 10px" vAlign=top height="100%"><A
title="評(píng)分 0"
href="http://bbs.chinavideo.org/misc.php?action=viewratings&tid=4164&pid=13305"
name=pid13305></A>
<DIV style="FONT-SIZE: 12px">很有指導(dǎo)意義,謝謝版主的分享</DIV></TD></TR>
<TR>
<TD align=right><A onclick=scroll(0,0)
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###"><IMG
alt=頂部
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/top.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=spaceborder style="MARGIN-BOTTOM: 4px; WIDTH: 98%">
<TABLE class=t_row cellSpacing=0 cellPadding=4 width="100%" align=center>
<TBODY>
<TR style="HEIGHT: 100%">
<TD class=t_user vAlign=top width="18%"><A class=bold
href="http://bbs.chinavideo.org/viewpro.php?uid=58586"
target=_blank>duguyicao</A> <BR>
<DIV class=smalltxt>新手上路<BR><IMG alt="Rank: 1"
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/star_level1.gif"><BR><BR><BR><BR>UID
58586<BR>精華 0<BR>積分 0<BR>帖子 6<BR>閱讀權(quán)限 10<BR>注冊(cè) 2008-6-20<BR>狀態(tài) 離線
</DIV></TD>
<TD
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
vAlign=top width="82%">
<TABLE class=t_msg cellSpacing=0 cellPadding=4 border=0>
<TBODY>
<TR>
<TD>
<DIV>
<DIV class="right t_number"><A class=bold
onclick="window.clipboardData.setData('text','http://bbs.chinavideo.org/viewthread.php?tid=4164&page=1#pid13306')"
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###">#3</A></DIV>
<DIV style="PADDING-TOP: 4px">發(fā)表于 2008-8-5 12:57 PM <A
href="http://bbs.chinavideo.org/viewpro.php?uid=58586">資料</A> <A
href="http://bbs.chinavideo.org/pm.php?action=send&uid=58586"
target=_blank>短消息</A> </DIV></DIV></TD></TR>
<TR>
<TD class=line style="PADDING-TOP: 10px" vAlign=top height="100%"><A
title="評(píng)分 0"
href="http://bbs.chinavideo.org/misc.php?action=viewratings&tid=4164&pid=13306"
name=pid13306></A>
<DIV style="FONT-SIZE: 12px">正在研讀關(guān)于lz的所有帖子,收益很大!<IMG alt=""
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/handshake.gif"
border=0 smilieid="17"></DIV></TD></TR>
<TR>
<TD align=right><A onclick=scroll(0,0)
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###"><IMG
alt=頂部
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/top.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=spaceborder style="MARGIN-BOTTOM: 4px; WIDTH: 98%">
<TABLE class=t_row cellSpacing=0 cellPadding=4 width="100%" align=center>
<TBODY>
<TR style="HEIGHT: 100%">
<TD class=t_user vAlign=top width="18%"><A class=bold
href="http://bbs.chinavideo.org/viewpro.php?uid=38171"
target=_blank>hnhbllb</A> <BR>
<DIV class=smalltxt>新手上路<BR><IMG alt="Rank: 1"
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/star_level1.gif"><BR><BR><BR><BR>UID
38171<BR>精華 0<BR>積分 0<BR>帖子 2<BR>閱讀權(quán)限 10<BR>注冊(cè) 2007-12-6<BR>狀態(tài) 離線
</DIV></TD>
<TD
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
vAlign=top width="82%">
<TABLE class=t_msg cellSpacing=0 cellPadding=4 border=0>
<TBODY>
<TR>
<TD>
<DIV>
<DIV class="right t_number"><A class=bold
onclick="window.clipboardData.setData('text','http://bbs.chinavideo.org/viewthread.php?tid=4164&page=1#pid13309')"
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###">#4</A></DIV>
<DIV style="PADDING-TOP: 4px">發(fā)表于 2008-8-5 03:38 PM <A
href="http://bbs.chinavideo.org/viewpro.php?uid=38171">資料</A> <A
href="http://bbs.chinavideo.org/pm.php?action=send&uid=38171"
target=_blank>短消息</A> </DIV></DIV></TD></TR>
<TR>
<TD class=line style="PADDING-TOP: 10px" vAlign=top height="100%"><A
title="評(píng)分 0"
href="http://bbs.chinavideo.org/misc.php?action=viewratings&tid=4164&pid=13309"
name=pid13309></A>
<DIV style="FONT-SIZE: 12px">太感謝了</DIV></TD></TR>
<TR>
<TD align=right><A onclick=scroll(0,0)
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###"><IMG
alt=頂部
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/top.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=spaceborder style="MARGIN-BOTTOM: 4px; WIDTH: 98%">
<TABLE class=t_row cellSpacing=0 cellPadding=4 width="100%" align=center>
<TBODY>
<TR style="HEIGHT: 100%">
<TD class=t_user vAlign=top width="18%"><A class=bold
href="http://bbs.chinavideo.org/viewpro.php?uid=2313"
target=_blank>QuestionMark</A> <BR>
<DIV class=smalltxt>新手上路<BR><IMG alt="Rank: 1"
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/star_level1.gif"><BR><BR><BR><BR>UID
2313<BR>精華 <A
href="http://bbs.chinavideo.org/digest.php?authorid=2313">2</A> <BR>積分
45<BR>帖子 23<BR>閱讀權(quán)限 10<BR>注冊(cè) 2006-11-6<BR>狀態(tài) 離線 </DIV></TD>
<TD
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
vAlign=top width="82%">
<TABLE class=t_msg cellSpacing=0 cellPadding=4 border=0>
<TBODY>
<TR>
<TD>
<DIV>
<DIV class="right t_number"><A class=bold
onclick="window.clipboardData.setData('text','http://bbs.chinavideo.org/viewthread.php?tid=4164&page=1#pid13312')"
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###">#5</A></DIV>
<DIV style="PADDING-TOP: 4px">發(fā)表于 2008-8-5 04:49 PM <A
href="http://bbs.chinavideo.org/viewpro.php?uid=2313">資料</A> <A
href="http://bbs.chinavideo.org/pm.php?action=send&uid=2313"
target=_blank>短消息</A> </DIV></DIV></TD></TR>
<TR>
<TD class=line style="PADDING-TOP: 10px" vAlign=top height="100%"><A
title="評(píng)分 0"
href="http://bbs.chinavideo.org/misc.php?action=viewratings&tid=4164&pid=13312"
name=pid13312></A>
<DIV style="FONT-SIZE: 12px">強(qiáng)烈一頂!</DIV></TD></TR>
<TR>
<TD align=right><A onclick=scroll(0,0)
href="http://bbs.chinavideo.org/viewthread.php?tid=4164###"><IMG
alt=頂部
src="[原創(chuàng)] 如何讀標(biāo)準(zhǔn)和代碼 - H_264樂(lè)園 - 視頻技術(shù)論壇 中華視頻網(wǎng)ffmpeg工程組 - Powered by Discuz!.files/top.gif"
border=0></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<DIV class=spaceborder style="MARGIN-BOTTOM: 4px; WIDTH: 98%">
<TABLE class=t_row cellSpacing=0 cellPadding=4 width="100%" align=center>
<TBODY>
<TR style="HEIGHT: 100%">
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -