亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種面向dsp平臺的ctu級hevc環(huán)路濾波方法

文檔序號:10516186閱讀:372來源:國知局
一種面向dsp平臺的ctu級hevc環(huán)路濾波方法
【專利摘要】發(fā)明屬于視頻編碼技術(shù)領(lǐng)域,具體為一種面向DSP平臺的CTU級HEVC環(huán)路濾波方法。本發(fā)明在DSP二級緩存上分配當前CTU的重建數(shù)據(jù)存儲空間,并分配存儲空間存儲左側(cè)及上側(cè)CTU的部分未處理數(shù)據(jù)。在獲取當前CTU重建數(shù)據(jù)后,直接對存儲在二級緩存中的當前CTU數(shù)據(jù)以及其左側(cè)上側(cè)CTU數(shù)據(jù)進行環(huán)路濾波處理,并將結(jié)果寫入片外存儲器。將原本獲取整幀重建數(shù)據(jù)后才進行的環(huán)路濾波操作變?yōu)镃TU級的環(huán)路濾波操作,避免將所有CTU重建數(shù)據(jù)寫入外部存儲器后再次讀取每一CTU重建數(shù)據(jù)進入二級緩存進行環(huán)路濾波處理。減少了DSP對重建幀數(shù)據(jù)的讀寫,提高DSP編碼速度,有利于實時編碼器的實現(xiàn)。
【專利說明】
一種面向DSP平臺的CTU級HEVC環(huán)路濾波方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于視頻編碼技術(shù)領(lǐng)域,針對HEVC視頻編碼標準,具體涉及一種面向于DSP硬件平臺并適用于HEVC視頻編碼標準的,DSP快速環(huán)路濾波方法。
【背景技術(shù)】
[0002]HEVC(High Efficiency Video Coding)是國際電信組織(ITU)和運動圖像專家組(MPEG)聯(lián)合成立的組織JCTVC制定的下一代視頻編解碼標準。與國際標準H.264/AVC相比,可在保證圖像質(zhì)量的情況下將視頻的壓縮率提高一倍。
[0003]相比H.264/AVC編碼標準,HEVC仍是基于塊的運動預測與補償?shù)木幋a框架。HEVC編碼過程中,將整幀圖像劃分為若干64x64的CTU(Coding Tree Block)編碼塊,依次對每一CTU進行編碼,包括:預測獲取預測值;計算與原始圖像殘差;對殘差進行變換及量化獲取殘差系數(shù);對殘差系數(shù)進行反變換及反量化并將其加到預測值獲取重建數(shù)據(jù);為保證重建質(zhì)量,在獲取重建數(shù)據(jù)后還需對重建數(shù)據(jù)進行環(huán)路濾波處理,包括去塊濾波以及采樣點自適應偏移(Sample Adaptive Offset,SA0)操作。HEVC去塊濾波處理圖像中8x8塊邊界,處理過程先判斷是否進行濾波,進行強濾波或是弱濾波。濾波過程先對垂直邊界進行水平濾波再對水平邊界進行垂直濾波,濾波操作處理邊界處連續(xù)的4個像素點,所以當前CTU的去塊濾波需要參考周圍CTU邊界處的像素值。SAO操作在去塊濾波后進行,以CTU為基本單位,對CTU中每一像素點進行分類,計算每一類別像素點與原始像素的平均殘差,通過對每類像素點增加平均殘差以減少失真。分類過程需要參考周圍未經(jīng)過SAO處理的像素作為參考。
[0004]DSP(Digital Signal Processor)是一種適合進行數(shù)字信號處理的微處理器,較于其他硬件平臺,具有成本低、低功耗、高性能、易移植、核內(nèi)運算資源豐富等特點。以TMS320C6678芯片為例,TMS320C6678芯片內(nèi)集成了 8個C66x核芯,每個核芯具有獨立的32KB的一級數(shù)據(jù)緩存(LlD)與32KB的一級程序緩存(LIP),512KB的二級數(shù)據(jù)緩存(L2)和8個核芯共享4MB的片內(nèi)存儲空間(MSMC)。其中L2緩存空間可以配置為用戶使用的普通存儲空間,通常在L2空間中分配頻繁使用的數(shù)據(jù)以及程序的運行棧,以提高對數(shù)據(jù)的訪問速度。

【發(fā)明內(nèi)容】

[0005]本發(fā)明設(shè)計一種DSP硬件平臺HEVC編碼器的環(huán)路濾波模塊的實現(xiàn)方法,目的在于減少DSP對外部存儲器的訪問,提高編碼速度。具體方案包括:
[0006]1.DSP L2存儲空間中CTU重建數(shù)據(jù),左側(cè)CTU與上側(cè)CTU的緩存數(shù)據(jù)的存儲空間的分配,其具體步驟如下:
[0007]步驟(11)、在DSP 二級緩存L2上分配72x68大小的空間CTU_EXTEND,存儲當前編碼CTU的重建數(shù)據(jù)空間;左側(cè)8列存儲左側(cè)CTU的倒數(shù)8列數(shù)據(jù);上側(cè)4行存儲上側(cè)CTU的倒數(shù)4行數(shù)據(jù);剩余64x64大小的空間存儲當前CTU重建數(shù)據(jù);
[0008]步驟(12)、在DSP 二級緩存L2上分配兩塊圖像寬度x4的空間BUFF_DEB1與BUFF_DEB2,存儲上一 CTU行倒數(shù)4行完成水平濾波的數(shù)據(jù);
[0009]步驟(13)、在DSP 二級緩存L2上分配兩塊圖像寬度xl的空間BUFF_SA01與BUFF_SA02,存儲上一 CTU行倒數(shù)第5行完成去塊濾波的數(shù)據(jù);
[0010]步驟(I4)、分配Ix68列空間BUFF_CI與BUFF_C2,存儲左側(cè)CTU倒數(shù)第6列完成去塊濾波的數(shù)據(jù);分配1x68的列空間BUFF_C3存儲左側(cè)CTU最后I列完成去塊濾波的數(shù)據(jù);分配72x1的行空間BUFF_R1,存儲上側(cè)CTU倒數(shù)第5行完成去塊濾波后的數(shù)據(jù);分配72x1的行空間BUFF_R2存儲上側(cè)CTU最后一行數(shù)據(jù);2.去塊濾波操作的緩存數(shù)據(jù)讀取,分塊濾波操作以及緩存數(shù)據(jù)的寫入,其特征在于具體步驟如下:
[0011 ] 步驟(21)、在編碼當前CTU前,若左側(cè)CTU存在,將CTU_EXTEND最右側(cè)8列數(shù)據(jù)拷貝到左側(cè)8列;設(shè)當前CTU左上角像素點在整幀圖像的坐標為(CTUx,CTUy),CTUx為水平方向,CTUy為垂直方向,整幀圖像左上角像素點坐標為(0,0),當前CTU左上角對應CTU_EXTEND中(8,4)位置,若上側(cè)CTU存在,從BUFF_DEB1的(CTUx,O)位置處拷貝大小為64x4的數(shù)據(jù)塊到CTU_EXTEND 中(8,O)位置處;
[0012]步驟(22)、去塊濾波計算階段,對整個經(jīng)過擴邊的CTU_EXTEND區(qū)域進行去塊濾波操作;若左側(cè)CTU存在,則位于(4,4)的左側(cè)CTU的4x60的塊進行水平濾波與垂直濾波,若下方存在CTU,則位于(4,64)的左側(cè)CTU的4x4區(qū)域只進行水平濾波;若上側(cè)CTU存在,則位于(8,0)處的上側(cè)CTU的60x4區(qū)域進行垂直濾波,若此時右側(cè)CTU不存在則位于(68,O)處4x4塊進行垂直濾波;若左上CTU存在,則對位于(4,O)處左上CTU的4x4區(qū)域進行水平濾波與垂直濾波;當前CTU左上60x60塊進行水平濾波與垂直濾波;若右側(cè)CTU存在,則位于(68,4)處的4x64數(shù)據(jù)塊未進行濾波,否則對位于(68,4)處4x60數(shù)據(jù)塊進行垂直濾波;
[0013]步驟(23)、去塊濾波的數(shù)據(jù)保存階段,將完成濾波的數(shù)據(jù)保存至BUFF_DEB2與BUFF_SA02空間;若下方CTU存在,將CTU_EXTEND中位于(8,64)處的60x4數(shù)據(jù)塊拷貝到BUFF_DEB2的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,64)處4x4塊到BUFF_DEB2的(CTUx-4,O)位置處,若此時右側(cè)CTU不存在,拷貝(68,64)處4x4塊到BUFF_DEB2的(CTUx+60,O)位置處;若下側(cè)CTU存在,將CTU_EXTEND中位于(8,63)處的60x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,63)處的4x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx-4,O),若此時右側(cè)CTU不存在,拷貝(68,63)處的4x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx+60,0);若右側(cè)CTU存在,將CTU_EXTEND中(66,4)處I x72數(shù)據(jù)行拷貝到BUFF_C2中;
[0014]3.SAO操作的緩存數(shù)據(jù)讀取,分塊濾波操作以及重建數(shù)據(jù)的寫入,其特征在于具體步驟如下:
[0015]步驟(31)、SA0的數(shù)據(jù)準備階段,將SAO操作需要參考的數(shù)據(jù)拷貝到相應空間;若上側(cè)CTU存在,將BUFF_SA01中位于(CTUx,O)的64x I的行數(shù)據(jù)拷貝到BUFF_R1 (8,0)位置處,若此時左側(cè)CTU存在,繼續(xù)拷貝BUFF_SA01中寬度為8的數(shù)據(jù)到BUFF_R1起始處,將CTU_EXTEND中位于(O,4)的72xI的行數(shù)據(jù)拷貝到BUFF_R2中;若左側(cè)CTU存在,將CTU_EXTEND中位于(7,O)處的I x68的列數(shù)據(jù)拷貝到BUFF_C3中;
[0016]步驟(32)、SAO數(shù)據(jù)處理階段,依次對CTU_EXTEND中能夠完成SAO操作的區(qū)域進行SAO操作;若左上CTU存在,位于(3,O)處的5x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C1,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù)。若上側(cè)CTU存在,則位于(8,O)處的60x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù),若此時右偵憶TU不存在,則位于(68,O)處的4x4塊完成SAO操作。若左側(cè)CTU存在,則位于(3,4)處的5x60數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C1,上側(cè)參考BUFF_R2,其余參考CTU_EXTEND中數(shù)據(jù),若此時下側(cè)CTU不存在則位于(3,64)處的5x4塊完成SAO操作;當前CTU位于(8,4)處的59x60數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R2,其余參考CTU_EXTEND數(shù)據(jù),若此時右側(cè)不存在CTU,則位于(CTUx+59,CTUy)處的5x60數(shù)據(jù)塊完成SAO操作,若此時下偵扣TU不存在,則位于(8,64)處的59x4數(shù)據(jù)塊同理完成SAO操作,若右下CTU不存在則右下5x4數(shù)據(jù)塊完成SAO操作;
[0017]步驟(33)、將完成SAO操作的數(shù)據(jù)寫回外部存儲器;交換BUFF_C1與BUFF_C2空間;交換BUFF_DEB1 與BUFF_DEB2空間;交換BUFF_SA01 與BUFF_SA02空間;
【附圖說明】
[0018]圖1為DSP內(nèi)部存儲空間分配示意圖
[0019]圖2為去塊濾波前的數(shù)據(jù)拷貝示意圖
[0020]圖3為去塊濾波結(jié)果示意圖
[0021 ]圖4為去塊濾波后數(shù)據(jù)保存示意圖
[0022]圖5為SAO操作數(shù)據(jù)參考示意圖
[0023]具體實施
[0024]下面通過實例并結(jié)合附圖,進一步具體描述本發(fā)明方法。
[0025]在DSP上搭建編碼器時由于片內(nèi)空間(L2緩存空間)較小,無法存放整幀圖像,當前幀的原始圖像與重建圖像均存放在外部存儲器(DDR3)中,片內(nèi)L2存儲空間則存儲當前CTU的編碼數(shù)據(jù),如CTU的模式選擇信息,重建數(shù)據(jù)等。在對當前CTU完成編碼并獲取重建數(shù)據(jù)后,再將重建數(shù)據(jù)寫入外部存儲器DDR3中。如果在整幀圖像完成重建后進行環(huán)路濾波處理,則需在所有CTU完成重建并將重建數(shù)據(jù)寫入外設(shè)DDR3后,再將所有CTU重建數(shù)據(jù)依次拷貝到片內(nèi)L2空間,進行去塊濾波與SAO操作,完成后再將其拷貝到片外存儲器DDR3中。這樣的設(shè)計使得在L2與DDR3間增加了兩次對整幀圖像數(shù)據(jù)的訪問,由于訪問DDR3速度較慢,該操作嚴重影響編碼器速度。針對該問題,本發(fā)明通過在DSP核內(nèi)設(shè)置相鄰CTU數(shù)據(jù)緩存空間,調(diào)整環(huán)路濾波的處理流程,對CTU數(shù)據(jù)分部進行處理,使得在對當前CTU重建完成后直接進行環(huán)路濾波操作,減少了DSP對重建幀數(shù)據(jù)的讀寫,將整幀的濾波操作變?yōu)镃TU級濾波操作,提高DSP編碼速度。
[0026]在DSP二級緩存中分配當前CTU的重建數(shù)據(jù)空間,并分配存放左側(cè)及上側(cè)CTU部分數(shù)據(jù)的存儲空間。HEVC的去塊濾波會操作邊界兩側(cè)連續(xù)的4個像素點,所以當前CTU數(shù)據(jù)塊的去塊濾波操作需要參考周圍CTU邊界處的像素值,同時這些區(qū)域的像素也因缺少當前CTU的數(shù)據(jù)而無法完成濾波操作。所以對當前CTU重建數(shù)據(jù)存儲區(qū)域進行擴充,左側(cè)擴充8列存儲左側(cè)CTU最后8列數(shù)據(jù),上側(cè)擴充4行存儲上側(cè)CTU最后4列數(shù)據(jù),此外左上CTU的右下角8x4的數(shù)據(jù)塊也包括其中,最終分配72x68大小CTU_EXTEND存儲空間,其中左側(cè)擴充8列為保證存儲左側(cè)為進行SAO操作的數(shù)據(jù)。此外編碼過程需要獲取周圍CTU的數(shù)據(jù)以及部分緩存空間,具體分配如下:在DSP二級緩存L2上分配兩塊圖像寬度x4的空間BUFF_DEB1與BUFF_DEB2,存儲當前CTU上側(cè)4行完成水平濾波的數(shù)據(jù);在DSP 二級緩存L2上分配兩塊圖像寬度xl的空間BUFF_SA01與BUFF_SA02,存儲上一 CTU行倒數(shù)第5行完成去塊濾波的數(shù)據(jù);分配1x68列空間BUFF_C1與BUFF_C2,存儲左側(cè)CTU倒數(shù)第6列完成去塊濾波的數(shù)據(jù);分配1x68列空間BUFF_C3存儲左側(cè)CTU最后I列完成去塊濾波的數(shù)據(jù)。存儲分配72x1的行空間BUFF_R1數(shù)據(jù),存儲上側(cè)CTU倒數(shù)第5列完成去塊濾波后的數(shù)據(jù);分配72x1的行空間BUFF_R2存儲上側(cè)CTU最后一行數(shù)據(jù);具體分配如圖1所示。
[0027]去塊濾波處理階段前的數(shù)據(jù)準備階段。在編碼當前CTU前,若左側(cè)存在CTUJljCTlLEXTEND存放的為左側(cè)CTU的數(shù)據(jù),所以將當前CTU_EXTEND右側(cè)8列數(shù)據(jù)拷貝到左側(cè)8列,此時左側(cè)8列數(shù)據(jù)為當前CTU左側(cè)CTU的最后8列數(shù)據(jù)。設(shè)當前CTU左上角像素點在整幀圖像的坐標為(CTUx,CTUy),CTUx為水平方向坐標即寬度方向,CTUy為垂直方向坐標即高度方向,圖像左上角像素點坐標為(O,O),則當前CTU左上角像素點對應⑶T_EXTEND中的位置為(8,4)。BUFF_DEB1存放上一 CTU行的最后4行數(shù)據(jù),若上側(cè)CTU存在,從BUFF_DEB1的(CTUx,O)位置處拷貝大小為64x4的數(shù)據(jù)塊到CTU_EXTEND中(8,0)位置處。具體的數(shù)據(jù)拷貝與各部分數(shù)據(jù)濾波是完成狀態(tài)如圖2所示。
[0028]去塊濾波的數(shù)據(jù)處理階段,對當前CTU以及左側(cè)上側(cè)CTU能夠進行濾波的數(shù)據(jù)進行處理。如圖3所示,若左上CTU存在,則位于(4,0)位置處的左上CTU的4x4數(shù)據(jù)塊A完成垂直濾波。若上側(cè)CTU存在,則位于(8,O)位置處的6上側(cè)CTU的0x4數(shù)據(jù)塊B完成水平濾波與垂直濾波,若此時右側(cè)CTU不存在,則可認為其右側(cè)4x4數(shù)據(jù)塊C已完成水平濾波,進而完成垂直濾波。若左側(cè)CTU存在,則位于(4,4)處的左側(cè)CTU的4x60塊D完成水平濾波與垂直濾波,其下側(cè)的4x4數(shù)據(jù)塊E完成水平濾波,若此時下側(cè)CTU不存在則可認為左側(cè)CTU的4x4數(shù)據(jù)塊E完成垂直濾波。當前CTU位于(8,4)位置處60x60塊完成水平濾波與垂直濾波。若右側(cè)CTU存在,則位于(68,4)處4x60塊由于缺乏右側(cè)CTU數(shù)據(jù)無法進行濾波,在處理右側(cè)CTU時進行處理,否則視為其完成水平濾波,進而完成垂直濾波。若下側(cè)CTU存在,則位于(8,64)處的60x4數(shù)據(jù)塊G完成水平濾波,由于缺乏下側(cè)CTU數(shù)據(jù)無法完成垂直濾波,在處理下側(cè)CTU時進行該區(qū)域處理。對于位于(68,64)位置處的4x4數(shù)據(jù)塊I,若右側(cè)CTU不存在,其視為完成水平濾波,若此時下側(cè)CTU不存在則其視為完成垂直濾波。具體各部分的數(shù)據(jù)處理結(jié)果如圖3所示。
[0029]去塊濾波的數(shù)據(jù)保存階段。由于當前CTU的部分數(shù)據(jù)無法完成去塊濾波以及之后的SAO處理,需要對其進行緩存,在處理右側(cè)及下側(cè)CTU時進行處理。如圖4所示,若下方CTU存在,將CTU_EXTEND中位于(8,64)處的60x4數(shù)據(jù)塊B拷貝到BUFF_DEB2的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,64)處4x4數(shù)據(jù)塊A到BUFF_DEB2的(CTUx-4,O)位置處,若此時右側(cè)CTU不存在,拷貝(68,64)處4x4數(shù)據(jù)塊C到BUFF_DEB2的(CTUx+60,O)位置處;若下側(cè)CTU存在,將CTU_EXTEND中位于(8,63)處的60x I行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,63)處的4x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx_4,O),若此時右側(cè)CTU不存在,拷貝(68,63)處的4x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx+60,O);若右側(cè)CTU存在,將CTU_EXTEND中(66,4)處Ix72數(shù)據(jù)行拷貝到BUFF_C2中,具體如圖4所示。
[0030]SAO數(shù)據(jù)準備階段,將所有參考數(shù)據(jù)拷貝到相應的存儲空間中。若上側(cè)CTU存在,將BUFF_SA01中位于(CTUx,O)的64x1的行數(shù)據(jù)拷貝到BUFF_R1 (8,O)位置處,作為上側(cè)CTU塊上側(cè)SAO的參考數(shù)據(jù),若此時左側(cè)CTU存在,繼續(xù)拷貝BUFF_SA01中寬度為8的數(shù)據(jù)到BUFF_R1起始處,將CTU_EXTEND中位于(O,4)的72xI的行數(shù)據(jù)拷貝到BUFF_R2中,作為當前CTU塊上側(cè)SAO的參考數(shù)據(jù);若左側(cè)CTU存在,將CTU_EXTEND中位于(7,O)處的1x68列數(shù)據(jù)拷貝到BUFF_C3中,作為當前CTU塊左側(cè)SAO的參考數(shù)據(jù)。
[0031]SAO數(shù)據(jù)處理階段,依次對CTU_EXTEND中已經(jīng)完成去塊濾波的區(qū)域進行SAO處理。若左上CTU存在,位于(3,O)處的左上CTU的5x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C1,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù)。若上側(cè)CTU存在,則位于(8,O)處的上側(cè)CTU的60x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù),若此時右側(cè)CTU不存在,則位于(68,0)處的4x4塊完成SAO操作。若左側(cè)CTU存在,則位于(3,4)處的左側(cè)(^1]的5妨0數(shù)據(jù)塊完成340操作,左側(cè)參考冊??_(:1,上側(cè)參考冊??_1?2,其余參考CTU_EXTEND中數(shù)據(jù),若此時下側(cè)CTU不存在則位于(3,64)處的5x4塊完成SAO操作;處理當前CTU數(shù)據(jù)時,由于其右側(cè)4列數(shù)據(jù)可能沒有完成去塊濾波,所以不能后四列數(shù)據(jù)無法進行SAO處理,并且倒數(shù)第4列由于要參考右側(cè)的完成去塊濾波的數(shù)據(jù)也無法完成SAO操作。而由于去塊濾波最多改變邊界兩側(cè)3個像素點,所以當前CTU倒數(shù)第4行雖然沒有完成垂直濾波,但垂直濾波不改變其值,仍可作為參考,所以當前CTU位于(8,4)處的59x60數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R2,其余參考CTU_EXTEND數(shù)據(jù)。若此時右側(cè)不存在CTU,則位于(CTUx+59,CTUy)處的5x60數(shù)據(jù)塊完成SAO操作,若此時下側(cè)CTU不存在,則位于(8,64)處的59x4數(shù)據(jù)塊同理完成SAO操作,若右下CTU不存在則右下5x4數(shù)據(jù)塊完成SAO操作;各塊數(shù)據(jù)的參考數(shù)據(jù)如圖5所示。需要注意的是,當前CTU模式選取依賴當前59x60塊的數(shù)據(jù),這樣會導致當前CTU模式不是最優(yōu)的,因為缺少參考部分數(shù)據(jù)。但不同數(shù)據(jù)的選取并不影響最終編碼碼流的格式,而左側(cè)CTU,上側(cè)CTU以及左上CTU數(shù)據(jù)記性SAO處理時也使用相應CTU中最大的59x60數(shù)據(jù)塊的模式數(shù)據(jù),保證整個CTU使用同一模式數(shù)據(jù)。
[0032]SAO的數(shù)據(jù)保存階段。將上一步中完成SAO操作的數(shù)據(jù)寫回外部存儲器,由于BUFF_C2存儲當前CTU的倒數(shù)第6列數(shù)據(jù),其會在右側(cè)CTU處理時使用,所以交換BUFF_C1與BUFF_C2空間。同理交換BUFF_DEB1與BUFF_DEB2空間,交換BUFF_SA01與BUFF_SA02空間。
【主權(quán)項】
1.DSPL2存儲空間中CTU重建數(shù)據(jù),左側(cè)CTU與上側(cè)CTU的緩存數(shù)據(jù)的存儲空間的分配,其特征在于具體步驟如下: 步驟(11)、在DSP二級緩存L2上分配72x68大小的空間CTU_EXTEND,存儲當前編碼CTU的重建數(shù)據(jù)空間;左側(cè)8列存儲左側(cè)CTU的倒數(shù)8列數(shù)據(jù);上側(cè)4行存儲上側(cè)CTU的倒數(shù)4行數(shù)據(jù);剩余64x64大小的空間存儲當前CTU重建數(shù)據(jù); 步驟(12)、在DSP二級緩存L2上分配兩塊圖像寬度x4的空間BUFF_DEBI與BUFF_DEB2,存儲上一 CTU行倒數(shù)4行完成水平濾波的數(shù)據(jù); 步驟(13)、在DSP二級緩存L2上分配兩塊圖像寬度XI的空間BUFF_SAOI與BUFF_SA02,存儲上一 CTU行倒數(shù)第5行完成去塊濾波的數(shù)據(jù); 步驟(14)、分配1x68列空間BUFF_C1與BUFF_C2,存儲左側(cè)CTU倒數(shù)第6列完成去塊濾波的數(shù)據(jù);分配1x68的列空間BUFF_C3存儲左側(cè)CTU最后I列完成去塊濾波的數(shù)據(jù);分配72x1的行空間BUFF_R1,存儲上側(cè)CTU倒數(shù)第5行完成去塊濾波后的數(shù)據(jù);分配72x1的行空間BUFF_R2存儲上側(cè)CTU最后一行數(shù)據(jù)。2.去塊濾波操作的緩存數(shù)據(jù)讀取,分塊濾波操作以及緩存數(shù)據(jù)的寫入,其特征在于具體步驟如下: 步驟(21)、在編碼當前CTU前,若左側(cè)CTU存在,將CTU_EXTEND最右側(cè)8列數(shù)據(jù)拷貝到左偵陽列;設(shè)當前CTU左上角像素點在整幀圖像的坐標為(CTUx,CTUy),CTUx為水平方向,CTUy為垂直方向,整幀圖像左上角像素點坐標為(O,O),當前CTU左上角對應CTU_EXTEND中(8,4)位置,若上側(cè)CTU存在,從BUFF_DEB1的(CTUx,O)位置處拷貝大小為64x4的數(shù)據(jù)塊到CTU_EXTEND中(8,O)位置處; 步驟(22)、去塊濾波計算階段,對整個經(jīng)過擴邊的CTU_EXTEND區(qū)域進行去塊濾波操作;若左側(cè)CTU存在,則位于(4,4)的左側(cè)CTU的4x60的塊進行水平濾波與垂直濾波,若下方存在CTU,則位于(4,64)的左側(cè)CTU的4x4區(qū)域只進行水平濾波;若上側(cè)CTU存在,則位于(8,0)處的上側(cè)CTU的60x4區(qū)域進行垂直濾波,若此時右側(cè)CTU不存在則位于(68,0)處4x4塊進行垂直濾波;若左上CTU存在,則對位于(4,O)處左上CTU的4x4區(qū)域進行水平濾波與垂直濾波;當前CTU左上60x60塊進行水平濾波與垂直濾波;若右側(cè)CTU存在,則位于(68,4)處的4x64數(shù)據(jù)塊未進行濾波,否則對位于(68,4)處4x60數(shù)據(jù)塊進行垂直濾波; 步驟(23)、去塊濾波的數(shù)據(jù)保存階段,將完成濾波的數(shù)據(jù)保存至BUFF_DEB2與BUFF_SA02空間;若下方CTU存在,將CTU_EXTEND中位于(8,64)處的60x4數(shù)據(jù)塊拷貝到BUFF_DEB2的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,64)處4x4塊到BUFF_DEB2的(CTUx-4,0)位置處,若此時右側(cè)CTU不存在,拷貝(68,64)處4x4塊到BUFF_DEB2的(CTUx+60,O)位置處;若下側(cè)CTU存在,將CTU_EXTEND中位于(8,63)處的60x1行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx,O)位置處,若此時左側(cè)CTU存在,拷貝(4,63)處的4xI行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx-4,O),若此時右側(cè)CTU不存在,拷貝(68,63)處的4xI行數(shù)據(jù)拷貝到BUFF_SA02的(CTUx+60,O);若右側(cè)CTU存在,將CTU_EXTEND中(66,4)處I x72數(shù)據(jù)行拷貝到BUFF_C2中。3.SAO操作的緩存數(shù)據(jù)讀取,分塊濾波操作以及重建數(shù)據(jù)的寫入,其特征在于具體步驟如下: 步驟(31)、SA0的數(shù)據(jù)準備階段,將SAO操作需要參考的數(shù)據(jù)拷貝到相應空間;若上側(cè)CTU存在,將BUFF_SA01中位于(CTUx,O)的64x I的行數(shù)據(jù)拷貝到BUFF_R1 (8,0)位置處,若此時左側(cè)CTU存在,繼續(xù)拷貝BUFF_SA01中寬度為8的數(shù)據(jù)到BUFF_R1起始處,將CTU_EXTEND中位于(O,4)的72x1的行數(shù)據(jù)拷貝到BUFF_R2中;若左側(cè)CTU存在,將CTU_EXTEND中位于(7,O)處的I x68的列數(shù)據(jù)拷貝到BUFF_C3中; 步驟(32)、SA0數(shù)據(jù)處理階段,依次對CTU_EXTEND中能夠完成SA0操作的區(qū)域進行SA0操作;若左上CTU存在,位于(3,O)處的5x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C1,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù);若上側(cè)CTU存在,則位于(8,O)處的60x4數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R1,其余參考CTU_EXTEND中數(shù)據(jù),若此時右側(cè)CTU不存在,則位于(68,0)處的4x4塊完成SAO操作;若左側(cè)CTU存在,則位于(3,4)處的5x60數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C1,上側(cè)參考BUFF_R2,其余參考CTU_EXTEND中數(shù)據(jù),若此時下側(cè)CTU不存在則位于(3,64)處的5x4塊完成SAO操作;當前CTU位于(8,4)處的59x60數(shù)據(jù)塊完成SAO操作,左側(cè)參考BUFF_C3,上側(cè)參考BUFF_R2,其余參考CTU_EXTEND數(shù)據(jù),若此時右側(cè)不存在CTU,則位于(CTUx+59,CTUy)處的5x60數(shù)據(jù)塊完成SAO操作,若此時下側(cè)CTU不存在,則位于(8,64)處的59x4數(shù)據(jù)塊同理完成SAO操作,若右下CTU不存在則右下5x4數(shù)據(jù)塊完成SAO操作; 步驟(33)、將完成SAO操作的數(shù)據(jù)寫回外部存儲器;交換BUFF_C1與BUFF_C2空間;交換BUFF_DEB1 與BUFF_DEB2空間;交換BUFF_SA01 與BUFF_SA02空間。
【文檔編號】H04N19/423GK105872567SQ201610373661
【公開日】2016年8月17日
【申請日】2016年5月31日
【發(fā)明人】李波, 周旭, 張永飛, 樊銳
【申請人】北京航空航天大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1