專利名稱:熵解碼和變換流水線階段的聯(lián)合處理方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信號處理中的視頻和圖像編解碼技術(shù)領(lǐng)域,特別涉及在編碼解碼過程中熵解碼流水線階段和變換流水線階段的聯(lián)合處理方法背景技術(shù)在視頻編解碼器的設(shè)計(jì)中,一般采用多級流水線來完成視頻碼流的處理。處理的單元可以是宏塊(16×16的象素塊),也可以是子塊(如8×8或4×4的象素塊)。例如,在H.264/AVC中,由于單個流水線的復(fù)雜度增加,解碼器需要分為更多的流水線階段。在一個典型的解碼器結(jié)構(gòu),一般可以分為五個流水線階段,包括流水線階段零基于上下文的熵解碼(CAVLC);流水線階段一整型逆變換IIT(Inverse Integer Transform)/讀參考幀數(shù)據(jù)(Read_Ref);流水線階段二插值和運(yùn)動補(bǔ)償;流水線階段三去塊效應(yīng)濾波(Deblocking),流水線階段四數(shù)據(jù)回寫(WB)。在同一個時間段內(nèi),各個流水線階段對不同的宏塊進(jìn)行解碼,以提高解碼的并行性。如圖1所示,在T4時間段內(nèi),五個流水線階段分別對宏塊MB0,宏塊MB1,宏塊MB2,宏塊MB3,宏塊MB4進(jìn)行并行解碼。
在多級流水線劃分時,各個段流水線所需的始終周期數(shù)應(yīng)該平衡,這樣才能使整個多級流水線的吞吐量增大。
在傳統(tǒng)的實(shí)現(xiàn)技術(shù)中,CAVLD熵解碼從視頻碼流中解碼出非零系數(shù)的(run,level),其中run為零系數(shù)的游程,level為非零系數(shù)的值。根據(jù)掃描表,將各個系數(shù)依次輸出到熵解碼緩存中,其中在掃描表順序上相鄰的非零系數(shù)之間輸出零的個數(shù)由run來決定。這導(dǎo)致,雖然非零系數(shù)很少,但是仍然需要N×N個時鐘周期數(shù)來完成熵解碼(其中N×N為變換塊大小)。對于16×16的宏塊,需要的時鐘周期數(shù)為384。
在對熵解碼后的系數(shù)進(jìn)行變換時,因?yàn)榭焖偎惴ê筒⑿杏?jì)算,可以在較少的始終周期內(nèi)完成。例如在H.264或AVS中,對于8×8變換,可以在16個始終周期內(nèi)完成;對于4×4可以在4個始終周期內(nèi)完成。解碼一個16×16的宏塊,可以在96個始終周期內(nèi)完成。
因此,以傳統(tǒng)的實(shí)現(xiàn)技術(shù),在熵解碼的流水線階段和相鄰的變換的流水線階段所需的時鐘周期數(shù)不平衡,部分所需的始終周期數(shù)要大得多,從而制約整個多級流水線階段的吞吐量。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服已有技術(shù)的不足之處,提出一種熵解碼、變換流水線階段的聯(lián)合處理方法,將熵解碼和變換的兩個流水線階段聯(lián)合考慮,在變換的流水線階段,對熵解碼的解碼緩存進(jìn)行并行清零,大大減少熵解碼流水線階段所需的時鐘周期數(shù),從而增大了整個流水線結(jié)構(gòu)的吞吐量。
本發(fā)明提出的熵解碼和變換流水線階段的聯(lián)合處理方法,包括如下的步驟在變換的流水線階段,完成某一個處理單元的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出下一個處理單元的非零系數(shù),再寫入已并行清零的熵解碼系數(shù)緩存區(qū)。
本發(fā)明的特點(diǎn)及效果本發(fā)明減少熵解碼流水線階段的時鐘周期數(shù),使各個流水線階段所需的始終周期數(shù)平衡,提高整個流水線的吞吐量。
一般來說,非零系數(shù)的個數(shù)都比較少。因此這樣可以大大的減少VLD階段的始終周期數(shù)。
在熵解碼流水線階段輸入變換系數(shù)前,在變換的流水線階段將熵解碼的變換系數(shù)緩存清零(如果是寄存器陣列,采用同步復(fù)位清零,如果是存儲器,通過并行寫入進(jìn)行清零)。在熵解碼流水線階段,系數(shù)解碼所需的時鐘周期數(shù)減少為非零系數(shù)的個數(shù)。通過使各個流水線階段所需的始終周期數(shù)平衡,提高整個流水線的吞吐量。
圖1為H.264/AVC的解碼器5級流水線結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明提出的熵解碼和變換流水線階段的聯(lián)合處理方法結(jié)合實(shí)施例詳細(xì)說明如下本發(fā)明提出的熵解碼和變換流水線階段的聯(lián)合處理方法,包括如下的步驟在變換的流水線階段,完成某一個處理單元的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出下一個處理單元的非零系數(shù),再寫入已并行清零的熵解碼系數(shù)緩存區(qū)。
本發(fā)明中的所涉及的熵解碼和變換流水線階段的劃分及熵解碼和熵解碼系數(shù)的變換具體處理方法均為常規(guī)的方法。
實(shí)施例11)設(shè)置兩個熵解碼系數(shù)緩存區(qū)單元,該緩存區(qū)單元大小至少與處理單元的大小相同,并對兩個熵解碼系數(shù)緩存區(qū)單元并行清零(如果是寄存器陣列,采用同步復(fù)位清零,如果是存儲器,通過并行寫入進(jìn)行清零);2)在熵解碼流水線階段,從視頻碼流中解碼出第一個處理單元的非零系數(shù),根據(jù)從視頻碼流中解碼出的非零系數(shù)的(run,level)和掃描表,直接將非零系數(shù)存儲到熵解碼緩存區(qū)第一個單元中的相應(yīng)位置(而不需要在輸出的過程中依次的插入零);3)在變換的流水線階段,完成熵解碼緩存區(qū)第一個單元中的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)第一個單元并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出第二個處理單元的非零系數(shù),直接寫入熵解碼系數(shù)緩存區(qū)的第二個單元;4)對后面的處理單元,重復(fù)步驟3)。
實(shí)施例21)設(shè)置一個熵解碼系數(shù)緩存區(qū)單元,該緩存區(qū)單元大小至少與處理單元的大小相同,并對該熵解碼系數(shù)緩存區(qū)單元并行清零。
2)在熵解碼流水線階段,從視頻碼流中解碼出第一個處理單元的非零系數(shù),根據(jù)從視頻碼流中解碼出的非零系數(shù)的(run,level)和掃描表,直接將非零系數(shù)存儲到該熵解碼緩存區(qū)單元中的相應(yīng)位置(而不需要在輸出的過程中依次的插入零);3)在變換的流水線階段,完成該熵解碼緩存區(qū)單元中的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)單元并行清零(如果是寄存器陣列,采用同步復(fù)位清零,如果是存儲器,通過并行寫入進(jìn)行清零);4)對后面的處理單元,重復(fù)步驟2)-3)。
權(quán)利要求
1.一種熵解碼和變換流水線階段的聯(lián)合處理方法,其特征在于,該方法包括如下的步驟在變換的流水線階段,完成某一個處理單元的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出下一個處理單元的非零系數(shù),再寫入已并行清零的熵解碼系數(shù)緩存區(qū)。
2.如權(quán)利要求1所述的熵解碼和變換流水線階段的聯(lián)合處理方法,其特征在于,具體包括以下步驟1)設(shè)置兩個熵解碼系數(shù)緩存區(qū)單元,該緩存區(qū)單元大小至少與處理單元的大小相同,并對兩個熵解碼系數(shù)緩存區(qū)單元并行清零,2)在熵解碼流水線階段,從視頻碼流中解碼出第一個處理單元的非零系數(shù),根據(jù)從視頻碼流中解碼出的非零系數(shù)的零系數(shù)的游程、非零系數(shù)的值和掃描表,直接將非零系數(shù)存儲到熵解碼緩存區(qū)第一個單元中的相應(yīng)位置;3)在變換的流水線階段,完成熵解碼緩存區(qū)第一個單元中的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)第一個單元并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出第二個處理單元的非零系數(shù),直接寫入熵解碼系數(shù)緩存區(qū)的第二個單元;4)對后面的處理單元,重復(fù)步驟3)。
3.如權(quán)利要求1所述的熵解碼和變換流水線階段的聯(lián)合處理方法,其特征在于,具體包括以下步驟1)設(shè)置一個熵解碼系數(shù)緩存區(qū)單元,該緩存區(qū)單元大小至少與處理單元的大小相同,并對該熵解碼系數(shù)緩存區(qū)單元并行清零;2)在熵解碼流水線階段,從視頻碼流中解碼出第一個處理單元的非零系數(shù),根據(jù)從視頻碼流中解碼出的非零系數(shù)的零系數(shù)的游程、非零系數(shù)的值和掃描表,直接將非零系數(shù)存儲到該熵解碼緩存區(qū)單元中的相應(yīng)位置;3)在變換的流水線階段,完成該熵解碼緩存區(qū)單元中的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)單元并行清零;4)對后面的處理單元,重復(fù)步驟2)-3)。
4.如權(quán)利要求1、2或3所述的熵解碼和變換流水線階段的聯(lián)合處理方法,其特征在于,所述并行清零為如果是寄存器陣列,采用同步復(fù)位清零,如果是存儲器,通過并行寫入進(jìn)行清零。
全文摘要
本發(fā)明涉及熵解碼和變換流水線階段的聯(lián)合處理方法,屬于信號處理中的視頻和圖像編解碼技術(shù)領(lǐng)域,該方法包括如下的步驟在變換的流水線階段,完成某一個處理單元的熵解碼系數(shù)的變換后,將該熵解碼系數(shù)緩存區(qū)并行清零;與此同時,熵解碼流水線階段從視頻碼流中解碼出下一個處理單元的非零系數(shù),再寫入已并行清零的熵解碼系數(shù)緩存區(qū)。本發(fā)明將熵解碼和變換的兩個流水線階段聯(lián)合考慮,在變換的流水線階段,對熵解碼的解碼緩存進(jìn)行并行清零,大大減少熵解碼流水線階段所需的時鐘周期數(shù),從而增大了整個流水線結(jié)構(gòu)的吞吐量。
文檔編號G06T9/00GK1909663SQ20061008914
公開日2007年2月7日 申請日期2006年8月7日 優(yōu)先權(quán)日2006年8月7日
發(fā)明者何蕓, 李宇, 瞿艷梅 申請人:清華大學(xué)