亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種立體視頻碼流處理方法及裝置的制作方法

文檔序號:7949898閱讀:157來源:國知局
專利名稱:一種立體視頻碼流處理方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及視頻技術(shù)領(lǐng)域,特別涉及一種立體視頻碼流處理方法及裝置。
背景技術(shù)
隨著多媒體技術(shù)的不斷發(fā)展,多視角視頻獲得了越來越廣泛的關(guān)注,并開始逐步走進(jìn)人們的日常生活。然而多視角視頻應(yīng)用所需要的數(shù)據(jù)量是非常龐大的,進(jìn)而增加傳輸和存儲負(fù)擔(dān)。為此,JVT(Joint Video Team,聯(lián)合視頻專家組)專門制定了 MVC(Multiview Video Coding,多視角視頻編碼)標(biāo)準(zhǔn)。MVC標(biāo)準(zhǔn)作為 H. ^4/AVC (Advanced Video Coding, 新一代視頻編碼)標(biāo)準(zhǔn)(正式名稱,IS0/IEC 14496-10)的擴(kuò)充,在H. 264/AVC標(biāo)準(zhǔn)的附錄 H中指定。MVC標(biāo)準(zhǔn)在H. 264/AVC標(biāo)準(zhǔn)的基礎(chǔ)上又加入了新技術(shù),充分的利用了不同視角之間的相關(guān)性,從而降低視角間冗余數(shù)據(jù)量,能夠在處理多視角視頻的場景中提高編碼效率、 降低解碼復(fù)雜度。請參閱圖1,圖1是一種典型的MVC預(yù)測結(jié)構(gòu),其中&是視角順序,Tn是時間順序。 每個視角按照可分級B幀預(yù)測編碼,即在參考本視角內(nèi)已編碼幀的同時還可以使用相鄰視角同一時刻的對應(yīng)幀作為參考進(jìn)行編碼。圖1中&為視角0——基本視角,視角0中的視頻幀使用視角內(nèi)預(yù)測,即在進(jìn)行預(yù)測編碼時,不可以參考同一時刻其他視角的視頻幀,其編碼后獲得的碼流結(jié)構(gòu)與AVC碼流結(jié)構(gòu)完全兼容。圖1中S2,S4, &為P視角,P視角中的視頻幀選用單方向同一時刻其他視角的視頻幀進(jìn)行視角間預(yù)測,圖1中的S1,視角,B 視角中的視頻幀可以選用左右兩個方向同一時刻其他視角的視頻幀進(jìn)行視角間預(yù)測。P視角和B視角編碼后獲得的碼流結(jié)構(gòu)與AVC碼流結(jié)構(gòu)不完全兼容。MVC碼流中的擴(kuò)展視角子碼流無法使用AVC解碼器直接解碼,對于現(xiàn)有終端設(shè)備采用AVC解碼器對數(shù)據(jù)進(jìn)行解碼的用戶,需要將傳輸?shù)腗VC碼流轉(zhuǎn)換為AVC碼流,再進(jìn)行解碼。目前,在進(jìn)行MVC碼流到AVC碼流轉(zhuǎn)換時,通常使用的碼流轉(zhuǎn)換方法能夠?qū)VC碼流轉(zhuǎn)換為多個AVC碼流,每個AVC碼流對應(yīng)單一視角。數(shù)據(jù)轉(zhuǎn)換方法是一種利用MVC碼流的運(yùn)動信息,對MVC碼流的解碼結(jié)果或者解碼中間結(jié)果進(jìn)行快速二次編碼的方法。其中對采用幀內(nèi)模式編碼的宏塊或者錨定幀內(nèi)的宏塊,在數(shù)據(jù)轉(zhuǎn)換過程中,使用幀內(nèi)模式編碼。對采用視角內(nèi)預(yù)測的宏塊,在數(shù)據(jù)轉(zhuǎn)換過程中,保持原始運(yùn)動信息不變。對采用了視角間預(yù)測的P視角和B視角中的宏塊,在數(shù)據(jù)轉(zhuǎn)換過程中,需要更新運(yùn)動信息,具體為進(jìn)行數(shù)據(jù)轉(zhuǎn)換視角中的宏塊利用全局視差找到所參考視角中的對應(yīng)宏塊;使用對應(yīng)宏塊的參考幀,預(yù)測模式和運(yùn)動矢量等信息作為進(jìn)行數(shù)據(jù)轉(zhuǎn)換宏塊的參考幀,預(yù)測模式和運(yùn)動矢量信息。然而,由于參考幀,預(yù)測模式,運(yùn)動矢量信息發(fā)生變化,造成重建宏塊失真,并且會將失真引入到編碼后續(xù)幀中,導(dǎo)致轉(zhuǎn)換后的AVC碼流失真率增加,進(jìn)而導(dǎo)致終端設(shè)備顯示的圖像失真, 降低圖像質(zhì)量。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種立體視頻碼流處理方法及裝置。提取采用特定預(yù)測結(jié)構(gòu)編碼的MVC碼流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流,所提取的這兩個視角子碼流作為立體視頻碼流,實(shí)現(xiàn)該立體視頻碼流到AVC碼流的無損轉(zhuǎn)換,進(jìn)而保證AVC解碼器輸出圖像與MVC解碼器輸出對應(yīng)圖像一致,不損失圖像質(zhì)量。本發(fā)明在編碼MVC碼流時采用IPPPP...預(yù)測結(jié)構(gòu),采用這樣的預(yù)測結(jié)構(gòu),是為了可以根據(jù)人眼瞳距選擇最佳視角構(gòu)成雙目視頻以形成立體視頻。本發(fā)明在接收MVC碼流后,可以根據(jù)人眼瞳距提取基本視角子碼流和與人眼瞳距最接近的一個擴(kuò)展視角子碼流, 并將這兩個視角子碼流無損地轉(zhuǎn)換為一個AVC碼流,從而保證用戶觀看AVC解碼器輸出的雙目立體視頻無變形失真現(xiàn)象。為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案基于本發(fā)明的一方面,提供一種立體視頻碼流處理方法,該方法支持新一代視頻編碼標(biāo)準(zhǔn)H. 264/AVC標(biāo)準(zhǔn)附錄H指定的多視角視頻編碼MVC標(biāo)準(zhǔn),其特征在于,包括接收多視角視頻編碼MVC碼流,并將其轉(zhuǎn)換成MVC的視頻編碼層VCL數(shù)據(jù)流,其中所述MVC碼流在編碼端采用IPPPP...預(yù)測結(jié)構(gòu)編碼,所述IPPPP...預(yù)測結(jié)構(gòu)為所述MVC 碼流的視角包括基本視角I視角和多個擴(kuò)展視角P視角,且擴(kuò)展視角P視角在進(jìn)行視角間預(yù)測時,均以基本視角I視角相同時刻的視頻幀作為參考幀;確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流; 更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息;轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息;逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC碼流要求的視頻幀數(shù)據(jù),包括將slice header信息轉(zhuǎn)換為符合AVC碼流要求的slice header信息和將宏塊數(shù)據(jù)轉(zhuǎn)換為符合AVC碼流要求的宏塊數(shù)據(jù);整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,并將AVC的VCL數(shù)據(jù)流封裝為AVC碼流。優(yōu)選地,所述確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流包括解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息;依據(jù)SPS子集信息中的MVC視角數(shù),確定MVC的VCL數(shù)據(jù)流中包含的視角子碼流數(shù);對所述MVC的VCL數(shù)據(jù)流包括的多個視角子碼流,從MVC碼流攜帶的輔助增強(qiáng)信息SEI中得到視角間距離信息,根據(jù)人眼瞳距,確定與所述人眼瞳距最接近的視角間距離, 依據(jù)所述最接近的視角間距離選取擴(kuò)展視角P視角對應(yīng)的擴(kuò)展視角子碼流,逐幀提取基本視角子碼流和被選取擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。優(yōu)選地,所述確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流包括解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息;
依據(jù)SPS子集信息中的MVC視角數(shù),確定MVC的VCL數(shù)據(jù)流中包含的視角子碼流數(shù);對所述MVC的VCL數(shù)據(jù)流包括的多個視角子碼流,任意選取一個擴(kuò)展視角子碼流, 逐幀提取基本視角子碼流和所選取的擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流;所述方法還包括 在所述AVC碼流的擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距大時,返回執(zhí)行確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流以重新選取一個僅參考基本視角的擴(kuò)展視角子碼流,直至用戶觀看所述AVC碼流解碼得到的雙目立體視頻不發(fā)生變形現(xiàn)象。優(yōu)選地,更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息包括解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的基本SPS信息;更換基本 SPS 信息中的 level_idc 字段、constraint_set4_flag 字段、max_num_ ref_frames 字段、1 οg2_max_frame_num_minus4 字段;將更換后的基本SPS信息編碼為符合AVC碼流要求的SPS信息。優(yōu)選地,所述更換基本SPS信息中的level_idc字段、constraint_set4_flag 字段、max_num_ref_frames 字段、1 οg2_max_frame_num_minus4 字段具體為將基本 SPS 信息中的Ieveljdc字段的字段值在leveljdc字段的當(dāng)前字段值基礎(chǔ)上加1 ;更換 constraint_set4_flag字段的字段值為0 ;更換max_num_ref_frames字段的字段值為12 ; 設(shè)定 log2_max_frame_num_minus4 字段的字段值為 12。優(yōu)選地,所述轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息為將MVC的VCL數(shù)據(jù)流中的基本PPS信息直接復(fù)制,作為符合AVC碼流要求的PPS信息。優(yōu)選地,逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC碼流要求的視頻幀數(shù)據(jù)包括解碼待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包中的slice header信息;區(qū)分當(dāng)前幀的視角類型,根據(jù)不同的視角類型采取不同的處理方式,轉(zhuǎn)換slice header 信息;將轉(zhuǎn)換后的slice header信息編碼為符合AVC碼流要求的slice header信息;將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù);轉(zhuǎn)換后的slice header信息和直接復(fù)制的宏塊數(shù)據(jù),作為符合AVC碼流要求的視頻幀數(shù)據(jù)。優(yōu)選地,所述轉(zhuǎn)換slice header信息包括對slice header數(shù)據(jù)中的nal_ref_ idc 字段、frame_num 字段、pic_order_cnt_lsb 字段、adaptive_ref_pic_marking_mode_ flag 字段、modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段進(jìn)行轉(zhuǎn)換。優(yōu)選地,轉(zhuǎn)換slice header信息中的nal_ref_idC字段的字段值具體為當(dāng)slice header信息對應(yīng)的視頻幀不作為參考幀,轉(zhuǎn)換nal_ref_idC字段的字段值為0 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為IDR幀,轉(zhuǎn)換nal_ref_idC字段的字段值為3 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為P幀或者非IDR幀的I幀,轉(zhuǎn)換nal_ref_idC字段的字段值為2 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為B幀,轉(zhuǎn)換nal_ref_idC字段的字段值為1 ;轉(zhuǎn)換slice header信息中的frame_num字段的字段值具體為當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀作為參考幀,則frame_num字值在前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的framejum字段的字段值的基礎(chǔ)上加1 ;當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀不作為參考幀,則frame_nUm字段值等于前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的frame_num字段的字段值;轉(zhuǎn)換slice header信息中的pic_order_cnt_lsb字段的字段值具體為當(dāng) sliceheader信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lsb字段的字段值為轉(zhuǎn)換前的pic_order_cnt_lSb字段的字段值的2倍并加1 ;當(dāng)sliceheader信息對應(yīng)的視頻幀是基本視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lSb字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lSb字段的字段值的2倍;轉(zhuǎn)換 slice header 胃;|、中的 adaptive_ref_pic_marking_mode_flag
段值具體為當(dāng)slice header信息對應(yīng)的視頻幀為非錨定幀或者為擴(kuò)展視角的錨定幀,轉(zhuǎn)換 adaptive—ref—pic—marking—mode_flag 字段的字段值為 0 ;當(dāng) sliceheader 信息對應(yīng)的視頻幀為基本視角的錨定幀,則分別獲取該基本視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_ num字段的字段值和前一個擴(kuò)展視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_nUm字段的字段值,當(dāng)兩個frame_num字段的字段差值為1,轉(zhuǎn)換slice header信息中的adaptiVe_ref_ piC_marking_m0de_flag字段的字段值為0,當(dāng)兩個framejum字段的字段差值不為1,轉(zhuǎn)換 slice header 信息中 adaptive_ref_pic_marking_mode_flag 字段的字段值為 1 ;對slice header信息中的前向/后向初始參考幀列表信息修改時,在設(shè)置ref_ pic_list_modification_flag_10 字段 /ref_pic_list_modification_flag_ll 字段的字段值為 1 后,轉(zhuǎn)換 slice header 信息中的 modification_of_pic_nums_idc 字段禾口 abs_ diff_pic_num_minusl字段的字段值,具體為從MVC碼流中得到sliceheader信息對應(yīng)的視頻幀的參考幀個數(shù),參考幀以及參考幀排列順序;依照參考幀排列順序,依次獲取參考幀轉(zhuǎn)換后的frame_nUm字段的字段值;計(jì)算參考幀列表中的第一個參考幀轉(zhuǎn)換后的frame_nUm字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl字段的字段值為第一個參考幀轉(zhuǎn)換后的framejum字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為 0,當(dāng)字段差值大于0,轉(zhuǎn)換modificati0n_0f_pic_nums_idc字段的字段值為1 ;當(dāng)參考幀為第i個參考幀且i大于等于2,計(jì)算第i個參考幀轉(zhuǎn)換后的frame_ num字段與第i-Ι個參考幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abs_diff_piC_num_ minusl字段的字段值為第i個參考幀轉(zhuǎn)換后的framejum字段與第i_l個參考幀轉(zhuǎn)換后的 frame_num字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換modif ication_ of_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換modif ication_of_pic_nums_ idc字段的字段值為1 ;當(dāng)參考幀列表中所有參考幀重新映射所需的m0dificati0n_0f_ pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段轉(zhuǎn)換結(jié)束,將 modification_of_pic_ nums_idc字段的字段值設(shè)置為3 ;
基于本發(fā)明的另一方面,還提供一種立體視頻碼流處理裝置,該裝置支持H. 264/ AVC標(biāo)準(zhǔn)附錄H指定的多視角視頻編碼MVC標(biāo)準(zhǔn),包括數(shù)據(jù)流編碼模塊,用于采用IPPPP...預(yù)測結(jié)構(gòu)編碼多視角視頻,形成多視角視頻編碼MVC碼流,其中,所述IPPPP...預(yù)測結(jié)構(gòu)為MVC碼流的視角包括基本視角I視角和多個擴(kuò)展視角P視角,且擴(kuò)展視角P視角在進(jìn)行視角間預(yù)測時,均以基本視角I視角相同時刻的視頻幀作為參考幀;數(shù)據(jù)流傳輸模塊,用于傳輸數(shù)據(jù)流編碼模塊產(chǎn)生的多視角視頻編碼MVC碼流;數(shù)據(jù)流轉(zhuǎn)換模塊,用于接收MVC碼流,并將其轉(zhuǎn)換成MVC的視頻編碼層VCL數(shù)據(jù)流;數(shù)據(jù)流提取模塊,用于提取MVC的VCL數(shù)據(jù)流中的基本視角子碼流和其中一個僅參考基本視角的擴(kuò)展視角子碼流,將提取的基本視角子碼流和擴(kuò)展視角子碼流中的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流;SPS信息更換模塊,用于更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息;PPS信息轉(zhuǎn)換模塊,用于轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息;視頻幀數(shù)據(jù)轉(zhuǎn)換模塊,用于逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合 AVC碼流要求的視頻幀數(shù)據(jù),包括將slice header信息轉(zhuǎn)換為符合AVC碼流要求的slice header信息和將宏塊數(shù)據(jù)轉(zhuǎn)換為符合AVC碼流要求的宏塊數(shù)據(jù);碼流封裝模塊,用于整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,并將AVC的VCL數(shù)據(jù)流封裝為 AVC碼流。優(yōu)選地,所述數(shù)據(jù)流提取模塊包括SPS子集信息獲取單元,用于解碼MVC的VCL 數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息;子碼流數(shù)確定單元,用于依據(jù)SPS子集信息中的MVC視角數(shù),確定MVC的VCL數(shù)據(jù)流中包含的視角子碼流數(shù);子碼流數(shù)提取單元,用于在所述子碼流數(shù)確定單元確定所述MVC的VCL數(shù)據(jù)流包括多個視角子碼流的情況下,從MVC碼流攜帶的輔助增強(qiáng)信息SEI中得到視角間距離信息, 根據(jù)人眼瞳距,確定與所述人眼瞳距最接近的視角間距離,依據(jù)所述最接近的視角間距離選取擴(kuò)展視角P視角對應(yīng)的擴(kuò)展視角子碼流,逐幀提取基本視角子碼流和被選取擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。優(yōu)選地,所述子碼流提取單元還用于任意選取一個擴(kuò)展視角子碼流,逐幀提取基本視角子碼流和所選取的擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流;所述裝置還包括判斷模塊,用于判斷所述AVC碼流的擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距的大??;觸發(fā)器,用于在所述判斷模塊的結(jié)果為所述碼流封裝模塊封裝的所述AVC碼流的擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距大的情況下,觸發(fā)所述數(shù)據(jù)流提取模塊。優(yōu)選地,所述SPS信息更換模塊包括基本SPS信息獲取單元,用于解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的基本SPS信息;更換單元,用于更換基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames 字段、1 οg2_max_frame_num_minus4 字段;SPS編碼單元,用于將更換后的基本SPS信息編碼為符合AVC碼流要求的SPS信肩、ο優(yōu)選地,所述更換單元包括第一更換子單元,用于將基本SPS信息中的leveljdc字段的字段值在leveljdc 字段的當(dāng)前字段值基礎(chǔ)上加1 ;第二更換子單元,用于更換c0nStraint_Set4_flag字段的字段值為0 ;第三更換子單元,用于更換maX_num_ref_frameS字段的字段值為12 ;第四更換子單元,用于設(shè)定l0g2_max_frame_num_minuS4字段的字段值為12。優(yōu)選地,所述PPS信息轉(zhuǎn)換模塊具體用于將MVC的VCL數(shù)據(jù)流中的基本PPS信息直接復(fù)制,作為符合AVC碼流要求的PPS信息。優(yōu)選地,所述視頻幀數(shù)據(jù)轉(zhuǎn)換模塊包括slice header信息解碼單元,用于解碼待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包中的 slice header 信息;轉(zhuǎn)換單元,用于區(qū)分當(dāng)前幀的視角類型,根據(jù)不同的視角類型采取不同的處理方式,轉(zhuǎn)換slice header信息;slice header信息編碼單元,用于將轉(zhuǎn)換后的slice header信息編碼為符合AVC 碼流要求的slice header信息;宏塊數(shù)據(jù)復(fù)制單元,用于將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù);視頻幀數(shù)據(jù)確定單元,用于將轉(zhuǎn)換后的slice header信息和直接復(fù)制的宏塊數(shù)據(jù)確定為符合AVC碼流要求的視頻幀數(shù)據(jù)。優(yōu)選地,所述轉(zhuǎn)換單元具體用于對slice header數(shù)據(jù)中的nal_ref_idC字段、 frame_num 字 、ρic_order_cnt_lsb 字 、adaptive_ref_pic_marking_mode_f lag 字 、 modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段進(jìn)行轉(zhuǎn)換。優(yōu)選地,所述轉(zhuǎn)換單元包括第一轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的nal_ref_idC字段的字段值, 具體為當(dāng)slice header信息對應(yīng)的視頻幀不作為參考幀,轉(zhuǎn)換nal_ref_idC字段的字段值為0 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為IDR幀,轉(zhuǎn)換nal_ ref_idc字段的字段值為3 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為 P幀或者非IDR幀的I幀,轉(zhuǎn)換nal_ref_idC字段的字段值為2 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為B幀,轉(zhuǎn)換nal_ref_idC字段的字段值為1 ;第二轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的framejum字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀作為參考幀,則frame_num字值在前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的frame^um字段的字段值的基礎(chǔ)上加1 ; 當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀不作為參考幀,則frame^um字段值等于前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的frame^um字段的字段值;第三轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的piC_0rder_Cnt_lSb字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,轉(zhuǎn)換后的pic_ order_cnt_lsb字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lsb字段的字段值的2倍并加1 ; 當(dāng)slice header信息對應(yīng)的視頻幀是基本視角中的視頻幀,轉(zhuǎn)換后的piC_0rder_Cnt_lSb 字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lSb字段的字段值的2倍;第四轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的adaptive_ref_pic_marking_ m0de_flag字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀為非錨定幀或者為擴(kuò)展視角的錨定幀,轉(zhuǎn)換adaptive_ref_piC_making_m0de_flag字段的字段值為0 ;當(dāng) slice header信息對應(yīng)的視頻幀為基本視角的錨定幀,則分別獲取該基本視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_nUm字段的字段值和前一個擴(kuò)展視角的錨定幀的幀信息中轉(zhuǎn)換后的framejum字段的字段值,當(dāng)兩個framejum字段的字段差值為1,轉(zhuǎn)換slice header 信息中的adaptive_ref_pic_making_mode_flag字段的字段值為0,當(dāng)兩個frame_num字段的字段差值不為 1,轉(zhuǎn)換 slice header 信息中 adaptive_ref_pic_making_mode_flag 字段的字段值為1 ;第五轉(zhuǎn)換子單元,用于對slice header信息中的前向/后向初始參考幀列表信息修改時,在設(shè)置 ref_pic_list_modification_flag_10 字段 /ref_pic_list_ modification_flag_ll 字段的字段值為 1 后,轉(zhuǎn)換 slice header 信息中的 modification_ of_pic_nums_idc字段和abs_diff_pic_num_minusl字段的字段值,具體為從MVC碼流中得到slice header信息對應(yīng)的視頻幀的參考幀個數(shù),參考幀以及參考幀排列順序;依照參考幀排列順序,依次獲取參考幀轉(zhuǎn)換后的framejum字段的字段值;計(jì)算參考幀列表中的第一個參考幀轉(zhuǎn)換后的framejum字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl字段的字段值為第一個參考幀轉(zhuǎn)換后的framejum 字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換modif icati0n_0f_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換 modification_of_pic_nums_idc 字段的字段值為 1 ;當(dāng)參考幀為第i個參考幀且i大于等于2,計(jì)算第i個參考幀轉(zhuǎn)換后的frame_ num字段與第i-Ι個參考幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abs_diff_piC_num_ minusl字段的字段值為第i個參考幀轉(zhuǎn)換后的framejum字段與第i_l個參考幀轉(zhuǎn)換后的 frame_num字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換modif ication_ of_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換modif ication_of_pic_nums_ idc字段的字段值為1 ;當(dāng)參考幀列表中所有參考幀重新映射所需的m0dificati0n_0f_ pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段轉(zhuǎn)換結(jié)束,將 modification_of_pic_ nums_idc字段的字段值設(shè)置為3。從上述的技術(shù)方案可以看出,采用特定預(yù)測結(jié)構(gòu)編碼形成MVC碼流,提取MVC碼流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流,對包括這兩個視角子碼流的 MVC碼流轉(zhuǎn)換后的MVC的VCL數(shù)據(jù)流中的各幀數(shù)據(jù)進(jìn)行逐幀處理,保證封裝成的AVC碼流的視頻幀排列順序與接收到的MVC碼流中對應(yīng)幀排列順序一致,即兩個視角視頻幀逐幀交替,AVC解碼器對封裝成的AVC碼流無須額外處理過程即可解碼播放。AVC碼流中的視頻幀和MVC碼流中的對應(yīng)視頻幀具有相同的參考幀列表。同時不依據(jù)MVC碼流的運(yùn)動信息,改變slice header信息中字段的字段值,實(shí)現(xiàn)了 MVC碼流到AVC碼流的無損轉(zhuǎn)碼,即保證AVC 解碼器輸出圖像與MVC解碼器輸出對應(yīng)圖像一致,不損失圖像質(zhì)量。更進(jìn)一步地,在編碼MVC碼流時采用IPPPP...預(yù)測結(jié)構(gòu)編碼,接收MVC碼流后,根據(jù)人眼瞳距提取基本視角子碼流和與人眼瞳距最接近的一個擴(kuò)展視角子碼流,并將這兩個視角子碼流無損地轉(zhuǎn)換為一個AVC碼流,從而保證用戶觀看AVC解碼器輸出的雙目立體視頻無變形失真現(xiàn)象。


圖1為典型的MVC預(yù)測結(jié)構(gòu)圖;圖2為本發(fā)明實(shí)施例提供的立體視頻碼流處理方法的流程圖;圖3為圖2采用的MVC預(yù)測結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例提供的立體視頻碼流處理方法步驟S102的流程圖;圖5為MVC碼流轉(zhuǎn)換后得到的MVC的VCL數(shù)據(jù)流結(jié)構(gòu)圖;圖6為本發(fā)明實(shí)施例提供的立體視頻碼流處理方法步驟S103的流程圖;圖7為本發(fā)明實(shí)施例提供的立體視頻碼流處理方法步驟S105的流程圖;圖8為本發(fā)明實(shí)施例提供的立體視頻碼流處理裝置的一種結(jié)構(gòu)示意圖;圖9為本發(fā)明實(shí)施例提供的立體視頻碼流處理裝置中數(shù)據(jù)流提取模塊的結(jié)構(gòu)示意圖;圖10為本發(fā)明實(shí)施例提供的立體視頻碼流處理裝置的另一種結(jié)構(gòu)示意圖;圖11為本發(fā)明實(shí)施例提供的立體視頻碼流處理裝置中SPS信息更換模塊的結(jié)構(gòu)示意圖;圖12為SPS信息更換模塊中更換單元的結(jié)構(gòu)示意圖;圖13為本發(fā)明實(shí)施例提供的立體視頻碼流處理裝置中視頻幀數(shù)據(jù)轉(zhuǎn)換模塊的結(jié)構(gòu)示意圖;圖14為視頻幀數(shù)據(jù)轉(zhuǎn)換模塊中轉(zhuǎn)換單元的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了便于本領(lǐng)域技術(shù)人員的理解,首先對申請文件中出現(xiàn)的英文單詞進(jìn)行解釋。MVC標(biāo)準(zhǔn)=Multiview Video Coding,多視角視頻編碼標(biāo)準(zhǔn);本專利中特指H. 264/ AVC標(biāo)準(zhǔn)附錄H制定的多視角編碼標(biāo)準(zhǔn)。NAL :Network Abstraction Layer,網(wǎng)絡(luò)提取層;RBSP :Raw Byte Sequence Packet,原始字節(jié)序列負(fù)荷;VCL =Video Coding Layer,視頻編碼層;JVT Joint Video !"eam,聯(lián)合視頻專家組;AVC標(biāo)準(zhǔn)Advanced Video Coding,新一代視頻編碼標(biāo)準(zhǔn);即視頻編碼國際標(biāo)準(zhǔn) H. 264,正式名稱,IS0/IEC 14496—10。
SPS Sequence Parameter Sets,序列參數(shù)集;PPS =Picture Parameter Sets,圖像參數(shù)集;DPB =Decoded Picture Buffer,解碼圖像緩沖區(qū);RPLR Reference Picture List Reordering,參考圖像列表重排序;MMCO Memory Management Control Operation,內(nèi)存管理控制操作;IDR Jnstantaneous Decoding Refresh,艮口時角軍碼屈Ijf ;PSNR =Peak Signal-to-Noise Ratio,峰值信噪比;FIFO =First In First Out,先入先出;GOP Group Of Picture,圖像組;CABAC :Context-based Adaptive Binary Arithmetic Coding,W SiS
應(yīng)二進(jìn)制算術(shù)編碼;JMVC Joint Multiview Video Coding,聯(lián)合多視角視頻編碼;JMJoint Model,聯(lián)合模型;SEI !Supplemental Enhancement Information,輔助增強(qiáng)信息。申請文件中提到的 level_idc 字段、constraint_set4_flag 字段、max_num_ref_ frames 字段、1 οg2_max_frame_num_minus4 字段、nal_ref_idc 字段、frame_num 字段、 pic_order_cnt_lsb 字段、adaptive_ref_pic_marking_mode_flag 字段、ref_pic_list_ modification_flag_10 字段、ref_pic_list_modification_flag_ll 字段、modification— of_pic_nums_idc 字段和 abs_diff_pic_num_minusl 字段在 2009 年 3 月的 JVT-AD205 中定義。在本申請文件中不再加以說明。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。發(fā)明人經(jīng)過長時間實(shí)踐發(fā)現(xiàn),現(xiàn)有視頻碼流轉(zhuǎn)換技術(shù)將由視差信息得到運(yùn)動信息時的誤差引入到數(shù)據(jù)編碼過程中,導(dǎo)致轉(zhuǎn)換的AVC碼流失真率增加。當(dāng)AVC解碼器解碼時, 輸出的碼流失真率增加,進(jìn)而導(dǎo)致終端設(shè)備顯示的圖像失真,降低圖像質(zhì)量。為了解決上述問題,本發(fā)明實(shí)施例提供一種立體視頻碼流處理方法,該方法支持 H. 264/AVC標(biāo)準(zhǔn)附錄H指定的MVC標(biāo)準(zhǔn),H. 264/AVC標(biāo)準(zhǔn)的正式名稱為ISO (International Standard Organized, H 際 +示it )/IEC(International Electro technical Commission,國際電工委員會)14496-10。體視頻碼流處理方法的流程圖請參閱圖2,包括SlOl 接收MVC碼流,并將其轉(zhuǎn)換成MVC的VCL數(shù)據(jù)流。接收到的MVC碼流在編碼端采用IPPPP...預(yù)測結(jié)構(gòu)編碼,IPPPP...預(yù)測結(jié)構(gòu)為 MVC碼流的視角包括基本視角I視角和多個擴(kuò)展視角P視角,且擴(kuò)展視角P視角在進(jìn)行視角間預(yù)測時,均以基本視角相同時刻的視頻幀作為參考幀,如圖3所示。圖3為本發(fā)明實(shí)施例提供的立體視頻碼流處理方法采用的MVC預(yù)測結(jié)構(gòu)圖。MVC碼流的轉(zhuǎn)換具體為從MVC碼流中獲取NAL單元數(shù)據(jù),將NAL單元數(shù)據(jù)轉(zhuǎn)換為 MVC的VCL數(shù)據(jù)流。MVC碼流到MVC的VCL數(shù)據(jù)流的轉(zhuǎn)換請參閱現(xiàn)有轉(zhuǎn)換方法,對此不加以詳細(xì)說明。
在接收MVC碼流,并將其轉(zhuǎn)換成MVC的VCL數(shù)據(jù)流后,由于MVC碼流與AVC碼流不完全兼容,需要對轉(zhuǎn)換后的MVC的VCL數(shù)據(jù)流中的數(shù)據(jù)進(jìn)行操作,將其改變?yōu)榉螦VC碼流要求的數(shù)據(jù)。下述步驟S102至步驟S105則具體闡述是如何對MVC碼流轉(zhuǎn)換后得到的MVC 的VCL數(shù)據(jù)流中的數(shù)據(jù)進(jìn)行操作的。S102 確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。具體請參閱圖4,圖4為步驟S102的流程圖。S1021 解碼VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息。其中解碼VCL數(shù)據(jù)流中的SPS信息包括解碼基本SPS信息和解碼SPS子集信息。SPS信息為圖像序列信息,基本SPS信息位于SPS數(shù)據(jù)包中,SPS子集信息位于SPS子集數(shù)據(jù)包中。S1022:依據(jù)SPS子集信息中的MVC視角數(shù),確定VCL數(shù)據(jù)流中包含的視角子碼流數(shù)。MVC碼流轉(zhuǎn)換后得到的VCL數(shù)據(jù)流中數(shù)據(jù)包按照圖5所示的結(jié)構(gòu)圖進(jìn)行排列,包括SPS數(shù)據(jù)包、SPS子集數(shù)據(jù)包、PPS數(shù)據(jù)包和多個幀數(shù)據(jù)包。其中SPS子集數(shù)據(jù)包包括如 MVC視角數(shù)、錨定幀的前向參考幀和后向參考幀、非錨定幀的前向參考幀和后向參考幀等子集信息,通過SPS子集信息中的MVC視角數(shù)信息,則可以確定VCL數(shù)據(jù)流中包含的視角子碼流數(shù)。S1023 對MVC的VCL數(shù)據(jù)流包括的多個視角子碼流中逐幀提取基本視角子碼流和其中一個僅參考基本視角的擴(kuò)展視角子碼流中的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。其中,將基本視角子碼流對應(yīng)的基本視角確定為雙目立體視頻的基本視角。另一個擴(kuò)展視角子碼流對應(yīng)的擴(kuò)展視角確定為雙目立體視頻的擴(kuò)展視角。其中僅參考基本視角的擴(kuò)展視角子碼流為,擴(kuò)展視角進(jìn)行視角間預(yù)測時僅以基本視角內(nèi)的視頻幀作為參考幀編碼獲得的子碼流。僅參考基本視角的擴(kuò)展視角子碼流可以為多個,在提取視頻幀數(shù)據(jù)時,從MVC碼流中攜帶的SEI中獲取視角間距離信息,根據(jù)人眼瞳距,確定與人眼瞳距最接近的視角間距離,由于基本視角已固定,所以可以進(jìn)一步確定最接近人眼瞳距的視角間距離對應(yīng)的擴(kuò)展視角,提取該擴(kuò)展視角對應(yīng)的擴(kuò)展視角子碼流,根據(jù)此過程選取的子碼流對應(yīng)的視角稱為最佳視角。其中,人眼瞳距可以采用65mm,上述人眼瞳距數(shù)值可以從ffei ChenJerome Fournier,Marcus Barkowsky 1,Patrick Le Callet, "NEW REQUIREMENTS OF SUBJECTIVE VIDEO QUALITY ASSESSMENT METHODOLOGIES FOR 3DTV”, Video Processing and Quality Metrics 2010,第4頁中獲知。當(dāng)然,在提取視頻幀數(shù)據(jù)時,還可以任意選取一個擴(kuò)展視角子碼流,通過本發(fā)明實(shí)施例提供的碼流處理方法后,在所述AVC碼流的擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距大,返回步驟1023重新提取另一個擴(kuò)展視角子碼流中的視頻幀數(shù)據(jù),直至用戶觀看所述AVC碼流解碼得到的雙目立體視頻不發(fā)生變形現(xiàn)象。一般情況下,擴(kuò)展視角與基本視角的視角間距離大于等于30mm,且小于等于 70mm,表明擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距適宜,此時用戶觀看 AVC碼流解碼得到的雙目立體視頻不會發(fā)生變形現(xiàn)象。擴(kuò)展視角與基本視角的視角間距離小于30mm,且大于70mm,表明擴(kuò)展視角與基本視角的視角間距離與所述人眼瞳距差距大,此時用戶觀看AVC碼流解碼得到的雙目立體視頻發(fā)生變形現(xiàn)象。其中,數(shù)值30mm 禾口 70mm 可以從 FrederikZilly, JosefKluger and PeterKauff, "ProductionRulesfor StereoAcquisition,,,Proceedings of the IEEE,第 9 頁中獲知。下面以圖3為例對步驟1023進(jìn)行說明。圖3中基本視角子碼流為視角O即&對應(yīng)的子碼流。擴(kuò)展視角子碼流為多個P視角對應(yīng)的子碼流。解碼MVC碼流轉(zhuǎn)換后得到的 MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息。依據(jù)SPS子集信息中的 MVC視角數(shù),確定VCL數(shù)據(jù)流中包含六個視角子碼流。依據(jù)人眼瞳距,提取&對應(yīng)的子碼流和其中一個擴(kuò)展視角P視角子碼流。S103 更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息。步驟S103的具體步驟請參閱圖6,包括S1031 解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的基本SPS信息。 其中MVC的VCL數(shù)據(jù)流中的SPS信息包括基本SPS信息和SPS子集信息。SPS信息為圖像序列信息,基本SPS信息位于SPS數(shù)據(jù)包中,SPS子集信息位于SPS子集數(shù)據(jù)包中。在這里, 解碼MVC的VCL數(shù)據(jù)流中的SPS信息為解碼基本SPS信息。前已述及,SPS子集數(shù)據(jù)包包括如MVC視角數(shù)、錨定幀的前向參考幀和后向參考幀、非錨定幀的前向參考幀和后向參考幀等信息,這些信息對于AVC碼流來說是不需要的。 因此,在更換SPS信息時,只需要更換基本SPS信息中的部分字段。在實(shí)施本發(fā)明實(shí)施例提供的碼流處理方式時,對SPS數(shù)據(jù)包和SPS子集數(shù)據(jù)包解碼,是為了在處理slice header 信息過程中,獲取視頻幀的參考幀列表,管理DPB和編碼slice header信息時使用。S1032 更換基本 SPS 信息中的 level_idc 字段、constraint_set4_flag 字段、 max_num_ref_frames 字段、1 οg2_max_frame_num_minus4 字段。具體為將基本SPS信息中的Ieveljdc字段的字段值在Ieveljdc字段的當(dāng)前字段值基礎(chǔ)上力卩1,更換constraint_set4_flag字段的字段值為0,更換max_num_ref_frames字段的字段值為12。1 οg2_max_frame_num_minus4 字段的字段值依據(jù)最大 frame_num 進(jìn)行更換,log2_ max_frame_num_minus4字段的字段值等于最大framejum以2為底數(shù)取log后,向上取整數(shù)獲得計(jì)算結(jié)果,再將計(jì)算結(jié)果減去4得到l0g2_max_frame_nUm_minUS4字段的字段值。 AVC標(biāo)準(zhǔn)規(guī)定log2_max_frame_num_minus4字段的字段值的取值范圍為O 12,更換后的 log2_max_frame_num_minus4字段的字段值在該范圍內(nèi)。而在實(shí)驗(yàn)中,最大的frame_num 與總編碼幀數(shù)有關(guān),由于無法直接獲得最大frame_nUm數(shù)值,為了滿足最大需求,可以設(shè)定 log2_max_frame_num_minus4 字段的字段值為 12。S1033 將更換后的基本SPS信息編碼為符合AVC碼流要求的SPS信息。即將基本 SPS信息中更換后的字段和基本SPS信息中未更換后的字段組合為新的基本SPS信息,并將新的基本SPS信息編碼為符合AVC碼流要求的SPS信息。S104 轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息。具體為將MVC的VCL數(shù)據(jù)流中的基本PPS信息直接復(fù)制,作為符合AVC碼流要求的PPS信
肩、οPPS信息包括一個圖像的所有分片信息,MVC的VCL數(shù)據(jù)流中包括基本PPS信息和擴(kuò)展PPS信息。不需要對基本PPS信息進(jìn)行修改,直接復(fù)制未解碼的基本PPS信息,作為符合AVC碼流要求的PPS信息即可。本發(fā)明實(shí)施例提供的碼流處理方法可以解碼基本PPS信息和擴(kuò)展PPS信息,在處理slice header信息過程中,獲取視頻幀的參考幀列表,管理DPB和編碼slice header信息時使用。S105 逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC碼流要求的視頻幀數(shù)據(jù),包括將slice header信息轉(zhuǎn)換為符合AVC碼流要求的slice header信息和將宏塊數(shù)據(jù)轉(zhuǎn)換為符合AVC碼流要求的宏塊數(shù)據(jù)。具體請參閱圖7,包括S1051 解碼待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包中的slice header信息。幀數(shù)據(jù)包攜帶視頻幀數(shù)據(jù),包括slice header信息和宏塊數(shù)據(jù)。S1052:區(qū)分當(dāng)前幀的視角類型,根據(jù)不同的視角類型采取不同的處理方式,轉(zhuǎn)換 slice header信息。其中視角類型包括基本視角和擴(kuò)展視角。基本視角和擴(kuò)展視角對應(yīng)的視頻幀的slice header信息的處理方式不同,如frame_num字段和pic_order_cnt_lsb字段。對slice header信息進(jìn)行轉(zhuǎn)換包括對slice header信息中的nal_ref_idc字 frame_num 字 、ρic_order_cnt_lsb 字 、adaptive_ref_pic_marking_mode_f lag 字
段、ref_pic_list_modif ication_f lag_10 字段、ref_pic_list_modif ication_f lag_ll 字段、modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段進(jìn)行更換。具體為轉(zhuǎn)換slice header信息中的nal_ref_idc字段的字段值當(dāng)slice header信息對應(yīng)的視頻幀不作為參考幀,轉(zhuǎn)換nal_ref_idC字段的字段值為0 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為IDR幀,轉(zhuǎn)換nal_ref_idC字段的字段值為3 ;當(dāng) slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為P幀或者非IDR幀的I幀,轉(zhuǎn)換 nal_ref_idc字段的字段值為2 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為B幀,轉(zhuǎn)換nal_ref_idC字段的字段值為1。其中,視頻幀為I幀或者P幀或者B幀可以通過slice header信息中的幀類型 slice_type字段進(jìn)行判斷,slice_type字段表明視頻幀的類型,通過判斷其字段值即可獲知視頻幀的具體類型。視頻幀為IDR幀或者非IDR幀可以通過MVC碼流中表明視頻幀是否為IDR幀的標(biāo)識位進(jìn)行判斷。轉(zhuǎn)換slice header信息中的frame_num字段的字段值當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀作為參考幀,則frame_num字值在前一視頻幀對應(yīng)的slice header 信息中轉(zhuǎn)換后的frame_num字段的字段值的基礎(chǔ)上加1 ;當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀不作為參考幀,則frame_num字段值等于前一視頻幀對應(yīng)的slice header 信息中轉(zhuǎn)換后的frame_nUm字段的字段值。在實(shí)際操作過程中,上述對slice header信息中的framejum字段的字段值的轉(zhuǎn)換可以按照以下優(yōu)選方式執(zhí)行當(dāng)slice header信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,該視頻幀的前一視頻幀為基本視角中的視頻幀,如果前一視頻幀的原始nal_ref_idc 字段的字段值不為0或者前一視頻幀作為當(dāng)前視頻幀的參考幀,則frame_nUm字段的字段值在前一視頻幀中的frame_nUm字段的字段值基礎(chǔ)上加1,如果前一視頻幀的原始nal_ref_idc字段的字段值為0并且上一視頻幀作為當(dāng)前視頻幀的參考幀,則frame_nUm字段的字段值等于前一視頻幀中的frame_nUm字段的字段值;當(dāng)slice header信息對應(yīng)的視頻幀是基本視角中的視頻幀,該視頻幀的前一視頻幀為擴(kuò)展視角中的視頻幀,如果前一視頻幀的原始nal_ref_idC字段的字段值為0,則frame_nUm字段的字段值等于前一視頻幀中的frame_nUm字段的字段值,如果前一視頻幀的原始nal_ref_idC字段的字段值不為0,則 frame_num字段的字段值在前一視頻幀中的frame_num字段的字段值基礎(chǔ)上加1。需要說明的是待處理的視頻數(shù)據(jù)流中第一個視頻幀為IDR巾貞,其frammum字段的字段值為0,在進(jìn)行frammum字段轉(zhuǎn)換時,第一個視頻幀的frammum字段的字段值不變。其他視頻幀的frammum字段的字段值通過上述方式進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換 slice header信息中的pic_order_cnt_lsb字段的字段值當(dāng) slice header 信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lSb字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lSb字段的字段值的2倍并加1 ;當(dāng)slice header信息對應(yīng)的視頻幀是基本視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lSb字段的字段值為轉(zhuǎn)換前的pic_ order_cnt_lsb字段的字段值的2倍。adaptive_ref_pic_marking_mode_flag 字段表明參考幀的標(biāo)記模式。當(dāng) adaptive_ref_pic_making_mode_flag字段的字段值為0時,使用自動滑窗法標(biāo)記參考幀, 自動滑窗法采用算FIFO法處理,所謂FIFO算法將用于緩存參考幀的DPB視為一個參考幀隊(duì)列,在DPB未滿時,將參考幀放入DPB隊(duì)列隊(duì)尾,當(dāng)DPB已滿時,從隊(duì)首將最早進(jìn)入DPB中的參考幀移除。當(dāng)adaptive_ref_piC_marking_m0de_flag字段的字段值為1,使用自定義標(biāo)記法標(biāo)記參考幀,所謂自定義標(biāo)記法為使用MMCO將某一參考幀設(shè)置為何種類型的參考幀或者移出DPB。解碼后的參考幀立刻放入DPB中,使用自動滑窗法或者自定義標(biāo)記法將其移除DPB。MMCO為AVC標(biāo)準(zhǔn)中定義的內(nèi)存管理控制操作。轉(zhuǎn)換 slice header 信息中的 adaptive_ref_pic_marking_mode_flag 字段的字段值當(dāng)slice header信息對應(yīng)的視頻幀為非錨定幀或者為擴(kuò)展視角的錨定幀,轉(zhuǎn)換 adaptive—ref—pic—marking—mode_flag 字段的字段值為 0 ;當(dāng) slice header 信息對應(yīng)的視頻幀為基本視角的錨定幀,則分別獲取該基本視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_ num字段的字段值和前一個擴(kuò)展視角的錨定幀的幀信息中轉(zhuǎn)換后frammum字段的字段值,當(dāng)兩個frame_num字段的字段差值為1,轉(zhuǎn)換slice header信息中的adaptiVe_ref_ piC_marking_m0de_flag字段的字段值為0,當(dāng)兩個framejum字段的字段差值不為1,轉(zhuǎn)換 slice header Ih^pI11 adaptive_ref_pic_marking_mode_flag ^ ! ' ^-! '! 1。錨定幀是指錨定訪問單元內(nèi)的視頻幀,不同視角同一時刻Tn下的所有視頻幀的集合被稱為一個訪問單元。錨定幀只能參考相同訪問單元內(nèi)的視頻幀,不可以使用幀間預(yù)測。 在輸出順序上隨后編碼的視頻幀使用幀間預(yù)測時不能參考在解碼順序上錨定幀之前的視頻幀。錨定訪問單元可以達(dá)到隔離誤差和提供視角切換點(diǎn)的目的,如圖1中的Ttl,T8時刻不同視角所有視頻幀的集合即為錨定訪問單元。錨定訪問單元內(nèi)的視頻幀為錨定幀,如圖 1中T8時刻下的視頻幀錨定幀和非錨定幀的判斷可以通過獲取MVC碼流中表明視頻幀是否為錨定幀的標(biāo)識位判斷視頻幀是錨定幀還是非錨定幀。參考幀在參考幀列表中的位置用列表索引序號來表示,其默認(rèn)的排列方式是與當(dāng)前幀位置越近的參考幀序號越小,可以使用RPLR命令改變默認(rèn)順序,從而保證參考幀列表與MVC碼流的參考幀列表一致。RPLR為AVC標(biāo)準(zhǔn)中定義的對參考幀列表重排序的方法。 RPLR命令根據(jù)將移到參考幀列表索引序號的參考幀的frame_num字段與預(yù)測的frame_ num字段之間的絕對差值,調(diào)整參考幀列表中參考幀的排列順序,即RPLR命令依據(jù)上述對 modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段的字段值的轉(zhuǎn)換后的字段值調(diào)整參考幀在參考幀列表中的排序,從而AVC碼流中視頻幀保證參考幀列表與 MVC碼流中視頻幀的參考幀列表一致。前向參考幀列表0修改標(biāo)識ref_pic_list_modification_flag_10字段和后向參考幀列表1修改標(biāo)識ref_pic_list_m0dificati0n_flag_ll字段分別標(biāo)識視頻幀所使用的初始參考幀列表是否修改。對相應(yīng)的初始參考幀列表修改時,在設(shè)置ref_piC_list_ modification_flag_10 字段 /ref_pic_list_modification_flag_ll 字段的字段值為 1 后,通過對 modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段的字段值轉(zhuǎn)換來實(shí)現(xiàn),具體為從MVC碼流中得到slice header信息對應(yīng)的視頻幀的參考幀個數(shù),參考幀以及參考幀排列順序;依照參考幀排列順序,依次獲取參考幀轉(zhuǎn)換后frame_ num字段的字段值。如無特殊說明,下文中提到的frame_nUm字段值均為轉(zhuǎn)換后的frame_ num字段值。計(jì)算參考幀列表中的第一個參考幀的frame_nUm字段與當(dāng)前視頻幀的frame_ num字段的字段差值,轉(zhuǎn)換abS_difT_piC_num_minuSl字段的字段值為第一個參考幀的 frame_num字段與視頻幀的frame_nUm字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為1 ;當(dāng)參考幀為第i個參考幀且i大于等于2,計(jì)算第i個參考幀的frame_num字段與第i_l個參考幀的frame_num字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl字段的字段值為第i個參考幀的framejum字段與第i_l個參考幀的frame_nUm字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換 modification_of_pic_nums_idc 字段的字段值為 1。當(dāng)參考幀列表中所有參考幀重新映射所需的m0difiCati0n_0f_piC_numS_idC字段和abS_difT_piC_num_minuSl字段轉(zhuǎn)換結(jié)束,即對參考幀列表的重新映射結(jié)束,此時將 modification_of_pic_nums_idc 字段的字段值設(shè)置為 3。S1053 將轉(zhuǎn)換后的slice header信息編碼為符合AVC碼流要求的slice header fn息ο編碼后的slice header信息,需要slice header信息結(jié)尾整8比特的要求。若編碼后的slice header信息不滿足上述要求,則在編碼后的slice header信息后,填充預(yù)設(shè)數(shù)量的1,以滿足slice header信息結(jié)尾整8比特的要求。S1054 轉(zhuǎn)換宏塊數(shù)據(jù)為符合AVC碼流要求的宏塊數(shù)據(jù)。具體為將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù)。將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù)??梢允∪ズ陦K數(shù)據(jù)進(jìn)行熵解碼、反離散余弦變換和運(yùn)動補(bǔ)償耗費(fèi)的時間,提高效率。S1055 將轉(zhuǎn)換后的slice header信息和直接復(fù)制的宏塊數(shù)據(jù),作為符合AVC碼流要求的視頻幀數(shù)據(jù)。待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包的排列以基本視角視頻幀和擴(kuò)展視角視頻幀交替順序排列,在逐幀處理待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包之后,即可依此順序排列為AVC 碼流中的視頻數(shù)據(jù)流,保證封裝成的AVC碼流的視頻幀排列順序與接收到的MVC碼流中對應(yīng)幀排列順序一致,AVC碼流中的視頻幀和MVC碼流中的對應(yīng)視頻幀具有相同的參考幀列表。上述步驟S102至步驟S105對數(shù)據(jù)的操作不依賴于MVC碼流的運(yùn)動信息,改變 slice header信息中字段的字段值,進(jìn)而實(shí)現(xiàn)了 MVC碼流到AVC碼流的無損轉(zhuǎn)碼,解決了碼流轉(zhuǎn)換方法中的碼流失真問題。S106 整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,并將AVC的VCL數(shù)據(jù)流封裝為AVC碼流。具體為整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,將AVC的VCL數(shù)據(jù)流封裝到NAL單元數(shù)據(jù)中,從而形成AVC碼流。從上述的技術(shù)方案可以看出,采用特定預(yù)測結(jié)構(gòu)編碼形成MVC碼流,提取MVC碼流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流,對包括這兩個視角子碼流的 MVC碼流轉(zhuǎn)換后的MVC的VCL數(shù)據(jù)流中的各幀數(shù)據(jù)進(jìn)行逐幀處理,保證封裝成的AVC碼流的視頻幀排列順序與接收到的MVC碼流中對應(yīng)幀排列順序一致,即兩個視角視頻幀逐幀交替,擁有AVC解碼器用戶無須額外處理過程即可解碼播放。AVC碼流中的視頻幀和MVC碼流中的對應(yīng)視頻幀具有相同的參考幀列表。同時不依據(jù)MVC碼流的運(yùn)動信息,改變slice header信息中字段的字段值,實(shí)現(xiàn)了 MVC碼流到AVC碼流的無損轉(zhuǎn)碼,即保證AVC解碼器輸出圖像與MVC解碼器輸出對應(yīng)圖像一致,不損失圖像質(zhì)量。更進(jìn)一步地,在編碼MVC碼流時采用IPPPP...預(yù)測結(jié)構(gòu)編碼,接收MVC碼流后,根據(jù)人眼瞳距提取基本視角子碼流和與人眼瞳距最接近的一個擴(kuò)展視角子碼流,并將這兩個視角子碼流無損地轉(zhuǎn)換為一個AVC碼流,從而保證用戶觀看AVC解碼器輸出的雙目立體視頻無變形失真現(xiàn)象。此外,本發(fā)明實(shí)施例提供的碼流處理方法丟棄了轉(zhuǎn)換后的MVC的VCL數(shù)據(jù)流中的擴(kuò)展數(shù)據(jù),如SPS子集信息和擴(kuò)展PPS信息,減少了碼流數(shù)據(jù),未增加碼流傳輸負(fù)擔(dān)。同時相對于MVC碼流解碼,節(jié)省了時間,提高了效率。下面列舉具體實(shí)驗(yàn)數(shù)據(jù)來說明。表1是對breakdancers、racel和rena編碼后得出的MVC碼流和AVC碼流大小比較表,AVC碼流是利用本發(fā)明實(shí)施例提供的碼流處理方法對MVC碼流進(jìn)行處理得出的。其中breakdancers的序列大小為1024X768 ;racel的序列大小為640X480 ;rena的序列大小為640X480。MVC編碼在JMVC版本83上實(shí)現(xiàn),編碼條件設(shè)置包括編碼993幀,GOP大小為8,使用視角間預(yù)測,時域優(yōu)先,熵編碼使用CABAC方式。封裝后AVC碼流的解碼測試軟件使用JM版本17.0。表一 MVC碼流與封裝后AVC碼流大小比較表
序列MVC 碼流(ΙΦ)AVC 碼流(ΙΦ)AVC碼流與MVC碼流百分比
權(quán)利要求
1.一種立體視頻碼流處理方法,該方法支持新一代視頻編碼標(biāo)準(zhǔn)H. 264/AVC附錄H指定的多視角視頻編碼MVC標(biāo)準(zhǔn),其特征在于,包括接收多視角視頻編碼MVC碼流,并將其轉(zhuǎn)換成MVC的視頻編碼層VCL數(shù)據(jù)流,其中所述 MVC碼流在編碼端采用IPPPP...預(yù)測結(jié)構(gòu)編碼,所述IPPPP...預(yù)測結(jié)構(gòu)為所述MVC碼流的視角包括基本視角I視角和多個擴(kuò)展視角P視角,且擴(kuò)展視角P視角在進(jìn)行視角間預(yù)測時, 均以基本視角I視角相同時刻的視頻幀作為參考幀;確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流; 更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息; 轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息; 逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC碼流要求的視頻幀數(shù)據(jù),包括將slice header信息轉(zhuǎn)換為符合AVC碼流要求的slice header信息和將宏塊數(shù)據(jù)轉(zhuǎn)換為符合AVC碼流要求的宏塊數(shù)據(jù);整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,并將AVC的VCL數(shù)據(jù)流封裝為AVC碼流。
2.根據(jù)權(quán)利要求1所述的立體視頻碼流處理方法,其特征在于,所述確定MVC的VCL數(shù)據(jù)流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流的視頻數(shù)據(jù)流,將該視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流包括解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息; 依據(jù)SPS子集信息中的MVC視角數(shù),確定MVC的VCL數(shù)據(jù)流中包含的視角子碼流數(shù); 對所述MVC的VCL數(shù)據(jù)流包括的多個視角子碼流,從MVC碼流攜帶的輔助增強(qiáng)信息SEI 中得到視角間距離信息,根據(jù)人眼瞳距,確定與所述人眼瞳距最接近的視角間距離,依據(jù)所述最接近的視角間距離選取擴(kuò)展視角P視角對應(yīng)的擴(kuò)展視角子碼流,逐幀提取基本視角子碼流和被選取擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。
3.根據(jù)權(quán)利要求1所述的立體視頻碼流處理方法,其特征在于,更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的SPS信息包括解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的基本SPS信息; 更換基本 SPS 信息中的 level_idc 字段、constraint_set4_flag 字段、max_num_ref_ frames 字段、1 οg2_max_frame_num_minus4 字段;將更換后的基本SPS信息編碼為符合AVC碼流要求的SPS信息; 所述更換基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ ref_frames 字段、log2_max_frame_num_minus4 字段具體為將基本 SPS 信息中的 level_ idc字段的字段值在leveljdc字段的當(dāng)前字段值基礎(chǔ)上加1 ;更換c0nstraint_set4_ flag字段的字段值為0 ;更換max_num_ref_frames字段的字段值為12 ;設(shè)定log2_maX_ frame_num_minus4字段的字段值為12。
4.根據(jù)權(quán)利要求3所述的立體視頻碼流處理方法,其特征在于,所述轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的PPS信息為將MVC的VCL數(shù)據(jù)流中的基本PPS 信息直接復(fù)制,作為符合AVC碼流要求的PPS信息。
5.根據(jù)權(quán)利要求4所述的立體視頻碼流處理方法,其特征在于,逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC碼流要求的視頻幀數(shù)據(jù)包括 解碼待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包中的slice header信息; 區(qū)分當(dāng)前幀的視角類型,根據(jù)不同的視角類型采取不同的處理方式,轉(zhuǎn)換slice header 信息;將轉(zhuǎn)換后的slice header信息編碼為符合AVC碼流要求的slice header信息; 將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù);轉(zhuǎn)換后的slice header信息和直接復(fù)制的宏塊數(shù)據(jù),作為符合AVC碼流要求的視頻幀數(shù)據(jù);所述轉(zhuǎn)換slice header信息包括對slice header數(shù)據(jù)中的nal_ref_idc字段、 frame_num 字 、ρic_order_cnt_lsb 字 、adaptive_ref_pic_marking_mode_f lag 字 、 modification_of_pic_nums_idc 字段禾口 abs_diff_pic_num_minusl 字段進(jìn)行轉(zhuǎn)換;轉(zhuǎn)換slice header信息中的nal_ref_idc字段的字段值具體為當(dāng)slice header信息對應(yīng)的視頻幀不作為參考幀,轉(zhuǎn)換nal_ref_idC字段的字段值為0 ;當(dāng)sliceheader信息對應(yīng)的視頻幀作為參考幀且該視頻幀為IDR巾貞,轉(zhuǎn)換nal_ref_idC字段的字段值為3 ;當(dāng) slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為P幀或者非IDR幀的I幀,轉(zhuǎn)換 nal_ref_idc字段的字段值為2 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為B幀,轉(zhuǎn)換nal_ref_idC字段的字段值為1 ;轉(zhuǎn)換slice header信息中的frame_num字段的字段值具體為當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀作為參考幀,則frame_num字值在前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的framejum字段的字段值的基礎(chǔ)上加1 ;當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀不作為參考幀,則framejum字段值等于前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的framejum字段的字段值;轉(zhuǎn)換slice header信息中的piC_0rder_Cnt_lSb字段的字段值具體為當(dāng) sliceheader信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lsb字段的字段值為轉(zhuǎn)換前的pic_order_cnt_lSb字段的字段值的2倍并加1 ;當(dāng)sliceheader信息對應(yīng)的視頻幀是基本視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lSb字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lSb字段的字段值的2倍;轉(zhuǎn)換 slice header 信息中的 adaptive_ref_pic_marking_mode_flag 字段的字段值具體為當(dāng)slice header信息對應(yīng)的視頻幀為非錨定幀或者為擴(kuò)展視角的錨定幀,轉(zhuǎn)換 adaptive_ref_pic_marking_mode_flag 字段的字段值為 0 ;當(dāng) sliceheader 信息對應(yīng)的視頻幀為基本視角的錨定幀,則分別獲取該基本視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_ num字段的字段值和前一個擴(kuò)展視角的錨定幀的幀信息中轉(zhuǎn)換后的framejum字段的字段值,當(dāng)兩個frame_num字段的字段差值為1,轉(zhuǎn)換slice header信息中的adaptiVe_ref_ piC_marking_m0de_flag字段的字段值為0,當(dāng)兩個framejum字段的字段差值不為1,轉(zhuǎn)換 slice header 信息中 adaptive_ref_pic_marking_mode_flag 字段的字段值為 1 ;對slice header信息中的前向/后向初始參考幀列表信息修改時,在設(shè)置ref_pic_ list_modification_flag_10 字段 /ref_pic_list_modification_flag_ll 字段的字段值為 1 后,轉(zhuǎn)換 slice header 信息中的 modification_of_pic_nums_idc 字段禾P abs_diff_pic_num_minusl字段的字段值,具體為從MVC碼流中得到sliceheader信息對應(yīng)的視頻幀的參考幀個數(shù),參考幀以及參考幀排列順序;依照參考幀排列順序,依次獲取參考幀轉(zhuǎn)換后的frame_nUm字段的字段值; 計(jì)算參考幀列表中的第一個參考幀轉(zhuǎn)換后的frame_nUm字段與當(dāng)前視頻幀轉(zhuǎn)換后的 frame_num字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl字段的字段值為第一個參考幀轉(zhuǎn)換后的frame_nUm字段與當(dāng)前視頻幀轉(zhuǎn)換后的frame_nUm字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為1 ;當(dāng)參考幀為第i個參考幀且i大于等于2,計(jì)算第i個參考幀轉(zhuǎn)換后的frame_nUm字段與第i-Ι個參考幀轉(zhuǎn)換后的frame_num字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl 字段的字段值為第i個參考幀轉(zhuǎn)換后的frame_nUm字段與第i_l個參考幀轉(zhuǎn)換后的frame_ num字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_ nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換modif icati0n_0f_pic_nums_idc字段的字段值為1 ;當(dāng)參考幀列表中所有參考幀重新映射所需的modificati0n_0f_pic_numS_ idc 字段禾口 abs_diff_pic_num_minus 1 字段轉(zhuǎn)換結(jié)束,將 modification_of_pic_nums_idc 字段的字段值設(shè)置為3。
6.一種立體視頻碼流處理裝置,該裝置支持H. 264/AVC標(biāo)準(zhǔn)附錄H指定的多視角視頻編碼MVC標(biāo)準(zhǔn),其特征在于,包括數(shù)據(jù)流編碼模塊,用于采用IPPPP...預(yù)測結(jié)構(gòu)編碼多視角視頻,形成多視角視頻編碼 MVC碼流,其中,所述IPPPP...預(yù)測結(jié)構(gòu)為MVC碼流的視角包括基本視角I視角和多個擴(kuò)展視角P視角,且擴(kuò)展視角P視角在進(jìn)行視角間預(yù)測時,均以基本視角I視角相同時刻的視頻幀作為參考幀;數(shù)據(jù)流傳輸模塊,用于傳輸數(shù)據(jù)流編碼模塊產(chǎn)生的多視角視頻編碼MVC碼流; 數(shù)據(jù)流轉(zhuǎn)換模塊,用于接收MVC碼流,并將其轉(zhuǎn)換成MVC的視頻編碼層VCL數(shù)據(jù)流; 數(shù)據(jù)流提取模塊,用于提取MVC的VCL數(shù)據(jù)流中的基本視角子碼流和其中一個僅參考基本視角的擴(kuò)展視角子碼流,將提取的基本視角子碼流和擴(kuò)展視角子碼流中的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流;SPS信息更換模塊,用于更換MVC的VCL數(shù)據(jù)流中的SPS信息為符合AVC碼流要求的 SPS信息;PPS信息轉(zhuǎn)換模塊,用于轉(zhuǎn)換MVC的VCL數(shù)據(jù)流中的PPS信息為符合AVC碼流要求的 PPS信息;視頻幀數(shù)據(jù)轉(zhuǎn)換模塊,用于逐幀轉(zhuǎn)換待處理的視頻數(shù)據(jù)流中的視頻幀數(shù)據(jù)為符合AVC 碼流要求的視頻幀數(shù)據(jù),包括將slice header信息轉(zhuǎn)換為符合AVC碼流要求的slice header信息和將宏塊數(shù)據(jù)轉(zhuǎn)換為符合AVC碼流要求的宏塊數(shù)據(jù);碼流封裝模塊,用于整合更換后的SPS信息、轉(zhuǎn)換后的PPS信息和轉(zhuǎn)換后的視頻幀數(shù)據(jù),將整合后的數(shù)據(jù)流作為轉(zhuǎn)換后的AVC的VCL數(shù)據(jù)流,并將AVC的VCL數(shù)據(jù)流封裝為AVC 碼流。
7.根據(jù)權(quán)利要求6所述的立體視頻碼流處理裝置,其特征在于,所述數(shù)據(jù)流提取模塊包括SPS子集信息獲取單元,用于解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的SPS子集信息;子碼流數(shù)確定單元,用于依據(jù)SPS子集信息中的MVC視角數(shù),確定MVC的VCL數(shù)據(jù)流中包含的視角子碼流數(shù);子碼流數(shù)提取單元,用于在所述子碼流數(shù)確定單元確定所述MVC的VCL數(shù)據(jù)流包括多個視角子碼流的情況下,從MVC碼流攜帶的輔助增強(qiáng)信息SEI中得到視角間距離信息,根據(jù)人眼瞳距,確定與所述人眼瞳距最接近的視角間距離,依據(jù)所述最接近的視角間距離選取擴(kuò)展視角P視角對應(yīng)的擴(kuò)展視角子碼流,逐幀提取基本視角子碼流和被選取擴(kuò)展視角子碼流的視頻幀數(shù)據(jù),將逐幀提取后的視頻幀數(shù)據(jù)組成的視頻數(shù)據(jù)流作為MVC的VCL數(shù)據(jù)流中待處理的視頻數(shù)據(jù)流。
8.根據(jù)權(quán)利要求6所述的立體視頻碼流處理裝置,其特征在于,所述SPS信息更換模塊包括基本SPS信息獲取單元,用于解碼MVC的VCL數(shù)據(jù)流中的SPS信息,獲取SPS信息中的基本SPS信息;更換單元,用于更換基本SPS信息中的leveljdc字段、Constraint_set4_f lag字段、 max_num_ref_frames 字段、1 οg2_max_frame_num_minus4 字段;SPS編碼單元,用于將更換后的基本SPS信息編碼為符合AVC碼流要求的SPS信息; 所述更換單元包括第一更換子單元,用于將基本SPS信息中的leveljdc字段的字段值在leveljdc字段的當(dāng)前字段值基礎(chǔ)上加1 ;第二更換子單元,用于更換C0nstraint_set4_flag字段的字段值為0 ; 第三更換子單元,用于更換max_num_ref_frames字段的字段值為12 ; 第四更換子單元,用于設(shè)定log2_max_frame_num_minuS4字段的字段值為12。
9.根據(jù)權(quán)利要求8所述的立體視頻碼流處理裝置,其特征在于,所述PPS信息轉(zhuǎn)換模塊具體用于將MVC的VCL數(shù)據(jù)流中的基本PPS信息直接復(fù)制,作為符合AVC碼流要求的PPS fn息ο
10.根據(jù)權(quán)利要求9所述的立體視頻碼流處理裝置,其特征在于,所述視頻幀數(shù)據(jù)轉(zhuǎn)換模塊包括slice header信息解碼單元,用于解碼待處理的視頻數(shù)據(jù)流中幀數(shù)據(jù)包中的slice header 信息;轉(zhuǎn)換單元,用于區(qū)分當(dāng)前幀的視角類型,根據(jù)不同的視角類型采取不同的處理方式,轉(zhuǎn)換 slice header 信息;slice header信息編碼單元,用于將轉(zhuǎn)換后的slice header信息編碼為符合AVC碼流要求的slice header信息;宏塊數(shù)據(jù)復(fù)制單元,用于將宏塊數(shù)據(jù)直接復(fù)制,作為符合AVC碼流要求的宏塊數(shù)據(jù); 視頻幀數(shù)據(jù)確定單元,用于將轉(zhuǎn)換后的slice header信息和直接復(fù)制的宏塊數(shù)據(jù)確定為符合AVC碼流要求的視頻幀數(shù)據(jù);所述轉(zhuǎn)換單元具體用于對slice header數(shù)據(jù)中的nal_ref_idc字段、frame_num字段、 ρic_order_cnt_lsb ^f j^;、adaptive_ref_pic_marking_mode_flag ^f j^;、modification— of_pic_nums_idc字段和abs_diff_pic_num_minusl字段進(jìn)行轉(zhuǎn)換;所述轉(zhuǎn)換單元包括第一轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的nal_ref_idC字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀不作為參考幀,轉(zhuǎn)換nal_ref_idC字段的字段值為 0 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為IDR幀,轉(zhuǎn)換nal_ref_idC 字段的字段值為3 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為P幀或者非IDR幀的I幀,轉(zhuǎn)換nal_ref_idC字段的字段值為2 ;當(dāng)slice header信息對應(yīng)的視頻幀作為參考幀且該視頻幀為B幀,轉(zhuǎn)換nal_ref_idC字段的字段值為1 ;第二轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的frammum字段的字段值,具體為 當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀作為參考幀,則frame_num字值在前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的frame_num字段的字段值的基礎(chǔ)上加1 ;當(dāng)slice header信息對應(yīng)的視頻幀的前一視頻幀不作為參考幀,則frame_nUm字段值等于前一視頻幀對應(yīng)的slice header信息中轉(zhuǎn)換后的framejum字段的字段值;第三轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的piC_0rder_Cnt_lSb字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀是擴(kuò)展視角中的視頻幀,轉(zhuǎn)換后的pic_ order_cnt_lsb字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lsb字段的字段值的2倍并加1 ; 當(dāng)slice header信息對應(yīng)的視頻幀是基本視角中的視頻幀,轉(zhuǎn)換后的pic_0rder_cnt_lsb 字段的字段值為轉(zhuǎn)換前的pic_0rder_cnt_lSb字段的字段值的2倍;第四轉(zhuǎn)換子單元,用于轉(zhuǎn)換slice header信息中的adaptive_ref_pic_marking_ m0de_flag字段的字段值,具體為當(dāng)slice header信息對應(yīng)的視頻幀為非錨定幀或者為擴(kuò)展視角的錨定幀,轉(zhuǎn)換adaptive_ref_piC_marking_m0de_flag字段的字段值為0 ;當(dāng) slice header信息對應(yīng)的視頻幀為基本視角的錨定幀,則分別獲取該基本視角的錨定幀的幀信息中轉(zhuǎn)換后的frame_nUm字段的字段值和前一個擴(kuò)展視角的錨定幀的幀信息中轉(zhuǎn)換后的framejum字段的字段值,當(dāng)兩個framejum字段的字段差值為1,轉(zhuǎn)換slice header 信息中的adaptive_ref_pic_marking_mode_f lag字段的字段值為0,當(dāng)兩個frame_num字段的字段差值不為 1,轉(zhuǎn)換 slice header信息中 adaptive_ref_pic_marking_mode_flag字段的字段值為1 ;第五轉(zhuǎn)換子單元,用于對slice header信息中的前向/后向初始參考幀列表信息修改時,在設(shè)置 ref_pic_list_modification_flag_10 字段 /ref_pic_list_modification_ flag_ll 字段的字段值為 1 后,轉(zhuǎn)換 slice header 信息中的 modification_of_pic_nums_ idc字段和abs_diff_pic_num_minusl字段的字段值,具體為從MVC碼流中得到slice header信息對應(yīng)的視頻幀的參考幀個數(shù),參考幀以及參考幀排列順序;依照參考幀排列順序,依次獲取參考幀轉(zhuǎn)換后的framejum字段的字段值;計(jì)算參考幀列表中的第一個參考幀轉(zhuǎn)換后的framejum字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl字段的字段值為第一個參考幀轉(zhuǎn)換后的framejum字段與當(dāng)前視頻幀轉(zhuǎn)換后的framejum字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換 modification_of_pic_nums_idc 字段的字段值為 1 ;當(dāng)參考幀為第i個參考幀且i大于等于2,計(jì)算第i個參考幀轉(zhuǎn)換后的framejum字段與第i_l個參考幀轉(zhuǎn)換后的framejum字段的字段差值,轉(zhuǎn)換abS_diff_piC_num_minuSl 字段的字段值為第i個參考幀轉(zhuǎn)換后的framejum字段與第i_l個參考幀轉(zhuǎn)換后的frame_num字段的字段差值取絕對值后減1的值,當(dāng)字段差值小于0,轉(zhuǎn)換m0dificati0n_0f_pic_ nums_idc字段的字段值為0,當(dāng)字段差值大于0,轉(zhuǎn)換modif ication_of_pic_nums_idc字段的字段值為1 ;當(dāng)參考幀列表中所有參考幀重新映射所需的modificati0n_0f_pic_numS_ idc 字段禾口 abs_diff_pic_num_minusl 字段轉(zhuǎn)換結(jié)束,將 modification_of_pic_nums_idc 字段的字段值設(shè)置為3。
全文摘要
本發(fā)明公開了一種立體視頻碼流處理方法及裝置。一種立體視頻碼流處理方法,采用特定預(yù)測結(jié)構(gòu)編碼形成MVC碼流,提取MVC碼流中基本視角子碼流和一個僅參考基本視角的擴(kuò)展視角子碼流,對包括這兩個視角子碼流的MVC碼流轉(zhuǎn)換后的MVC的VCL數(shù)據(jù)流中各幀數(shù)據(jù)進(jìn)行逐幀處理,保證封裝成的AVC碼流的視頻幀排列順序與接收到的MVC碼流中對應(yīng)幀排列順序一致。AVC碼流中的視頻幀和MVC碼流中的對應(yīng)視頻幀具有相同的參考幀列表。同時不依據(jù)MVC碼流的運(yùn)動信息,改變slice header信息中字段的字段值,實(shí)現(xiàn)MVC碼流到AVC碼流的無損轉(zhuǎn)碼,即保證AVC解碼器輸出圖像與MVC解碼器輸出對應(yīng)圖像一致,不損失圖像質(zhì)量。
文檔編號H04N7/50GK102438141SQ201110327818
公開日2012年5月2日 申請日期2011年10月25日 優(yōu)先權(quán)日2011年10月25日
發(fā)明者張軍, 李厚強(qiáng), 藍(lán)德巖 申請人:中國科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1