算術編碼中的概率模型存儲方法
2023-09-18 15:26:15 1
專利名稱:算術編碼中的概率模型存儲方法
技術領域:
本發明涉及視頻處理中的算術編碼技術,特別涉及一種算術編碼中的概率模型存儲方法。
背景技術:
基於H.264視頻編解碼標準的算術編碼為一種基於上下文的自適應二進位算術編碼,其編碼對象是視頻信號中的語法元素(SE),分為殘差SE和非殘差SE。
其中,殘差SE包括表示當前塊是否有非零係數的CBF、表示當前位置上的非0係數的絕對值減1的CALM、表示當前位置上的係數是否為0的SCF、表示當前位置上的係數是否為最後一個非0係數的LSCF等類別的數據,通常表示為4×4的亮度DC係數、亮度/色度AC係數、色度DC係數矩陣等,每種殘差SE又分為5個子類別(Cat);非殘差SE包括表示前後向預測的參考圖像索引的refIdx、表示運動向量和其前後向預測值之差的MVD、表示當前亮度和色度塊的直流和交流分量的非零情況的CBP、表示當前幀中的宏塊是否是skip模式的mb_skip_flag等類別的數據,通常僅表示為一個數值。
上述算術編碼首先需要對SE進行二進位化處理,得到該SE所屬SE類別對應的概率模型的序號。其中,一個概率模型對應一個序號;對於殘差SE來說,SE類別是指某一類別下的一個子類別。然後調用並調整得到的序號對應的概率模型。
概率模型為7比特的數值,每個概率模型的初始值存儲於存儲單元中。在調用概率模型時,需要根據預設的不同概率模型與存儲位置的映射關係,從相應的存儲位置讀取對應的概率模型,並將更新後的該概率模型再存儲到對應的存儲位置。
其中,存儲位置是指如RAM、E2PROM等存儲器的存儲地址,和/或寄存器等具有存儲功能的物理實體。
在H.264視頻編解碼標準中,共有399種與不同SE類別對應的概率模型。不同概率模型的序號及其對應的SE類別如表1所示。
表1表1中,「(Frame)」表示幀模式,「(Field)」表示場模式。
現有技術中,所有概率模型是無序地存儲在一個或多個存儲單元中,即不同的概率模型與存儲位置的映射關係是隨意設定的。然而,在算術編碼過程中,通常需要連續讀取多個概率模型,這樣,每次調用概率模型均需要在存儲單元中查找,使得算術編碼過程中訪問存儲單元的次數較多。
例如,由於殘差SE通常表示為4×4的各種係數矩陣,因此對於殘差SE的算術編碼過程,一般需要針對矩陣中每個係數的CBF、CALM、SCF和LSCF對應的概率模型連續多次訪問並查找存儲單元。以算術編碼採用幀模式、存儲單元為一個RAM、Cat=0為例,需要連續訪問44次RAM,並根據不同序號的概率模型與RAM存儲地址的映射關係,獲取CBF對應的序號為85~88的4個概率模型、CALM對應的序號為227~236的10個概率模型、SCF(Frame)對應的序號為105~119的15個概率模型、LSCF(Frame)對應的序號為166~180的15個概率模型。
而且,隨意為不同概率模型分配存儲位置,造成了存儲單元的資源利用混亂和資源浪費。
可見,現有技術中沒有依據算術編碼的過程有序地存儲概率模型,從而使得算術編碼的效率不高,且造成了存儲資源的浪費。
發明內容
有鑑於此,本發明的一個主要目的在於,提供一種算術編碼中的概率模型存儲方法,能夠提高算術編碼的效率。
根據上述的一個主要目的,本發明提供了一種算術編碼中的概率模型存儲方法,包括根據概率模型所對應的語法元素SE類別,設置所有概率模型與存儲位置的映射關係;根據所述設置的映射關係,將相同SE類別對應的所有概率模型分別集中存儲到對應的存儲位置。
所述存儲位置包括隨機存儲器RAM的行地址。
所述RAM為一個或多個。
所述RAM的存儲空間大小為56×56。
所述將所有概率模型分別存儲到對應的存儲位置為將同一SE類別對應的概率模型存儲在同一個行地址;和/或將多個SE類別分別對應的概率模型存儲在同一個行地址。
所述將同一SE類別對應的概率模型存儲在同一個行地址包括分別將表示當前塊是否有非零係數的CBF對應的每個子類別Cat的概率模型集中存儲在一行內;分別將表示當前位置上的非0係數的絕對值減1的CALM對應的每個Cat的概率模型集中存儲在兩行內;分別將場模式式下的表示當前位置上的係數是否為0的SCF與表示當前位置上的係數是否為最後一個非0係數的LSCF對應的每個Cat的概率模型集中存儲在兩行內;分別將幀模式下的SCF與LSCF對應的每個Cat的概率模型集中存儲在兩行內。
所述將同一SE類別對應的概率模型存儲在同一個行地址包括將表示當前P幀中的宏塊是否是skip模式的mb_skip_flag_P對應的所有概率模型集中存儲於一行內;將表示當前I幀中的宏塊類型的mb_type_I對應的所有概率模型集中存儲於兩行內。
所述將多個SE類別分別對應的概率模型存儲在同一個行地址包括分別將mb_skip_flag_P、表示當前P幀中的宏塊類型的mb_type_P、表示當前P幀中的子宏塊類型的sub_mb_type_P、表示當前B幀中的宏塊是否是skip模式的mb_skip_flag_B、表示當前B幀中的宏塊類型的sub_mb_type_B、用於更新片的量化參數mb_qb_delta、表示當前宏塊的預測方式的prev_intra4×4_mode、表示當前宏塊的左方宏塊和上方宏塊的預測方式的rem_intra4×4_mode、表示當前宏塊是幀還是場模式的mb_field_decoding_flag、表示亮度為Intra4×4預測時色度塊的預測方式的intra_chroma_pred_mode中的一個或多個SE類別對應的概率模型,與其他SE類別對應的概率模型集中存儲。
所述存儲位置進一步包括寄存器。
所述將所有概率模型分別存儲到對應的存儲位置進一步包括將片結束標識End_of_slice_flag對應的概率模型存儲在寄存器中。
由上述技術方案可見,本發明依據概率模型所對應的SE類別,設置不同概率模型與存儲位置的映射關係,並根據設置的映射關係,將算術編碼過程中連續讀取的概率模型集中存儲到對應的存儲位置,使得算術編碼過程中能夠以行為單位同時讀取多個所需的概率模型,從而減少了訪問存儲單元的次數,提高了算術編碼的效率。而且,每一行儘可能多的存儲概率模型,提高了存儲資源的利用率,減少了資源浪費。
圖1為本發明中的概率模型存儲方法的示例性流程圖。
圖2為本發明實施例中的概率模型存儲示意圖。
具體實施例方式
為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖並舉實施例,對本發明進一步詳細說明。
圖1為本發明中的概率模型存儲方法的示例性流程圖。如圖1所示,本實施例中的概率模型存儲方法包括以下步驟步驟101,依據概率模型所對應的SE類別,設置不同概率模型與存儲位置的映射關係,使得算術編碼過程中連續讀取的概率模型集中存儲;步驟102,根據設置的映射關係,將所有概率模型分別存儲到對應的存儲位置。
這樣,即可降低算術編碼過程中對存儲單元的訪問次數。
具體來說,本實施例中的集中存儲至少滿足以下兩個條件或其中任意一個a、同一SE類別對應的概率模型儘可能存儲在同一行,即同一SE類別對應的概率模型對應同一個行地址,這樣,算術編碼過程中即可以行為單位,一次讀取同一SE類別對應的所有概率模型;b、每一行儘可能多的存儲概率模型,即多個SE類別對應的所有概率模型對應同一個行地址,這樣,算術編碼過程中即可以行為單位,一次讀取一個或多個SE類別對應的所有概率模型,同時還提高了存儲單元的資源利用率。
下面,以存儲單元包括一個56×56的RAM和一個專用寄存器為例,對本實施例中的概率模型存儲方法進行詳細說明。
由於通常的算術編碼過程中,對End_of_slice_flag對應的序號為276的概率模型訪問較頻繁,因此,將該SE類別對應的概率模型存儲於專用寄存器中。其餘的概率模型則存儲於56×56的RAM中。
本實施例中不同概率模型與存儲地址的映射關係可以如表2所示。
表2
圖2為本發明實施例中的概率模型存儲示意圖。如圖2所示,設置如表2所示的不同概率模型與存儲地址的映射關係,根據該映射關係將所有概率模型分別存儲到對應的存儲地址中,使得除序號為276的概率模型之外的其餘概率模型,按照同一SE類別對應的概率模型儘可能存儲在同一行和每一行儘可能多的方式存儲於56×56的RAM中。
這樣,對於除非殘差SE的算術編碼過程,mb_type_I、mb_type_B或CBP對應的所有概率模型,需要訪問兩次RAM才能夠全部獲取,而其他的每個SE類別對應的所有概率模型均只需通過一次訪問RAM的一行而獲得。
例如,對於mb_skip_flag_P對應的所有概率模型均存儲於RAM的第3行,因此,只需讀取RAM的第3行的所有數據即可獲得mb_skip_flag_P對應的所有概率模型,同時,還獲得了mb_skip_flag_B對應的所有概率模型;而對於mb_type_I對應的所有概率模型,也只需對RAM的第1行和第2行各讀取一次即可獲得。
如果RAM為38×84的RAM,即每行能夠存儲12個概率模型,則對於所有非殘差SE來說,每個SE類別對應的所有概率模型均可通過一次訪問RAM的一行而獲得。
而且,如表1所示,mb_skip_flag_P、mb_skip_flag_B、sub_mb_type_P、等SE類別對應的概率模型數量較少,因而可以將所有這些SE類別或其中的一部分SE類別對應的概率模型存儲於RAM中的任何位置,分別與其他SE類別對應的概率模型共處一行,節省了RAM的資源。
對於殘差SE的算術編碼過程,以算術編碼在採用幀模式、Cat=0或1為例,只需要連續訪問6次RAM第1次,讀取4個CBF對應的概率模型和4個CALM對應的概率模型,例如讀取RAM的第13行或第14行;第2次,讀取8個SCF(Frame)對應的概率模型,即讀取RAM的第23行或第25行;第3次,讀取8個LSCF(Frame)對應的概率模型,即讀取RAM的第32行或第34行;第4次,讀取剩餘的相同Cat的SCF(Frame)對應的概率模型,即讀取RAM的第24行或第26行;第5次,讀取剩餘的相同Cat的LSCF(Frame)對應的概率模型,即讀取RAM的第33行或第35行;第6次,讀取剩餘的相同Cat的CALM對應的概率模型,即讀取RAM的第18行或第19行。
而對於Cat=3的殘差SE來說,只需要連續訪問3次RAM第1次,讀取4個CBF對應的概率模型和4個CALM對應的概率模型,即讀取RAM的第16行;第2次,讀取所有4個SCF和4個LSCF對應的概率模型,即讀取RAM的第29行;第3次,讀取剩餘的CALM對應的概率模型,即讀取RAM的第21行。
這樣,將相同SE類別的概率模型集中存儲,即可使得上述兩個訪問過程中的訪問次數分別限制為6次和3次,提高了算術編碼的效率。
而且,由於算術編碼在採用幀模式和場模式的情況下,分別對應SCF(frame)和LSCF(frame)、SCF(field)和LSCF(field),因此,依據不同的Cat,將SCF(frame)與LSCF(frame)對應的概率模型集中存儲、將SCF(field)與LSCF(field)對應的概率模型集中存儲,可進一步提高算術編碼的效率。
如果算術編碼只採用幀模式或場模式中的一種,則不需要SCF(field)和LSCF(field)對應的概率模型、或者不需要SCF(frame)和LSCF(frame)對應的概率模型。此時,僅需要39×56的RAM即可。
實際應用中,也可以將所有概率模型分別存儲於兩個RAM中。例如,將算術編碼過程中讀寫次數多的概率模型存儲在一個RAM中,將讀寫次數相對較少的其他概率模型存儲於另一個RAM中。這樣,兩個RAM的行地址數都較少,集中對一個RAM的訪問就進一步提高了算術編碼的效率。
由於對RAM同時讀和寫的情況較少,因此考慮到節省硬體資源,本實施例的RAM較佳地採用單埠RAM(single-port RAM,SRAM),相對於雙埠RAM來說,在讀寫速度相同的情況下節省了一半的硬體資源。
以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換以及改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種算術編碼中的概率模型存儲方法,其特徵在於,包括根據概率模型所對應的語法元素SE類別,設置所有概率模型與存儲位置的映射關係;根據所述設置的映射關係,將相同SE類別對應所有概率模型分別集中存儲到對應的存儲位置。
2.如權利要求1所述的方法,其特徵在於,所述存儲位置包括隨機存儲器RAM的行地址。
3.如權利要求2所述的方法,其特徵在於,所述RAM為一個或多個。
4.如權利要求2所述的方法,其特徵在於,所述RAM的存儲空間大小為56×56。
5.如權利要求2至4中任意一項所述的方法,其特徵在於,所述將所有概率模型分別存儲到對應的存儲位置為將同一SE類別對應的概率模型存儲在同一個行地址;和/或將多個SE類別分別對應的概率模型存儲在同一個行地址。
6.如權利要求5所述的方法,其特徵在於,所述將同一SE類別對應的概率模型存儲在同一個行地址包括分別將表示當前塊是否有非零係數的CBF對應的每個子類別Cat的概率模型集中存儲在一行內;分別將表示當前位置上的非0係數的絕對值減1的CALM對應的每個Cat的概率模型集中存儲在兩行內;分別將場模式式下的表示當前位置上的係數是否為0的SCF與表示當前位置上的係數是否為最後一個非0係數的LSCF對應的每個Cat的概率模型集中存儲在兩行內;分別將幀模式下的SCF與LSCF對應的每個Cat的概率模型集中存儲在兩行內。
7.如權利要求5所述的方法,其特徵在於,所述將同一SE類別對應的概率模型存儲在同一個行地址包括將表示當前P幀中的宏塊是否是skip模式的mb_skip_flag_P對應的所有概率模型集中存儲於一行內;將表示當前I幀中的宏塊類型的mb_type_I對應的所有概率模型集中存儲於兩行內。
8.如權利要求5所述的方法,其特徵在於,所述將多個SE類別分別對應的概率模型存儲在同一個行地址包括分別將mb_skip_flag_P、表示當前P幀中的宏塊類型的mb_type_P、表示當前P幀中的子宏塊類型的sub_mb_type_P、表示當前B幀中的宏塊是否是skip模式的mb_skip_flag_B、表示當前B幀中的宏塊類型的sub_mb_type_B、用於更新片的量化參數mb_qb_delta、表示當前宏塊的預測方式的prev_intra4×4_mode、表示當前宏塊的左方宏塊和上方宏塊的預測方式的rem_intra4×4_mode、表示當前宏塊是幀還是場模式的mb_field_decoding_flag、表示亮度為Intra4×4預測時色度塊的預測方式的intra_chroma_pred_mode中的一個或多個SE類別對應的概率模型,與其他SE類別對應的概率模型集中存儲。
9.如權利要求5所述的方法,其特徵在於,所述存儲位置進一步包括寄存器。
10.如權利要求6所述的方法,其特徵在於,所述將所有概率模型分別存儲到對應的存儲位置進一步包括將片結束標識End_of_slice_flag對應的概率模型存儲在寄存器中。
全文摘要
本發明公開了一種算術編碼中的概率模型存儲方法。本發明依據概率模型所對應的SE類別設置不同概率模型與存儲位置的映射關係,並根據設置的映射關係,將算術編碼過程中連續讀取的概率模型集中存儲到對應的存儲位置,使得算術編碼過程中能夠以行為單位同時讀取多個所需的概率模型,從而減少了訪問存儲單元的次數,提高了算術編碼的效率。而且,每一行儘可能多的存儲概率模型,提高了存儲資源的利用率,減少了資源浪費。
文檔編號H04N7/24GK101068359SQ20071009989
公開日2007年11月7日 申請日期2007年5月31日 優先權日2007年5月31日
發明者劉子熹 申請人:北京中星微電子有限公司