TW201414311A - 視訊編碼方法與視訊編碼裝置 - Google Patents
視訊編碼方法與視訊編碼裝置 Download PDFInfo
- Publication number
- TW201414311A TW201414311A TW101134175A TW101134175A TW201414311A TW 201414311 A TW201414311 A TW 201414311A TW 101134175 A TW101134175 A TW 101134175A TW 101134175 A TW101134175 A TW 101134175A TW 201414311 A TW201414311 A TW 201414311A
- Authority
- TW
- Taiwan
- Prior art keywords
- macroblock
- encoding
- macroblocks
- column
- encoder
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/43—Hardware specially adapted for motion estimation or compensation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一種視訊編碼方法包括:決定第一宏塊在參考影像上的第一搜尋視窗,並且決定第二宏塊在參考影像上的第二搜尋視窗,其中第一搜尋視窗至少部分地重疊於第二搜尋視窗;從記憶體中讀取第一搜尋視窗與第二搜尋視窗並執行包括動作估測與二進位化編碼的第一編碼階段;將第一編碼階段的編碼結果儲存在記憶體中;以及,從記憶體中讀取編碼結果,並且執行第二編碼階段。第二編碼階段包括情境熵值編碼,情境滴值編碼的編碼順序不同於動作估測的編碼順序,並且第二編碼階段與第一編碼階段是平行地被執行。藉此,可以降低記憶體的頻寬需求。
Description
本發明是有關於一種視訊編碼方法與使用此方法的視訊編碼裝置。
一般來說,要編碼一段視訊時,此視訊會被分為多張圖幀(frame),每張圖幀包括多個切片(slice),每個切片包括多個宏塊(macro block),而每個宏塊可以再被分割為一或多個方塊(block)。當要計算圖幀之間在時間上的冗餘(temporal redundancy)時,會計算一個目前圖幀與一個參考圖幀之間的動作向量。計算動作向量是要用參考圖幀上的像素值來預測目前圖幀的一個宏塊。預測的結果會經過離散餘弦轉換(discrete cosine transform),量化,行程長度編碼(run length coding),以及熵值編碼。其中,在計算目前圖幀中一個宏塊的動作向量時,會取得參考圖幀上對應的一個搜尋視窗內的像素值。通常,參考圖幀是儲存在一個記憶體中,當要計算動作向量時,會從此記憶體中讀取對應的搜尋視窗。
圖1是說明讀取搜尋視窗的示意圖。
請參照圖1,目前圖幀110包括宏塊111與112。參考圖幀120包括搜尋視窗121與122。當要計算宏塊111的動作向量時,必須從記憶體中讀取搜尋視窗121。當要計算宏塊112的動作向量時,必須從記憶體中讀取搜尋視
窗122。其中,區域123是搜尋視窗121與搜尋視窗122之間重疊的部分。因此,在計算完宏塊111的動作向量以後,只需要讀取搜尋視窗122中沒有與搜尋視窗121重疊的部分便可以計算宏塊112的動作向量。當編碼完同一列的宏塊以後,搜尋視窗121可能已不在記憶體當中。因此,當要對下一列的宏塊執行動作估測時,必須再從記憶體中讀取一個搜尋視窗,此搜尋視窗可能會與搜尋視窗121部分地重疊。如此一來,搜尋視窗中部份的像素值會被讀取兩次,造成記憶體的頻寬需求增加。
計算動作向量需要大量的計算能力與記憶體頻寬。因此,如何降低記憶體的頻寬需求並增加視訊編碼的速度,為此領域技術人員所關心的議題。
本發明的實施例提出一種視訊編碼方法與視訊編碼裝置,可以降低記憶體的頻寬需求。
本發明一實施例提出一種視訊編碼方法,用於一個視訊編碼裝置。此視訊編碼方法包括:決定第一宏塊在一個參考影像上的第一搜尋視窗,並且決定第二宏塊在參考影像上的第二搜尋視窗,其中第一搜尋視窗至少部分地重疊於第二搜尋視窗;從一個記憶體中讀取第一搜尋視窗與第二搜尋視窗,並且對第一宏塊與第二宏塊執行第一編碼階段,其中第一編碼階段包括動作估測與二進位化編碼;將第一編碼階段的編碼結果儲存在一記憶體中;以及,從記
憶體中讀取編碼結果,並且對編碼結果執行第二編碼階段,其中第二編碼階段包括情境熵值編碼,情境滴值編碼的編碼順序不同於動作估測的編碼順序,並且第二編碼階段與第一編碼階段是平行地被執行。
在一實施例中,第一影像包括多個宏塊列。上述的第一宏塊是被包括在這些宏塊列中的第a個宏塊列,並且第二宏塊是被包括在宏塊列中的第b個宏塊列,其中a與b為正整數,並且a不同於b。
在一實施例中,上述的正整數a與b之間的絕對差大於等於2。
在一實施例中,上述的第a個宏塊列包括多個第三宏塊,第b個宏塊列包括多個第四宏塊,並且第二宏塊是位於第四宏塊中的第c個。上述對第一宏塊與第二宏塊執行第一編碼階段的步驟包括:對第三宏塊中的第(c+d)個第三宏塊執行動作估測以後才對第二宏塊執行動作估測。其中c為正整數,並且d為大於等於2的正整數。
在一實施例中,上述的第a個宏塊列包括多個第三宏塊,並且第b個宏塊列包括多個第四宏塊。此視訊編碼方法還包括:由第一編碼器依序地對第三宏塊執行動作估測;當第一編碼器對第三宏塊中第e個第三宏塊執行動作估測時,由第二編碼器開始依序地對第四宏塊執行動作估測,其中e為大於等於3的正整數。
在一實施例中,上述的第一影像包括多個宏塊列群組,第a個宏塊列與第b個宏塊列同屬於宏塊列群組中的
第一宏塊列群組。第a個宏塊列包括多個第三宏塊,並且第b個宏塊列包括多個第四宏塊。第一影像還包括第二宏塊列群組,第二宏塊列群組包括第一宏塊列與第二宏塊列。第一宏塊列包括多個第五宏塊,並且第二宏塊列包括多個第六宏塊。上述對第一宏塊與第二宏塊執行第一編碼階段的步驟包括:由第一編碼器交錯地對第三宏塊的其中之一與第四宏塊的其中之一執行動作估測,並且同時由第二編碼器交錯地對第五宏塊的其中之一與第六宏塊的其中之一執行動作估測。
在一實施例中,上述的第一宏塊是被包括在第一影像,第二宏塊是被包括在第二影像,並且第一影像不同於第二影像。
在一實施例中,上述的情境熵值編碼包括一算數編碼。
以另外一個角度來說,本發明一實施例提出一種視訊編碼裝置,包括第一編碼器、第二編碼器與記憶體。記憶體是耦接至第一編碼器與第二編碼器。第一編碼器是用以決定第一宏塊在一參考影像上的第一搜尋視窗,並且決定第二宏塊在參考影像上的第二搜尋視窗。其中第一搜尋視窗至少部分地重疊於第二搜尋視窗。第一編碼器也用以從記憶體中讀取第一搜尋視窗與第二搜尋視窗,並且對第一宏塊與第二宏塊執行第一編碼階段。此第一編碼階段包括動作估測與二進位化編碼。第一編碼器也用以將第一編碼階段的編碼結果儲存在記憶體中。第二編碼器用以從記憶
體中讀取此編碼結果,並且對編碼結果執行第二編碼階段。第二編碼階段包括情境熵值編碼。情境滴值編碼的編碼順序不同於動作估測的編碼順序,並且第二編碼階段與第一編碼階段是平行地被執行。
在一實施例中,第一影像包括多個宏塊列。第一宏塊是被包括在這些宏塊列中的第a個宏塊列,並且第二宏塊是被包括在宏塊列中的第b個宏塊列。其中a與b為正整數,並且a不同於b。
在一實施例中,上述的正整數a與b之間的絕對差大於等於2。
在一實施例中,上述的第a個宏塊列包括多個第三宏塊,第b個宏塊列包括多個第四宏塊,並且第二宏塊是位於第四宏塊中的第c個。第一編碼器還用以對第三宏塊中的第(c+d)個第三宏塊執行動作估測以後才對第二宏塊執行動作估測。其中c為正整數,並且d為大於等於2的正整數。
在一實施例中,上述的第a個宏塊列包括多個第三宏塊,並且第b個宏塊列包括多個第四宏塊。第一編碼器還用以依序地對第三宏塊執行動作估測。當第一編碼器對第三宏塊中第e個第三宏塊執行動作估測時,由第三編碼器開始依序地對第四宏塊執行動作估測。其中e為大於等於3的正整數。
在一實施例中,上述的第一影像包括多個宏塊列群組,第a個宏塊列與第b個宏塊列同屬於第一宏塊列群組。
第a個宏塊列包括多個第三宏塊,並且第b個宏塊列包括多個第四宏塊。第一影像也包括第二宏塊列群組,此第二宏塊列群組包括第一宏塊列與第二宏塊列。第一宏塊列包括多個第五宏塊,並且第二宏塊列包括多個第六宏塊。第一編碼器還用以交錯地對第三宏塊的其中之一與第四宏塊的其中之一執行動作估測,並且同時由第三編碼器交錯地對第五宏塊的其中之一與第六宏塊的其中之一執行動作估測。
在一實施例中,上述的第一宏塊是被包括在第一影像,第二宏塊是被包括在第二影像,並且第一影像不同於第二影像。
在一實施例中,上述的情境熵值編碼包括算數編碼。
基於上述,本發明實施例所提出的視訊編碼方法與視訊編碼裝置,可以降低記憶體的頻寬需求。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖2是根據一實施例說明視訊編碼裝置的示意圖。
請參照圖2,視訊編碼裝置200包括編碼器210、編碼器220與記憶體230。視訊編碼裝置200是用以壓縮一段視訊,並產生此視訊的位元串(bit stream)。例如,視訊編碼裝置200可以被配置在電視、數位攝影機、數位相機、
數位手機、平板電腦、電腦、由一或多台電腦組成的伺服器。
編碼器210用以執行一個第一編碼階段。此第一編碼階段包括動作估測(motion estimation)、內部預測(intra prediction)、轉換運算、量化運算與二進位化編碼(binarization encoding)。編碼器210包括暫存記憶體211、第一編碼模組212、第二編碼模組213、第三編碼模組214、第四編碼模組215與記憶體介面216。本實施例中,編碼器210中所有的編碼模組是以宏塊管線(macroblock pipeline)的方式來運作。換言之,編碼器210中的宏塊管線深度(macroblock pipeline depth)為4。
第一編碼模組212是用以執行動作估測。例如,記憶體介面216從記憶體230中讀取一個搜尋視窗內的像素值,並且儲存在暫存記憶體211。第一編碼模組212會根據這些讀取的像素值與一個宏塊執行動作估測。執行完動作估測以後,第一編碼模組212至少會產生一或多個動作向量以及多個殘差值(residual)。
第二編碼模組213是用以執行內部預測。內部預測是要用一個影像中的像素值來預測本身的像素值。執行完內部預測以後,第二編碼模組213至少會產生多個殘差值以及一個預測模式。
第三編碼模組214是用以執行轉換運算與量化運算。例如,執行轉換運算時,第三編碼模組214是將第一編碼模組212或第二編碼模組213所產生的殘差值進行餘弦離
散轉換。然而,第三編碼模組214也可以使用阿達瑪轉換(hadamard transform)、重疊轉換(lapped transform)、或其他空間至頻率(spatial-to-frequency)的轉換。執行量化運算(quantization operation)時,第三編碼模組214是將轉換運算產生的多個係數(coefficient)除以相同或不相同的量化參數。
第四編碼模組215是用以執行二進位化編碼。例如,第四編碼模組215是對量化運算的結果執行一個可變長度編碼(variable length coding),用以將一個符號(symbol)或一個係數(coefficient)轉換為一或多個位元。此可變長度編碼可以為霍夫曼編碼(Huffman coding)或哥倫布編碼(golomb coding)。或者,第四編碼模組215也可使用固定長度編碼(fixed length coding)來編碼係數或符號,本發明不在此限。
然而,本領域通常知識者應可理解,編碼器210還可包括其他模組,用以執行其他編碼運算。例如,編碼器210也可用以執行行程長度編碼、將一個宏塊分割為一或多個方塊來執行動作估測、預測一個方塊的動作向量或是執行一個位元控制演算法。並且,編碼器210所執行的這些編碼運算(包括動作估測、二進位化編碼等)可以被實作為更多或更少的模組,藉此增加或減少編碼器210的管線深度。本發明並不在此限。
在此實施例中,編碼器210會將第一編碼階段的編碼結果(例如,二進位化編碼所產生的位元)儲存在記憶體230中。編碼器220會讀取這些編碼結果並執行一個第二階段
編碼。此第二階段編碼包括一個情境熵值編碼(context entropy coding)。具體來說,編碼器220包括暫存記憶體221、第五編碼模組222與記憶體介面223。記憶體介面223是用以從記憶體230中讀取第一編碼階段的編碼結果並儲存在暫存記憶體221中。第五編碼模組222是用以對這些編碼結果執行情境熵值編碼。在情境熵值編碼中,若要編碼一個符號或一個係數時,必須依照一個編碼順序參考前一個符號或係數的編碼結果。此編碼順序是規定於一個編碼標準(例如,H.264或是MPEG-4)當中。例如,情境熵值編碼包括算數編碼。
圖3A是根據一實施例說明算數編碼的範例示意圖。
概念上,算數編碼是用一個浮點數來表示多個欲被編碼的符號。此浮點數是根據符號出現的機率的來產生。請參照圖3A,符號”a”出現的機率是0.6,而符號”b”出現的機率是0.4。浮點數的初始範圍為0~1,其中包括範圍301(即0~0.6)以及範圍302(即,0.6~1)。若要編碼符號”a”,則浮點數的範圍會被更新為範圍301,反之則是範圍302。在此假設第一個符號是”a”。接著,若要編碼第二個符號,則會從範圍301中選擇範圍311(即,0~0.36)或是範圍312(0.36~0.6)。範圍311表示第二個符號為”a”,並且範圍312表示第二個符號是”b”。在此假設第二個符號是”b”。接著,編碼器會從範圍312中選擇一個浮點數(例如0.5)傳送給解碼器,解碼器可以根據此浮點數解碼出符號”a”與”b”。等效地來說,一個符號可用少於一個位元或
是非整數個位元來編碼。特別的是,在算數編碼中,必須先編碼第一個符號才能編碼第二個符號,如此才能得到正確的範圍。
圖3B至3D是根據一實施例說明熵值編碼的示意圖。
請參照圖3B,本實施例中一個係數或符號會經過二進位化編碼與情境熵值編碼的運算。例如,訊號321為係數”-35”,並且此係數是用16個位元來表示。第四編碼模組215對訊號321執行二進位化編碼以後,訊號322只包括整數個位元,例如為”1110”。訊號322會被儲存在記憶體230中。第五編碼模組215會對訊號322執行情境熵值編碼(例如,算數編碼),以產生訊號323。
請參照圖3C,第四編碼模組215包括二進位化編碼331、可變長度編碼332、多工器333~335。訊號322會被執行二進位化編碼331與可變長度編碼322。多工器335會從多工器333與334中選擇一個並輸出成訊號322。例如,在H.264的編碼標準中,若要使用適應性情境二元算數編碼(Context-adaptive binary arithmetic coding,CABAC)來做熵值編碼,則多工器355會選擇多工器333的結果。反之,則多工器335會選擇多工器334的結果。另一方面,多工器333會根據訊號321的特性決定是否要輸出二進位化編碼331的結果。例如,當訊號321表示一個預測模式時,此預測模式並不需要經過二進位化編碼331的運算。類似地,多工器334也會根據訊號321的特性來決定是否要輸出可變長度編碼332的結果。
請參照圖3D,第五編碼模組222包括二進位算術編碼341、可變長度編碼342、多工器343與344。若是使用適應性情境二元算數編碼來做熵值編碼,多工器344會選擇二進位算數編碼341的結果輸出為訊號323。反之,多工器344會選擇多工器343的結果。另一方面,多工器343會判斷是否要輸出可變長度編碼342的結果。在一實施例中,一個係數或符號可以由第四編碼模組215來做可變長度編碼332,也可以由第五編碼模組222來做可變長度編碼342,本發明並不在此限。
在另一實施例中,情境熵值編碼也可以是適應性霍夫曼編碼。在適應性霍夫曼編碼中,編碼器與解碼器都會建立一個霍夫曼樹。當編碼器每編碼一個係數或是符號以後,可能會更新此霍夫曼樹。因此,編碼器與解碼器必須要依照相同的順序來編碼與解碼,否則兩著所建立的霍夫曼樹並不會同步。在另一實施例中,情境熵值編碼也可以是適應性哥倫布編碼或其他適應性的編碼演算法,本發明並不在此限。
值得注意的是,由於編碼器210與編碼器220是獨立運作,因此即使執行動作估測的順序與執行情境熵值編碼的順序不同,編碼器210與編碼器220還是可以平行的運作。亦即,第一編碼階段與第二編碼階段是同時被執行。並且,儲存在記憶體中的是訊號322而不是訊號321,因此可以減少記憶體230的頻寬需求。
圖4是根據一實施例說明動作估測的順序的範例示意
圖。
請參照圖4,影像410包括宏塊411~415。視訊編碼裝置200是要根據參考影像420來編碼影像410上的宏塊411~415。在此用第x行(column)第y列(row)說明一個宏塊的位置。例如,宏塊411、412與413是位於第y列,而宏塊413是位於第x行。執行情境熵值編碼的順序是宏塊411、412、413、與位於第y列且在宏塊413之後的其他宏塊;之後才會從位於第(y+1)列第1行的宏塊開始進行情境熵值編碼(持續到宏塊414與415)。然而,第一編碼模組212會先對宏塊411執行動作估測,接著依序對宏塊412、414、413與415執行動作估測。換言之,影像410中情境熵值編碼的順序與動作估測的順序並不相同。一個影像中,同一列的多個宏塊會組成一個宏塊列(例如,宏塊411、412與413屬於同一個宏塊列),而一個影像會包括多個宏塊列。執行情境熵值編碼時,第五編碼模組222是編碼完一個宏塊列中的宏塊以後才編碼下一個宏塊列中的宏塊。然而,第一編碼模組212是交錯地對第a個宏塊列中的一個宏塊與第b個宏塊列中的一個宏塊執行動作估測。其中a與b為正整數,並且a不同於b。例如,在圖4所示的實施例中,a與b的絕對差為1。然而,在其他實施例中,a與b的絕對差也可以大於等於2,本發明並不在此限。
執行動作估測時,第一編碼模組212會決定宏塊411在參考影像420上的搜尋視窗421,並且決定宏塊414在參考影像420上的搜尋視窗422。其中,搜尋視窗421至
少部分地重疊於視搜尋視窗422。因此,對應宏塊411的動作估測與對應宏塊414的動作估測可以共用部分的像素值。當要對宏塊412與宏塊415執行動作估測時,只要讀取區域423內的像素值。在此實施例中,參考影像420是儲存在記憶體中230(如圖2所示)。因此,依照圖4所示的順序來執行動作估測,可以減少對記憶體230的頻寬需求。具體來說,記憶體介面216會從記憶體230中讀取搜尋視窗421與搜尋視窗422內的像素值至暫存記憶體211。當搜尋視窗421與搜尋視窗422被儲存在暫存記憶體211的期間,第一編碼模組212會執行對應於宏塊411與宏塊414的動作估測。
在本實施例中,影像410與影像420為兩個圖幀(frame)。然而,在其他實施例中,影像410與影像420也可以為兩個圖場(field),本發明並不在此限。另一方面,以下假設影像410的編號為1,而影像420的編號為0。在此用向量(影像編號、宏塊的行、宏塊的列)來表示一個宏塊的位置。舉例來說,宏塊411位置可以被表示為(1,x-2,y)的向量,而宏塊412的位置可以被表示為(1,x-1,y)的向量,並且宏塊414的位置可以被表示為(1,x-2,y+1)的向量。
圖5是根據一實施例說明編碼器的管線排程的示意圖。
請參照圖5,在時間點501時,第一編碼模組212對位於(1,0,0)的宏塊執行動作估測。此時,第五編碼模組215對位於(0,0,0)的宏塊執行情境熵值編碼。
在時間點502,第一編碼模組對位於(1,1,0)的宏塊執行動作估測,第二編碼模組對位於(1,0,0)的宏塊執行內部預測(如果需要的話)。此時,第五編碼模組對位於(0,1,0)的宏塊執行情境熵值編碼。
在時間點503,第一編碼模組對位於(1,0,1)的宏塊執行動作估測,第二編碼模組對位於(1,1,0)的宏塊執行內部預測(如果需要的話),並且第三編碼模組對位於(1,0,0)的宏塊執行轉換運算與量化運算。此時,第五編碼模組對位於(0,2,0)的宏塊執行熵值情境編碼。
值得注意的是,編碼器210中的編碼模組(即,第一編碼模組212、第二編碼模組213、第三編碼模組214、與第四編碼模組215)是依照動作估測的順序來運作。然而,第五編碼模組222是依照情境熵值編碼的順序來運作。另一方面,第五編碼模組222編碼一個宏塊所需的時間可能會不等於編碼器210中編碼一個宏塊所需的時間。
圖6A與圖6B是根據另一實施例說明第一編碼器執行動作估測的順序的範例示意圖。
在圖6A所示的實施例中,影像中第a個宏塊列601包括多個宏塊,第b個宏塊列602包括多個宏塊,a與b的絕對誤差為1。第一編碼模組212是從第a列第c行的宏塊開始執行動作估測。在第a列第c+d行的宏塊以後,第一編碼模組212才會執行第b列第c行的宏塊。其中,c與d為正整數,且d大於等於2。在一實施例中,當編碼第b列第c行的宏塊時,必須取得第a列第c行與第a列
第c+1行的宏塊被執行動作估測的資訊。因此,先對第a列第c+d行的宏塊執行動作估測,可以減少宏塊管線中發生資料危害(data hazard)的機率。
在圖6B所示的實施例中,a與b的絕對差為2。在一實施例中,依照圖6所示的順序來執行動作估測,可以增加搜尋視窗相互重疊的比率。因此,可以減少記憶體230的頻寬需求。
圖7是根據一實施例說明共用參考影像的範例示意圖。
請參照圖7的上半部,執行動作估測時,影像702與703對應至影像701與704。具體來說,宏塊712是對應至搜尋視窗711與714。宏塊713是對應至搜尋視窗711與714。在圖7所示的實施例中,第一編碼模組212是交錯的對影像702中的一個宏塊與影像703的一個宏塊執行動作估測。在此假設影像701~704的影像編號分別為0、2、3、與4。請參照圖7的下半部。在時間點721時,第一編碼模組212是對位置為(2,0,0)的宏塊執行動作估測。在時間點722,第一編碼模組212是對位置為(3,0,0)的宏塊執行動作估測。在時間點723,第一編碼模組212是對位置為(2,1,0)的宏塊執行動作估測。在時間點724,第一編碼模組212是位置為(3,1,0)的宏塊執行動作估測。在時間點725,第一編碼模組212是位置為(2,0,1)的宏塊執行動作估測。值得注意的是,影像702與影像703中動作估測的編碼順序皆如圖4所示,但第五編碼模組215的執行順序是情境滴值
編碼的編碼順序。
圖8是根據一實施例說明視訊編碼方法的流程圖。
請參照圖8,在步驟S802中,編碼器210會決定第一宏塊在一個參考影像上的第一搜尋視窗,並且決定第二宏塊在此參考影像上的第二搜尋視窗,其中第一搜尋視窗至少部分地重疊於第二搜尋視窗。
在步驟S804中,編碼器210會從一個記憶體中讀取第一搜尋視窗與第二搜尋視窗,並且對第一宏塊與第二宏塊執行第一編碼階段,其中第一編碼階段包括動作估測與二進位化編碼,但不包括情境熵值編碼。
在步驟S806中,編碼器210會將第一編碼階段的編碼結果儲存在記憶體中。
在步驟S808中,編碼器220會從記憶體中讀取編碼結果,並且對編碼結果執行第二編碼階段。其中第二編碼階段包括情境熵值編碼,情境滴值編碼的編碼順序不同於動作估測的編碼順序,並且第二編碼階段與第一編碼階段是平行地被執行。
然而,圖8中各步驟已詳細說明如上,在此便不再贅述。
在另一實施例中,第一編碼模組212、第二編碼模組213、第三編碼模組214、第四編碼模組215與第五編碼模組222的功能可以被實作為多個程式碼。這些程式碼可以被儲存在一個記憶體中,由一個處理器來執行。本發明並不在此限。
第二實施例與第一實施例類似,在此僅說明不同之處。
圖9是根據第二實施例說明視訊編碼裝置的方塊圖。
請參照圖9,視訊編碼裝置900包括編碼器910、920、930、940與記憶體950。編碼器910包括暫存記憶體911、第一編碼模組912、第二編碼模組913、第三編碼模組914、第四編碼模組915與記憶體介面916。編碼器920包括暫存記憶體921、第一編碼模組922、第二編碼模組923、第三編碼模組924、第四編碼模組925與記憶體介面926。編碼器930包括暫存記憶體931、第五編碼模組932與記憶體介面933。編碼器940包括暫存記憶體941、第五編碼模組942與記憶體介面943。其中,編碼器910與920的功能相同於第一實施例中的編碼器210。編碼器930與940的功能相同於第一實施例中編碼器220。
圖10是根據第二實施例說明動作估測的順序的示意圖。
在圖10所示的實施例中,編碼器910會依序地對影像中第a個宏塊列中的宏塊執行動作估測。當編碼器910執行到第e行的宏塊時,編碼器920會開始依序地對第b個宏塊列中的宏塊執行動作估測。其中,e為大於等於3的正整數。宏塊1001與宏塊1002所對應的搜尋視窗會彼此部分地重疊。宏塊1003與宏塊1004所對應的搜尋視窗會彼此部分地重疊。因此,編碼器910與編碼器920可以
分享記憶體950的頻寬。在一實施例中,暫存記憶體911與921是在同一個暫存記憶體當中,記憶體介面916與926是被實作為同一個記憶體介面,並且編碼器910和編碼器920可以共享此暫存記憶體與記憶體介面。在另一實施例中,視訊編碼裝置900也可包括另一個編碼器。此另一個編碼器會在編碼器920對第e行的宏塊執行動作估測以後,開始依序的對第b+1列的宏塊執行動作估測。本發明並不限制視訊編碼裝置900中編碼器的個數。
圖11是根據第二實施例說明兩張影像共用參考影像的示意圖。
請同時參照圖7與圖11。編碼器910是交錯地對影像702中的一個宏塊與影像703中的一個宏塊執行動作估測。並且,當編碼器910編碼到影像702與703第0列第1行的宏塊以後(時間點1101),編碼器920開始編碼影像702與影像703中第1列的宏塊。並且,當編碼器910與編碼器920在編碼影像702與703時,編碼器930與940平行地編碼影像701與704。值得住意的是,當編碼器930與940平行地編碼影像701與704時,影像701與704已被重建出,因此並不會影響編碼器910與920的運作。
圖12是根據第二實施例說明編碼不同宏塊列群組的示意圖。
請參照圖12,影像1200包括宏塊列群組1201、1202、與1203。一個宏塊列群組(group of macroblock row)中會包括多個宏塊列。例如,宏塊列群組為切片(slice),但本發
明並不在此限。宏塊列群組1201包括宏塊列1221(亦稱第a個宏塊列)與1222(亦稱第b個宏塊列)。宏塊列群組1202包括宏塊列1223與1224。編碼器910是交錯地對宏塊列1221中的一個宏塊與宏塊列1222中的一個宏塊列執行動作估測。當編碼器910對宏塊1211執行動作估測時,編碼器920開始對宏塊列群組1202中的宏塊執行動作估測。編碼器920是交錯地對宏塊列1223中的一個宏塊與宏塊列1224中的一個宏塊執行動作估測。在另一實施例中,視訊編碼裝置900也可包括另一個編碼器。此另一個編碼器會在編碼器920對宏塊1212執行動作估測時,開始對宏塊列群組1203中的宏塊執行動作估測。
綜上所述,本發明實施例所提出的視訊編碼方法與視訊編碼裝置,是將二進位化編碼與情境熵值編碼實作在不同的編碼器上。如此一來,動作估測的編碼順序與情境熵值編碼的編碼順序可不相同,藉此可降低記憶體的頻寬需求。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
110‧‧‧目前圖幀
111、112、711~714、1001~1004、1211、1212‧‧‧宏塊
120‧‧‧參考影像
121、122‧‧‧搜尋視窗
123‧‧‧區域
200、900‧‧‧視訊編碼裝置
210、220、910、920、930、940‧‧‧編碼器
211、221、911、921、931、941‧‧‧暫存記憶體
212、912、922‧‧‧第一編碼模組
213、913、923‧‧‧第二編碼模組
214、914、924‧‧‧第三編碼模組
215、915、925‧‧‧第四編碼模組
216、223、916、926、933、943‧‧‧記憶體介面
222、932、942‧‧‧第五編碼模組
230、950‧‧‧記憶體
301、302、311、312‧‧‧範圍
321、322、323‧‧‧訊號
331‧‧‧二進位化編碼
332、342‧‧‧可變長度編碼
333、334、335、343、344‧‧‧多工器
341‧‧‧二進位算數編碼
410、701~704、1200‧‧‧影像
411~415‧‧‧宏塊
420‧‧‧參考影像
421、422‧‧‧搜尋視窗
423‧‧‧區域
501~503、721~725、1101‧‧‧時間點
601~602、1221~1224‧‧‧宏塊列
S802、S804、S806、S808‧‧‧視訊編碼方法的步驟
1201~1203‧‧‧宏塊列群組
圖1是說明讀取搜尋視窗的示意圖。
圖2是根據一實施例說明視訊編碼裝置的示意圖。
圖3A是根據一實施例說明算數編碼的範例示意圖。
圖3B至3D是根據一實施例說明熵值編碼的示意圖。
圖4是根據一實施例說明動作估測的順序的範例示意圖。
圖5是根據一實施例說明編碼器的管線排程的示意圖。
圖6A與圖6B是根據另一實施例說明第一編碼器執行動作估測的順序的範例示意圖。
圖7是根據一實施例說明共用參考影像的範例示意圖。
圖8是根據一實施例說明視訊編碼方法的流程圖。
圖9是根據第二實施例說明視訊編碼裝置的方塊圖。
圖10是根據第二實施例說明動作估測的順序的示意圖。
圖11是根據第二實施例說明兩張影像共用參考影像的示意圖。
圖12是根據第二實施例說明編碼不同宏塊列群組的示意圖。
S802、S804、S804、S808‧‧‧視訊編碼的步驟
Claims (16)
- 一種視訊編碼方法,用於一視訊編碼裝置,該視訊編碼方法包括:決定一第一宏塊在一參考影像上的一第一搜尋視窗,並且決定一第二宏塊在該參考影像上的一第二搜尋視窗,其中該第一搜尋視窗至少部分地重疊於該第二搜尋視窗;從一記憶體中讀取該第一搜尋視窗與該第二搜尋視窗,並且對該第一宏塊與該第二宏塊執行一第一編碼階段,其中該第一編碼階段包括一動作估測與一二進位化編碼;將該第一編碼階段的一編碼結果儲存在一記憶體中;以及從該記憶體中讀取該編碼結果,並且對該編碼結果執行一第二編碼階段,其中該第二編碼階段包括一情境熵值編碼,該情境滴值編碼的一編碼順序不同於該動作估測的一編碼順序,並且該第二編碼階段與該第一編碼階段是平行地被執行。
- 如申請專利範圍第1項所述之視訊編碼方法,其中一第一影像包括多個宏塊列,該第一宏塊是被包括在該些宏塊列中的第a個宏塊列,並且該第二宏塊是被包括在該些宏塊列中的第b個宏塊列,其中a與b為正整數,並且a不同於b。
- 如申請專利範圍第2項所述之視訊編碼方法,其中 該些正整數a與b之間的絕對差大於等於2。
- 如申請專利範圍第2項所述之視訊編碼方法,其中該第a個宏塊列包括多個第三宏塊,該第b個宏塊列包括多個第四宏塊,並且該第二宏塊是位於該些第四宏塊中的第c個,其中對該第一宏塊與該第二宏塊執行該第一編碼階段的步驟包括:對該些第三宏塊中的第(c+d)個第三宏塊執行該動作估測以後,對該第二宏塊執行該動作估測,其中c為正整數,並且d為大於等於2的正整數。
- 如申請專利範圍第2項所述之視訊編碼方法,其中該第a個宏塊列包括多個第三宏塊,並且該第b個宏塊列包括多個第四宏塊,該視訊編碼方法還包括:由一第一編碼器依序地對該些第三宏塊執行該動作估測;當該第一編碼器對該些第三宏塊中第e個第三宏塊執行該動作估測時,由一第二編碼器開始依序地對該些第四宏塊執行該動作估測,其中e為大於等於3的正整數。
- 如申請專利範圍第2項所述之視訊編碼方法,其中該第一影像包括多個宏塊列群組,該第a個宏塊列與該第b個宏塊列同屬於該些宏塊列群組中的一第一宏塊列群組,該第a個宏塊列包括多個第三宏塊,並且該第b個宏塊列包括多個第四宏塊,該些宏塊列群組包括一第二宏塊列群組,該第二宏塊列群組包括一第一宏塊列與一第二宏塊列,該第一宏塊列包括多個第五宏塊,並且該第二宏塊 列包括多個第六宏塊,其中對該第一宏塊與該第二宏塊執行該第一編碼階段的步驟包括:由一第一編碼器交錯地對該些第三宏塊的其中之一與該些第四宏塊的其中之一執行該動作估測,並且同時由一第二編碼器交錯地對該些第五宏塊的其中之一與該些第六宏塊的其中之一執行該動作估測。
- 如申請專利範圍第1項所述之視訊編碼方法,其中該第一宏塊是被包括在一第一影像,該第二宏塊是被包括在一第二影像,並且該第一影像不同於該第二影像。
- 如申請專利範圍第1項所述之視訊編碼方法,其中該情境熵值編碼包括一算數編碼。
- 一視訊編碼裝置,包括:一第一編碼器,用以決定一第一宏塊在一參考影像上的一第一搜尋視窗,並且決定一第二宏塊在該參考影像上的一第二搜尋視窗,其中該第一搜尋視窗至少部分地重疊於該第二搜尋視窗;一第二編碼器;以及一記憶體,耦接至該第一編碼器與該第二編碼器,其中,該第一編碼器用以從該記憶體中讀取該第一搜尋視窗與該第二搜尋視窗,並且對該第一宏塊與該第二宏塊執行一第一編碼階段,其中該第一編碼階段包括一動作估測與一二進位化編碼,其中,該第一編碼器用以將該第一編碼階段的一編碼結果儲存在該記憶體中, 其中,該第二編碼器用以從該記憶體中讀取該編碼結果,並且對該編碼結果執行一第二編碼階段,其中該第二編碼階段包括一情境熵值編碼,該情境滴值編碼的一編碼順序不同於該動作估測的一編碼順序,並且該第二編碼階段與該第一編碼階段是平行地被執行。
- 如申請專利範圍第9項所述之視訊編碼裝置,其中一第一影像包括多個宏塊列,該第一宏塊是被包括在該些宏塊列中的第a個宏塊列,並且該第二宏塊是被包括在該些宏塊列中的第b個宏塊列,其中a與b為正整數,並且a不同於b。
- 如申請專利範圍第10項所述之視訊編碼裝置,其中該些正整數a與b之間的絕對差大於等於2。
- 如申請專利範圍第10項所述之視訊編碼裝置,其中該第a個宏塊列包括多個第三宏塊,該第b個宏塊列包括多個第四宏塊,並且該第二宏塊是位於該些第四宏塊中的第c個,該第一編碼器還用以對該些第三宏塊中的第(c+d)個第三宏塊執行該動作估測以後,對該第二宏塊執行該動作估測,其中c為正整數,並且d為大於等於2的正整數。
- 如申請專利範圍第10項所述之視訊編碼裝置,其中該第a個宏塊列包括多個第三宏塊,並且該第b個宏塊列包括多個第四宏塊,該視訊編碼裝置還包括:一第三編碼器,其中,該第一編碼器還用以依序地對該些第三宏塊執 行該動作估測,當該第一編碼器對該些第三宏塊中第e個第三宏塊執行該動作估測時,由該第三編碼器開始依序地對該些第四宏塊執行該動作估測,其中e為大於等於3的正整數。
- 如申請專利範圍第10項所述之視訊編碼裝置,其中該第一影像包括多個宏塊列群組,該第a個宏塊列與該第b個宏塊列同屬於該些宏塊列群組中的一第一宏塊列群組,該第a個宏塊列包括多個第三宏塊,並且該第b個宏塊列包括多個第四宏塊,該些宏塊列群組包括一第二宏塊列群組,該第二宏塊列群組包括一第一宏塊列與一第二宏塊列,該第一宏塊列包括多個第五宏塊,並且該第二宏塊列包括多個第六宏塊,該視訊編碼裝置還包括:一第三編碼器,其中,該第一編碼器還用以交錯地對該些第三宏塊的其中之一與該些第四宏塊的其中之一執行該動作估測,並且同時由該第三編碼器交錯地對該些第五宏塊的其中之一與該些第六宏塊的其中之一執行該動作估測。
- 如申請專利範圍第9項所述之視訊編碼裝置,其中該第一宏塊是被包括在一第一影像,並且該第二宏塊是被包括在一第二影像,並且該第一影像不同於該第二影像。
- 如申請專利範圍第9項所述之視訊編碼裝置,其中該情境熵值編碼包括一算數編碼。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101134175A TW201414311A (zh) | 2012-09-18 | 2012-09-18 | 視訊編碼方法與視訊編碼裝置 |
US13/662,538 US9549193B2 (en) | 2012-09-18 | 2012-10-28 | Video encoding method and video encoding device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101134175A TW201414311A (zh) | 2012-09-18 | 2012-09-18 | 視訊編碼方法與視訊編碼裝置 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201414311A true TW201414311A (zh) | 2014-04-01 |
Family
ID=50274433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101134175A TW201414311A (zh) | 2012-09-18 | 2012-09-18 | 視訊編碼方法與視訊編碼裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9549193B2 (zh) |
TW (1) | TW201414311A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116389762B (zh) * | 2023-06-05 | 2023-08-15 | 长沙千视电子科技有限公司 | 一种视频数据SpeedHQ编码方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100461865C (zh) | 2005-10-21 | 2009-02-11 | 广达电脑股份有限公司 | 运动矢量估计*** |
US8000388B2 (en) | 2006-07-17 | 2011-08-16 | Sony Corporation | Parallel processing apparatus for video compression |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
US8917769B2 (en) * | 2009-07-03 | 2014-12-23 | Intel Corporation | Methods and systems to estimate motion based on reconstructed reference frames at a video decoder |
US8976860B2 (en) | 2009-09-23 | 2015-03-10 | Texas Instruments Incorporated | Method and apparatus for determination of motion estimation search window area utilizing adaptive sliding window algorithm |
KR101645465B1 (ko) * | 2010-07-23 | 2016-08-04 | 삼성전자주식회사 | 휴대용 단말기에서 입체 영상 데이터를 생성하기 위한 장치 및 방법 |
US8798139B1 (en) * | 2011-06-29 | 2014-08-05 | Zenverge, Inc. | Dual-pipeline CABAC encoder architecture |
US9167260B2 (en) * | 2011-08-02 | 2015-10-20 | Advanced Micro Devices, Inc. | Apparatus and method for video processing |
CN102647592B (zh) | 2012-04-18 | 2014-11-26 | 北京大学 | 一种高清编码器的运动估计搜索窗数据复用方法 |
-
2012
- 2012-09-18 TW TW101134175A patent/TW201414311A/zh unknown
- 2012-10-28 US US13/662,538 patent/US9549193B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20140079124A1 (en) | 2014-03-20 |
US9549193B2 (en) | 2017-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI759389B (zh) | 用於視訊寫碼之低複雜度符號預測 | |
US10701391B2 (en) | Motion vector difference (MVD) prediction | |
US20210314568A1 (en) | Moving image decoding method and moving image coding method | |
RU2576590C2 (ru) | Вывод позиции в порядке сканирования последнего значимого коэффициента преобразования при кодировании видеосигнала | |
KR102076398B1 (ko) | 비디오 코딩 및 디코딩에서의 벡터 인코딩을 위한 방법 및 장치 | |
US9872018B2 (en) | Random access point (RAP) formation using intra refreshing technique in video coding | |
US10264290B2 (en) | Hash-based block matching in video and image coding | |
KR102444757B1 (ko) | 저-지연을 위한 샘플 배치 코딩 | |
CN112055971B (zh) | 视频编解码方法、编解码器以及存储介质 | |
US10250907B2 (en) | Intra-frame pixel prediction method, encoding method and decoding method, and device thereof | |
CN107743239B (zh) | 一种视频数据编码、解码的方法及装置 | |
CN112352429B (zh) | 对视频数据进行编解码的方法、设备和存储介质 | |
US20130016789A1 (en) | Context modeling techniques for transform coefficient level coding | |
KR20150090206A (ko) | 차세대 비디오를 위한 코딩을 위한 콘텐츠 적응적 파라메트릭 변환 | |
JP2015508617A5 (zh) | ||
US9641850B2 (en) | Video compression device | |
US9838709B2 (en) | Motion vector predictive encoding method, motion vector predictive decoding method, moving picture encoding apparatus, moving picture decoding apparatus, and programs thereof | |
CN110944173B (zh) | 视频解码方法、装置、电子设备以及存储介质 | |
JP7357679B2 (ja) | 改善された最確モードリスト生成方法 | |
RU2624464C1 (ru) | Порядки сканирования для кодирования без преобразования | |
US10419772B2 (en) | Parallel arithmetic coding techniques | |
JP2017092868A (ja) | 映像符号化装置およびプログラム | |
TW201414311A (zh) | 視訊編碼方法與視訊編碼裝置 | |
US20160234529A1 (en) | Method and apparatus for entropy encoding and decoding | |
CN103702129A (zh) | 视频编码方法与视频编码装置 |