專利名稱:一種視頻解碼方法及解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及編解碼技術(shù),特別是涉及一種視頻解碼方法及解碼器。
背景技術(shù):
在視頻編解碼領(lǐng)域,定義了多種標(biāo)準(zhǔn),最為重要的編解碼標(biāo)準(zhǔn)有國際電聯(lián)的 H. 261、H. 263,運(yùn)動(dòng)靜止圖像專家組的M-JPEG和國際標(biāo)準(zhǔn)化組織運(yùn)動(dòng)圖像專家組的MPEG系 列標(biāo)準(zhǔn),此外在互聯(lián)網(wǎng)上被廣泛應(yīng)用的還有Real-Networks的RealVideo、微軟公司的WMT 以及Apple公司的QuickTime等。以H. 264標(biāo)準(zhǔn)為例,H. 264編碼體系定義了 3種不同的Profile (框架或類) Baseline Profile (基線框架),Main Profile (主要框架)和 Extended Profile (擴(kuò)展框 架),它們各自下分成許多個(gè)層Baseline Profile 提供 Ι/Ρ 幀,僅支持 progressive (逐行掃描)和 CAVLC (基于 上下文的自適應(yīng)變長編碼);Main Prof ile 提供 I/P/B 幀,支持 progressive (逐行掃描)和 interlaced (隔行 掃描),提供CAVLC或CABAC (適應(yīng)性二元算術(shù)編碼);Extended Profile 提供 I/P/B/SP/SI 幀,僅支持 progressive (逐行掃描)和 CAVLC0其中,Baseline Prof ile主要包含了低復(fù)雜度、低延時(shí)的技術(shù)特征,主要是針對交 互式的應(yīng)用,如會(huì)議電視、可視電話和無線通信等實(shí)時(shí)視頻通信;考慮到惡劣環(huán)境下的容錯(cuò) 性,Baseline Profile的內(nèi)容基本都被其它更高級別的profile所包含。而Main Profile 是針對更高編碼效率的應(yīng)用,如視頻廣播。Extended Profile的設(shè)計(jì)主要針對流媒體的應(yīng) 用,在這一框架中所有容錯(cuò)技術(shù)和對比特流的靈活訪問及切換技術(shù)都將包括其中。類似的,其他編解碼標(biāo)準(zhǔn)也定義了相應(yīng)的Profile,例如MPEG定義了 Simple Profile (簡單框架)、Simple Scalable Prof ile (簡單可縮放框架)、CoreProf ile (核 心框架)、Main Profile (主要框架)、N_bit Profile (N 位框架)、Scaleable Texture Profile(靜態(tài)可縮放紋理框架)、Simple Face Prof ile (簡單人臉框架)、Hybrid Profile (混合框架)、Basic Animated Texture Prof ile (基本動(dòng)態(tài)紋理框架)共9種 Profile。基于上述標(biāo)準(zhǔn),目前市場上有很多支持多格式的視頻解碼器芯片,能支持高分辨 率的H. 264、MPEG4、VC-I等多種視頻格式的解碼。但是,對于這種多格式的視頻解碼芯片, 始終有一個(gè)無法回避的問題,就是不能支持更高Profile的視頻源解碼。例如,支持多格式 的視頻解碼器芯片中支持的H. 264解碼只支持Baseline Profile的視頻源,而該芯片支持 的MPEG4解碼只支持Simple Profile的解碼。這種支持多格式的視頻解碼器芯片雖然能滿足目前市場上多數(shù)視頻源的解碼,但 是對于更高質(zhì)量、更高分辨率的高Profile視頻源卻無能為力。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種視頻解碼方法及解碼器,以解決支持多格 式的視頻解碼器芯片不能支持高Profile的視頻源解碼。為了解決上述問題,本發(fā)明公開了一種視頻解碼方法,包括確定當(dāng)前需要解碼的碼流的編碼工具;判斷所述編碼工具是否為當(dāng)前解碼器的硬件所支持,如果支持,則調(diào)用當(dāng)前解碼 器中的硬件解碼工具對該碼流進(jìn)行解碼;如果不支持,則檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并按照不同編碼 的特性使用軟件進(jìn)行分類處理。其中,所述按照不同編碼的特性使用軟件進(jìn)行分類處理,包括使用軟件進(jìn)行解 碼;或者,使用軟件對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼器中的硬件解碼 工具進(jìn)行解碼;或者,使用軟件選擇跳過。優(yōu)選的,所述使用軟件進(jìn)行解碼或?qū)Υa流進(jìn)行解析之前,還包括檢查當(dāng)前系統(tǒng)的 可用資源,如果資源允許,再使用軟件進(jìn)行解碼或?qū)Υa流進(jìn)行解析;如果資源不允許,則使 用軟件選擇跳過。優(yōu)選的,針對碼流中當(dāng)前解碼器所不支持的編碼工具,如果不能使用軟件進(jìn)行解 碼,或者使用軟件對碼流進(jìn)行解析后也不能通過硬件解碼工具進(jìn)行解碼,則使用軟件選擇 跳過。本發(fā)明還提供了一種視頻解碼器,包括硬件解碼模塊和軟件解碼模塊,所述硬件 解碼模塊用于對所支持編碼的碼流進(jìn)行解碼,所述軟件解碼模塊包括測試子模塊,用于確定當(dāng)前需要解碼的碼流的編碼工具;判斷子模塊,用于判斷所述編碼工具是否為當(dāng)前解碼器的硬件解碼模塊所支持, 如果支持,則調(diào)用當(dāng)前解碼器中的硬件解碼模塊對該碼流進(jìn)行解碼;分類處理子模塊,用于當(dāng)不支持時(shí),檢查該碼流中當(dāng)前解碼器所不支持的編碼工 具,并按照不同編碼的特性使用軟件進(jìn)行分類處理。其中,所述分類處理子模塊包括軟件解碼單元,用于使用軟件進(jìn)行解碼;軟件解 析單元,用于使用軟件對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼器中的硬件 解碼模塊進(jìn)行解碼;跳過處理單元,用于使用軟件選擇跳過。優(yōu)選的,所述分類處理子模塊還包括資源判斷單元,用于檢查當(dāng)前系統(tǒng)的可用資 源,如果資源允許,再執(zhí)行軟件解碼單元或軟件解析單元;如果資源不允許,則執(zhí)行跳過處
理單元。優(yōu)選的,針對碼流中當(dāng)前解碼器的硬件解碼模塊所不支持的編碼工具,如果不能 通過軟件解碼單元進(jìn)行解碼,或者通過軟件解析單元對碼流進(jìn)行解析后也不能通過硬件解 碼模塊進(jìn)行解碼,則執(zhí)行跳過處理單元。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明提出一種軟件和硬件相結(jié)合的高性能混合解碼器,通過一種軟件上的支 持,對硬件解碼工具不能處理的高Profile編碼工具,能夠按照不同編碼的特性使用軟件 進(jìn)行分類處理。例如,使用軟件解析成硬件解碼工具能夠處理的形式,然后再通過硬件進(jìn)行 解碼;或者直接通過軟件進(jìn)行完全的解碼。因此,本發(fā)明所述的混合解碼器適用于對更高質(zhì)量、更高分辨率的高Profile視頻源進(jìn)行解碼。
圖1是本發(fā)明實(shí)施例所述一種混合解碼方法的流程圖;圖2是本發(fā)明實(shí)施例所述H. 264標(biāo)準(zhǔn)中不同Profile支持的編碼工具示意圖;圖3是本發(fā)明實(shí)施例所述一種混合解碼器的結(jié)構(gòu)圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明提出一種軟件和硬件相結(jié)合的高性能混合解碼器及解碼方法,可以對更高 質(zhì)量、更高分辨率的高Profile視頻源進(jìn)行解碼。下面通過實(shí)施例進(jìn)行詳細(xì)說明。參照圖1,是本發(fā)明實(shí)施例所述一種混合解碼方法的流程圖。本實(shí)施例中支持多格式的混合解碼器包括硬件解碼工具和軟件解碼工具,其解碼 方法如下步驟101,確定當(dāng)前需要解碼的碼流的編碼工具;混合解碼器首先通過軟件測試當(dāng)前碼流的Profile信息,Profile不同所支持的 編碼工具也不相同?;旌辖獯a器通過Profile信息可以獲知當(dāng)前碼流所支持的編碼工具。以H. 264標(biāo)準(zhǔn)為例,參照圖2,是本發(fā)明實(shí)施例所述H. 264標(biāo)準(zhǔn)中不同Profile支 持的編碼工具示意圖。如前所述,H. 264編碼體系定義了 3種不同的Profile (框架或類) Baseline Profile (基線框架),Main Profile (主要框架)和 Extended Profile (擴(kuò)展框 架)。其中,Baseline Profile 所支持的編碼工具包括I si ices (I 幀)、P si ices (P 幀)、 CAVLC(基于上下文的自適應(yīng)變長編碼)、Slice Groups and ASO(條帶組和任意條帶順序)、 Redundant Slices (冗余條帶);Main Profile所支持的編碼工具包括Interlace (隔行掃描)和CABAC(適應(yīng)性 二元算術(shù)編碼);Extended Profile 所支持的編碼工具包括SP and SI slices (SP 幀/Si 幀)、 Data Partitioning (數(shù)據(jù)分割)、B slices (B 幀)和 Weighted Prediction (權(quán)重預(yù)測)。步驟102,判斷所述編碼工具是否為當(dāng)前解碼器的硬件所支持,如果支持,則調(diào)用 當(dāng)前解碼器中的硬件解碼工具對該碼流進(jìn)行解碼;如果不支持,則繼續(xù)步驟103 ;假設(shè)本實(shí)施例中的混合解碼器硬件支持H. 264的Baseline Profile,如果當(dāng)前 碼流是Baseline Prof ile,則該混合解碼器中的硬件解碼工具正好支持此碼流的編碼工 具,因此混合解碼器可以直接調(diào)用硬件解碼工具對該碼流進(jìn)行解碼。如果當(dāng)前碼流不是 Baseline Profile,則該混合解碼器的硬件解碼工具無法對該碼流進(jìn)行解碼,需要按照下 面步驟103的方式進(jìn)行處理。步驟103,如果不支持,則檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并按照 不同編碼的特性使用軟件進(jìn)行分類處理?;旌暇幋a器使用軟件進(jìn)行檢查,并依據(jù)編碼特性分為以下幾類來處理
1)使用軟件進(jìn)行解碼;對于可不通過硬件解碼而可以完全由軟件模擬硬件解碼的碼流,可以由混合解碼 器的軟件解碼工具模擬硬件解碼的方式對碼流進(jìn)行解碼。2)使用軟件對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼器中的硬件解 碼工具進(jìn)行解碼;對于可通過軟件解析為硬件能夠解碼的碼流,可以先由混合解碼器的軟件解碼工 具對碼流進(jìn)行解析,然后將解析后的信息傳給硬件解碼工具進(jìn)行解碼。3)使用軟件選擇跳過。對于上述兩種方式都不適用的碼流,可以軟件選擇跳過而不進(jìn)行解碼。優(yōu)選的,在使用軟件進(jìn)行方式1)或2)的處理之前,需要檢查當(dāng)前系統(tǒng)資源(由于 軟件解碼或解析方式會(huì)消耗大量的系統(tǒng)資源,例如,主頻、內(nèi)存等),如果資源允許,再使用 軟件進(jìn)行解碼或?qū)Υa流進(jìn)行解析;如果資源不允許,則使用軟件選擇跳過。多數(shù)情況下,軟 件只需完成整個(gè)解碼過程中的解析部分,如果軟件資源允許,軟件所做的部分將不對整個(gè) 系統(tǒng)的解碼速度產(chǎn)生影響。上述三種處理方式可以結(jié)合使用,在實(shí)際應(yīng)用中,軟件處理方式中最傾向選擇的 是由軟件解析,得到硬件可以解碼的資源,然后提供給硬件解碼,即方式2);如果這種方式 不允許,則在系統(tǒng)資源允許的情況下(當(dāng)然上一種方式也要系統(tǒng)資源允許)可以由軟件完 全解碼,即方式1),最后才選擇方式3)的跳過。仍以圖2為例,分為以下處理1) X^tExtended Profile 巾白勺 B slices 可以先檢查系統(tǒng)可用資源,如果資源允許,則選用軟件完全解碼B slices;如果不 允許,則用軟件選擇跳過當(dāng)前的B slice。2)對于 Main Profile 中的 CABAC 選擇用軟件對碼流進(jìn)行解析,并將得到的解析信息,如幀內(nèi)預(yù)測模式、CBP、MV、殘 差等等,按照預(yù)先設(shè)定的規(guī)則傳輸給硬件解碼工具進(jìn)行解碼。3)對于 Extended Profile 中的 SP/SI、Data Partitioning、WeightedPrediction URWain Profile 巾白勺 Interlace 由于這幾種編碼工具都不能用混合解碼器中的硬件來解碼,所以只能用軟件選擇 跳過。對于MPEG等其他標(biāo)準(zhǔn),也可以參照上述方法進(jìn)行軟件和硬件相結(jié)合的解碼處理。綜上所述,本發(fā)明實(shí)施例通過一種軟件上的支持,對硬件解碼工具不能處理的高 Profile編碼工具,能夠按照不同編碼的特性使用軟件進(jìn)行分類處理,適用于對更高質(zhì)量、 更高分辨率的高Profile視頻源進(jìn)行解碼。基于上述解碼方法,本發(fā)明還提供了相應(yīng)的混合解碼器實(shí)施例。參照圖3,是本發(fā)明實(shí)施例所述一種混合解碼器的結(jié)構(gòu)圖。所述混合解碼器可以包括硬件解碼模塊1和軟件解碼模塊2。其中,所述硬件解碼 模塊1用于對所支持編碼的碼流進(jìn)行解碼,所述軟件解碼模塊2進(jìn)一步可以包括測試子模 塊21、判斷子模塊22和分類處理子模塊23。其中,所述測試子模塊21用于確定當(dāng)前需要解碼的碼流的編碼工具;所述判斷子模塊22用于判斷所述編碼工具是否為當(dāng)前解碼器的硬件解碼模塊所支持,如果支持,則調(diào) 用當(dāng)前解碼器中的硬件解碼模塊對該碼流進(jìn)行解碼;所述分類處理子模塊23用于當(dāng)不支 持時(shí),檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并按照不同編碼的特性使用軟件進(jìn) 行分類處理。具體的,所述分類處理子模塊23進(jìn)一步可以包括軟件解碼單元、軟件解析單和跳 過處理單元。所述軟件解碼單元用于使用軟件進(jìn)行解碼;所述軟件解析單元用于使用軟件 對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼器中的硬件解碼模塊進(jìn)行解碼;所 述跳過處理單元用于使用軟件選擇跳過。依據(jù)不同的編碼特性,分類處理子模塊23可調(diào)用 不同的處理單元進(jìn)行處理。針對碼流中當(dāng)前解碼器的硬件解碼模塊1所不支持的編碼工具,如果不能通過軟 件解碼單元進(jìn)行解碼,或者通過軟件解析單元對碼流進(jìn)行解析后也不能通過硬件解碼模塊 進(jìn)行解碼,則執(zhí)行跳過處理單元。優(yōu)選的,所述分類處理子模塊23還可以包括資源判斷單元,用于檢查當(dāng)前系統(tǒng) 的可用資源,如果資源允許,再執(zhí)行軟件解碼單元或軟件解析單元;如果資源不允許,則執(zhí) 行跳過處理單。上述軟件和硬件相結(jié)合的混合解碼器可以對硬件解碼工具不能處理的高Profile 編碼工具,按照不同編碼的特性使用軟件進(jìn)行分類處理,適用于對更高質(zhì)量、更高分辨率的 高Profile視頻源進(jìn)行解碼。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對于系統(tǒng)實(shí)施例 而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部 分說明即可。以上對本發(fā)明所提供的一種視頻解碼方法及解碼器,進(jìn)行了詳細(xì)介紹,本文中應(yīng) 用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理 解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā) 明的限制。
權(quán)利要求
一種視頻解碼方法,其特征在于,包括確定當(dāng)前需要解碼的碼流的編碼工具;判斷所述編碼工具是否為當(dāng)前解碼器的硬件所支持,如果支持,則調(diào)用當(dāng)前解碼器中的硬件解碼工具對該碼流進(jìn)行解碼;如果不支持,則檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并按照不同編碼的特性使用軟件進(jìn)行分類處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照不同編碼的特性使用軟件進(jìn)行 分類處理,包括使用軟件進(jìn)行解碼;或者,使用軟件對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼器中的硬件解 碼工具進(jìn)行解碼;或者,使用軟件選擇跳過。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述使用軟件進(jìn)行解碼或?qū)Υa流進(jìn)行解 析之前,還包括檢查當(dāng)前系統(tǒng)的可用資源,如果資源允許,再使用軟件進(jìn)行解碼或?qū)Υa流進(jìn)行解析;如 果資源不允許,則使用軟件選擇跳過。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于針對碼流中當(dāng)前解碼器所不支持的編碼工具,如果不能使用軟件進(jìn)行解碼,或者使用 軟件對碼流進(jìn)行解析后也不能通過硬件解碼工具進(jìn)行解碼,則使用軟件選擇跳過。
5.一種視頻解碼器,其特征在于,包括硬件解碼模塊和軟件解碼模塊,所述硬件解碼 模塊用于對所支持編碼的碼流進(jìn)行解碼,所述軟件解碼模塊包括測試子模塊,用于確定當(dāng)前需要解碼的碼流的編碼工具;判斷子模塊,用于判斷所述編碼工具是否為當(dāng)前解碼器的硬件解碼模塊所支持,如果 支持,則調(diào)用當(dāng)前解碼器中的硬件解碼模塊對該碼流進(jìn)行解碼;分類處理子模塊,用于當(dāng)不支持時(shí),檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并 按照不同編碼的特性使用軟件進(jìn)行分類處理。
6.根據(jù)權(quán)利要求5所述的解碼器,其特征在于,所述分類處理子模塊包括軟件解碼單元,用于使用軟件進(jìn)行解碼;軟件解析單元,用于使用軟件對碼流進(jìn)行解析,然后將得到的解析信息傳給當(dāng)前解碼 器中的硬件解碼模塊進(jìn)行解碼;跳過處理單元,用于使用軟件選擇跳過。
7.根據(jù)權(quán)利要求6所述的解碼器,其特征在于,所述分類處理子模塊還包括資源判斷單元,用于檢查當(dāng)前系統(tǒng)的可用資源,如果資源允許,再執(zhí)行軟件解碼單元或 軟件解析單元;如果資源不允許,則執(zhí)行跳過處理單元。
8.根據(jù)權(quán)利要求6所述的解碼器,其特征在于針對碼流中當(dāng)前解碼器的硬件解碼模塊所不支持的編碼工具,如果不能通過軟件解碼 單元進(jìn)行解碼,或者通過軟件解析單元對碼流進(jìn)行解析后也不能通過硬件解碼模塊進(jìn)行解 碼,則執(zhí)行跳過處理單元。
全文摘要
本發(fā)明提供了一種視頻解碼方法,以解決支持多格式的視頻解碼器芯片不能支持高Profile的視頻源解碼。所述方法包括確定當(dāng)前需要解碼的碼流的編碼工具;判斷所述編碼工具是否為當(dāng)前解碼器的硬件所支持,如果支持,則調(diào)用當(dāng)前解碼器中的硬件解碼工具對該碼流進(jìn)行解碼;如果不支持,則檢查該碼流中當(dāng)前解碼器所不支持的編碼工具,并按照不同編碼的特性使用軟件進(jìn)行分類處理。本發(fā)明還提供了一種軟件和硬件相結(jié)合的高性能混合解碼器,適用于對更高質(zhì)量、更高分辨率的高Profie視頻源進(jìn)行解碼。
文檔編號H04N7/32GK101986708SQ20101053200
公開日2011年3月16日 申請日期2010年10月29日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者季鵬飛 申請人:北京中星微電子有限公司