TWI444047B - 用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 - Google Patents
用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 Download PDFInfo
- Publication number
- TWI444047B TWI444047B TW096120098A TW96120098A TWI444047B TW I444047 B TWI444047 B TW I444047B TW 096120098 A TW096120098 A TW 096120098A TW 96120098 A TW96120098 A TW 96120098A TW I444047 B TWI444047 B TW I444047B
- Authority
- TW
- Taiwan
- Prior art keywords
- pixel
- logic circuit
- pixel groups
- group
- filter
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 79
- 230000001133 acceleration Effects 0.000 claims description 95
- 238000001914 filtration Methods 0.000 claims description 59
- 230000000694 effects Effects 0.000 claims description 11
- 238000000034 method Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 8
- 239000000463 material Substances 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000007796 conventional method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Description
本發明係關於影像壓縮與解壓縮,且尤其係關於具有影像壓縮與解壓縮特徵之圖形處理單元。
個人電腦與消費性電子產品係用於各種娛樂用品。這些娛樂用品可以大致區分為2類:使用電腦製圖(computer-generated graphics)的那些,例如電腦遊戲;與使用壓縮視訊資料流(compressed video stream)的那些,例如預錄節目到數位式影音光碟(DVD)上,或由有線電視或衛星業者提供數位節目(digital programming)至一機上盒(set-top box)。第2種亦包含編碼類比視訊資料流,例如由一數位錄影機(DVR,digital video recorder)所執行。
電腦製圖通常由一圖形處理單元(GPU,graphic processing unit)產生。一圖形處理單元是一種建立在電腦遊戲平台(computer game consoles)與一些個人電腦上一種特別的微處理器。一圖形處理單元係被最佳化為快速執行描繪三度空間基本物件(three-dimensional primitive objects),例如三角形、四邊形等。這些基本物件係以多個頂點描述,其中每個頂點具有屬性(例如顏色),且可施加紋理(texture)至該基本物件上。描繪的結果係一二度空間像素陣列(two-dimensional array of
pixels),顯示在一電腦之顯示器或監視器上。
視訊資料流的編碼與解碼牽涉到不同種類的運算,例如,離散餘弦變換(discrete cosine transform)、移動估測(motion estimation)、移動補償(motion compensation)、去方塊效應濾波器(deblocking filter)。這些計算通常由一般用途中央處理器(CPU)結合特別的硬體邏輯電路,例如特殊應用積體電路(ASIC,application specific integrated circuit),來處理。消費者因而需要多個運算平台以滿足他們的娛樂需求。因而需要可以處理電腦製圖與視訊編碼/解碼的單一計算平台。
在此揭露之實施例提供一種用於視訊壓縮去方塊效應的系統與方法。一用於視訊解碼的示範性去方塊效應濾波器包含:設置成用來判定複數個像素群中之一預定像素群之像素是否達到一標準的邏輯電路;設置成當達到該標準時,先對該預定像素群之像素濾波的邏輯電路;以及設置成當達到該標準時,根據在複數組濾波單元(set of taps)中之一相應組濾波單元,循序對該複數個像素群中剩下的像素群濾波之邏輯電路。
一種示範性視訊解碼器包含:一熵解碼器、一空間解碼器、組合邏輯電路與一回路內去方塊效應濾波器。該熵解碼器接收一輸入編碼位元流。該空間解碼器接收該熵解碼器的輸出並產生包含複數個像素的一編碼圖片。該組合
邏輯電路結合一目前圖片與一預測圖片以產生一結合圖片。該回路內去方塊效應濾波器接收該結合圖片。該回路內去方塊效應濾波器包含:設置成對一預定像素群濾波的邏輯電路;以及設置成當該預定像素群達到一標準時,根據在複數組濾波單元中之一相應組濾波單元,對該複數個像素群中剩下的各像素群濾波之邏輯電路。
一種示範性圖形處理單元包含一主處理介面與一視訊加速單元。該主處理介面,接收至少一視訊加速指令。該視訊加速單元,用於該至少一視訊加速指令。該視訊加速單元包含一回路內去方塊效應濾波器。該回路內去方塊效應濾波器包含:設置成判定複數個像素群之一預定像素群之像素是否達到一第一標準的邏輯電路;設置成當達到該第一標準時,先對該預定像素群之像素濾波的邏輯電路;以及設置成當達到該第一標準時,根據在複數組濾波單元(set of taps)中之一相應組濾波單元,循序對該複數個像素群中剩下的像素群濾波之邏輯電路。
第1圖係用於圖形與視訊編碼及/或解碼之一示範性運算平台之方塊圖。系統100包含一一般用途CPU 110(此後稱為主處理器)、一圖形處理器(GPU)120、記憶體130與匯流排140。圖形處理單元120包含一視訊加速單元(VPU)150,其可加速視訊編碼及/或解碼,將於後敘述。圖形處理單元120
的視訊加速功能係可在圖形處理單元120上執行的指令。
軟體解碼器160與視訊加速驅動器170位於記憶體130中,而至少一部份的解碼器160與視訊加速驅動器170在主處理器110上執行。透過一個由視訊加速驅動器170提供的一主處理器介面180,解碼器160亦可發出給圖形處理單元120的視訊加速指令。如此一來,系統100透過發出視訊加速指令給圖形處理單元120的主處理器軟體(host processor software)執行視訊編碼及/或解碼,圖形處理單元120透過加速解碼器160之一部分回應這些指令。
在一些實施例中,僅有一小部分的解碼器160在主處理器上執行,而大部分的解碼器160係由圖形處理單元120執行,在驅動器極少超載之下。依此法,經常被執行的密集運算方塊(computationally intensive blocks)被卸至圖形處理單元120,而更複雜的運算係由主處理器110所執行。在一些實施例中,由圖形處理單元120所實現的一個密集運算功能包含回路內去方塊效應濾波器硬體加速邏輯(inloop deblocking filter hardware acceleration logic)400,亦稱為回路內方塊效應濾波器400或去方塊效應濾波器400,其稍後將結合第4圖說明。另一密集運算功能之範例係判定各濾波器之邊界強度(BS,boundary strength)。
上述之結構因而使下列運作有彈性:在主處理器110上對解碼器160執行一些透過對大方塊(marcoblock)執行一著色程式(shader program)之特殊功能(例如去方塊效應或計算
邊界強度);或在圖形處理單元120上執行大部分的解碼器160,利用管線流通(pipelining)與平行化(parallelism)。在一些解碼器160在圖形處理單元120上執行之實施例中,該去方塊效應處理係該解碼器160各態樣間同步之執行緒(thread)。
第1圖中省略數個對於解釋圖形處理單元120之視訊加速特徵並非必要且熟悉此項記憶者熟知的習知元件。
第2圖係第1圖中該視訊解碼器160之方塊圖。在第2圖中說明之特殊實施例,解碼器160施用ITU H.264視訊壓縮規範。然而,熟悉此項技藝者應當瞭解到第2圖之解碼器160係一視訊解碼器之初步表示,該視訊解碼器亦說明類似於H.264之其他類型解碼器之運作,例如SMPTE VC-1與MPEG-2規範。此外,儘管示為一圖形處理單元120之一部分,熟悉此項技藝者亦應瞭解到在此揭露之部分解碼器160亦可實現於一圖形處理單元之外,例如一獨立存在之邏輯電路,特殊應用積體電路(ASIC)之一部分等。
輸入之位元流205首先由一熵解碼器(entropy decoder)210所處理。熵編碼具有統計重複型(statistic redundancy)之優點:一些圖樣比其他圖樣更常出現,所以較常出現的就用較短的碼代表。熵編碼包含霍夫曼編碼(Huffman coding)與運行長度編碼(run-length encoding)。在熵編碼之後,該資
料由一空間解碼器(spatial decoder)215所處理,其具有下述優點,事實上,一圖形中鄰近的像素通常相同或相關,所以只要對差異編碼即可。在此示範性實施例中,空間解碼器215包含一反相量化器(inverse quantizer)220,與一反相離散餘弦轉換(IDCT)功能230。IDCT功能230之輸出可視為一圖形(235),由數像素組成。
圖形235被處理為較小的子區塊,稱為大方塊。H.264視訊壓縮規範使用16x16像素的大方塊尺寸,而其他壓縮規範可使用其他尺寸。圖形235內的大方塊與先前解碼圖項之資訊結合,稱為畫面間預測(inter prediction)處理,或與圖形235之其他大方塊之資訊結合,稱為畫面內預測(intra prediction)處理。該輸入位元流205,被熵解碼器205解碼,而依各類型之圖形施用畫面間或畫面內預測。
當施用畫面間預測時,熵解碼器210產生一移動向量(motion vector)245輸出。移動向量245被用來暫時的編碼,其具有下述優點,事實上,通常在一連串的圖形中許多像素會有相同的值。從一圖形到另一圖形之改變係編碼為移動向量245。移動補償方塊250將一個或多個先前解碼圖形255結合移動向量245以產生一預測圖形(265)。當施用畫面間預測時,空間補償方塊270將得自鄰近大方塊的資訊與圖形235內的大方塊結合以產生一預測圖形(275)。
結合器280將圖形235與模式選擇器(mode selector)285的輸出相加。模式選擇器285使用熵解碼位元流以判定結合器
280使用移動補償方塊250產生的預測圖形(265)或使用空間補償方塊270所產生的預測圖形(275)。
編碼程序引起如在沿著大方塊邊緣的不連續以及沿著大方塊內的子方塊邊緣不連續的產物(artifact)。結果是在解碼圖框出現了”邊緣”(edge),而原本沒有。去方塊效應濾波器290係施用於由結合器280輸出之結合圖形,以移去這些邊緣產物。儲存由去方塊效應濾波器產生之該解碼圖形295用來解碼接下來的圖形。
結合第1圖之討論,部分解碼器160在主處理器110上執行,而解碼器160亦有由圖形處理單元120提供視訊加速指令之優點。尤其是,在一些實施例中,去方塊效應濾波器290使用由圖形處理單元120提供之一個或多個指令用來實現使用相對低運算成本之濾波。
去方塊效應濾波器290係一多單元濾波器(multi-tap filter),其基於鄰近像素值調整子方塊邊緣的像素值。可依照解碼器160施行之壓縮規範使用去方塊效應濾波器290之不同實施例。各規範使用不同的濾波器參數,例如子區塊的尺寸、由該濾波運作更新之像素數目、該濾波器施用之頻率(例如每N列或每M行)。此外,各規範使用不同濾波器長度結構。熟悉此項技藝者應瞭解多單元濾波器,在此不討論特定單元之結構。由VC-1規範規定之去方
塊效應濾波器實施例將結合第4圖說明。首先,VC-1濾波器之子方塊像素安排將結合第3圖說明。
第3圖顯示兩個鄰近4x4子方塊(310,320),定義為列R1-R4與行C1-C8。這兩個子方塊間的垂直邊界330係沿著行C4與C5。該VC-1濾波器對每個4x4子方塊運作。對於最左邊的子方塊,該VC-1濾波器檢驗在一預定列(R3)中之一預定群像素(P1、P2、P3)。若該預定群像素達到一特定標準,則更新相同預定列中另一像素P4。該標準係由該預定組中像素之計算與比較之特殊集合而定。熟悉此項技藝者應瞭解到這些計算與比較亦可是為一組濾波單元(a set of taps),而詳細的計算與比較將稍後結合第5圖討論。更新值亦基於對預定群組中像素所執行之運算。該VC-1濾波器以類似方式處理最右邊的子方塊,判定像素P6、P7、P8是否達到一標準,若達到該標準則更新P5。換言之,該VC-1濾波器為一預定列(R3)之一群預定像素-邊緣像素P4與P5-根據同一列中其他群預定像素之值計算數值,P4的值根據P1、P2、P3,而P5的值根據P6、P7、P8。
該VC-1有條件的更新其餘列的相同群預定像素,係根據為該預定列(R3)之預定群像素(邊緣像素P4、P5)所計算之值。如此一來,僅當R3中之P4、P5更新了,R1中之P4才基於R1中之P1、P2、P3而更新。同樣地,僅當R3中之P4、P5更新了,R1中之P5才基於R1中之P6、P7、P8而更新。第2列與第4列亦以類似方式處理。
從另一方面來看,在一預定第三列之像素的一些像素
被濾波或更新了,當在第三列之其他像素達到一標準時。該濾波器牽涉到對這些其他像素執行比較與計算。若在第三列之其他像素達到該標準時,在其餘列相應的各像素係以一類似方式濾波,如上所述。在此揭露之去方塊效應濾波器290之一些實施例使用一開創性技術,先對第三列濾波,接著再對其他列濾波。這些開創性的技術將結合第4、5、6A-6D圖,更詳細的說明。
儘管第3圖說明一列列的處理垂直邊緣,熟悉此項技藝者應可瞭解同一圖旋轉90度後亦可說明一行行處理水平邊緣。熟悉此項技藝者亦可瞭解到儘管VC-1使用四列中的第三列作為判定有條件更新其他列的預定列,在此揭露之原則亦可應用至使用其他預定列之實施例(例如第一列、第二列等),亦可應用至形成子方塊列數目不同之其他實施例。同樣地,熟悉此項技藝者亦可瞭解到儘管VC-1檢驗鄰近一組像素的值以設定欲更新像素之值,在此揭露之原則亦可應用至其他像素已被檢驗且其他像素已設定之實施例。就一範例而言,可檢驗P2與P3以判定P4之更新值。另一範例,P3可根據P2與P4之值設定。
圖形處理單元120中之視訊加速單元150為一回路內去方塊濾波器(IDF,inloop deblockging filter),例如由VC-1規範之回路內去方塊效應濾波器,實現硬體加速邏輯電路。一圖形處理單元指令實現此硬體加速邏輯電路,將於後說明。實現一VC-1回路內去方塊效應濾波器之習知方法係平行處理各列/行,因為相同像素計算係在一子方塊之各列/行執行。此習知方法每週期對兩個鄰近的
4x4子方塊濾波,但需要一增進邏輯閘(increased gate count)執行。相對的,由VC-1回路內去方塊效應濾波器硬體加速邏輯電路400所使用的開創性方法係先處理第三列/行像素,而若這些像素達到該所要求之標準,接著順序處理剩下的那三列/行。此開創性方法比習知方法使用較少的邏輯閘數,其複製各列/行之機能。VC-1回路內去方塊效應濾波器加速邏輯電路400循序列處理每個週期對兩個鄰近的4x4子方塊濾波。此較長之濾波時間與圖形處理單元120之指令週期一致,其中該習知方法較快速的濾波,事實上比所需求之速度還快,造成邏輯閘上的浪費。
第4圖係VC-1回路內去方塊效應濾波器硬體加速邏輯電路400之硬體描述虛擬碼之列表。雖非使用實際硬體描述語言(HDL,hardware description language),例如Verilog與VHDL而使用一虛擬碼,熟悉此項技藝者應對這些虛擬碼相當熟悉。這些人應可瞭解當以實際HDL描述時,這些程式碼應可被編譯並接著合成為構成部分視訊加速單元150之數邏輯閘配置。這些人應當可瞭解到這些邏輯閘可以各種技術實現,例如一特定應用積體電路(ASIC)、可程式化邏輯閘陣列(PGA)或現場程式化邏輯閘陣列(FPGA)。
此程式碼的410段係模組定義(module definition)。VC-1回路內去方塊效應濾波器硬體加速邏輯電路400有許多輸入參數。要進行濾波之子方塊係由該方塊參數(Block parameter)所規範。若垂直參數(Vertical parameter)為真(True),則該加速邏輯電路400將方塊
參數視為4x8方塊(參見第3圖),並執行垂直邊緣濾波。若垂直參數為假(False),則該加速邏輯電路400將方塊參數視為8x4方塊(參見第3圖),並執行水平邊緣濾波。
程式碼之區段420開始一疊代迴圈(iteration loop),設定該迴圈參數變數之值。第一次通過此迴圈時,迴圈參數設為3,故先處理第3行。後續的迴圈疊代設定迴圈參數為1、2與4。利用這些參數,VC-1回路內去方塊效應濾波器硬體加速邏輯電路400重複4次,每次處理8個像素,其中一行可為一水平列或一垂直行,每一列係由行加速邏輯電路500所處理(參見第5圖)。在一些實施例中,此行加速邏輯電路500係以一HDL次模組實現,將結合第5圖說明。
區段430測試垂直參數以判定執行垂直或水平邊緣濾波。根據該結果,行陣列變數之8個元素係自該4x8輸入方塊之列或8x4輸入方塊之行初始化。
區段440藉由將迴圈參數與3做比較判定該第3行是否已處理。若迴圈參數為3,另兩個控制變數,ProcessingPixel3與FILTER_OTHER_3則設為真。若迴圈參數不為3,將ProcessingPixel3設為假。
區段450舉例說明另一HDL模組,VC1_IDC_Filter_Line,該濾波器施用目前之行。(結合第3圖所述,該行濾波器基於鄰近像素值更新邊緣像素值。)提供至該子模組之參數包含該控制變數ProcessingPixel3、FILTER_OTHER_3與迴圈參數。在一實施例中,VC-1回路內去方塊效應濾波器硬體加速邏輯電路
400有一額外輸入參數,一量化值,而此量化參數亦提供給該子模組。
在子模組處理該列之後,VC-1回路內去方塊效應濾波器硬體加速邏輯電路400在區段420以一迴圈參數更新值繼續該疊代迴圈。依此法,對輸入方塊之第3行施用該濾波器,接著第1行、第2行、第4行。
第5圖係行加速邏輯電路500之硬體描述語言程式碼之列表,其實現了上述之子模組。程式碼之區段510係一模組定義。行加速邏輯電路500有許多輸入參數。將進行濾波的行係定義為行輸入參數。ProcessingPixel3係一輸入參數,若該行為第3行或第3列則藉由較高層邏輯電路將其設為真。參數FILTER_OTHER_3一開始係由較高層邏輯電路設為真,而根據像素值由行加速邏輯電路500調整。
區段520執行如VC-1所定之各種像素值運算。(因為該計算可以參考VC-1之規範理解,將不對這些運算作詳細說明。)區段530測試由較高層VC-1回路內去方塊效應濾波器硬體加速邏輯電路400所提供之ProcessingPixel3參數。若ProcessingPixel3為真,則區段530將一控制變數DO_FILTER初始化為一預設值,真。在區段520中間的運算之各種結果係用來判定是否也要處理其他3行。若該像素運算結果表示不處理其他3行,則將DO_FILTER設為假。
若ProcessingPixel3為假,區段540使用輸入參數FILTER_OTHER_3(由較高層VC-1回路內去方塊效應濾波器硬體加速邏輯電路400所設定)以設定DO_FILTER之值。
若DO_FILTER為真,區段540測試該DO_FILTER變數並更新該行變數之該邊緣像素P4、P5(參見第3圖)。
區段550測試該ProcessingPixel3參數,並適當更新FILTER_OTHER_3。該FILTER_OTHER_3變數係用來傳達此模組中不同範例之狀態資訊。若ProcessingPixel3為真,則區段550以DO_FILTER之值更新該FILTER_OTHER_3參數。此技術使得用來說明此模組之較高層模組(即VC1_InloopFilter)提供由此例之VC_1_INLOOPFILTER_LINE低層模組所更新之FILTER_OTHER_3值至另一例之VC_1_INLOOPFILTER_LINE。
熟悉此項技藝者應瞭解到第5圖之虛擬碼可以各種方式合成以產生實現行加速邏輯電路500之邏輯閘布置。其中一種布置係在第6A-D圖中說明,他們一起構成行加速邏輯電路500之方塊圖。熟悉此項技藝者應當對VC-1回路內去方塊效應濾波器演算法及邏輯電路結構感到熟悉。因此,第6A-D圖之元件將不詳述。而將選擇詳述行加速邏輯電路500之特徵。
熟悉此項技藝者應瞭解到,VC-1回路內去方塊效應濾波器所牽涉到之運算包含下列,其中P1-P8係指像素在被處理之列/行中之位置。
A0=(2*(P3-P6)-5*(P4-P5)+4)>>3
A1=(2*(P1-P4)-5*(P2-P3)+4)>>3
A2=(2*(P5-P8)-5*(P6-P7)+4)>>3
clip=(P4-P5)/2
前3個運算中的每一個牽涉到3個減法、2個乘法、1個加法與1個右移。第6A圖中之行加速邏輯電路500之一部分使用共用邏輯電路循序計算A0、A1、A2,而非為了A0、A1、A2使用特定獨立邏輯電路方塊。藉由避免邏輯電路方塊重複,利用多工器循序處理各輸入,減少了邏輯閘及/或功率消耗。
多工器605、610與620係用來從像素暫存器P-8在不同時序週期選擇不同之輸入,而這些輸入係提供給各共用邏輯電路方塊。邏輯電路方塊625與630各執行一減法。邏輯電路方塊635藉由執行左移1位實現乘以2。乘以係由左移1位所實行,後面接一加法器645。加法器650將左移器635之輸出、一常數4與645輸出之負數加在一起。最後,邏輯電路方塊655執行右移3位。
在第1時序週期,一輸入T=1係提供至各多工器605、610與615,而計算A1之值並存在暫存器660。在第2時序週期,一輸入T=2係提供至各多工器605、610與615,而計算A2之值並存在暫存器665。在第3時序週期,一輸入T=3係提供至各多工器605、610與615,而計算A0之值並存在暫存器670。存在暫存器660、665、670之值A1、A2、A3將被第6B圖之部分行加速邏輯電路500所使用,將於後說明。P4暫存器(671)之輸出與P5暫存器(673)之輸出將被第6C圖之部分行加速邏輯電路500所使用,將於後說明。
熟悉此項技藝者亦應瞭解在VC-1回路內去方塊效應濾波器所牽涉到後敘之額外運算:
第6B圖之部分行加速邏輯電路500從第6A圖之部分行加速邏輯電路500接收輸入,並計算D(675)。再次參照第6A圖,CLIP(677)係如下產生:像素P4與P5由邏輯電路方塊679相減,該結果由邏輯電路方塊680右移(整數除以2)以產生CLIP 677。回到第6B圖,A1可在第一
週期自暫存器660取得,A2可在第二週期自暫存器665取得,A0可在第三週期自暫存器670取得。因而,在第四週期,第6圖之部分行加速邏輯電路500根據上述之方程式計算D(675)。
行加速邏輯電路500利用(675)以更新P4、P5之像素位置。尤其是,P4=P4-D而P5=P5+D。儘管第6A、6B圖先前結合單一列/行(例如單一組像素位置P0-P8)說明,一子區塊第3列/行之運算會影響該子區塊其他3列/行之行為。行加速邏輯電路500利用一開創性方法實現此行為。當獨立濾波運算從最前面開始-平行地-完成,結合第6A、6B圖之說明,示於第6C、6D圖之部分行加速邏輯電路500有條件的選擇要更新之位置。換言之,VC-1回路內去方塊效應濾波器硬體加速邏輯電路400判定是原本的值被寫回或新的值被寫回。相對地,一習知方法,一VC-1回路內去方塊效應濾波器使用迴圈,所以獨立濾波運算有條件地執行。
如先前說明的,第4圖解釋行加速邏輯電路500的虛擬碼在一迴圈內如此運作:在一重複區段420中出現了示例區段(instantiation section)450。此外行加速邏輯電路500之示例使用2個參數,ProcessingPixel3與FILTER_OTHER_3。用行加速邏輯電路500的這些參數如下執行像素P4、P5有條件的更新。參見第6C圖,暫存器P4寫入減法器681之結果,其中減法器681有一輸入為P4(671),為0或D(675),依DO_FILTER(683)之值而定。同樣地,暫存器P5寫入加法器685之結果,其中加法器
685有一輸入為P5(673),為0或D(675),依DO_FILTER(683)之值而定。因而,P4之更新值為原本之P4值(若DO_FILTER為假),或P4-D。同樣地,P5之更新值為原本之P5值(若DO_FILTER為假),或P5+D。
熟悉此項技藝者應當瞭解到,當處理一子方塊第3列時,以P4-D更新P4之標準為:((ABS(A0)<PQUANT)OR(A3<ABS(A0))OR(CLIP!=0)
DO_FILTER 683係由第6D圖中檢驗這些條件的部分行加速邏輯電路500所計算。多工器687提供一輸入至OR閘697,若ABS(A0)<PQUANT則選擇一真輸出,其他則為假。多工器689提供另一輸入至OR閘697,若A3<ABS(A0)則選擇一真輸出,其他則為假。多工器691提供另一輸入至OR閘697,若CLIP!=0則選擇一真輸出,其他則為假。
DO_FILTER 683係由多工器693所提供,其利用控制輸入Processing_Pixel_3(695)以選擇輸出OR閘697的輸出或輸入信號FILTER_OTHER_3(699)。輸入Processing_Pixel_3(695)與FILTER_OTHER_3(699)先前結合第4圖與舉例說明行加速邏輯電路500之較高層VC-1回路內去方塊效應濾波器硬體加速邏輯電路400的虛擬碼已說明過了。回到第4圖,當處理第3行/列時(第1圈),Processing_Pixel_3(695)設為真,其他則為假。基於關於PQUANT、ABS(A0)、CLIP之條件,記錄一中間變數DO_FILTER,不論P4/P5是否更新。最後FILTER_OTHER_3
(699)之值係設自該中間變數DO_FILTER。第6C、6圖之邏輯電路部分之行加速邏輯電路500之結果係為,每4個週期,在4鄰近列/行之P4、P5的像素位置設為濾波後的值(根據A0-A3、PQUANT、CLIP等變數)或再次寫入其原本的值。
該VC-1去方塊效應加速單元400開創性地採用平行與循序之結合,如前所述。平行處理提供較快速的執行並減少延遲。儘管平行化增加了邏輯閘數,但增加量被前述的循序處理所抵銷。沒有使用前述循序處理的習知方法徒增邏輯閘數。
圖形處理單元120的一些實施例包含一用於H.264去方塊效應的硬體加速單元,而此去方塊效應功能係透過圖形處理單元指令以供使用。圖形處理單元120將結合第8圖詳細說明,並加強說明提供H.264去方塊效應加速功能的圖形處理單元指令特殊選擇。
圖形處理單元120的指令集包含在軟體裡執行的部分解碼器160可用來加速一去方塊效應濾波器。在此說明一開創性技術提供不只一個的多重圖形處理單元指令以加速特定去方塊效應濾波器。回路內去方塊效應濾波器290原本就是循序的,因而一特定濾波器必須以一定次序對像素濾波(例如H.264規定從左到右接著從上到下)。因而,先前濾過的或更新過的像素在濾後面像素時被拿來作為輸
入。主處理器處理儲存在習知記憶體的像素值,這使得像素一個接一個讀取、寫入。然而,這循序的本質當回路內去方塊效應濾波器290使用一圖形處理單元加速部分濾波處理時無法適當配合。習知圖形處理單元將像素儲存在一紋理快取(texture cache),而該圖形處理單元管線設計不遵從一個接一個(back-to-back)讀取、寫入紋理快取。
在此揭露圖形處理單元120的一些實施例提供多重圖形處理單元指令,其可一起用來加速一特定去方塊效應濾波器。其中一些指令把紋理快取當像素資料源,而一些指令使用圖形處理單元執行單元作為資料源。回路內去方塊效應濾波器290適當的結合使用這些不同的圖形處理單元指令以達成一個接一個讀取、寫入像素。接下來概要說明流經圖形處理單元120的資料,再接著解釋由圖形處理單元120提供的去方塊效應加速指令,與回路內去方塊效應濾波器290運用這些指令。
第7圖係圖形處理單元120資料流的圖,其中指令流係由第7圖左邊之箭頭,而影像或圖形流係由右邊的箭頭表示。第7圖省略了數個熟悉此項技藝者習知的元件,這些對解釋圖形處理單元120之回路內去方塊效應特徵非必要。一指令流處理器710從一系統匯流排(未示)接收一指令720,並解碼該指令,產生指令資料730,例如頂點資料。圖形處理單元120支援一習知圖形處理指令,以及加速視訊編碼及/或解碼的指令。
習知圖形處理指令牽涉到如頂點著色(vertex shading)、幾何著色(geometry shading)、像素著色(pixel shading)等難題。因此,指令資料730係施用於著色器執行單元(shader execution units)之池(pool)740。著色執行單元必要使用一紋理濾波單元(TFU,texture filter unit)750以施加一紋理至一像素。紋理資料係快取自紋理快取760,其係在主記憶體(未示)後面。
一些指令送給視訊加速器150,其運作將於後說明。產生的資料接著由後包裝器(post-packer 770)處理,其壓縮該資料。在後處理(post-processing)之後,由視訊加速單元所產生的資料係提供給執行單元池(execution unit pool)740。
視訊編碼/解碼加速指令的執行,例如前述之去方塊效應濾波指令,在許多方面與前述之習知圖形指令不同。首先,視訊加速指令係由視訊加速單元150執行,而非著色器執行單元。其次,視訊加速指令不使用其紋理資料。
然而,視訊加速指令所使用的影像資料與圖形指令所使用的紋理資料均為2維陣列。圖形處理單元120同樣利用此優點,使用紋理濾波單元750下載給視訊加速單元150的影像資料,因而使紋理快取760快取一些由視訊加速單元150運作之影像資料。因此,示於第7圖,視訊加速單元150係位於紋理濾波單元750與後包裝器770之間。
紋理濾波單元750檢驗從指令720擷取的指令資料730。指令資料730更提供TFU 750紋理快取760內想要的
影像資料的座標。在一實施例中,這些座標標明為U、V對,熟悉此項技藝者應對此熟悉。當指令720係一視訊加速指令時,所擷取的指令資料更命令紋理濾波單元750略過紋理濾波單元750內的紋理濾波器(未示)。
依此法,紋理濾波單元750係受操縱為視訊加速指令去下載影像資料給視訊加速單元150。視訊加速單元150從資料路徑上的紋理濾波單元750接收影像資料,與命令路徑上的命令資料730,並根據命令資料730對該影像資料執行一運作。由視訊加速單元150所輸出影像資料係回饋給執行單元池740,在由後包裝器770處理之後。
在此敘述之圖形處理單元120之實施例,提供VC-1去方塊效應濾波器與H.264去方塊效應濾波器硬體加速。VC-1去方塊效應濾波器係由一圖形處理單元指令(”IDF_VC-1”)加速,而H.264去方塊效應濾波器由三個圖形處理單元指令(”IDF_H264_0”、”IDF_H264_1”、”IDF_H264_2”)加速。
如先前說明的,各圖形處理單元指令係解碼且分析(parsed)為指令資料730,其可視為各指令之特定參數集,示於第1表。IDF_H264_x指令共用一些共用參數,而其他的為各指令獨有的。熟悉此項技藝者應瞭解到這些參數可以使用各種操作碼(opcode)與指令格式編碼,所以這些議題將不在此討論。
結合使用許多輸入參數以判定由紋理濾波單元750所擷取的4x4方塊位址。BaseAddress參數指出在紋理快取中該紋理資料的起點。將此區域內左上方塊座標給
BaseAddress參數。PictureHeight與PictureWidth輸入參數係用來判斷該方塊的範圍,即左下方座標。最後,視訊圖形可為漸進式掃瞄(progessive)或隔行掃瞄(interlace)。若為隔行掃瞄,其係由兩個方向組成(上方與下方)。紋理濾波單元750使用FieldFlag與TopFieldFlag以適當處理隔行掃瞄影像。
去方塊效應8x4x8位元輸出係提供於一目標暫存器,且亦寫回執行單元池740。將去方塊效應輸出寫回執行單元池740係一”位置修改(modify in place)”運作,在某些解碼器的實現中是必要的,例如H.264其中方塊中之像素值,右邊與下方,係依先前的結果所計算。然而VC-1解碼器不像H.264有此限制關係。在VC-1中,對每個8x8邊界(先垂直再水平)濾波。所有的垂直邊緣可以因而實質上平行地執行,4x4邊緣稍後濾波。可以利用平行化因為僅有兩個像素(一個邊緣一個)被更新,而這些像素不用來計算其他邊緣。既然去方塊效應資料是寫回執行單元池740而非紋理快取760,提供了不同的IDF_H264_x指令,這子方塊從不同位置被擷取。這可在第1表中看到,在BlockAddress的敘述中,Data Block 1與Data Block 2參數。IDF_H264_0指令從紋理快取760擷取整個8x4x8位元子方塊。IDF_H264_1指令從紋理快取760擷取半個子方塊並從執行單元池740擷取半個。
隨解碼器160而變之IDF_H264_x指令的功用將結合第8圖詳述。接下來敘述在供應像素資料給視訊加速單元150前,紋理濾波單元750與執行單元池740轉換所擷取的像
素資料的處理。
上述之指令參數,提供欲從紋理快取760或從執行單元池740解取的子方塊位址之座標給紋理濾波單元750。影像資料包含亮度(Y)與彩度(Cb,Cr)平面。一YC旗標輸入參數定義要處理Y平面或是CbCr平面。
當處理亮度(Y)資料時,如YC旗標參數所標示的,紋理濾波單元750擷取該子方塊並提供該128位元作為VC-1回路內去方塊效應濾波器硬體加速邏輯電路400的輸入(例如第4圖之VC-1加速器範例之方塊輸入參數)。所產生的資料係寫入目標暫存器作為一4組-暫存器(register quad,即,DST、DST+1、DST+2、DST+3)。
當處理彩度資料時,如YC旗標參數所標示的,Cb與Cr方塊將由VC-1回路內去方塊效應濾波器硬體加速邏輯電路400連續地處理。所產生的資料係寫入紋理快取760。在一些實施例中,此寫入動作在各週期中發生,每個週期寫入256位元。
一些視訊加速單元實施例使用隔行掃瞄CbCr平面,各存為一半寬度與一半長度。在這些實施例中,紋理濾波單元750為視訊加速單元150將CbCr子方塊資料解隔行掃瞄至用來溝通紋理濾波單元750與視訊加速單元150之一緩衝器。尤其是,紋理濾波單元750將2個4x4 Cb方塊寫入該緩衝器,接著將2個4x4 Cr方塊寫入該緩衝器。8x4 Cb方塊首先由VC-1回路內去方塊效應濾波器硬體加速邏
輯電路400處理,所產生的資料寫入紋理快取760。接著,8x4 Cr方塊由VC-1回路內去方塊效應濾波器硬體加速邏輯電路400處理,所產生的資料寫入紋理快取760。視訊加速單元150使用CbCr旗標參數以管理此循序處理。
結合先前第1圖之說明,解碼器160在主處理器110上執行但亦利用圖形處理單元120所提供的視訊加速指令。尤其是H.264回路內去方塊效應濾波器290之實施例使用特定IDF_H264_x結合以處理邊緣,依H.264所規定之次序,從紋理快取760擷取一些子方塊並從執行單元池740擷取另一些。在適當結合之下,這些IDF_H264_x指令達成一個接一個像素讀取與寫入。
第8圖係用於H.264之16x16大方塊之方塊圖。這大方塊切割成16個4x4子方塊,每個均將進行去方塊效應。第8圖中之4個子方塊可依列與行定義(例如R1,C2)。H.264定義先處理垂直邊緣在處理水平邊緣,如第8圖所示之邊緣順序(a-h)。
因此,該去方塊效應濾波器係應用於一對子方塊間的邊緣,子方塊對依此次序濾波:edge a=[block to left of R1,C1]| [R1,C1];[block to left of R2,C1]|[R2,C1];[block to left of R3,C1]| [R3,C1];[block to left of R4,C1]| [R4,C1]edge b=[R1,C1]| [R2,C2];[R2,C1]|[R2,C2];[R3,C1]| [R3,C2];[R4,C1]|[R4,C2];edge c=[R1,C2]| [R2,C3];[R2,C2]|[R2,C3];
[R3,C2]| [R3,C3];[R4,C2]|[R4,C3];edge d=[R1,C3]| [R2,C4];[R2,C3]|[R2,C4];[R3,C3]| [R3,C4];[R4,C3]|[R4,C4];edge e=[block to top of R1,C1]| [R1,C1];[block to top of R1,C2]|[R1,C2];[block to top of R1,C3]| [R1,C3];[block to top of R1,C4]| [R1,C4]edge f=[R1,C1]| [R2,C1];[R1,C2]|[R2,C2];[R1,C3]| [R2,C3];[R1,C4]|[R2,C4]edge g=[R2,C1]| [R3,C1];[R2,C2]|[R3,C2];[R2,C3]| [R3,C3];[R2,C4]|[R3,C4]edge h=[R3,C1]| [R4,C1];[R3,C2]|[R4,C2];[R3,C3]| [R4,C3];[R3,C4]|[R4,C4]
對於第1對子方塊,均下載自紋理快取760,因為還沒有像素因施用濾波器而被改變。儘管第1垂直邊緣(a)之濾波器可以改變(R1,C1)之像素值,第2列垂直邊緣實際上與第1列垂直邊緣共用所有像素。因此,第2對子方塊(邊緣b)亦下載自紋理快取760。既然兩相鄰列間的垂直邊緣不共用像素,第3對(邊緣c)與第4對(邊緣d)子方塊亦同。
由回路內去方塊效應濾波器290所發出的特定IDF_H264_x指令判定要從那個位置下載像素資料。由回路內去方塊效應濾波器290所使用的IDF_H264_x指令處理第1組垂直邊緣(a-d)之次序為:IDF_H264_0 SRC1=address of(R1,C1);IDF_H264_0 SRC1=address of(R2,C1);IDF_H264_0 SRC1=address of(R3,C1);
IDF_H264_0 SRC1=address of(R4,C1);
接下來,回路內去方塊效應濾波器290處理第2垂直邊緣(b),從(R1,C2)開始。在定義為(R1,C2)8x4子方塊內最左邊4個像素與(R1,C1)子方塊最右邊的像素重疊。這些由(R1,C1)之垂直邊緣濾波器所處理,亦可能更新,之重疊像素係因而被讀自執行單元池740而非紋理快取760。然而,在(R1,C2)子方塊最右邊的4個像素還沒被濾波,因而讀自紋理快取760。子方塊(R2,C2)到(R4,C2)亦同。回路內去方塊效應濾波器290藉由命令下面IDF_H264_x的順序以處理第2組垂直邊緣,以完成此結果:IDF_H264_1 SRC1=address of(R1,C2);IDF_H264_1 SRC1=address of(R2,C2);IDF_H264_1 SRC1=address of(R3,C2);IDF_H264_1 SRC1=address of(R4,C2);
當處理第3組垂直邊緣時,從(R1,C3)開始。在(R1,C3)8x4子方塊內最左邊4個像素與(R1,C2)子方塊最右邊的像素重疊,因而要讀自執行單元池740而非紋理快取760。然而,在(R1,C2)子方塊最右邊的4個像素還沒被濾波,因而讀自紋理快取760。子方塊(R1,C2)到(R4,C2)亦同。最後一組垂直邊緣會發生類似的情形。因此,回路內去方塊效應濾波器290藉由命令下面IDF_H264_x的順序以處理剩下2組垂直邊緣:IDF_H264_1 SRC1=address of(R1,C3);IDF_H264_1 SRC1=address of(R2,C3);IDF_H264_1 SRC1=address of(R3,C3);
IDF_H264_1 SRC1=address of(R4,C3);IDF_H264_1 SRC1=address of(R1,C4);IDF_H264_1 SRC1=address of(R2,C4);IDF_H264_1 SRC1=address of(R3,C4);IDF_H264_1 SRC1=address of(R4,C4);
接著處理水平邊緣(e-h)。此時,去方塊效應濾波器已應用於大方塊中的每個子方塊,因而每個像素可能已更新。因此,送去進行水平邊緣濾波的各子方塊係讀自執行單元池740而非紋理快取760。因此,回路內去方塊效應濾波器290藉由命令下面IDF_H264_x的順序以處理水平邊緣:IDF_H264_2 SRC1=address of(R1,C1);IDF_H264_2 SRC1=address of(R2,C1);IDF_H264_2 SRC1=address of(R3,C1);IDF_H264_2 SRC1=address of(R4,C1);IDF_H264_2 SRC1=address of(R1,C2);IDF_H264_2 SRC1=address of(R2,C2);IDF_H264_2‧‧‧SRC1=address of(R3,C2);IDF_H264_2 SRC1=address of(R4,C2);IDF_H264_2 SRC1=address of(R1,C3);
任何程序說明或流程圖中的方塊應被理解為表示模組、區段或部分程式碼,其包含用於實現特定邏輯電路功能或程序中的步驟之一個或多個可執行的指令。熟悉軟體部門之技藝者應當瞭解到,其他的實現方法亦包含於所揭露之範圍內。在其他的實現方法中,各功能可不依所示或揭露之順序執行,包含實質上同步進行或逆向進行,依所
涉之功能而定。
在此揭露之系統與方法可以軟體、硬體或其結合實現。在一些實施例中,該系統及/或方法係以存在記憶體中之軟體實現,且由位於一計算裝置中之適當處理器所執行(包含而不限於一微處理器、微控制器、網路處理器、可重新裝配處理器、可擴充處理器)。在其他實施例中,該系統及/或方法係以邏輯電路實現,包含而不限於一可程式邏輯裝置(PLD,programmable logic device)、可程式邏輯閘陣列(PGA,programmable gate array)、現場可程式化邏輯閘陣列(FPGA,field programmable gate array)或特定應用電路(ASIC)。在其他實施例中,這些邏輯敘述係在一圖形處理器或圖形處理單元(GPU)完成。
在此揭露之系統與方法可被嵌入任何電腦可讀媒體而使用,或連結一指令執行系統、設備、裝置。該指令執行系統包含任何以電腦為基礎的系統、含有處理器的系統或其他可以從該指令執行系統擷取與執行這些指令的系統。所揭露之文字”電腦可讀媒體(computer-readable medium)”可為任何可以容納、儲存、溝通、傳遞或傳送該程式作為使用或與該指令執行系統連結之工具。該電腦可讀媒體可為,例如(非限制)為基於電子的、有磁性的、光的、電磁的、紅外線的或半導體技術的一系統或傳遞媒體。
使用電子技術之電腦可讀媒體之特定範例(非限制)可包含:具有一條或多條電性(電子)連接的線;一隨機存取記憶體(RAM,random access memory);一唯讀記憶體
(ROM,read-only memory);一可拭去可程式化唯讀記憶體(EPROM或快閃記憶體)。使用磁技術之電腦可讀媒體之特定範例(非限制)可包含:可攜帶電腦磁碟。使用光技術之電腦可讀媒體之特定範例(非限制)可包含:一光纖與一可攜帶唯讀光碟(CD-ROM)。
雖然本發明在此以一個或更多個特定的範例作為實施例闡明及描述,不過不應將本發明侷限於所示之細節,然而仍可在不背離本發明的精神下且在申請專利範圍均等之領域與範圍內實現許多不同的修改與結構上的改變。因此,最好將所附上的申請專利範圍廣泛地且以符合本發明領域之方法解釋,在隨後的申請專利範圍前提出此聲明。
100‧‧‧系統
110‧‧‧一般用途CPU
120‧‧‧圖形處理器(GPU)
130‧‧‧記憶體
140‧‧‧匯流排
150‧‧‧視訊加速單元(VPU)
160‧‧‧軟體解碼器
170‧‧‧視訊加速驅動器
205‧‧‧輸入之位元流
210‧‧‧熵解碼器
215‧‧‧空間解碼器
220‧‧‧反相量化器
230‧‧‧反相離散餘弦轉換
235‧‧‧圖形
245‧‧‧移動向量
250‧‧‧移動補償
255‧‧‧先前解碼圖形
265‧‧‧預測圖形
270‧‧‧空間補償
280‧‧‧加法器
290‧‧‧去方塊效應濾波器
295‧‧‧解碼圖形
310-320‧‧‧兩個鄰近4x4子方塊
330‧‧‧垂直邊界
400‧‧‧回路內去方塊效應濾波器硬體加速邏輯電路
410‧‧‧模組定義區段
420‧‧‧疊代迴圈區段
430‧‧‧測試垂直參數區段
440‧‧‧比較迴圈參數與3區段
450‧‧‧示例區段
500‧‧‧行加速邏輯電路
510‧‧‧模組定義區段
520‧‧‧像素值運算區段
530‧‧‧比較迴圈參數與3區段
540‧‧‧測試DO_FILTER區段
550‧‧‧更新狀態區段
605-610-615-620‧‧‧多工器
625-630-679‧‧‧減法器
635-640-655-680‧‧‧邏輯電路方塊
645-650‧‧‧加法器
660-665-670‧‧‧暫存器
671‧‧‧P4暫存器輸出
673‧‧‧P5暫存器輸出
681‧‧‧減法器
685‧‧‧加法器
687-689-691-693‧‧‧多工器
697‧‧‧OR閘
710‧‧‧指令流處理器
720‧‧‧指令
730‧‧‧指令資料
740‧‧‧執行單元池
750‧‧‧紋理濾波單元
760‧‧‧紋理快取
770‧‧‧後包裝器
第1圖係用於圖形與視訊編碼及/或解碼之一示範性運算平台之方塊圖。
第2圖係第1圖中該視訊解碼器160之方塊圖。
第3圖說明一VC-1濾波器之子方塊像素設置。
第4圖係第1圖VC-1回路內去方塊效應濾波器硬體加速邏輯電路400之硬體描述虛擬碼之列表。
第5圖係第4圖行加速邏輯電路500之硬體描述語言程式碼之列表。
第6A-D圖形成第4、5圖之行加速邏輯電路之一方塊圖。
第7圖係第1圖之圖形處理單元120之資料流程圖。
第8圖係H.264所用之16x16大方塊之方塊圖。
205‧‧‧輸入之位元流
210‧‧‧熵解碼器
215‧‧‧空間解碼器
220‧‧‧反相量化器
230‧‧‧反相離散餘弦轉換
235‧‧‧圖形
245‧‧‧移動向量
250‧‧‧移動補償
255‧‧‧先前解碼圖形
265‧‧‧預測圖形
270‧‧‧空間補償
280‧‧‧加法器
285‧‧‧模式選擇器
290‧‧‧去方塊效應濾波器
295‧‧‧解碼圖形
Claims (20)
- 一種用於視訊解碼的去方塊效應濾波器,包含:一第一邏輯電路,用來根據在複數組濾波單元中之一相應組濾波單元,以進行複數個像素群中之各像素群的一相關濾波運算;一第二邏輯電路,用來判定該複數個像素群中之一預定像素群之像素是否達到一標準;一第三邏輯電路,設置成當達到該標準時,依據該預定像素群之該相關濾波運算,先對該預定像素群之像素濾波;以及一第四邏輯電路,設置成當達到該標準時,根據相應的該相關濾波運算,循序對該複數個像素群中剩下的各像素群濾波,其中當未達到該標準時,該第四邏輯電路係依據維持該複數個像素群相應的該相關濾波運算,維持該等像素群中之像素未濾波。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素群包含一列像素方塊。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素群包含一行像素方塊。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該第三邏輯電路更包含:一第五邏輯電路,設置成根據在剩下各像素群中之一第二 預定像素組,更新在剩下各像素群中之一第一預定像素組。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,該第三邏輯電路更包含:一第六邏輯電路,設置成在達到該標準時,先對該預定像素群之像素平行地濾波。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該用於視訊解碼的去方塊效應濾波器是施用於子方塊對間的邊緣以移去邊緣產物。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該用於視訊解碼的去方塊效應濾波器使用適當結合之複數個圖形處理指令以達成一個接一個像素讀取與寫入。
- 如申請專利範圍第1項之用於視訊解碼的去方塊效應濾波器,其中該用於視訊解碼的去方塊效應濾波器係依據VC-1標準所定義。
- 一種視訊解碼器,包含:一熵解碼器,接收一輸入編碼位元流;一空間解碼器,接收該熵解碼器的輸出並產生包含複數個像素的一編碼圖片;一第一邏輯電路,設置成結合一目前圖片與一預測圖片以產生一結合圖片;以及一回路內去方塊效應濾波器,接收該結合圖片,該回路內去方塊效應濾波器包含:一第二邏輯電路,用來根據在複數組濾波單元中之一相應組濾波單元,以進行複數個像素群中之各像素群的一相關 濾波運算;一第三邏輯電路,設置成當該複數個像素群中之一預定像素群達到一標準時,依據該預定像素群之該相關濾波運算,對該預定像素群濾波;以及一第四邏輯電路,設置成當該預定像素群達到該標準時,根據該預定像素群之該相關濾波運算,對該複數個像素群中剩下的各像素群濾波,其中當該預定像素群未達到該標準時,該第四邏輯電路係依據該複數個像素群相應的該相關濾波運算,維持該等像素群中之像素未濾波。
- 如申請專利範圍第9項之視訊解碼器,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素群包含一列像素方塊。
- 如申請專利範圍第9項之視訊解碼器,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素群包含一行像素方塊。
- 如申請專利範圍第9項之視訊解碼器,其中該第三邏輯電路更包含:一第五邏輯電路,設置成在達到該標準時,先對該預定像素群之像素平行地濾波。
- 如申請專利範圍第9項之視訊解碼器,其中該第四邏輯電路更包含:一第六邏輯電路,設置成根據在剩下各像素群中之一第二預定像素組,更新在剩下各像素群中之一第一預定像素組。
- 如申請專利範圍第9項之視訊解碼器,其中該回路內 方塊效應濾波器係依據VC-1標準所定義。
- 一種圖形處理單元,包含:一主處理介面,接收至少一視訊加速指令;以及一視訊加速單元,用於回應該至少一視訊加速指令,該視訊加速單元包含一回路內去方塊效應濾波器,該回路內去方塊效應濾波器包含:一第一邏輯電路,用來根據在複數組濾波單元中之一相應組濾波單元,以進行複數個像素群中之各像素群的一相關濾波運算;一第二邏輯電路,設置成判定該複數個像素群之一預定像素群之像素是否達到一第一標準;一第三邏輯電路,設置成當達到該第一標準時,依據該預定像素群之該相關濾波運算,先對該預定像素群之像素濾波;以及一第四邏輯電路,設置成當達到該第一標準時,根據該複數個像素群中剩下的像素群之該相關濾波運算,循序對該複數個像素群中剩下的像素群濾波,其中當該預定像素群未達到該標準時係依據該複數個像素群相應的該相關濾波運算,維持該等像素群中之像素未濾波。
- 如申請專利範圍第15項之圖形處理單元,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素群包含一列像素方塊。
- 如申請專利範圍第15項之圖形處理單元,其中該複數個像素群形成一四方形像素方塊,且該複數個像素群之各像素 群包含一行像素方塊。
- 如申請專利範圍第15項之視訊解碼器,其中該第四邏輯電路更包含:一第五邏輯電路,設置成根據在剩下各像素群中之一第二預定像素組,更新在剩下各像素群中之一第一預定像素組。
- 如申請專利範圍第15項之視訊解碼器,其中該回路內方塊效應濾波器係依據VC-1標準所定義。
- 如申請專利範圍第15項之圖形處理單元,其中該第一邏輯電路更用以平行地對該複數個像素群中之各像素群進行該相關濾波運算。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US81462306P | 2006-06-16 | 2006-06-16 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200803525A TW200803525A (en) | 2008-01-01 |
| TWI444047B true TWI444047B (zh) | 2014-07-01 |
Family
ID=38880763
Family Applications (6)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW096120098A TWI444047B (zh) | 2006-06-16 | 2007-06-05 | 用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 |
| TW096121865A TWI395488B (zh) | 2006-06-16 | 2007-06-15 | 具有可程式核心之視訊處理單元 |
| TW096121890A TWI482117B (zh) | 2006-06-16 | 2007-06-15 | 可程式視訊處理單元之系統與處理方法 |
| TW096122009A TWI348654B (en) | 2006-06-16 | 2007-06-15 | Graphic processing unit and method for computing sum of absolute difference of marcoblocks |
| TW096122002A TWI383683B (zh) | 2006-06-16 | 2007-06-15 | 視訊編碼器與圖形處理單元 |
| TW096122000A TWI350109B (en) | 2006-06-16 | 2007-06-15 | Method for determining a motion vector describing motion realtive to a reference block and storage media thereof |
Family Applications After (5)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW096121865A TWI395488B (zh) | 2006-06-16 | 2007-06-15 | 具有可程式核心之視訊處理單元 |
| TW096121890A TWI482117B (zh) | 2006-06-16 | 2007-06-15 | 可程式視訊處理單元之系統與處理方法 |
| TW096122009A TWI348654B (en) | 2006-06-16 | 2007-06-15 | Graphic processing unit and method for computing sum of absolute difference of marcoblocks |
| TW096122002A TWI383683B (zh) | 2006-06-16 | 2007-06-15 | 視訊編碼器與圖形處理單元 |
| TW096122000A TWI350109B (en) | 2006-06-16 | 2007-06-15 | Method for determining a motion vector describing motion realtive to a reference block and storage media thereof |
Country Status (2)
| Country | Link |
|---|---|
| CN (6) | CN101072351B (zh) |
| TW (6) | TWI444047B (zh) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9077971B2 (en) | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
| US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
| US8705622B2 (en) | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
| US8750384B2 (en) | 2008-12-15 | 2014-06-10 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for avoiding quality deterioration of transmitted media content |
| CN101901588B (zh) * | 2009-05-31 | 2012-07-04 | 比亚迪股份有限公司 | 一种嵌入式系统的图像平滑显示方法 |
| CN102164284A (zh) * | 2010-02-24 | 2011-08-24 | 富士通株式会社 | 视频解码方法和系统 |
| US8295619B2 (en) * | 2010-04-05 | 2012-10-23 | Mediatek Inc. | Image processing apparatus employed in overdrive application for compressing image data of second frame according to first frame preceding second frame and related image processing method thereof |
| TWI395490B (zh) * | 2010-05-10 | 2013-05-01 | Univ Nat Central | 實施於電子裝置之影像編碼方法 |
| US8681162B2 (en) * | 2010-10-15 | 2014-03-25 | Via Technologies, Inc. | Systems and methods for video processing |
| CN106162186B (zh) * | 2011-01-03 | 2020-06-23 | 寰发股份有限公司 | 基于滤波单元的回路滤波方法 |
| US9877019B2 (en) | 2011-01-03 | 2018-01-23 | Hfi Innovation Inc. | Method of filter-unit based in-loop filtering |
| KR101567467B1 (ko) * | 2011-05-10 | 2015-11-09 | 미디어텍 인크. | 루프내 필터 버퍼의 감소를 위한 방법 및 장치 |
| ES2657197T3 (es) | 2011-06-28 | 2018-03-01 | Samsung Electronics Co., Ltd. | Aparato de decodificación de video con intra predicción |
| TWI612802B (zh) * | 2012-03-30 | 2018-01-21 | Jvc Kenwood Corp | 影像解碼裝置、影像解碼方法 |
| US9953455B2 (en) | 2013-03-13 | 2018-04-24 | Nvidia Corporation | Handling post-Z coverage data in raster operations |
| US10154265B2 (en) | 2013-06-21 | 2018-12-11 | Nvidia Corporation | Graphics server and method for streaming rendered content via a remote graphics processing service |
| CN105872553B (zh) * | 2016-04-28 | 2018-08-28 | 中山大学 | 一种基于并行计算的自适应环路滤波方法 |
| US20180174359A1 (en) * | 2016-12-15 | 2018-06-21 | Mediatek Inc. | Frame difference generation hardware in a graphics system |
| CN111028133B (zh) * | 2019-11-21 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于SystemVerilog的图形命令预译码装置 |
| CN119245638A (zh) * | 2024-11-29 | 2025-01-03 | 三峡科技有限责任公司 | 一种水制氢平台机器人行走定位方法 |
| CN119562055B (zh) * | 2025-01-23 | 2025-04-15 | 湖北芯擎科技有限公司 | 图像数据连续编码实现方法、装置、设备及存储介质 |
Family Cites Families (38)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3578498B2 (ja) * | 1994-12-02 | 2004-10-20 | 株式会社ソニー・コンピュータエンタテインメント | 画像情報処理装置 |
| US5627657A (en) * | 1995-02-28 | 1997-05-06 | Daewoo Electronics Co., Ltd. | Method for sequentially displaying information recorded on interactive information recording medium |
| US6064450A (en) * | 1995-12-06 | 2000-05-16 | Thomson Licensing S.A. | Digital video preprocessor horizontal and vertical filters |
| JP3876392B2 (ja) * | 1996-04-26 | 2007-01-31 | 富士通株式会社 | 動きベクトル探索方法 |
| JPH10145753A (ja) * | 1996-11-15 | 1998-05-29 | Sony Corp | 受信装置および方法 |
| US6496537B1 (en) * | 1996-12-18 | 2002-12-17 | Thomson Licensing S.A. | Video decoder with interleaved data processing |
| US6177922B1 (en) * | 1997-04-15 | 2001-01-23 | Genesis Microship, Inc. | Multi-scan video timing generator for format conversion |
| JP3870491B2 (ja) * | 1997-07-02 | 2007-01-17 | 松下電器産業株式会社 | 画像間対応検出方法およびその装置 |
| US6487249B2 (en) * | 1998-10-09 | 2002-11-26 | Matsushita Electric Industrial Co., Ltd. | Efficient down conversion system for 2:1 decimation |
| US6573905B1 (en) * | 1999-11-09 | 2003-06-03 | Broadcom Corporation | Video and graphics system with parallel processing of graphics windows |
| WO2000036844A1 (en) * | 1998-12-11 | 2000-06-22 | Matsushita Electric Industrial Co., Ltd. | Device for deblocking filter operation and method for deblocking filter operation |
| CN1112714C (zh) * | 1998-12-31 | 2003-06-25 | 上海永新彩色显象管有限公司 | 显象管屏清洗设备及方法 |
| US6871001B1 (en) * | 1999-03-23 | 2005-03-22 | Sanyo Electric Co., Ltd. | Video decoder |
| KR100677082B1 (ko) * | 2000-01-27 | 2007-02-01 | 삼성전자주식회사 | 움직임 추정기 |
| JP4461562B2 (ja) * | 2000-04-04 | 2010-05-12 | ソニー株式会社 | 再生装置および方法、ならびに、信号処理装置および方法 |
| US6717988B2 (en) * | 2001-01-11 | 2004-04-06 | Koninklijke Philips Electronics N.V. | Scalable MPEG-2 decoder |
| US7940844B2 (en) * | 2002-06-18 | 2011-05-10 | Qualcomm Incorporated | Video encoding and decoding techniques |
| CN1332560C (zh) * | 2002-07-22 | 2007-08-15 | 上海芯华微电子有限公司 | 无附加帧存储器基于块边界的差和量化因子的去块效应法 |
| US6944224B2 (en) * | 2002-08-14 | 2005-09-13 | Intervideo, Inc. | Systems and methods for selecting a macroblock mode in a video encoder |
| US7336720B2 (en) * | 2002-09-27 | 2008-02-26 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
| US7027515B2 (en) * | 2002-10-15 | 2006-04-11 | Red Rock Semiconductor Ltd. | Sum-of-absolute-difference checking of macroblock borders for error detection in a corrupted MPEG-4 bitstream |
| FR2849331A1 (fr) * | 2002-12-20 | 2004-06-25 | St Microelectronics Sa | Procede et dispositif de decodage et d'affichage en marche avant acceleree d'images mpeg, circuit pilote video et boitier decodeur incorporant un tel dispositif |
| US6922492B2 (en) * | 2002-12-27 | 2005-07-26 | Motorola, Inc. | Video deblocking method and apparatus |
| CN100424717C (zh) * | 2003-03-17 | 2008-10-08 | 高通股份有限公司 | 用于提高低比特率视频的视频质量的方法和装置 |
| US7660352B2 (en) * | 2003-04-04 | 2010-02-09 | Sony Corporation | Apparatus and method of parallel processing an MPEG-4 data stream |
| US7274824B2 (en) * | 2003-04-10 | 2007-09-25 | Faraday Technology Corp. | Method and apparatus to reduce the system load of motion estimation for DSP |
| NO319007B1 (no) * | 2003-05-22 | 2005-06-06 | Tandberg Telecom As | Fremgangsmate og apparat for videokomprimering |
| US20050013494A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | In-loop deblocking filter |
| BRPI0413624A (pt) * | 2003-08-19 | 2006-10-17 | Matsushita Electric Industrial Co Ltd | método para codificar imagem em movimento e método para decodificar imagem em movimento |
| US20050105621A1 (en) * | 2003-11-04 | 2005-05-19 | Ju Chi-Cheng | Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof |
| US7292283B2 (en) * | 2003-12-23 | 2007-11-06 | Genesis Microchip Inc. | Apparatus and method for performing sub-pixel vector estimations using quadratic approximations |
| CN1233171C (zh) * | 2004-01-16 | 2005-12-21 | 北京工业大学 | 一种用于视频编码的简单化环路滤波方法 |
| US20050262276A1 (en) * | 2004-05-13 | 2005-11-24 | Ittiam Systamc (P) Ltd. | Design method for implementing high memory algorithm on low internal memory processor using a direct memory access (DMA) engine |
| NO320048B1 (no) * | 2004-06-14 | 2005-10-17 | Tandberg Telecom As | Fremgangsmate for chroma de-blokking |
| US20060002479A1 (en) * | 2004-06-22 | 2006-01-05 | Fernandes Felix C A | Decoder for H.264/AVC video |
| US8116379B2 (en) * | 2004-10-08 | 2012-02-14 | Stmicroelectronics, Inc. | Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard |
| NO322722B1 (no) * | 2004-10-13 | 2006-12-04 | Tandberg Telecom As | Fremgangsmate for videokoding gjennom reduksjon av blokkartefakter |
| CN1750660A (zh) * | 2005-09-29 | 2006-03-22 | 威盛电子股份有限公司 | 移动向量计算方法 |
-
2007
- 2007-06-05 TW TW096120098A patent/TWI444047B/zh active
- 2007-06-13 CN CN2007101103594A patent/CN101072351B/zh active Active
- 2007-06-15 TW TW096121865A patent/TWI395488B/zh active
- 2007-06-15 TW TW096121890A patent/TWI482117B/zh active
- 2007-06-15 TW TW096122009A patent/TWI348654B/zh active
- 2007-06-15 TW TW096122002A patent/TWI383683B/zh active
- 2007-06-15 TW TW096122000A patent/TWI350109B/zh active
- 2007-06-18 CN CN200710111956.9A patent/CN101083764B/zh active Active
- 2007-06-18 CN CN2007101101940A patent/CN101068365B/zh active Active
- 2007-06-18 CN CN2007101101936A patent/CN101068353B/zh active Active
- 2007-06-18 CN CN2007101119554A patent/CN101083763B/zh active Active
- 2007-06-18 CN CN2007101101921A patent/CN101068364B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN101068365A (zh) | 2007-11-07 |
| CN101083764A (zh) | 2007-12-05 |
| CN101083764B (zh) | 2014-04-02 |
| TW200803525A (en) | 2008-01-01 |
| TWI395488B (zh) | 2013-05-01 |
| TW200816082A (en) | 2008-04-01 |
| CN101068364A (zh) | 2007-11-07 |
| CN101072351A (zh) | 2007-11-14 |
| CN101068364B (zh) | 2010-12-01 |
| TWI482117B (zh) | 2015-04-21 |
| TW200803528A (en) | 2008-01-01 |
| CN101068353B (zh) | 2010-08-25 |
| CN101083763B (zh) | 2012-02-08 |
| TW200821986A (en) | 2008-05-16 |
| CN101083763A (zh) | 2007-12-05 |
| TW200803527A (en) | 2008-01-01 |
| TWI350109B (en) | 2011-10-01 |
| TWI383683B (zh) | 2013-01-21 |
| TWI348654B (en) | 2011-09-11 |
| CN101068365B (zh) | 2010-08-25 |
| TW200816820A (en) | 2008-04-01 |
| CN101068353A (zh) | 2007-11-07 |
| CN101072351B (zh) | 2012-11-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI444047B (zh) | 用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 | |
| US8369419B2 (en) | Systems and methods of video compression deblocking | |
| US8243815B2 (en) | Systems and methods of video compression deblocking | |
| CN116076073B (zh) | 用于高性能视频编码的硬件编解码器加速器 | |
| US9319708B2 (en) | Systems and methods of improved motion estimation using a graphics processing unit | |
| US8275049B2 (en) | Systems and methods of improved motion estimation using a graphics processing unit | |
| CN108305314B (zh) | 用于处理图形数据的计算系统、方法和集成电路制造系统 | |
| US20120307004A1 (en) | Video decoding with 3d graphics shaders | |
| KR20060060919A (ko) | H.264/mpeg-4 에서의 블록킹 효과를 제거하기 위한디블록 필터 및 필터링 방법 | |
| CN102804165A (zh) | 具有可扩展数据路径的前端处理器 | |
| US20240267529A1 (en) | Context-aware quantization for high-performance video encoding | |
| US12316863B2 (en) | Chroma-from-luma mode selection for high-performance video encoding | |
| JP2007235886A (ja) | 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、フィルタ装置及びプログラム | |
| Green | Image processing tricks in OpenGL | |
| CN111147866A (zh) | 对数据阵列进行编码 | |
| Eldeken et al. | High throughput parallel scheme for HEVC deblocking filter | |
| KR101031493B1 (ko) | 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법 | |
| Kung et al. | Intra frame encoding using programmable graphics hardware | |
| Hautala et al. | Programmable lowpower implementation of the HEVC adaptive loop filter | |
| Kopperundevi et al. | Methods to develop high throughput hardware architectures for HEVC Deblocking Filter using mixed pipelined-block processing techniques | |
| EP2583460A1 (en) | Method for coding and decoding a video picture | |
| Li et al. | Transform coding on programmable stream processors | |
| KR20080053935A (ko) | 비디오 시퀀스에서 가변 외형 움직임 추정 | |
| Nagai et al. | Hardware implementation of motion estimation technology using high level synthesis and investigations into techniques for improvements | |
| Zhao et al. | A cellular automaton for image compression |