一種適用於hevc的碼流解析器的製造方法
2023-06-21 13:34:01
一種適用於hevc的碼流解析器的製造方法
【專利摘要】本發明涉及一種適用於HEVC的碼流解析器,包括碼流解析狀態控制模塊、EG0解碼模塊、相鄰上塊信息及相關參數存儲單元、解碼輸出存儲單元、碼流FIFO和CABAC解碼模塊;所述EG0是指0階順序指數哥倫布;所述的碼流FIFO通過緩衝位移分別與所述CABAC解碼模塊和EG0解碼模塊相連,所述EG0解碼模塊通過碼流解析狀態控制模塊與所述CABAC解碼模塊相連;所述EG0解碼模塊通過相鄰上塊信息及相關參數存儲單元與所述CABAC解碼模塊相連。本發明的碼流解析器根據HEVC標準中的語法元素劃分重新設計狀態機,能夠極大的挑高數據吞吐量;同時增加了編碼樹單元上下文變量以及獨立片段上下文變量的存儲及相應的同步邏輯,能夠實現HEVC標準中規定的非獨立片段上下文變量以及需要同步的編碼樹單元上下文變量的同步功能。
【專利說明】—種適用於HEVC的碼流解析器
【技術領域】
[0001]本發明涉及一種適用於HEVC的碼流解析器,屬於數字視頻信號編解碼的【技術領域】。
【背景技術】
[0002]HEVC (High Efficiency Video Codec)是目前由國際電信組織(ITU)和運動圖像專家組(MPEG)聯合制定中的新一代國際視頻編碼標準。與現在的國際視頻標準H.264/AVC相比,HEVC能保證在相同圖像質量的前提下,將視頻的碼率降低50%。但相應的,HEVC的計算複雜度提高了 2至3倍。與H.264相比,HEVC的編碼方式只有O階順序指數哥倫布編碼以及CABAC編碼兩種,不再使用CAVLC編碼。與H.264 一樣,HEVC中碼流解析的瓶頸仍然是CABAC解碼。
[0003]與H.264中的CABAC編碼先比,HEVC中的CABAC編碼在語法元素的劃分以及相應發編解碼方式上進行了改進。附圖1中展示了 HEVC中使用CABAC編碼的語法元素。這些語法元素描述了編碼的像素塊的編碼單元(CU)、預測單元(PU)、轉化單元(TU)以及環路濾波器(LF)的特性。對於CU來說,這些語法元素描述了塊的結構以及該CU的預測模式(幀內或幀間);對於PU,表格中的語法元素描述的是幀內預測模式以及一系列的運動信息;對於TU,主要包含殘差矩陣的變化係數、符號等信息;LF語法元素在每一個最大編碼單元LCU中傳輸一次,描述了環路濾波中SAO的類型和偏移量。這些改進使得CABAC模塊能夠有更大的數據吞吐量,但也導致了解碼過程的變動。
[0004]出來上述變化之外,在具體的CABAC解碼過程中,HEVC中的初始化模塊增加了上下文變量的存儲及同步功能,這一變化導致當前的H.264中的CABAC節解碼模塊不再適用。
【發明內容】
[0005]針對現有技術的不足,本發明涉及一種適用於HEVC的碼流解析器。
[0006]本發明的技術方案如下:
[0007]本發明涉及一種適用於HEVC的碼流解析器,包括碼流解析狀態控制模塊、EGO解碼模塊、相鄰上塊信息及相關參數存儲單元、解碼輸出存儲單元、碼流FIFO和CABAC解碼模塊;所述EGO是指O階順序指數哥倫布;
[0008]所述的碼流FIFO通過緩衝位移分別與所述CABAC解碼模塊和EGO解碼模塊相連,所述EGO解碼模塊通過碼流解析狀態控制模塊與所述CABAC解碼模塊相連;所述EGO解碼模塊通過相鄰上塊信息及相關參數存儲單元與所述CABAC解碼模塊相連;
[0009]所述CABAC解碼模塊包括CABAC算術解碼、輸出模塊和CABAC狀態控制;所述CABAC算術解碼通過輸出模塊與所述解碼輸出存儲單元相連;所述ABAC算術解碼與所述CABAC狀態控制相連,所述CABAC狀態控制通過輸出模塊與所述解碼輸出存儲單元相連;
[0010]所述緩衝位移與所述CABAC算術解碼相連,所述相鄰上塊信息及相關參數存儲單元與所述CABAC狀態控制相連;[0011]所述碼流解析狀態控制模塊是整個碼流解析器的控制中心,根據HEVC標準上規定的碼流成分及相應的解析順序,所述碼流解析狀態控制模塊協調EGO解碼模塊和CABAC解碼模塊的工作,完成相應語法元素的解碼操作;
[0012]所述EGO解碼模塊用於完成使用O階順序指數哥倫布編碼的語法元素的解碼操作,具體包括有符號型和無符號型兩種;
[0013]所述相鄰上塊信息及相關參數存儲單元採用SRAM來實現,用於存儲以下信息:
[0014](I)相鄰上塊的語法元素值,這些語法元素的值用於計算相應語法元素的模型索引增量:在每解完一個宏塊語法元素值後更新相鄰上塊信息SRAM中相應位置的語法元素值;通過即時動態更新,可避免存儲兩行宏塊的句法元素值,進而節省存儲空間,而同時又不影響模型索引增量值的計算;
[0015](2)用於CABAC解碼過程中需要的相關參數:包括序列參數集、圖像參數集以及片頭語法元素值;
[0016]所述解碼輸出存儲單元,用於存儲CABAC解碼輸出的殘差矩陣及運動信息;由於數據量很大,所以採用SRAM來實現,同時,為了降低延時,實現與反量化、反變換等模塊的協同工作,採用兩個SRAM來實現桌球操作模式,例如,當CABAC輸出模塊往SRAMl中寫入數據時,反量化/反變換模塊從SRAM2中讀取殘差係數值。通過這樣的實現,能夠使各模塊同時運行;
[0017]所述碼流FIFO,用於暫時存儲碼流信息,同時實現碼流信息的異步存取;
[0018]所述CABAC解碼模塊,用於實現使用CABAC編碼的語法元素的解碼操作:包括CABAC算術解碼模塊、CABAC狀態控制模塊以及輸出模塊。
[0019]根據本發明優選的,所述CABAC算術解碼模塊包括算術解碼及重歸一化單元和上下文模型管理單元;
[0020]上述算術解碼及重歸一化單元包括常規解碼邏輯、旁路解碼邏輯以及終止解碼邏輯,該單元全部由組合邏輯實現;該單元通過HEVC標準中規定的解碼類型來選擇相應解碼方式進行解碼,同時更新當前區間寬度、區間偏置以及上下文變量;
[0021]上述上下文模型管理單元在解析一個新的slice、新的tile以及新的一行CTU時會按照各自相應的初始化流程完成各上下文模型的初始化或者同步以及算術解碼引擎的初始化;同時,該單元還能按照存儲要求,將將相應的CTU以及slice segment的上下文變量存到相應的寄存器中;為了提高解碼速度,需要在一個時鐘周期內完成上下文模型信息的更新,並獲得下一個欲解比特需要的上下文模型信息。該管理單元由CABAC狀態控制模塊進行控制,每個時鐘讀入算術解碼單元更新後的上下文模型值,同時輸出解碼需要的上下文模型值。當讀入和輸出的上下文模型相同時,算術解碼單元將直接使用更新後的上下文模型值(即管理單元讀入的模型值)),這樣,可避免一個時鐘的等待;
[0022]上述CABAC狀態控制模塊用於根據標準上規定的碼流成分及解碼順序,控制狀態跳轉,同時控制相應的上下文變量的更新及讀取,來完成相應的CABAC解碼操作;
[0023]上述輸出模塊用於實現對CABAC解碼的結果的輸出控制。
[0024]根據本發明優選的,所述EGO解碼模塊的解碼方式包括有符號型和無符號型兩種,該解析器採用硬體中固化查找表的方式來實現上述兩種解碼方式。為了提高解碼效率,本發明中採用硬體中固化查找表的方式來實現這兩種解碼方式。[0025]根據本發明優選的,所述碼流FIFO寬度為8位。方便CABAC模塊的使用。
[0026]本發明的優勢:
[0027]與現有技術相比,本發明所述的碼流解析器適用於HEVC中改進的的語法元素解析過程,並且其CABAC解碼過程符合HEVC的要求。
[0028]本發明的碼流解析器根據HEVC標準中的語法元素劃分重新設計狀態機,能夠極大的挑高數據吞吐量;同時增加了編碼樹單元上下文變量以及獨立片段上下文變量的存儲及相應的同步邏輯,能夠實現HEVC標準中規定的非獨立片段上下文變量以及需要同步的編碼樹單元上下文變量的同步功能。同時,本發明的碼流解析器的子模塊劃分合理,能夠實現碼流的讀取、解碼、輸出的流水線操作,極大的提高解碼效率。
【專利附圖】
【附圖說明】
[0029]圖1是HEVC中使用CABAC編碼的語法元素劃分;
[0030]圖2是HEVC碼流解析器的硬體架構。
【具體實施方式】
[0031]下面結合附圖對本發明進一步詳細說明,但不限於此。
[0032]實施例、
[0033]一種適用於HEVC的碼流解析器,包括碼流解析狀態控制模塊、EGO解碼模塊、相鄰上塊信息及相關參數存儲單元、解碼輸出存儲單元、碼流FIFO和CABAC解碼模塊;所述EGO是指O階順序指數哥倫布;
[0034]所述的碼流FIFO通過緩衝位移分別與所述CABAC解碼模塊和EGO解碼模塊相連,所述EGO解碼模塊通過碼流解析狀態控制模塊與所述CABAC解碼模塊相連;所述EGO解碼模塊通過相鄰上塊信息及相關參數存儲單元與所述CABAC解碼模塊相連;
[0035]所述CABAC解碼模塊包括CABAC算術解碼、輸出模塊和CABAC狀態控制;所述CABAC算術解碼通過輸出模塊與所述解碼輸出存儲單元相連;所述ABAC算術解碼與所述CABAC狀態控制相連,所述CABAC狀態控制通過輸出模塊與所述解碼輸出存儲單元相連;
[0036]所述緩衝位移與所述CABAC算術解碼相連,所述相鄰上塊信息及相關參數存儲單元與所述CABAC狀態控制相連;
[0037]所述碼流解析狀態控制模塊是整個碼流解析器的控制中心,根據HEVC標準上規定的碼流成分及相應的解析順序,所述碼流解析狀態控制模塊協調EGO解碼模塊和CABAC解碼模塊的工作,完成相應語法元素的解碼操作;
[0038]所述EGO解碼模塊用於完成使用O階順序指數哥倫布編碼的語法元素的解碼操作,具體包括有符號型和無符號型兩種;
[0039]所述相鄰上塊信息及相關參數存儲單元採用SRAM來實現,用於存儲以下信息:
[0040](I)相鄰上塊的語法元素值,這些語法元素的值用於計算相應語法元素的模型索引增量:在每解完一個宏塊語法元素值後更新相鄰上塊信息SRAM中相應位置的語法元素值;通過即時動態更新,可避免存儲兩行宏塊的句法元素值,進而節省存儲空間,而同時又不影響模型索引增量值的計算;
[0041](2)用於CABAC解碼過程中需要的相關參數:包括序列參數集、圖像參數集以及片頭語法元素值;
[0042]所述解碼輸出存儲單元,用於存儲CABAC解碼輸出的殘差矩陣及運動信息;由於數據量很大,所以採用SRAM來實現,同時,為了降低延時,實現與反量化、反變換等模塊的協同工作,採用兩個SRAM來實現桌球操作模式,例如,當CABAC輸出模塊往SRAMl中寫入數據時,反量化/反變換模塊從SRAM2中讀取殘差係數值。通過這樣的實現,能夠使各模塊同時運行;
[0043]所述碼流FIFO,用於暫時存儲碼流信息,同時實現碼流信息的異步存取;
[0044]所述CABAC解碼模塊,用於實現使用CABAC編碼的語法元素的解碼操作:包括CABAC算術解碼模塊、CABAC狀態控制模塊以及輸出模塊。
[0045]所述CABAC算術解碼模塊包括算術解碼及重歸一化單元和上下文模型管理單元;
[0046]上述算術解碼及重歸一化單元包括常規解碼邏輯、旁路解碼邏輯以及終止解碼邏輯,該單元全部由組合邏輯實現;該單元通過HEVC標準中規定的解碼類型來選擇相應解碼方式進行解碼,同時更新當前區間寬度、區間偏置以及上下文變量;
[0047]上述上下文模型管理單元在解析一個新的slice、新的tile以及新的一行CTU時會按照各自相應的初始化流程完成各上下文模型的初始化或者同步以及算術解碼引擎的初始化;同時,該單元還能按照存儲要求,將將相應的CTU以及slice segment的上下文變量存到相應的寄存器中;為了提高解碼速度,需要在一個時鐘周期內完成上下文模型信息的更新,並獲得下一個欲解比特需要的上下文模型信息。該管理單元由CABAC狀態控制模塊進行控制,每個時鐘讀入算術解碼單元更新後的上下文模型值,同時輸出解碼需要的上下文模型值。當讀入和輸出的上下文模型相同時,算術解碼單元將直接使用更新後的上下文模型值(即管理單元讀入的模型值)),這樣,可避免一個時鐘的等待;
[0048]上述CABAC狀態控制模塊用於根據標準上規定的碼流成分及解碼順序,控制狀態跳轉,同時控制相應的上下文變量的更新及讀取,來完成相應的CABAC解碼操作;
[0049]上述輸出模塊用於實現對CABAC解碼的結果的輸出控制。
[0050]所述EGO解碼模塊的解碼方式包括有符號型和無符號型兩種,該解析器採用硬體中固化查找表的方式來實現上述兩種解碼方式。為了提高解碼效率,本發明中採用硬體中固化查找表的方式來實現這兩種解碼方式。
[0051]所述碼流FIFO寬度為8位。方便CABAC模塊的使用。
[0052]本發明的碼流解析器根據HEVC標準規定的語法元素劃分(如圖1所示),重新規劃狀態機能夠做到以下幾點,從而提高數據的吞吐量:
[0053](I)減少bin的總量:HEVC標準規定的語法元素劃分,可以通過改變二進位化方式、推測某些bin的值以及設置更高級的標誌(flag)避免信息冗餘等方式來降低需要處理的bin的總量,從而變相的提高數據吞吐量;
[0054](2)減少上下文選擇的依賴性;由於上下文選擇過程中的數據依賴性,循環解碼多個bin (這裡指一位二進位)需要大量預測操作。減少此類依賴性可以簡化上下文選擇的過程並減少並行處理多個bins所需要的預測操作數量;
[0055](3)減少解析的依賴性=CABAC解析本身就是一個瓶頸,因此應該儘量減少對其它任何可能造成CABAC中止的視頻編碼模塊的依賴性。當然,理想情況下是將解析流程完全同其它過程獨立開來;[0056](4)減少內存需求:對內存的訪問通常會增加路徑延時,因此減少內存存取操作很有必要,同時,這樣做還可以減少成本、降低功耗。
【權利要求】
1.一種適用於HEVC的碼流解析器,其特徵在於,該解析器包括碼流解析狀態控制模塊、EGO解碼模塊、相鄰上塊信息及相關參數存儲單元、解碼輸出存儲單元、碼流FIFO和CABAC解碼模塊;所述EGO是指O階順序指數哥倫布; 所述的碼流FIFO通過緩衝位移分別與所述CABAC解碼模塊和EGO解碼模塊相連,所述EGO解碼模塊通過碼流解析狀態控制模塊與所述CABAC解碼模塊相連;所述EGO解碼模塊通過相鄰上塊信息及相關參數存儲單元與所述CABAC解碼模塊相連; 所述CABAC解碼模塊包括CABAC算術解碼、輸出模塊和CABAC狀態控制;所述CABAC算術解碼通過輸出模塊與所述解碼輸出存儲單元相連;所述ABAC算術解碼與所述CABAC狀態控制相連,所述CABAC狀態控制通過輸出模塊與所述解碼輸出存儲單元相連; 所述緩衝位移與所述CABAC算術解碼相連,所述相鄰上塊信息及相關參數存儲單元與所述CABAC狀態控制相連; 所述碼流解析狀態控制模塊是整個碼流解析器的控制中心,根據HEVC標準上規定的碼流成分及相應的解析順序,所述碼流解析狀態控制模塊協調EGO解碼模塊和CABAC解碼模塊的工作,完成相應語法元素的解碼操作; 所述EGO解碼模塊用於完成使用O階順序指數哥倫布編碼的語法元素的解碼操作,具體包括有符號型和無符號型兩種; 所述相鄰上塊信息及相關參數存儲單元採用SRAM來實現,用於存儲以下信息: (I)相鄰上塊的語法元素 值,這些語法元素的值用於計算相應語法元素的模型索引增量:(2)用於CABAC解碼過程中需要的相關參數:包括序列參數集、圖像參數集以及片頭語法元素值; 所述解碼輸出存儲單元,用於存儲CABAC解碼輸出的殘差矩陣及運動信息; 所述碼流FIFO,用於暫時存儲碼流信息,同時實現碼流信息的異步存取; 所述CABAC解碼模塊,用於實現使用CABAC編碼的語法元素的解碼操作:包括CABAC算術解碼模塊、CABAC狀態控制模塊以及輸出模塊。
2.根據權利要求1所述的一種適用於HEVC的碼流解析器,其特徵在於,所述CABAC算術解碼模塊包括算術解碼及重歸一化單元和上下文模型管理單元; 上述算術解碼及重歸一化單元包括常規解碼邏輯、旁路解碼邏輯以及終止解碼邏輯,該單元全部由組合邏輯實現;該單元通過HEVC標準中規定的解碼類型來選擇相應解碼方式進行解碼,同時更新當前區間寬度、區間偏置以及上下文變量; 上述上下文模型管理單元在解析一個新的slice、新的tile以及新的一行CTU時會按照各自相應的初始化流程完成各上下文模型的初始化或者同步以及算術解碼引擎的初始化;同時,該單元還能按照存儲要求,將將相應的CTU以及slice segment的上下文變量存到相應的寄存器中; 上述CABAC狀態控制模塊用於根據標準上規定的碼流成分及解碼順序,控制狀態跳轉,同時控制相應的上下文變量的更新及讀取,來完成相應的CABAC解碼操作; 上述輸出模塊用於實現對CABAC解碼的結果的輸出控制。
3.根據權利要求1所述的一種適用於HEVC的碼流解析器,其特徵在於,所述EGO解碼模塊的解碼方式包括有符號型和無符號型兩種,該解析器採用硬體中固化查找表的方式來實現上述兩種解碼方式。
4.根據權利要求1所述的一種適用於HEVC的碼流解析器,其特徵在於,所述碼流FIFO寬度為8位。`
【文檔編號】H04N19/44GK103826120SQ201410100270
【公開日】2014年5月28日 申請日期:2014年3月18日 優先權日:2014年3月18日
【發明者】周莉, 汪建軍, 孫濤, 馬召賓, 董啟凡, 邱守彬 申請人:山東大學