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

一種h264視頻碼流檢測到錯誤后處理錯誤的方法

文檔序號:7684687閱讀:649來源:國知局
專利名稱:一種h264視頻碼流檢測到錯誤后處理錯誤的方法
一種H264視頻碼流檢測到錯誤后處理錯誤的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種針對出錯情況下的H264視頻碼流的處理錯誤的方法,該方法應(yīng)用于嵌入式移動電視設(shè)備上對于由于誤碼和丟包引起的264碼流不能正常解碼情況下的錯誤隱藏、糾正及恢復(fù)方法。
背景技術(shù)
H264/AVC解碼流程主要模塊包括幀內(nèi)預(yù)測、運(yùn)動補(bǔ)償,去塊濾波、反變換、反量化和熵編碼。解碼的主要流程是,當(dāng)壓縮視頻碼流讀入解碼器緩沖區(qū)后,首先需要進(jìn)行熵編碼,得到視頻流的一系列重要編碼信息和實際壓縮幀的數(shù)據(jù),然后經(jīng)過反掃描重新排序,通過反量化、反變換后得到編碼幀的預(yù)測殘差值及運(yùn)動矢量等,根據(jù)得到的碼流語義解釋進(jìn)行相應(yīng)的幀內(nèi)預(yù)測或幀間運(yùn)動補(bǔ)償,對于幀間預(yù)測還需要進(jìn)行編碼器端完全相同的去塊濾波操作,形成重建的參考幀,在完成所有宏塊的價碼后,就得到相應(yīng)的解碼重建幀,輸出解碼視頻序列。當(dāng)視頻業(yè)務(wù)的傳輸載體為ISDB、DVB、CMMB等無線信道時,由于無線信道有著時變,干擾因素復(fù)雜,事先難于預(yù)計的特點,所以一般誤碼率比較高,視頻比特流也會因為信道的不穩(wěn)定而產(chǎn)生誤碼和丟包的現(xiàn)象。丟包現(xiàn)象對于手持電視的低比特率的應(yīng)用尤其如此,因為264碼流中P幀的大小足以放到一個傳送包中,一旦產(chǎn)生丟包就有可能造成后續(xù)視頻序列缺少參考而不能進(jìn)行正常的解碼。由于264編碼器采用了空間的幀內(nèi)預(yù)測和時間上的幀間預(yù)測以及熵編碼等技術(shù),經(jīng)過高壓縮后的視頻碼流對傳輸所產(chǎn)生的誤碼非常敏感, 一旦產(chǎn)生誤碼,不僅影響該誤碼數(shù)據(jù)的恢復(fù),還會影響與之相關(guān)的其他數(shù)據(jù)的恢復(fù),造成誤碼擴(kuò)散。目前主要的在編碼端的錯誤控制的方法有分片(將一幀數(shù)據(jù)分成幾個互相之間數(shù)據(jù)沒有相關(guān)性的片進(jìn)行編碼的方法),數(shù)據(jù)分割,分級編碼,F(xiàn)MO(Flexible MacroBlock Ordering), ASO(Arbitrary Slice Order)。但這些都會增加編解碼器的負(fù)擔(dān),因此大部分在H264實際出現(xiàn)編碼器中并沒有被使用,而分片雖然有使用,但在DVB、CMMB、ISDB中沒有經(jīng)常被使用,因此就需要靠解碼器端來進(jìn)行錯誤的隱藏和恢復(fù)工作。在中國發(fā)明專利CN200610170066中有提到一些對Mainprofile以及High Profile中的一些錯誤糾正的方法,在美國專利US200505254584中介紹了如何產(chǎn)生運(yùn)動向量(Motion Vector)進(jìn)行幀間Qnter picture)恢復(fù)以及如何進(jìn)行幀內(nèi)圖象(Intra picture)內(nèi)插沒有正確解碼的區(qū)域,它適用于H264以及以前的Mpeg系列。美國專利 US20060045190中介紹了一種在洸4解碼過程中如何選取htra Prediction進(jìn)行預(yù)測沒有正確加碼的區(qū)域的方法。但是以上專利論文介紹的錯誤糾正和隱藏的方法對H264 Baseline以及手持嵌入式設(shè)備來說不是很適合,也不是很完善。

發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題在于提供一種手持嵌入式設(shè)備上的H264視頻碼流檢測到錯誤后處理錯誤的方法。本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問題一種H264視頻碼流檢測到錯誤后處理錯誤的方法,包括如下步驟步驟10 解碼器檢測到錯誤;步驟20 判斷錯誤是否在幀頭出現(xiàn)?是,轉(zhuǎn)入步驟70,否,轉(zhuǎn)入步驟30 ;步驟30 判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換?是,轉(zhuǎn)入步驟40, 否,轉(zhuǎn)入步驟60 ;步驟40 判斷是否解碼出大部分圖像?是,轉(zhuǎn)入步驟50,否,轉(zhuǎn)入步驟70 ;步驟50 通過幀內(nèi)預(yù)測恢復(fù)剩下的圖像數(shù)據(jù),然后將當(dāng)前幀放入幀緩存中進(jìn)行后續(xù)的處理;步驟60 保留已經(jīng)解碼的數(shù)據(jù),并將前一幀中對應(yīng)當(dāng)前幀應(yīng)錯誤未解碼的宏塊數(shù)據(jù)拷貝過來,補(bǔ)全整幀圖象后將當(dāng)前幀放入幀緩存中繼續(xù)進(jìn)行解碼;步驟70 當(dāng)前出錯的幀不再進(jìn)行錯誤恢復(fù)并且丟棄,從碼流去尋找下一個IDR幀。所述步驟30中判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換具體包括如下步驟根據(jù)錯誤發(fā)生前正確解碼出的YUV數(shù)據(jù)中零散的取出若干個宏塊的數(shù)據(jù)和前一個解碼幀相應(yīng)位置的數(shù)據(jù)進(jìn)行比較,并計算他們的誤差,如果誤差大于一個閥值就說明兩幀的差別比較大,那么就可以判斷上一個解碼出來的幀和當(dāng)前解碼幀有著場景切換,如果小于一個閥值的話,那么就把當(dāng)前幀和前一幀看做同一場景中,判斷為兩幀之間無場景切換。本發(fā)明的有益效果在于無線實時視頻信號中出現(xiàn)丟包或錯誤比特的概率非常高,本發(fā)明能夠有效改善此環(huán)境下由于丟包和數(shù)據(jù)錯誤而是解碼器出現(xiàn)花屏和跳幀的情況。

下面參照附圖結(jié)合實施例對本發(fā)明作進(jìn)一步的描述。圖1是本發(fā)明工作流程示意圖。
具體實施方式手持設(shè)備的特點芯片上解碼器資源少,運(yùn)算能力弱——因此主要只實現(xiàn)H264 Baseline Profile。DVB、CMMB, ISDB等標(biāo)準(zhǔn)定義的 64 Baseline碼流有以下特點碼率低(有的幀可以包含在一個網(wǎng)絡(luò)包中)、p幀小I幀大(一般相差5-10倍)、由于設(shè)備上芯片的資源過少導(dǎo)致解碼器不如PC上的穩(wěn)定,對錯誤敏感。這些情況造成解碼器所收到的264碼流特點為i幀由很多個包組成,易出現(xiàn)誤碼和丟包,P幀基本可以包含在一個包內(nèi),易出現(xiàn)丟包。由于資源較少,解碼器對錯誤比較敏感、一般1-2秒中有且只有一個IDR(i幀并且為同步幀)幀、Baseline Profile只存在I幀和P幀,在每幀有且僅有一個參考幀(就是在幀管理Buffer中前面的那幀)、一般每幀都只有1個slice,因此Slice可以當(dāng)成幀來看待、由于I幀比P幀大很多,所以誤碼一般都出現(xiàn)在I幀。具體處理錯誤的方法如圖1所示,包括如下步驟一種H264視頻碼流檢測到錯誤后處理錯誤的方法,包括如下步驟步驟10 解碼器檢測到錯誤;步驟20 判斷錯誤是否在幀頭出現(xiàn)?是,轉(zhuǎn)入步驟70,否,轉(zhuǎn)入步驟30 ;步驟30 判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換?是,轉(zhuǎn)入步驟40, 否,轉(zhuǎn)入步驟60 ;其中判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換具體包括根據(jù)錯誤發(fā)生前正確解碼出的YUV數(shù)據(jù)中零散的取出若干個宏塊的數(shù)據(jù)和前一個解碼幀相應(yīng)位置的數(shù)據(jù)進(jìn)行比較,并計算他們的誤差,如果誤差大于一個閥值就說明兩幀的差別比較大,那么就可以判斷上一個解碼出來的幀和當(dāng)前解碼幀有著場景切換,如果小于一個閥值的話,那么就把當(dāng)前幀和前一幀看做同一場景中,判斷為兩幀之間無場景切換。步驟40 判斷是否解碼出大部分圖像?是,轉(zhuǎn)入步驟50,否,轉(zhuǎn)入步驟70 ;步驟50 通過幀內(nèi)預(yù)測恢復(fù)剩下的圖像數(shù)據(jù),然后將當(dāng)前幀放入幀緩存中進(jìn)行后續(xù)的處理;步驟60 保留已經(jīng)解碼的數(shù)據(jù),并將前一幀中對應(yīng)當(dāng)前幀應(yīng)錯誤未解碼的宏塊數(shù)據(jù)拷貝過來,補(bǔ)全整幀圖象后將當(dāng)前幀放入幀緩存中繼續(xù)進(jìn)行解碼;步驟70 當(dāng)前出錯的幀不再進(jìn)行錯誤恢復(fù)并且丟棄,從碼流去尋找下一個IDR幀。對于移動電視標(biāo)準(zhǔn)來說,一般的H264幀都只有一個Slice,所以都是幀的前半部分被解碼,后半部分由于誤碼或者丟包而沒有被解碼,然后根據(jù)具體情況判斷是否進(jìn)行錯誤隱藏。在沒有場景變化的情況下恢復(fù)的效果較好,因此首選此情況下的錯誤恢復(fù)。而幀內(nèi)預(yù)測進(jìn)行錯誤恢復(fù)的方式可以根據(jù)具體情況選擇是否采用,一方面當(dāng)出現(xiàn)丟包和誤碼的時候使用此方法恢復(fù)的效果較差,另一方面不采用此方法在場景切換的情況下就會出現(xiàn)整個圖象序列的丟失。本發(fā)明能夠有效改善由于丟包和數(shù)據(jù)錯誤而是解碼器出現(xiàn)花屏和跳幀的情況。
權(quán)利要求
1.一種H264視頻碼流檢測到錯誤后處理錯誤的方法,其特征在于包括如下步驟 步驟10 解碼器檢測到錯誤;步驟20 判斷錯誤是否在幀頭出現(xiàn)?是,轉(zhuǎn)入步驟70,否,轉(zhuǎn)入步驟30 ; 步驟30 判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換?是,轉(zhuǎn)入步驟40,否,轉(zhuǎn)入步驟60 ;步驟40 判斷是否解碼出大部分圖像?是,轉(zhuǎn)入步驟50,否,轉(zhuǎn)入步驟70 ; 步驟50 通過幀內(nèi)預(yù)測恢復(fù)剩下的圖像數(shù)據(jù),然后將當(dāng)前幀放入幀緩存中進(jìn)行后續(xù)的處理;步驟60 保留已經(jīng)解碼的數(shù)據(jù),并將前一幀中對應(yīng)當(dāng)前幀應(yīng)錯誤未解碼的宏塊數(shù)據(jù)拷貝過來,補(bǔ)全整幀圖象后將當(dāng)前幀放入幀緩存中繼續(xù)進(jìn)行解碼;步驟70 當(dāng)前出錯的幀不再進(jìn)行錯誤恢復(fù)并且丟棄,從碼流去尋找下一個IDR幀。
2.如權(quán)利要求1所述的一種H264視頻碼流檢測到錯誤后處理錯誤的方法,其特征在于所述步驟30中判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換具體包括如下步驟根據(jù)錯誤發(fā)生前正確解碼出的YUV數(shù)據(jù)中零散的取出若干個宏塊的數(shù)據(jù)和前一個解碼幀相應(yīng)位置的數(shù)據(jù)進(jìn)行比較,并計算他們的誤差,如果誤差大于一個閥值就說明兩幀的差別比較大,那么就可以判斷上一個解碼出來的幀和當(dāng)前解碼幀有著場景切換,如果小于一個閥值的話,那么就把當(dāng)前幀和前一幀看做同一場景中,判斷為兩幀之間無場景切換。
全文摘要
一種H264視頻碼流檢測到錯誤后處理錯誤的方法,包括如下步驟解碼器檢測到錯誤時首先判斷錯誤是否在幀頭出現(xiàn),是,丟棄不處理,否,再判斷當(dāng)前的幀和之前解碼出來的幀是否有場景切換,有場景切換,則判斷是否解碼出大部分圖像,如果是已解碼出大部分圖像,通過幀內(nèi)預(yù)測恢復(fù)剩下的圖像數(shù)據(jù),如果只解碼出小部分圖像則丟棄不處理;無場景切換,保留已經(jīng)解碼的數(shù)據(jù),并將前一幀中對應(yīng)當(dāng)前幀應(yīng)錯誤未解碼的宏塊數(shù)據(jù)拷貝過來,補(bǔ)全整幀圖象后將當(dāng)前幀放入幀緩存中繼續(xù)進(jìn)行解碼。本發(fā)明能夠有效改善由于丟包和數(shù)據(jù)錯誤而是解碼器出現(xiàn)花屏和跳幀的情況。
文檔編號H04N7/64GK102223544SQ20111014761
公開日2011年10月19日 申請日期2011年6月2日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者姜明俊 申請人:福州瑞芯微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1