一種基於HEVC的幀內預測解碼方法及裝置與流程
2023-06-13 21:40:16 1
本發明涉及視頻編解碼領域,具體涉及一種基於HEVC(High Efficiency Video Coding,高效率視頻編碼)的幀內預測解碼方法及裝置。
背景技術:
日益擴展的視頻業務需求、不斷提高的高清視頻的流行程度、超清視頻(如4K和8K)的出現、移動端視頻應用的爆發性增長、有限的帶寬資源等因素都對視頻的編碼效率提出了更高的要求。在視頻編解碼領域,複雜度控制對視頻編解碼有重要的影響。複雜度控制指的是在降低編解碼複雜度至指定的目標複雜度,而這種複雜度降低所導致的視頻失真最小。
在視頻編碼的演進過程中,伴隨著編碼效率的不斷提高,視頻編碼的複雜度也不斷提高,降低和控制視頻編解碼的複雜度成為視頻編解碼的關鍵問題。隨著當下智能終端的多樣化發展,越來越多的智能終端如智慧型手機、平板電腦等進入人們的生活,成為人們生活中不可或缺的一部分。HEVC標準,也稱為H.265,是由ISO/IEC和ITU-T聯合成立的JCT-VC開發的繼H.264標準之後的新一代視頻編碼標準。HEVC於2012年2月形成完整的委員會標準草案,並於2013年正式成為國際標準。H.265能夠減少時空冗餘以滿足高清乃至超高清視頻的壓縮需求,具有靈活的圖像分割方案,並行化編解碼設定,相比較之前的H.264/AVC視頻編碼標準,HEVC可以在只消耗H.264一半碼率的前提下獲得幾乎相同的視頻壓縮質量,但是這是以編碼複雜度作為代價的,複雜度比AVC(AdvancedVideo Coding)複雜2到10倍。這種高昂的編碼複雜度對HEVC的實時編碼的應用造成了很大挑戰。
基於HEVC的視頻解碼流程如圖1所示,其中,幀內預測是利用當前解碼塊的上側和左側像素值對當前解碼塊進行預測的過程,HEVC(視頻壓縮標準)中一共有35種幀內預測模式,其中模式0為Planar模式,模式1為DC(直流)模式,其餘模式對應不同的角度,但目前現有幀內預測解碼流程存在較多分支,不利於利用CPU的流水線進行指令的預加載;同時現存方式往往一次只能處理一個像素,效率較低。
技術實現要素:
本發明的主要目的在於提供一種基於HEVC的幀內預測解碼方法及裝置,用於解決現有技術中幀內預測解碼方法處理流程分支較多,效率較低的問題。
根據本發明的一個方面,提供了一種基於HEVC的幀內預測解碼方法,該方法應用於角度幀內預測模式,該方法包括:
根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數;
使用調用的幀內預測函數對多個像素進行幀內預測處理。
進一步的,使用調用的幀內預測函數對多個像素進行幀內預測處理包括:
計算預測塊的參考像素值;對於預測模式大於等於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;使用並行指令計算乘法因子非零時的結果向量{predSamples[x][y]};使用並行指令計算乘法因子為零時的結果向量{predSamples[x][y]};使用並行指令根據乘法因子構造模板向量;使用並行指令根據模板向量生成最終的結果向量{predSamples[x][y]};如果幀內預測所對應的參數是預測塊為亮度塊,幀內預測模式為10,並且預測塊尺寸為32時:對於預測塊中的每一行像素,計算predSamples[0][y]的值;對於幀內預測模式小於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;根據x=0...size-1構造顏色分量索引向量;根據x=0...size-1構造乘法因子向量;由乘法因子向量構造模板向量;使用並行指令計算乘法因子全部非零時的第一結果向量;使用並行指令計算乘法因子全部為零時的第二結果向量;根據模板向量選擇第一結果向量或第二結果向量中的相應元素,生成最終的結果向量{predSamples[x][y]};如果幀內預測函數所對應的參數是預測塊為亮度塊,幀內預測模式為26,並且預測塊尺寸為32時,對於預測塊中的每一行像素,計算向量{predSamples[x][0]:x=0...size-1}。
進一步的,上述方法還包括:在計算預測塊的參考像素值之後,根據不同幀內預測函數所對應的預測模式,使用並行存儲指令將參考像素向量保存至指定位置。
其中,幀內預測函數的名稱中攜帶有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息,幀內預測函數的參數中包括具有固定數值的顏色分量索引、幀內預測模式以及預測塊的尺寸。
其中,根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數,包括:在預設的函數數組中查找函數的名稱中包含有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息的幀內預測函數;調用查找到的幀內預測函數。
進一步的,上述方法還包括:在根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數之前,建立與不同的顏色分量索引、不同的幀內預測模式以及不同的預測塊的尺寸的組合對應的多個幀內預測函數;將多個幀內預測函數存入函數組。
根據本發明的第二個方面,提供了一種基於HEVC的幀內預測解碼裝置,該裝置應用於角度幀內預測模式,該裝置包括:
調用模塊,用於根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數;
處理模塊,用於使用調用的幀內預測函數對多個像素進行幀內預測處理。
進一步的,處理模塊具體用於:計算預測塊的參考像素值;對於預測模式大於等於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;使用並行指令計算乘法因子非零時的結果向量{predSamples[x][y]};使用並行指令計算乘法因子為零時的結果向量{predSamples[x][y]};使用並行指令根據乘法因子構造模板向量;使用並行指令根據模板向量生成最終的結果向量{predSamples[x][y]};如果幀內預測所對應的參數是預測塊為亮度塊,幀內預測模式為10,並且預測塊尺寸為32時:對於預測塊中的每一行像素,計算predSamples[0][y]的值;對於幀內預測模式小於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;根據x=0...size-1構造顏色分量索引向量;根據x=0...size-1構造乘法因子向量;由乘法因子向量構造模板向量;使用並行指令計算乘法因子全部非零時的第一結果向量;使用並行指令計算乘法因子全部為零時的第二結果向量;根據模板向量選擇第一結果向量或第二結果向量中的相應元素,生成最終的結果向量{predSamples[x][y]};如果幀內預測函數所對應的參數是預測塊為亮度塊,幀內預測模式為26,並且預測塊尺寸為32時,對於預測塊中的每一行像素,計算向量{predSamples[x][0]:x=0...size-1}。
進一步的,上述裝置還可以包括:第一存儲模塊,用於在計算預測塊的參考像素值之後根據不同幀內預測函數所對應的預測模式,使用並行存儲指令將參考像素向量保存至指定位置。
其中,幀內預測函數的名稱中攜帶有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息,幀內預測函數的參數中包括具有固定數值的顏色分量索引、幀內預測模式以及預測塊的尺寸。
其中,上述調用模塊包括:查找單元,用於在預設的函數數組中查找函數的名稱中包含有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息的幀內預測函數;調用單元,用於調用查找到的幀內預測函數。
進一步的,上述裝置還可以包括:建立模塊,用於在根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數之前,建立與不同的顏色分量索引、不同的幀內預測模式以及不同的預測塊的尺寸的組合對應的多個幀內預測函數;第二存儲模塊,用於將多個幀內預測函數存入函數組。本發明實施例所提供的技術方案根據預設的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的函數的調用來進行幀內預測解碼,並利用並行指令集對幀內預測環節進行計算,提高數據並行化程度,並減少代碼分支,提高處理器流水線利用率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是相關技術中的基於HEVC的視頻解碼流程的示意圖;
圖2是本發明第一實施例提供的基於HEVC的幀內預測解碼方法的流程圖;
圖3是本發明第三實施例提供的基於HEVC的幀內預測解碼裝置的結構框圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動的前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
第一實施例
本實施例提供了一種基於HEVC的幀內預測解碼方法,該方法應用於角度幀內預測模式,圖1是該方法的流程圖,如圖1所示,該方法包括如下處理:
步驟102:根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數;
步驟103:使用調用的幀內預測函數對多個像素進行幀內預測處理;
優選的,在本實施例中幀內預測函數的名稱中攜帶有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息,幀內預測函數的參數中包括具有固定數值的顏色分量索引、幀內預測模式以及預測塊的尺寸。
其中,根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數具體可以包括:在預設的函數數組中查找函數的名稱中包含有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息的幀內預測函數;調用查找到的幀內預測函數。
其中,本實施例提供的方法還可以包括:在根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數之前,建立與不同的顏色分量索引、不同的幀內預測模式以及不同的預測塊的尺寸的組合對應的多個幀內預測函數;將多個幀內預測函數存入函數組。
其中,步驟103中,使用調用的幀內預測函數對多個像素進行幀內預測處理具體可以包括如下處理:
計算預測塊的參考像素值;
對於預測模式大於等於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;
使用並行指令計算乘法因子非零時的結果向量{predSamples[x][y]};
使用並行指令計算乘法因子為零時的結果向量{predSamples[x][y]};
使用並行指令根據乘法因子構造模板向量;
使用並行指令根據模板向量生成最終的結果向量{predSamples[x][y]};
如果幀內預測所對應的參數是預測塊為亮度塊,幀內預測模式為10,並且預測塊尺寸為32時:
對於預測塊中的每一行像素,計算predSamples[0][y]的值;
對於幀內預測模式小於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;
根據x=0...size-1構造顏色分量索引向量;
根據x=0...size-1構造乘法因子向量;
由乘法因子向量構造模板向量;
使用並行指令計算乘法因子全部非零時的第一結果向量;
使用並行指令計算乘法因子全部為零時的第二結果向量;
根據模板向量選擇第一結果向量或第二結果向量中的相應元素,生成最終的結果向量{predSamples[x][y]};
如果幀內預測函數所對應的參數是預測塊為亮度塊,幀內預測模式為26,並且預測塊尺寸為32時,對於預測塊中的每一行像素,計算向量{predSamples[x][0]:x=0...size-1}。
在計算預測塊的參考像素值之後,本實施例提供的方法還可以包括:根據不同幀內預測函數所對應的預測模式,使用並行存儲指令將參考像素向量保存至指定位置。
第二實施例
對每個幀內預測函數,色度索引c_idx,幀內預測模式mode和預測塊的尺寸size都是固定的,因此angle和inv_angle的值也是固定的。
本實施例提供的基於HEVC的幀內預測解碼方法的處理過程如下:
1)、按照標準規定,計算參考像素ref的值:
由於對於每個單獨的幀內預測函數,幀內預測模式是固定的,因此angle值也是固定的,無需查表;
由於每個單獨的處理函數中,angle值是固定的,因此在計算參考像素過程中,只有一個流程,不存在原始算法中的多個分支;
根據不同處理函數所對應的預測模式,使用並行存儲指令保存參考像素ref向量至指定位置。
2)、對於預測模式大於等於18的幀內預測函數,執行步驟3),對於預測模式小於18的處理函數,執行步驟6);
3)、對每一行y=0...size-1,進行如下操作:
按照標準規定,根據y和angle(角度)計算idx的值;
按照標準規定,根據y和angle計算fact值;
按照標準,使用並行指令計算fact非零時的結果向量{predSamples[x][y]},記為vA;
按照標準,使用並行指令計算fact為0時的結果向量{predSamples[x][y]},記為vB;
使用並行指令,根據fact值構造模板向量vM;
使用並行指令,根據vM值生成最終的結果向量{predSamples[x][y]};
4)、如果處理函數所對應的參數是預測塊為亮度塊,模式為26,並且大小小於32時:
對每一行y=0...size-1,按照標準規定計算predSamples[0][y];
5)、轉到步驟8);
6)、進行如下操作:
按照標準規定,根據x=0...size-1,構造idx向量{idx};
按照標準規定,根據x=0...size-1,構造fact向量{fact};
由fact向量構造模板向量vM;
對每一行y=0...size-1:
按照標準,使用並行指令計算假設fact全部非零時的結果向量{predSamples[x][y]},記為vA;
按照標準,使用並行指令計算假設fact全部為零時的結果向量{predSamples[x][y]},記為vB;
使用並行指令,根據vM值選擇向量vA或vB中的相應元素,生成最終的結果向量{predSamples[x][y]};
7)、如果處理函數所對應的參數是預測塊為亮度塊,模式為10,並且大小小於32時:
對每一行x=0...size-1,按照標準規定計算向量{predSamples[x][0]:x=0...size-1};
8)、結束流程。
第三實施例
本實施例提供了一種基於HEVC的幀內預測解碼裝置,該裝置應用於角度幀內預測模式,圖3是該裝置的結構框圖,如圖3所示,該裝置30包括如下組成部分:
調用模塊31,用於根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數;
處理模塊32,用於使用調用的幀內預測函數對多個像素進行幀內預測處理;
其中,處理模塊32具體用於執行如下操作:
計算預測塊的參考像素值;
對於預測模式大於等於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;
使用並行指令計算乘法因子非零時的結果向量{predSamples[x][y]};
使用並行指令計算乘法因子為零時的結果向量{predSamples[x][y]};
使用並行指令根據乘法因子構造模板向量;
使用並行指令根據模板向量生成最終的結果向量{predSamples[x][y]};
如果幀內預測所對應的參數是預測塊為亮度塊,幀內預測模式為10,並且預測塊尺寸為32時:
對於預測塊中的每一行像素,計算predSamples[0][y]的值;
對於幀內預測模式小於18時對應的幀內預測函數,根據像素值的縱坐標和幀內預測模式對應的角度計算顏色分量索引值以及乘法因子;
根據x=0...size-1構造顏色分量索引向量;
根據x=0...size-1構造乘法因子向量;
由乘法因子向量構造模板向量;
使用並行指令計算乘法因子全部非零時的第一結果向量;
使用並行指令計算乘法因子全部為零時的第二結果向量;
根據模板向量選擇第一結果向量或第二結果向量中的相應元素,生成最終的結果向量{predSamples[x][y]};
如果幀內預測函數所對應的參數是預測塊為亮度塊,幀內預測模式為26,並且預測塊尺寸為32時,對於預測塊中的每一行像素,計算向量{predSamples[x][0]:x=0...size-1}。
其中,上述裝置30還可以包括:
第一存儲模塊,用於根據不同幀內預測函數所對應的預測模式,使用並行存儲指令將參考像素向量保存至指定位置。
在本實施例中幀內預測函數的名稱中攜帶有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息,幀內預測函數的參數中包括具有固定數值的顏色分量索引、幀內預測模式以及預測塊的尺寸。
其中,上述調用模塊31具體可以包括:查找單元,用於在預設的函數數組中查找函數的名稱中包含有顏色分量索引的標識信息、幀內預測模式的標識信息以及預測塊的尺寸的標識信息的幀內預測函數;調用單元,用於調用查找到的幀內預測函數。
進一步的,上述裝置30還可以包括:建立模塊,用於在根據顏色分量索引、幀內預測模式以及預測塊的尺寸調用預先設置的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的幀內預測函數之前,建立與不同的顏色分量索引、不同的幀內預測模式以及不同的預測塊的尺寸的組合對應的多個幀內預測函數;第二存儲模塊,用於將多個幀內預測函數存入函數組。
本發明實施例所提供的技術方案根據預設的與顏色分量索引、幀內預測模式以及預測塊的尺寸對應的函數的調用來進行幀內預測解碼,並利用並行指令集對幀內預測環節進行計算,提高數據並行化程度,並減少代碼分支,提高處理器流水線利用率。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以所述權利要求的保護範圍為準。