亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

H264源碼分析(二)

系統(tǒng) 1923 0

原文出自 http://blog.csdn.net/xfding/article/details/5476763 (轉(zhuǎn)載收集)

(四)圖像參數(shù)集語(yǔ)義

?

pic_parameter_set_rbsp( ) {??
??? // pic_parameter_set_id 用以指定本參數(shù)集的序號(hào),該序號(hào)在各片的片頭被引用。
?? pic_parameter_set_id ??
??? // seq_parameter_set_id? 指明本圖像參數(shù)集所引用的序列參數(shù)集的序號(hào)。
??? seq_parameter_set_id ??
?? // entropy_coding_mode_flag? 指明熵編碼的選擇,本句法元素為0時(shí),表示熵編碼使用 CAVLC,本句法元素為1時(shí)表示熵編碼使用 CABAC?
??? entropy_coding_mode_flag ??
??? // pic_order_present_flag??????? POC 的三種計(jì)算方法在片層還各需要用一些句法元素作為參數(shù),本句法元素等于1時(shí)表示在片頭會(huì)有句法元素指明這些參數(shù);本句法元素等于0時(shí),表示片頭不會(huì)給出這些參數(shù),這些參數(shù)使用默認(rèn)值
??? pic_order_present_flag ??
??? // num_slice_groups_minus1? 本句法元素加1后指明圖像中片組的個(gè)數(shù)。H.264? 中沒(méi)有專(zhuān)門(mén)的句法元素用于指明是否使用片組模式,當(dāng)本句法元素等于0(即只有一個(gè)片組),表示不使用片組模式,后面也不會(huì)跟有用于計(jì)算片組映射的句法元素。?
??? num_slice_groups_minus1 ??
??? if( num_slice_groups_minus1 > 0 ) {???
??????? /* slice_group_map_type? 用以指明片組分割類(lèi)型。?
?????????? map_units 的定義:
????????? -? 當(dāng) frame_mbs_only_flag 等于1時(shí),map_units 指的就是宏塊
????????? -? 當(dāng) frame_mbs_only_flag 等于0時(shí)?
????????????? -? 幀場(chǎng)自適應(yīng)模式時(shí),map_units 指的是宏塊對(duì)
????????????? -? 場(chǎng)模式時(shí),map_units 指的是宏塊
????????????? -? 幀模式時(shí),map_units 指的是與宏塊對(duì)相類(lèi)似的,上下兩個(gè)連續(xù)宏塊的組合體。????? */
??????? slice_group_map_type ???????
??????? if( slice_group_map_type??? = =??? 0 )????????
??????????? for( iGroup = 0; iGroup <= num_slice_groups_minus1; iGroup++ )????????
??????????????? // run_length_minus1[i]???? 用以指明當(dāng)片組類(lèi)型等于0時(shí),每個(gè)片組連續(xù)的 map_units 個(gè)數(shù)
??????????????? run_length_minus1 [ iGroup ]???
??????? else if( slice_group_map_type ??? = =??? 2 )????????
??????????? for( iGroup = 0; iGroup < num_slice_groups_minus1; iGroup++ ) {????????
??????????????? // top_left[i],bottom_right[i]?? 用以指明當(dāng)片組類(lèi)型等于2時(shí),矩形區(qū)域的左上及右下位置。
??????????????? top_left [ iGroup ]??
??????????????? bottom_right [ iGroup ]??
??????????? }????????
??????? else if(??? slice_group_map_type ??? = =??? 3??? | |????
??????????????????? slice_group_map_type ??? = =??? 4??? | |????
??????????????????? slice_group_map_type ??? = =??? 5 ) {
??????????? // slice_group_change_direction_flag 與下一個(gè)句法元素一起指明確切的片組分割方法。 ?
?????????? slice_group_change_direction_flag ???
?????????? // slice_group_change_rate_minus1?????? 用以指明變量 SliceGroupChangeRAte
??????????? slice_group_change_rate_minus1???
??????? } else if( slice_group_map_type ??? = =??? 6 ) {???
?????????? // pic_size_in_map_units_minus1?? 在片組類(lèi)型等于6時(shí),用以指明圖像以 map_units 為單位的大小。?????
??????????? pic_size_in_map_units_minus1 ???
??????????? for( i = 0; i <= pic_size_in_map_units_minus1; i++ )????????
??????????????? // slice_group_id[i]?????????? 在片組類(lèi)型等于6時(shí),用以指明某個(gè) map_units 屬于哪個(gè)片組。
??????????????? slice_group_id [ i ]???
??????? }????????
??? }????????
?? // num_ref_idx_l0_active_minus1? 加1后指明目前參考幀隊(duì)列的長(zhǎng)度,即有多少個(gè)參考幀(包括短期和長(zhǎng)期)。值得注意的是,當(dāng)目前解碼圖像是場(chǎng)模式下,參考幀隊(duì)列的長(zhǎng)度應(yīng)該是本句法元素再乘以2,因?yàn)閳?chǎng)模式下各幀必須被分解以場(chǎng)對(duì)形式存在。(這里所說(shuō)的場(chǎng)模式包括圖像的場(chǎng)及幀場(chǎng)自適應(yīng)下的處于場(chǎng)模式的宏塊對(duì))? 本句法元素的值有可能在片頭被重載。?
????? 在序列參數(shù)集中有句法元素 num_ref_frames 也是跟參考幀隊(duì)列有關(guān),它們的區(qū)別是num_ref_frames指明參考幀隊(duì)列的最大值,解碼 器用它的值來(lái)分配內(nèi)存空 間;num_ref_idx_l0_active_minus1 指明在這個(gè)隊(duì)列中當(dāng)前實(shí)際的、已存在的參考幀數(shù)目,這從它的名字“active”中也可以看出來(lái)。圖像時(shí),并不是直接傳送該圖像的編號(hào),而是傳送該圖像在參考幀隊(duì)列中的序號(hào)。這個(gè)序號(hào)并不是在碼流中傳送的,這個(gè)句法元素是 H.264 中最重要的句法元素之一,編碼器要通知解碼器某個(gè)運(yùn)動(dòng)矢量所指向的是哪個(gè)參考而是編碼器和解碼器同步地、用相同的方法將參考圖像放入隊(duì)列,從而獲得一個(gè)序號(hào)。這個(gè)隊(duì)列在每解一個(gè)圖像,甚至是每個(gè)片后都會(huì)動(dòng)態(tài)地更新。維護(hù)參考幀隊(duì)列是編解碼器十分重要的工作,而本句法元素是維護(hù)參考幀隊(duì)列的重要依據(jù)。參考幀隊(duì)列的復(fù)雜的維護(hù)機(jī)制是 H.264 重要也是很有特色的組成部分?
??? num_ref_idx_l0_active_minus1??
??? num_ref_idx_l1_active_minus1
?
??? // weighted_pred_flag? 用以指明是否允許P和SP片的加權(quán)預(yù)測(cè),如果允許,在片頭會(huì)出現(xiàn)用以計(jì)算加權(quán)預(yù)測(cè)的句法元素。
?? weighted_pred_flag ???
??? // weighted_bipred_flag?? 用以指明是否允許 B 片的加權(quán)預(yù)測(cè),本句法元素等于 0 時(shí)表示使用默認(rèn)加權(quán)預(yù)測(cè)模式,等于 1 時(shí)表示使用顯式加權(quán)預(yù)測(cè)模式,等于 2 時(shí)表示使用隱式加權(quán)預(yù)測(cè)模式。?
??? weighted_bipred_idc ???
??? // pic_init_qp_minus26? 加 26 后用以指明亮度分量的量化參數(shù)的初始值。在 H.264 中,量化參數(shù)分三個(gè)級(jí)別給出:圖像參數(shù)集、片頭、宏塊。在圖像參數(shù)集給出的是一個(gè)初始值。
??? pic_init_qp_minus26 ??? /* relative to 26 */ ???
??? pic_init_qs_minus26 ??? /* relative to 26 */ ??
??? // chroma_qp_index_offset?? 色度分量的量化參數(shù)是根據(jù)亮度分量的量化參數(shù)計(jì)算出來(lái)的,本句法元素用以指明計(jì)算時(shí)用到的參數(shù)。
??? chroma_qp_index_offset ???
?? // deblocking_filter_control_present_flag? 編碼器可以通過(guò)句法元素顯式地控制去塊濾波的強(qiáng)度,本句法元素指明是在片頭是否會(huì)有句法元素傳遞這個(gè)控制信息。如果本句法元素等于 0,那些用于傳遞濾波強(qiáng)度的句法元素不會(huì)出現(xiàn),解碼器將獨(dú)立地計(jì)算出濾波強(qiáng)度。
??? deblocking_filter_control_present_flag ??
??? // constrained_intra_pred_flag? 在 P 和 B 片中,幀內(nèi)編碼的宏塊的鄰近宏塊可能是采用的幀間編碼。當(dāng)本句法元素等于 1 時(shí),表示幀內(nèi)編碼的宏塊不能用幀間編碼的宏塊的像素作為自己的預(yù)測(cè),即幀內(nèi)編碼的宏塊只能用鄰近幀內(nèi)編碼的宏塊的像素作為自己的預(yù)測(cè);而本句法元素等于 0 時(shí),表示不存在這種限制。
??? constrained_intra_pred_flag ??
??? // redundant_pic_cnt_present_flag 指明是否會(huì)出現(xiàn) redundant_pic_cnt? 句法元素。
??? redundant_pic_cnt_present_flag??
??? rbsp_trailing_bits
( )???????
}

?

(五)片頭句法

slice_header ( ) {?
??? // first_mb_in_slice? 片中的第一個(gè)宏塊的地址,? 片通過(guò)這個(gè)句法元素來(lái)標(biāo)定它自己的地址。 要注意的是在幀場(chǎng)自適應(yīng)模式下,宏塊都是成對(duì)出現(xiàn),這時(shí)本句法元素表示的是第幾個(gè)宏塊對(duì),對(duì)應(yīng)的第一個(gè)宏塊的真實(shí)地址應(yīng)該是2 * first_mb_in_slice?
??? first_mb_in_slice ???
??? /* slice_type??? 指明片的類(lèi)型
?????? slice_type????????? Name of slice_type
?????? 0??????????????????????? P (P slice)
?????? 1??????????????????????? B (B slice)
?????? 2??????????????????????? I (I slice)
?????? 3??????????????????????? SP (SP slice)
?????? 4??????????????????????? SI (SI slice)
?????? 5??????????????????????? P (P slice)
?????? 6??????????????????????? B (B slice)
?????? 7??????????????????????? I (I slice)
?????? 8??????????????????????? SP (SP slice)
?????? 9??????????????????????? SI (SI slice) */

??? slice_type ???
??? // pic_parameter_set_id? 圖像參數(shù)集的索引號(hào).? 范圍 0? 到 255。?
??? pic_parameter_set_id ???
??? // frame_num? 每個(gè)參考幀都有一個(gè)依次連續(xù)的 frame_num 作為它們的標(biāo)識(shí),這指明了各圖像的解碼順序。但事實(shí)上我們可以看到,frame_num 的出現(xiàn)沒(méi)有 if 語(yǔ)句限定條件,這表明非參考幀的片頭也會(huì)出現(xiàn) frame_num。只是當(dāng)該個(gè)圖像是參考幀時(shí),它所攜帶的這個(gè)句法元素在解碼時(shí)才有意義。
??? H.264 對(duì) frame_num的值作了如下規(guī)定:當(dāng)參數(shù)集中的句法元素gaps_in_frame_num_value_allowed_flag 不為1 時(shí),每個(gè)圖像的 frame_num? 值是它前一個(gè)參考幀的frame_num 值增加 1。這句話(huà)包含有兩層意思:
??? 1)? 當(dāng) gaps_in_frame_num_value_allowed_flag? 不為 1,即 frame_num? 連續(xù)的情況下,每個(gè)圖像的frame_num 由前一個(gè)參考幀圖像對(duì)應(yīng)的值加 1,著重點(diǎn)是“前一個(gè)參考幀”。
?????????? 前面我們?cè)?jīng)提到,對(duì)于非參考幀來(lái)說(shuō),它的 frame_num? 值在解碼過(guò)程中是沒(méi)有意義的,因?yàn)閒rame_num? 值是參考幀特有的,它的主要作用是在該圖像被其他圖像引用作運(yùn)動(dòng)補(bǔ)償?shù)膮⒖紩r(shí)提供一個(gè)標(biāo)識(shí)。但 H.264 并沒(méi)有在非參考幀圖像中取消這一句法元素,原因是在 POC 的第二種和第三種解碼方法中可以通過(guò)非參考幀的 frame_num 值計(jì)算出他們的 POC 值。
??? 2)? 當(dāng) gaps_in_frame_num_value_allowed_flag 等于 1,前文已經(jīng)提到,這時(shí)若網(wǎng)絡(luò)阻塞,編碼器可以將編碼后的若干圖像丟棄,而不用另行通知解碼器。在這種情況下,解碼器必須有機(jī)制將缺失的frame_num 及所對(duì)應(yīng)的圖像填補(bǔ),否則后續(xù)圖像若將運(yùn)動(dòng)矢量指向缺失的圖像將會(huì)產(chǎn)生解碼錯(cuò)誤。?
??? frame_num ???
??? if( ! frame_mbs_only_flag ) {?
??????? // field_pic_flag???? 這是在片層標(biāo)識(shí)圖像編碼模式的唯一一個(gè)句法元素。所謂的編碼模式是指的幀編碼、場(chǎng)編碼、幀場(chǎng)自適應(yīng)編碼。當(dāng)這個(gè)句法元素取值為 1 時(shí)? 屬于場(chǎng)編碼; 0 時(shí)為非場(chǎng)編碼。 ????????
?????? field_pic_flag ???
??????? if( field_pic_flag )??????????
??????????? // bottom_field_flag?? 等于 1 時(shí)表示當(dāng)前圖像是屬于底場(chǎng);等于 0 時(shí)表示當(dāng)前圖像是屬于頂場(chǎng)。
??????????? bottom_field_flag ???
??? }?????????
??? if( nal_unit_type ??? ==??? 5 )?????????
??????? // idr_pic_id????? IDR? 圖像的標(biāo)識(shí)。不同的 IDR 圖像有不同的 idr_pic_id 值。值得注意的是,IDR 圖像有不等價(jià)于 I 圖像,只有在作為 IDR 圖像的 I 幀才有這個(gè)句法元素,在場(chǎng)模式下,IDR 幀的兩個(gè)場(chǎng)有相同的 idr_pic_id 值。idr_pic_id 的取值范圍是? [0,65535],和 frame_num 類(lèi)似,當(dāng)它的值超出這個(gè)范圍時(shí),它會(huì)以循環(huán)的方式重新開(kāi)始計(jì)數(shù)。??
??????? idr_pic_id ??
??? if( pic_order_cnt_type ??? ==??? 0 ) {????
??????? // pic_order_cnt_lsb??? 在 POC 的第一種算法中本句法元素來(lái)計(jì)算 POC 值,在 POC 的第一種算法中是顯式地傳遞 POC 的值,而其他兩種算法是通過(guò) frame_num 來(lái)映射 POC 的值。
??????? pic_order_cnt_lsb ????????
??????? if( pic_order_present_flag &&??? ! field_pic_flag )?????????
??????????? // delta_pic_order_cnt_bottom??? 如果是在場(chǎng)模式下,場(chǎng)對(duì)中的兩個(gè)場(chǎng)都各自被構(gòu)造為一個(gè)圖像,它們有各自的 POC 算法來(lái)分別計(jì)算兩個(gè)場(chǎng)的 POC 值,也就是一個(gè)場(chǎng)對(duì)擁有一對(duì) POC 值;而在是幀模式或是幀場(chǎng)自適應(yīng)模式下,一個(gè)圖像只能根據(jù)片頭的句法元素計(jì)算出一個(gè) POC 值。根據(jù) H.264 的規(guī)定,在序列中有可能出現(xiàn)場(chǎng)的情況,即 frame_mbs_only_flag 不為 1 時(shí),每個(gè)幀或幀場(chǎng)自適應(yīng)的圖像在解碼完后必須分解為兩個(gè)場(chǎng),以供后續(xù)圖像中的場(chǎng)作為參考圖像。所以當(dāng) frame_mb_only_flag? 不為 1時(shí),幀或幀場(chǎng)自適應(yīng)中包含的兩個(gè)場(chǎng)也必須有各自的 POC 值。通過(guò)本句法元素,可以在已經(jīng)解開(kāi)的幀或幀場(chǎng)自適應(yīng)圖像的 POC 基礎(chǔ)上新映射一個(gè) POC 值,并把它賦給底場(chǎng)。當(dāng)然,象句法表指出的那樣,這個(gè)句法元素只用在 POC 的第一個(gè)算法中。
??????????? delta_pic_order_cnt_bottom???
??? }?????????
??? if( pic_order_cnt_type = = 1 && ! delta_pic_order_always_zero_flag ) {??????
?????? // delta_pic_order_cnt[0], delta_pic_order_cnt[1]:POC 的第二和第三種算法是從 frame_num 映射得來(lái),這兩個(gè)句法元素用于映射算法。delta_pic_order_cnt[0]用于幀編碼方式下的底場(chǎng)和場(chǎng)編碼方式的場(chǎng),delta_pic_order_cnt[1] 用于幀編碼方式下的頂場(chǎng)。????
??????? delta_pic_order_cnt [ 0 ]?
??????? if( pic_order_present_flag ??? &&??? ! field_pic_flag )?????????
??????????? delta_pic_order_cnt [ 1 ]??
??? }?????????
??? if( redundant_pic_cnt_present_flag )????????
??????? // redundant_pic_cnt??? 冗余片的 id 號(hào)。?
??????? redundant_pic_cnt ??
??? if( slice_type ??? ==??? B )?????????
??????? // direct_spatial_mv_pred_flag? 指出在B圖像的直接預(yù)測(cè)的模式下,用時(shí)間預(yù)測(cè)還是用空間預(yù)測(cè)。1:空間預(yù)測(cè);0:時(shí)間預(yù)測(cè)。?
??????? direct_spatial_mv_pred_flag ??
??? if( slice_type = = P | | slice_type = = SP | | slice_type = = B ) {?????????
??????? // num_ref_idx_active_override_flag??? 在圖像參數(shù)集中我們看到已經(jīng)出現(xiàn)句法元素num_ref_idx_l0_active_minus1 和num_ref_idx_l1_active_minus1 指定當(dāng)前參考幀隊(duì)列中實(shí)際可用的參考幀的數(shù)目。在片頭可以重載這對(duì)句法元素,以給某特定圖像更大的靈活度。這個(gè)句法元素就是指明片頭是否會(huì)重載,如果該句法元素等于 1,下面會(huì)出現(xiàn)新的 num_ref_idx_l0_active_minus1? 和num_ref_idx_l1_active_minus1 值。?
??????? num_ref_idx_active_override_flag?
??????? if( num_ref_idx_active_override_flag ) {?????????
??????????? num_ref_idx_l0_active_minus1?
??????????? if( slice_type??? ==??? B )?????????
??????????????? num_ref_idx_l1_active_minus1 ??
??????? }?????????
??? }?????
??? // 參考幀隊(duì)列重排序(reordering)句法
??? ref_pic_list_reordering ( )??????????
??? if( ( weighted_pred_flag ??? &&??? ( slice_type == P??? | |??? slice_type == SP ) )?? | |
??????? ( weighted_bipred_idc ??? ==??? 1??? &&??? slice_type ??? ==??? B ) )
??????? // 加權(quán)預(yù)測(cè)句法 ?
??????? pred_weight_table ( )??????
??? if( nal_ref_idc != 0 )?????????
??????? // 參考幀隊(duì)列標(biāo)記(marking)句法?
?????? dec_ref_pic_marking ( )????????
??? if( entropy_coding_mode_flag??? &&??? slice_type??? !=??? I??? &&?? slice_type??? !=??? SI )
??????? // cabac_init_idc? 給出 cabac 初始化時(shí)表格的選擇,范圍 0 到 2。
??????? cabac_init_idc ??
??? // slice_qp_delta? 指出在用于當(dāng)前片的所有宏塊的量化參數(shù)的初始值。SliceQPY = 26+ pic_init_qp_minus26 + slice_qp_delta?? 范圍是? 0 to 51。 H.264? 中量化參數(shù)是分圖像參數(shù)集、片頭、宏塊頭三層給出的,前兩層各自給出一個(gè)偏移值,這個(gè)句法元素就是片層的偏移。
??? slice_qp_delta ???
??? if( slice_type ??? = =??? SP??? | |??? slice_type ??? = =??? SI ) {?????????
??????? if( slice_type ??? = =??? SP )?????????
??????????? // sp_for_switch_flag? 指出SP 幀中的p 宏塊的解碼方式是否是switching 模式?
??????????? sp_for_switch_flag ?
??????????? // slice_qs_delta? 與 slice_qp_delta 的與語(yǔ)義相似,用在 SI 和 SP 中的?
??????????? slice_qs_delta ??
??? }?????????
??? if( deblocking_filter_control_present_flag ) {?????
??????? // disable_deblocking_filter_idc? H.264 指定了一套算法可以在解碼器端獨(dú)立地計(jì)算圖像中各邊界的濾波強(qiáng)度進(jìn)行濾波。除了解碼器獨(dú)立計(jì)算之外,編碼器也可以傳遞句法元素來(lái)干涉濾波強(qiáng)度,當(dāng)這個(gè)句法元素指定了在塊的邊界是否要用濾波,同時(shí)指明那個(gè)塊的邊界不用塊濾波?????
??????? disable_deblocking_filter_idc ??
??????? if( disable_deblocking_filter_idc ??? !=??? 1 ) {???
??????????? // slice_alpha/beta_c0_offset_div2? 給出用于增強(qiáng)? α/beta 和? t C0 的偏移值 ????????
??????????? slice_alpha_c0_offset_div2??
??????????? slice_beta_offset_div2
???
??????? }?????????
??? }?????????
??? if( num_slice_groups_minus1 > 0??? &&
??????? slice_group_map_type >= 3??? &&??? slice_group_map_type <= 5)
????? ? // slice_group_change_cycle? 當(dāng)片組的類(lèi)型是 3, 4,??? 5,由句法元素可獲得片組中? 映射單元的數(shù)目:
??????? slice_group_change_cycle ?
}

?

(六)參考幀隊(duì)列重排序(reordering)句法

ref_pic_list_reordering( ) { ??
??? if( slice_type ??? !=??? I??? &&??? slice_type ??? !=??? SI ) {?????????????
??????? // ref_pic_list_reordering_flag_l0?? 指明是否進(jìn)行重排序操作,這個(gè)句法元素等于1 時(shí)表明緊跟著會(huì)有一系列句法元素用于參考幀隊(duì)列的重排序。
?????? ref_pic_list_reordering_flag_l0 ??
??????? if( ref_pic_list_reordering_flag_l0 )??????????
??????????? do {??????????
??????????????? // reordering_of_pic_nums_idc????? 指明執(zhí)行哪種重排序操作
?????????????????? reordering_of_pic_nums_idc?????? 操作
?????????????????? 0????????????????????????????????????????????????? 短期參考幀重排序,abs_diff_pic_num_minus1會(huì)出現(xiàn)在碼流中,從當(dāng)
?????????????????????????????????????????????????????????????????????? 前圖像的PicNum減去? (abs_diff_pic_num_minus1? +? 1)? 后指明需要重
?????????????????????????????????????????????????????????????????????? 排序的圖像。
?????????????????? 1????????????????????????????????????????????????? 短期參考幀重排序,abs_diff_pic_num_minus1會(huì)出現(xiàn)在碼流中,從當(dāng)
?????????????????????????????????????????????????????????????????????? 前圖像的PicNum加上? (abs_diff_pic_num_minus1? +? 1)? 后指明需要重
?????????????????????????????????????????????????????????????????????? 排序的圖像。
?????????????????? 2????????????????????????????????????????????????? 長(zhǎng)期參考幀重排序,long_term_pic_num會(huì)出現(xiàn)在碼流中,指明需要重
?????????????????????????????????????????????????????????????????????? 排序的圖像。
?????????????????? 3????????????????????????????????????????????????? 結(jié)束循環(huán),退出重排序操作。?
??????????????? reordering_of_pic_nums_idc ?
??????????????? if( reordering_of_pic_nums_idc ??? ==??? 0??? | |
??????????????????? reordering_of_pic_nums_idc ??? ==??? 1 )?
??????????????????? // abs_diff_pic_num_minus1?? 在對(duì)短期參考幀重排序時(shí)指明重排序圖像與當(dāng)前的差
??????????????????? abs_diff_pic_num_minus1 ??
??????????????? else if( reordering_of_pic_nums_idc ??? = =??? 2 )????????
??????????????????? // long_term_pic_num???? 在對(duì)長(zhǎng)期參考幀重排序時(shí)指明重排序圖像 ??
?????????????????? long_term_pic_num ?
??????????? } while( reordering_of_pic_nums_idc ??? !=??? 3 )??????????
??? }??????????
??? if( slice_type ??? ==??? B ) {??????????
?????? ref_pic_list_reordering_flag_l1 ??
??????? if( ref_pic_list_reordering_flag_l1 )??????????
??????????? do {??????????
??????????????? reordering_of_pic_nums_idc??
??????????????? if( reordering_of_pic_nums_idc ??? = =??? 0??? | |
??????????????????? reordering_of_pic_nums_idc ??? = =??? 1 )
?????????????????? abs_diff_pic_num_minus1??
??????????????? else if( reordering_of_pic_nums_idc ??? = =??? 2 )??????????
??????????????????? long_term_pic_num ???
??????????? } while( reordering_of_pic_nums_idc ??? !=??? 3 )??????????
??? }??????????
}

?

?

H264源碼分析(二)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品综合久久久久久蜜月 | 国产野花视频天堂视频免费 | 中文字幕不卡一区2021 | 91成人午夜性a一级毛片 | 久久久久久久蜜桃 | 一级毛片国产 | 福利视频中文在线观看 | 手机看片国产欧美日韩高清 | 亚洲欧美小视频 | 四虎在线视频免费观看 | 黄色小视频在线免费观看 | 在线看片91 | 老子影院午夜理伦手机不卡 | 中文字幕 国产精品 | 免费一区二区三区四区五区 | 国产精品1区2区3区在线播放 | 四虎在线观看免费视频 | 成人夜色视频网站在线观看 | 韩国日本一级毛片免费视频 | 91精品国产免费久久久久久 | 99久久免费精品国产免费高清 | 在线国产播放 | 鲁丝一区二区三区不属 | 51精品视频在线一区二区 | 国产精品夜夜春夜夜爽久久 | 精品香蕉一区二区三区 | 久久久久成人精品一区二区 | 国产中文字幕免费 | 毛片网站免费在线观看 | 欧美理论在线观看 | 一级毛片免费视频日本 | 欧美激情在线观看一区二区三区 | 精品欧美一区二区三区在线观看 | 亚洲精品6久久久久中文字幕 | 很黄的网站在线观看 | 亚洲网站视频 | 日韩欧美一二区 | 99久久精品费精品国产 | 久操免费在线观看 | 免费看久久 | 欧美理论片大全在线观看 |