視頻解碼圖像存儲空間管理方法
2023-06-15 22:54:56 1
專利名稱:視頻解碼圖像存儲空間管理方法
技術領域:
本發明屬於視頻解碼技術領域,特別涉及一種用於視頻解碼器中視頻解碼圖像存儲空間管理方法。
背景技術:
MPEG(運動圖像專家組)-2視頻壓縮標準由於能夠在運算複雜度適中的前提下提供高壓縮比與高質量的圖像,因而在近年來得到了大力的發展與廣泛的運用,如DVD,數位電視等。MPEG-2標準對於運動圖像的壓縮能力很大程度上歸因於它所採用的運動補償算法,然而在對符合MPEG-2標準的碼流進行解碼時,必須要以選定的參考幀為基礎才能正確解碼所有的視頻幀圖像。因此,在解碼過程中始終要保存最多兩幅參考幀(在雙向運動補償時)。除了存儲參考幀以外,在解碼過程中還需要保存當前正在被解碼的幀以及正在被顯示的幀。由於圖像數據的數據量很大,在視頻解碼系統中一般會選用同步動態隨機存儲器(SDRAM)來保存上述的圖像。
根據不同的運動補償方式,編碼圖像可以分成為I、P、B圖。B圖不能做編碼參考圖像,由於B圖的存在,圖像的編碼順序和顯示順序變得不一致,解碼器必須在解碼後對圖像進行重排再顯示。假設圖像編碼序列為I0、P3、B1、B2、P6、B4、B5…按照場圖格式編碼,圖1表示了傳統的解碼器中解碼、顯示的順序和幀存位置的關係。圖中102、104、106表示SDRAM中的存儲空間,F、L表示圖象的第一、二場。102、104兩個位置用來存放解碼後的I、P圖,只有他們不再作為後續圖像的參考幀時,他們的位置才被新解碼的圖像覆蓋,而106的位置用來存放B圖,他們在顯示後不再作為參考圖所以可以立即被新解碼的B圖覆蓋,而後一幅的B圖是在前一B圖的第一場顯示完成而第二場開始顯示後才開始寫入的。由此可見,傳統的解碼器需要至少三幀的視頻存儲空間。
在眾所周知的美國國家電視制式委員(NTSC)協議中,圖像大小為每幀720×480像素,則數據量達到3.96Mbit/幀,三幀共11.88Mbit。對於逐行倒相制(PAL)協議,圖像大小為每幀720×576,則數據量達到4.75Mbit/幀,三幀共14.25Mbit。接近這一存儲量的普通商用SDRAM大小為16Mbit,顯然剩餘的存儲容量對於解碼器其他功能的實現是不足夠的。在當今消費電子產品成本壓力日漸增大的形式下,有必要尋找一種新的圖像存儲空間的管理方法,以有效地減少圖像存儲的數據量,同時處理好解碼與播放之間的關係。
發明內容
本發明的目的是針對現有技術的不足,提供一種改進的視頻解碼圖像存儲空間的管理方法,減少解碼圖像對存儲空間的大小要求,從而降低解碼器中的存儲器的大小和成本。
為了實現上述目的,本發明的存儲空間管理方法包括以下步驟1.解碼單元讀入視頻壓縮流,尋找圖像序列頭,解碼並存儲該序列頭後面第一個I幀,並將前向參考幀指針指向該幀;2.解碼單元讀入新的視頻壓縮流,如果隨後的圖像類型為I或者P幀,則解碼並存儲該幀,並將後向參考幀指針指向該幀;如果隨後的圖像類型為B幀則跳過該幀,不進行解碼;3.解碼單元讀入新的視頻壓縮流,如果隨後的圖像類型為I或者P幀,則解碼並存儲該幀,並將後向參考幀指針的值賦予前向參考幀指針,然後把後向參考幀指針指向該幀;如果後續幀為B幀則解碼並存儲該B幀,它的兩個參考幀由前向參考幀指針和後向參考幀指針決定;解碼單元重複步驟3直到解碼結束;4.存儲管理單元與解碼單元一起工作,檢測幀存儲單元中有空餘的存儲空間時,才允許解碼單元把解碼圖像存放到幀存儲單元中的相應位置,如果幀存儲單元中沒有空餘的存儲空間則通知解碼單元暫停解碼並進入等待狀態;
5.顯示FIFO與解碼單元一起工作,當開始解碼時顯示FIFO由空開始,首先將作為前向幀的I幀放入顯示FIFO中,然後將後面的B幀放入顯示FIFO中,在該B幀顯示完畢後,如果找到的下一個圖像為I或者P幀則把前面最近解出的一個P幀放入顯示FIFO中,如果如果找到的下一個圖像為B幀則把該B幀放入顯示FIFO中;6.如果播放控制單元檢測到顯示FIFO非空,則根據顯示FIFO的指示從幀存儲單元中讀出解碼圖像並輸出到顯示設備,顯示完該幀後把它從顯示FIFO中移出;如果播放控制單元檢測到顯示FIFO為空,則重複輸出剛剛播放出的圖像到顯示設備。
其中步驟3中解碼並存儲B幀的具體方法為3.1當解碼單元解碼到B幀的幀頭後存儲管理單元就將其放入步驟5所述的顯示FIFO中,並把當前需要播放的該B幀的一個場存入幀存儲單元中;3.2當解碼的該B幀數據量達到一個門限值時開始播放該B幀,該門限值的設定只要能保證圖像顯示的速度不超過圖像解碼後回寫至存儲器的速度即可;3.3當完成B幀當前場的顯示之後再顯示另一場,解碼單元重新解碼該B幀,解出該B幀的另一個場存入幀存儲單元中。
其中步驟4具體為I或者P圖存放完整的兩幀圖像並且在顯示完畢後即釋放所佔用的存儲空間允許後續解碼的I後者P圖數據寫入;B圖在只存放當前需要播放的場,並且在顯示完畢後即釋放所佔用的存儲空間,允許該B幀另一場或者新的B幀的第一場的數據寫入。
本發明的視頻解碼圖像存儲空間的管理方法存儲兩個完整I或者P幀和一個B幀的一部分,這一部分可以是一個場也可以是一個場的一部分,總的存儲空間需求量最多只有2.5幀。所以有效減少了對於存儲空間的需求量,同時滿足各種播放調整需要。使用時可以根據解碼實時性的不同可以把存儲解碼圖像在2~2.5幀的範圍內調節。
圖1是傳統存儲方式下解碼、顯示的順序和幀存位置的關係示意圖;圖2是本發明一實施例的各功能單元的結構框圖;圖3是圖2的圖像在幀存儲單元中的存儲位置示意圖;圖4是圖2的存儲管理單元中顯示FIFO示意圖;圖5是圖2的解碼單元對B圖進行多次解碼的示意圖;圖6是圖2的播放控制單元對圖像進行幀率轉換的示意圖。
具體實施例方式
圖2所示是本發明中各功能單元的結構框圖,下面將以此為例說明本發明的視頻解碼圖像存儲空間管理方法。其中解碼單元接收壓縮數據流進行視頻圖像解碼,幀存儲單元用於存放作為參考幀和播放的解碼圖像數據,存儲管理單元用於管理解碼圖像的存儲位置和調整顯示重排順序,播放控制單元用於進行播放時幀率轉換的控制。
圖3是本發明中幀存儲單元中解碼圖像存儲位置的一個實例。幀存儲單元選用單片16Mbit的商用SDRAM,解碼後的圖像數據參照本發明中需要存儲的最大情況的2.5幀,其中兩幀I/P圖,0.5幀(1場)B圖。按照每幀圖中的一場為單位來存放在SDRAM中的不同Bank中,其中第一幀I/P圖像的頂場存放在圖示302中,第一幀I/P圖像的底場存放在圖示304中,第二幀I/P圖像的頂場存放在圖示312中,第二幀I/P圖像的底場存放在圖示314中,B圖的一場(頂場或底場)存放在圖示306中。按照PAL制規定的圖像大小為720×576像素來計算,在4:2:0的格式下,對於亮度信息Y一場為720×288像素,每兩個相鄰像素點存放在SDRAM的相同地址空間中,需要720×288/512=405行。對於色度信息CrCb一場為360×144像素,對應的CrCb像素點存放在SDRAM相同的地址空間,Cr存在高8bit,Cb存在低8bit,需要360×144×2/512=203行。故每場圖像存放各需要405+203=608行的SDRAM空間。對小於720×576的圖像,也按720×576的最大規格存放,行內不足720的數據空間空閒,不足576的數據空間空閒。圖中308和316中的空間可以用來存放壓縮數據和實現解碼器其他功能所需要存儲的數據。
結合圖4說明本發明中的存儲管理單元對於存儲空間的管理。當壓縮數據流進入解碼單元後,首先解碼402的I幀,由於它是視頻序列中的第一幀並且需要被存儲作為後續幀的參考圖像,所以將其頂場和底場分別存儲在圖3幀存儲單元中的302和304位置中,並且將前向幀指針412指向它,表示它作為後續P圖解碼的參考幀和B圖解碼的前向參考幀。接下來解碼序列中的第二個幀即404的P幀,它以前向參考幀I幀為參考圖像來解碼,故解碼該P幀時,需要從幀存儲單元中讀取I幀中的參考宏塊,解碼後將404的P幀的頂場和底場分別存放在圖3的312和314位置中,將後向幀指針414指向它,表示它作為後續P圖解碼的參考幀和B圖解碼的後向參考幀。然後解碼406的B幀時,它的雙向預測的參考幀分別由前向幀和後向幀的指針412和414指示,即需要從幀存儲單元中讀取已經解碼的I幀和P幀中的參考宏塊,B幀解碼後只存放其中的一場或一場中的部分數據到圖3的306位置中,同一場中已經存儲的數據待播放完畢後被同一場中未存儲的數據所覆蓋,而當存儲的一場數據播放完後再將該B圖的第二場存儲到306的位置,覆蓋已經不再需要播放或用作參考的第一場,B圖的第二場解碼按照該B圖的編碼類型判斷可能需要第二次解碼,第二次解碼是本發明中多次解碼的一種情況,在下文中將有說明。隨後解碼408的P圖時,它以後向幀指針414指向的P圖為參考圖像,此時存儲在302和304空間的I幀已經被顯示過並且不再作為後續幀的參考圖像,故408的P圖解碼後其頂場和底場分別存放到302和304的位置中去,並將後向幀指針414指向它,而前向幀指針412指向原來後向幀指針指向的404的P幀。而後到來的410的B圖仍然參考前向幀指針412和後向幀指針414指向的參考幀來解碼,並且只存儲一場或一場中的部分數據到306的位置,處理方式與406的B圖相同。
如圖4解釋了本發明中存儲管理單元中顯示重排FIFO的工作機制。416的FIFO由空開始,當402的I幀解碼並存儲後,首先將其放入FIFO中等待播放。404的P幀解碼並存儲後,但隨後發現其後續的是406的B幀,故顯示的順序需要重排,404的P幀作為406的B幀的參考幀,在其解碼後不馬上顯示。按照重排的規則,是在406的B幀解碼後先顯示B幀,又由於B幀只存儲了一場或一場中的部分數據在幀存儲單元中,故解碼到406的B幀的圖像頭後該B幀就先進入FIFO中。播放控制方面,待幀存儲單元中的B圖存儲到一定量後才可以開始播放,以保證播放的速度不超過解碼單元回寫圖像的速度,B圖的一場播放完畢後,解碼另一場來存儲並播放,視其圖像類型決定是否是需要第二次解碼。在406的B圖兩場都顯示完畢後並解碼到下一幀為408的P幀後,404的P幀可以進入顯示的FIFO中。當408的P幀解碼後,將覆蓋前向幀402的存儲空間,並將後向幀的指針指向它,而前向幀指針指向404的P幀。同樣的,當發現後續的是410的B幀時,408的P幀也需要等待B幀播放完畢後才進入顯示FIFO。
如圖5所示解釋了本發明中關於多次解碼的定義。如果壓縮數據流中的圖像頭指明待解碼的圖像是B幀圖,那麼視頻解碼器通過信號B_multi指示該圖像是B幀圖,同時計算出該B幀圖像起始碼到指示該幀是B幀圖的欄位之間的數據位數bit_count。解碼單元第一次解碼該B幀時,根據其他的編碼信息向幀存儲單元中只回寫這一幀中需要先播放的那一場數據,而丟棄後播放的另一場數據。解碼單元第一次解完該B幀圖像數據後,根據播放控制單元指示的該B圖需要重複解碼的次數B_repeat信號開始第二次解碼該幀,根據信號B_multi和bit_count回退讀取數據壓縮流,重新尋找B圖像頭,第二次解碼該B幀,根據其他的編碼信息向幀存儲單元中只回寫這一幀中需要後播放的那一場數據,而丟棄先播放的另一場數據。當第二次解碼該B幀完成後,再次根據播放控制單元的B_repeat信號判斷是否需要再次解碼該B幀若播放控制單元不再需要重複顯示該B圖,則解碼器發出B_over信號,表示該B幀解碼全部過程結束;若播放控制單元需要重複顯示該B圖,則再重複上述的解碼過程,並存儲播放控制單元要求重複播放的那一場圖像。若圖像序列中的B圖是場圖,與上述過程不同的是,當解碼完一場並播放該B場圖時,播放控制單元指示解碼單元暫停解碼新的其他場或者幀圖像數據,只有播放控制單元需要重複播放該場B圖時才需要多次解碼。
當播放按照與編碼不同的制式來進行時,需要在播放控制單元中採取特殊策略來完成幀率轉換。有兩種按場為單位做幀率轉換的情況,分別是25fps->30fps和24fps->30fps。25fps->30fps時每播放5場重複一場,24fps->30fps時每播放4場重複一場。由此可見,B圖也有可能需要重複播放多次,而本發明中雖然只存儲一場或一場中的部分數據的B圖,但可以通過多次解碼來保證該B圖可以被正確的重複。兩種幀率轉換的實現如圖5所示。圖中播放的場指的是當前播放的是哪一場,實際的數據是指當前播放的數據來自某幀的哪一場。如圖6(a)是25->30fps的情況,可見,1、2場來自同一幀,3、4場來自同一幀,5、6、7場來自同一幀,8、9場來自同一幀,10、11、12場來自同一幀。6,12場是重複的場,即5、6場是同一幀的同一場,11、12場是同一幀的同一場。如圖6(b)是24fps->30的情況,1、2場來自同一幀,3、4、5場來自同一幀,6、7場來自同一幀,8、9、10場來自同一幀,5、10場是重複的場。
而當按幀為單位來做幀率轉換時,I/P幀的重複可以與按場重複同樣的操作,對於B幀的重複則由於只存儲了一場或一場中的部分圖像而需要通過多次解碼來實現。當幀存儲單元中只存儲了一場中的部分圖像而少於完整一場時,在顯示完該B圖的兩場後肯定需要多次解碼該B圖來實現B圖的重複播放;當幀存儲單元存儲了完整的一場B圖示時,除了通過多次解碼的方法外,也可以通過頂場、頂場、底場、底場的順序或者頂場、底場、底場、底場的順序來近似重複該B圖。對於這兩種情況,本發明都有完整的機制去滿足按幀為單位來做幀率轉換的要求。
如上所述,本發明提出了一種改進的視頻解碼圖像存儲空間的管理方法,減少解碼圖像對存儲空間的大小要求,處理好解碼和播放之間的關係,並且可以根據圖像類型和播放制式選擇性地調整存儲空間的管理。
儘管本發明是參照其優選實施例來具體描述的,但本領域的技術人員應該理解,在不脫離有所附權利要求限定的本發明的精神和範圍的情況下,可以對其進行形式和細節的各種修改。
權利要求
1.視頻解碼圖像存儲空間管理方法,其特徵在於該方法包括以下步驟(1)解碼單元讀入視頻壓縮流,尋找圖像序列頭,解碼並存儲該序列頭後面第一個I幀,並將前向參考幀指針指向該幀;(2)解碼單元讀入新的視頻壓縮流,如果隨後的圖像類型為I或者P幀,則解碼並存儲該幀,並將後向參考幀指針指向該幀;如果隨後的圖像類型為B幀則跳過該幀,不進行解碼;(3)解碼單元讀入新的視頻壓縮流,如果隨後的圖像類型為I或者P幀,則解碼並存儲該幀,並將後向參考幀指針的值賦予前向參考幀指針,然後把後向參考幀指針指向該幀;如果後續幀為B幀則解碼並存儲該B幀,它的兩個參考幀由前向參考幀指針和後向參考幀指針決定;解碼單元重複步驟(3)直到解碼結束;(4)存儲管理單元與解碼單元一起工作,檢測幀存儲單元中有空餘的存儲空間時,才允許解碼單元把解碼圖像存放到幀存儲單元中的相應位置,如果幀存儲單元中沒有空餘的存儲空間則通知解碼單元暫停解碼並進入等待狀態;(5)顯示FIFO與解碼單元一起工作,當開始解碼時顯示FIFO由空開始,首先將作為前向幀的I幀放入顯示FIFO中,然後將後面的B幀放入顯示FIFO中,在該B幀顯示完畢後,如果找到的下一個圖像為I或者P幀則把前面最近解出的一個P幀放入顯示FIFO中,如果如果找到的下一個圖像為B幀則把該B幀放入顯示FIFO中;(6)如果播放控制單元檢測到顯示FIFO非空,則根據顯示FIFO的指示從幀存儲單元中讀出解碼圖像並輸出到顯示設備,顯示完該幀後把它從顯示FIFO中移出;如果播放控制單元檢測到顯示FIFO為空,則重複輸出剛剛播放出的圖像到顯示設備。
2.如權利要求1所述的視頻解碼圖像存儲空間管理方法,其特徵在於所述的步驟(3)中解碼並存儲B幀的具體方法為3.1當解碼單元解碼到B幀的幀頭後存儲管理單元就將其放入步驟(5)所述的顯示FIFO中,並把當前需要播放的該B幀的一個場存入幀存儲單元中;3.2當解碼的該B幀數據量達到一個門限值時開始播放該B幀,該門限值的設定只要能保證圖像顯示的速度不超過圖像解碼後回寫至存儲器的速度即可;3.3當完成B幀當前場的顯示之後再顯示另一場,解碼單元重新解碼該B幀,解出該B幀的另一個場存入幀存儲單元中。
3.如權利要求1所述的視頻解碼圖像存儲空間管理方法,其特徵在於所述的步驟(4)具體為I或者P圖存放完整的兩幀圖像並且在顯示完畢後即釋放所佔用的存儲空間允許後續解碼的I後者P圖數據寫入;B圖在只存放當前需要播放的場,並且在顯示完畢後即釋放所佔用的存儲空間,允許該B幀另一場或者新的B幀的第一場的數據寫入。
全文摘要
本發明涉及一種用於視頻解碼器中視頻解碼圖像存儲空間管理方法。本發明的視頻解碼圖像存儲空間的管理方法存儲兩個完整I或者P幀和一個B幀的一部分,這一部分可以是一個場也可以是一個場的一部分,總的存儲空間需求量最多只有2.5幀。本發明有效減少了對於存儲空間的需求量,同時滿足各種播放調整需要。使用時可以根據解碼實時性的不同可以把存儲解碼圖像在2~2.5幀的範圍內調節。
文檔編號H04N7/24GK1878306SQ20061009890
公開日2006年12月13日 申請日期2006年7月14日 優先權日2006年7月14日
發明者龐智博, 李炳博, 馬明超 申請人:杭州國芯科技有限公司