TWI470575B - 用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置 - Google Patents
用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置 Download PDFInfo
- Publication number
- TWI470575B TWI470575B TW101142652A TW101142652A TWI470575B TW I470575 B TWI470575 B TW I470575B TW 101142652 A TW101142652 A TW 101142652A TW 101142652 A TW101142652 A TW 101142652A TW I470575 B TWI470575 B TW I470575B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer
- image block
- image
- indicator
- decoding
- Prior art date
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
本申請是2011年11月24日遞交的申請號為13/304,372的未決美國案的部分延續案,申請號為13/304,372的未決美國案的申請專利範圍要求2011年1月17日遞交的申請號為61/433,272的美國臨時案的優先權;並且本申請還要求2011年12月5日遞交的申請號為61/566,984的美國臨時案的優先權。在此合併參考這些申請案的申請標的。
本發明有關於視訊/影像處理,尤指一種儲存於緩衝裝置中的多重影像塊編碼影像(multi-tile encoded picture)的資料存取方法,以及儲存於緩衝裝置中的多重影像塊編碼影像的資料存取裝置。
VP8是一種由谷歌公司(Google®
)所發表的一種開放的視訊壓縮格式,如同許多現今的視訊壓縮機制,VP8亦是基於將圖框(frame)解構為內含像素的正方形子區塊、使用之前重建的區塊來對這些子區塊進行預測(prediction),並採用離散餘弦轉換(discrete cosine transform,DCT)來針對這些預測結果進行調整(以及針對未預測的區塊(unpredicted block)進行合成(synthesis))。然而,在特定的情況下,VP8則會使用沃爾什-哈達馬德轉換(Walsh-Hadamard transform,
WHT),而非一般採用的離散餘弦轉換。
WebP是谷歌公司根據VP8所發展的一種影像格式,進一步來說,WebP是基於VP8的圖框內編碼(intra-frame coding),並採用基於資源交換檔案標準格式(resource interchange file format,RIFF)的容器(container)。此外,WebP被公開為一種新的開放標準,其針對攝影影像提供有耗損的壓縮(lossy compression)。在90萬張網頁影像的大規模研究中,於相似的影像品質之下,WebP格式的影像相較於聯合影像專家小組(Joint Photographic Experts Group,JPEG)格式的影像,其檔案大小縮小了39.8%,因此,網頁管理者、網頁開發者以及瀏覽器開發者便可使用WebP格式來提供更小且更好看的影像,進而改善使用者的網頁瀏覽。
依據VP8/WebP的規格,VP8/WebP解碼器的輸入會是一連串的壓縮圖框(compressed frame),而其輸入次序會與這些圖框於時間軸上的次序一致。此外,每一壓縮圖框中會具有多個分割(partition)。由於VP8/WebP位元流是用來傳送壓縮圖框(每一壓縮圖框中會具有多個分割),因此如何有效率地緩衝並解碼一個多重分割VP8/WebP位元流中的每一壓縮圖框便成為此一技術領域中的一項重要課題。
如高效率視訊編碼(High-Efficiency Video Coding,HEVC)標準中所建議的,一個影像可以被劃分成多個影像塊(tile)。第19圖為高
效率視訊編碼標準中所採用的影像塊的示意圖。第20圖為第19圖所示之影像塊的一傳統解碼順序的示意圖。如第19圖所示,一影像10分別被劃分成複數個影像塊T11
'~T13
'、T21
'~T23
'以及T31
'~T33
',其係以列邊界(row boundary)HB1
’、HB2
’(即,水平方向的邊界)和行邊界(column boundary)(即,垂直方向的邊界)VB1
’、VB2
'來加以區隔。如第20圖所示,在每一影像塊當中,複數個最大編碼單元(largest coding unit,LCU)/樹狀結構(treeblock,TB)會進行柵狀掃描(raster scan),例如,在同一影像塊T11
'中,依照阿拉伯數字編號的順序來對最大編碼單元/樹狀結構進行解碼。換句話說,如第20圖所示,在每一多重影像塊編碼影像當中,以柵狀掃描的方式對影像塊進行處理,舉例來說,影像塊T11
'~T13
'、T21
'~T23
'以及T31
'~T33
'依序被解碼。具體而言,一張影像可以均勻地被分割為複數個影像塊,或均勻地被分割成複數個特定的最大編碼單元-行-列影像塊(LCU-column-row tile)。一影像塊是具有垂直邊界和水平邊界的一個區塊,且必定是一矩形,而該矩形之中會具有整數數量的最大編碼單元/樹狀結構。
依據高效率視訊編碼標準,存在有兩種類型的影像塊:獨立影像塊(independent tile)和相依影像塊(dependent tile)。關於獨立影像塊,它們被視為子影像/子串流。因此,一獨立影像塊中最大編碼單元/樹狀結構的編碼/解碼(例如,運動向量預測(motion vector prediction)、畫面內預測(intra prediction)、去區塊濾波(deblocking filter,DF)、樣本自適應偏移(sample adaptive offset,SAO)、自適應
性迴路濾波(adaptive loop filter,ALF)、熵編碼(entropy coding)等)並不需要參考其他影像塊當中的資料。此外,假設最大編碼單元/樹狀結構之資料是使用算術編碼(例如基於上下文的自適應性二進制算術編碼(context-based adaptive binary arithmetic coding,CABAC)演算法)來進行編碼/解碼。此時對於每個獨立的影像塊來說,在影像塊的一開始處,該基於上下文的自適應性二進制算術編碼的統計資料會被初始化/重新初始化,並且,該影像塊之該影像塊邊界以外之最大編碼單元的資料被視為不可使用。舉例來說,當開始對影像塊T11
'解碼時,影像塊T11
'中編號為“1”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將被初始化,當開始對影像塊T12
'解碼時,影像塊T12
'中編號為“13”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將被重新初始化,當開始對影像塊T13
'解碼時,影像塊T13
'中編號為“31”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將被重新初始化,以及當開始對影像塊T21
'解碼時,影像塊T21
'中編號為“40”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將被重新初始化。
然而,對一相依影像塊中最大編碼單元/樹狀結構的編碼/解碼(例如,運動向量預測、畫面內預測、去區塊濾波、樣本自適應偏移、自適應性迴路濾波、熵編碼等),則必須要考慮到其他影像塊的資料,因此,若要成功地對具有相依影像塊在其中的一多重影像塊編
碼影像/壓縮畫面進行解碼,則需要垂直緩衝器和水平緩衝器。具體而言,垂直緩衝器係用於緩衝位於一目前解碼影像塊的一垂直邊界(例如,一左側垂直邊界)旁的一相鄰影像塊之最大編碼單元/樹狀結構的解碼資料,而該水平緩衝器係用於緩衝位於該目前解碼影像塊的一水平邊界(例如,一上方水平邊界)旁的另一相鄰影像塊之最大編碼單元/樹狀結構的解碼資料。因此,該多重影像塊編碼影像/壓縮畫面進行解碼所需之緩衝器尺寸會比較大,進而導致較高的生產成本。此外,假設最大編碼單元/樹狀結構的資料係使用算術編碼(例如使用基於上下文的自適應性二進制算術編碼演算法)來進行編碼/解碼,此時對於每個相依影像塊來說,在影像塊的一開始處,基於上下文的自適應性二進制算術編碼的統計資料會被初始化,或是繼承(inherited)其他影像塊的統計資料。例如,當開始對影像塊T11
'解碼時,影像塊T11
'中編號為“1”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將被初始化,而開始對影像塊T12
'解碼時,影像塊T12
'中編號為“13”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將繼承影像塊T11
'中編號為“12”之最後一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料,當開始對影像塊T13
'解碼時,影像塊T13
'中編號為“31”之第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將繼承影像塊T12
'中編號為“30”之最後一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料,當開始對影像塊T21
'解碼時,影像塊T21
'中編號為“40”之
第一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料將繼承影像塊T13
'中編號為“39”之最後一個最大編碼單元/樹狀結構之基於上下文的自適應性二進制算術編碼的統計資料。
對於聯合影像專家組織延伸範圍(Joint Photographic Experts Group extended range,JPEG-XR)標準來說,一個畫面可以分割成複數個特定的巨集區塊-行-列(macroblock-column-row tile)影像塊。一影像塊是具有垂直邊界和水平邊界的一區塊,該區塊係矩形且其中包含有整數數量的巨集區塊。每一影像塊中依序對複數個巨集區塊進行柵狀掃描,且在每一多重影像塊編碼影像中,依序對複數個影像塊進行柵狀掃描。根據聯合影像專家組織延伸範圍標準,存在有兩種類型的影像塊:硬式影像塊(hard tile)和軟式影像塊(soft tile)。對於硬式影像塊來說,其被視為子影像,因此,對一硬式影像塊之巨集區塊進行編碼/解碼時,不需要參考其他影像塊的資料。然而,對一軟式影像塊之巨集區塊進行編碼/解碼時,則需要參考其他影像塊的資料,例如,在軟式影像塊中,重疊濾波(overlap filtering)處理可跨越影像塊邊界。
由於多重影像塊高效率視訊編碼標準/聯合影像專家組織延伸範圍標準的位元流被定義來傳送編碼/壓縮後的畫面,其中每個畫面具有包含於其中的複數個影像塊,因此,如何有效率地緩衝和對多重影像塊高效率視訊編碼標準/聯合影像專家組織延伸範圍標準之位
元流中的每一編碼/壓縮後的畫面進行解碼,已成為此領域中一個重要的問題。
有鑑於此,本發明揭露了一種存取儲存於緩衝裝置中的多重影像塊編碼影像的資料的方法以及相關裝置,以解決上述問題。
依據本發明之第一方面,揭示了一種用於緩衝裝置之讀取指標暫存的方法。該緩衝裝置係用來緩衝一多重影像塊編碼影像的資料,該多重影像塊編碼影像具有複數個影像塊。該方法包含有:判斷在解碼該多重影像塊編碼影像的一第一影像塊時是否遇到該第一影像塊之一影像塊邊界;以及當判斷遇到該第一影像塊之該影像塊邊界時,將一目前使用中的讀取指標儲存至一指標緩衝器,並且從該指標緩衝器中載入一選取的讀取指標來作為該目前使用中的讀取指標。
依據本發明之第二方面,揭示了一種用於緩衝裝置之讀取指標暫存的緩衝控制器。該緩衝裝置係用來緩衝至少一多重影像塊編碼影像的資料,該多重影像塊編碼影像具有複數個影像塊。該緩衝控制器包含有一判斷單元以及一控制單元。該判斷單元係用來判斷在解碼該多重影像塊編碼影像的一第一影像塊時是否遇到該第一影像塊之一影像塊邊界。該控制單元係於該判斷單元判斷遇到該第一影像塊之該影像塊邊界時,將一目前使用中的讀取指標儲存至一指標
緩衝器,並且從該指標緩衝器中載入一選取的讀取指標來作為該目前使用中的讀取指標。
依據本發明之第三方面,揭示了一種緩衝裝置,用來緩衝具有複數個影像塊的至少一多重影像塊編碼影像的資料。該緩衝裝置包含有一第一儲存空間以及一第二儲存空間。該第一儲存空間係用來緩衝該多重影像塊編碼影像的一第一影像塊。該第二儲存空間係用來緩衝該多重影像塊編碼影像的一第二影像塊。該第一影像塊係目前解碼中,而該第二影像塊目前並非解碼中。
對於已經閱讀後續由各圖示及內容所顯示的較佳實施例的所屬領域中具有通常知識者來說,本發明的各目的是明顯的。
在說明書及後續的申請專利範圍當中使用了某些詞彙來指稱特定的元件。所屬領域中具有通常知識者應可理解,製造商可能會用不同的名詞來稱呼同樣的元件。本說明書及後續的申請專利範圍並不以名稱的差異來作為區別元件的方式,而是以元件在功能上的差異來作為區別的基準。在通篇說明書及後續的請求項當中所提及的「包含」係為一開放式的用語,故應解釋成「包含但不限定於」。此外,「耦接」一詞在此係包含任何直接及間接的電氣連接手段。因此,若文中描述一第一裝置電性連接於一第二裝置,則代表該第一裝置可直接連接於該第二裝置,或透過其他裝置或連接手段間接地連接
至該第二裝置。
依據VP8/WebP的規格,VP8/WebP解碼器的輸入會是一連串的壓縮圖框,且每一壓縮圖框會具有2~9個分割,而這些分割均是開始及結束於位元組邊界(byte boundary)。一壓縮圖框中的導引分割(亦即第一個被傳送的分割)會具有兩個子區段(subsection):適用於整個壓縮圖框的標頭資訊(header information)以及關於每一巨集區塊的預測資訊(per-macroblock prediction information)(其包含有壓縮圖框中每一巨集區塊的預測資訊)。對於該壓縮圖框中的其餘分割(1個、2個、4個或8個分割),其包含殘餘訊號(residue signal)的轉換係數(例如DCT/WHT係數)。
請參閱第1圖,其為被本發明所揭示之緩衝裝置所處理之一壓縮圖框中的多個分割的示意圖。壓縮圖框100是透過一VP8/WebP位元流來傳送,因此會包含有依序傳送的N個分割102_1~102_N,換言之,分割102_1是壓縮圖框100中的導引分割,以及分割102_N是壓縮圖框100中的最後一個分割。分割102_1會包含有適用於整個壓縮圖框100的標頭資訊,且另會包含同一壓縮圖框100中每一個巨集區塊的預測資訊。對於位於分割102_1之後的其餘分割102_2~102_N中的每一分割來說,其會包含有殘餘量的轉換係數(例如DCT/WHT係數)。當壓縮圖框100包含有一個以上的轉換係數分割時,除了最後一個分割以外的每一分割的大小(以位元組為單位)會出現在緊接於上述的導引分割102_1之後的位元流中。每一個分
割大小(partition size)係由長度為3個位元組的資料來加以記錄。舉例來說,第1圖所示之長度為3個位元組的分割大小PS2
係用以指示出分割102_2的大小,以及第1圖所示之長度為3個位元組的分割大小PS3
係用以指示出分割102_3的大小。這些分割大小使得解碼裝置可以直接存取記錄著DCT/WHT係數的所有分割,因而致使解碼裝置可以對這些轉換係數進行平行處理(parallel processing)。
然而,VP8/WebP會將巨集區塊列(macroblock row,MB row)的DCT/WHT係數封裝於個別的分割(separate partitions)中。請參閱第2圖,其為如何將壓縮圖框中的轉換係數封裝至4個分割的示意圖。如圖所示,示範性的壓縮圖框200具有許多巨集區塊列MB_0~MB_15。巨集區塊列MB_0、MB_4、MB_8與MB_12的轉換係數會被封裝於分割Partition_1中,巨集區塊列MB_1、MB_5、MB_9與MB_13的轉換係數會被封裝於分割Partition_2中,巨集區塊列MB_2、MB_6、MB_10與MB_14的轉換係數會被封裝於分割Partition_3中,以及巨集區塊列MB_3、MB_7、MB_11與MB_15的轉換係數會被封裝於分割Partition_4中。由於連續的兩個巨集區塊列的轉換係數並不會封裝於同一分割之中,一個巨集區塊的解碼操作便需要讀取來自不同分割的資料。假若所使用之位元流緩衝器並沒有足夠的儲存空間來緩衝整個壓縮圖框的全部資料,則解碼器所需要的一些資料便無法立即從位元流緩衝器中得到。因此,位元流緩衝器便需要先釋放一個分割的已緩衝資料,接著再載入解碼器所需要之位於另一分割中的資料。
然而,由於所需要的資料的載入需要時間,因此不同分割之間的切換會導致解碼速度的降低。因此,為了改善多重分割VP8/WebP位元流中每一壓縮圖框的解碼效率,本發明便揭示了一種創新的緩衝器暫存(maintenance)與控制機制。進一步的細節將於下詳述。
第3圖為本發明視訊/影像解碼系統之第一實施例的示意圖。視訊/影像解碼系統300包含有一緩衝裝置302以及一解碼裝置304。緩衝裝置302是用以緩衝一多重分割視訊/影像位元流BS_IN,其傳送複數個壓縮圖框,且每一壓縮圖框具有複數個分割。於本實施例中,緩衝裝置302包含有複數個位元流緩衝器(bitstream buffer)312_1~312_N、一緩衝控制器(buffer controller)314以及一多工器(multiplexer)315。位元流緩衝器312_1~312_N是用以分別緩衝第1圖所示之分割102_1~102_N的資料。位元流資料是依據寫入指標(write pointer)WPTR_1~WPTR_N而儲存至位元流緩衝器312_1~312_N,以及位元流資料是依據讀取指標(read pointer)RWPTR_1~RPTR_N而自位元流緩衝器312_1~312_N中讀取出來。更進一步來說,寫入指標WPTR_1會控制標頭資訊/關於每一巨集區塊的預測資訊儲存至位元流緩衝器312_1的寫入位址(write address),以及讀取指標RPTR_1會控制分割102_1之已緩衝的標頭資訊/關於每一巨集區塊的預測資訊從位元流緩衝器312_1中讀取出來的讀取位址(read address);寫入指標WPTR_2會控制分割102_2之轉換係數(例如,DCT/WHT係數)儲存至位元流緩衝器312_2的寫
入位址,以及讀取指標RPTR_2會控制分割102_2之已緩衝的轉換係數從位元流緩衝器312_2中讀取出來的讀取位址;以及寫入指標WPTR_N會控制分割102_N之轉換係數(例如,DCT/WHT係數)儲存至位元流緩衝器312_N的寫入位址,以及讀取指標RPTR_N會控制分割102_N之已緩衝的轉換係數從位元流緩衝器312_N中讀取出來的讀取位址。
於本實施例中,位元流緩衝器312_1~312_N可以是專門用來分別緩衝分割102_1~102_N之資料的連續/不連續的環形緩衝器(continuous/discontinuous ring buffer),以及當一環形緩衝器具有可使用的儲存空間(亦即,寫入指標尚未追上讀取指標)時,可允許資料被饋入至該環形緩衝器。於一設計範例中,緩衝控制器314是用來同時監控所有的位元流緩衝器312_1~312_N的寫入指標WPTR_1~WPTR_N以及讀取指標RPTR_1~RPTR_N。因此,當緩衝控制器314偵測到任一位元流緩衝器具有可用儲存空間來緩衝尚未被緩衝的資料時,緩衝控制器314便調整相對應的寫入指標,並允許尚未被緩衝的資料可被饋入至該位元流緩衝器。
於另一設計範例中,緩衝控制器314僅用來監控目前使用中的位元流緩衝器的寫入指標與讀取指標,目前使用的位元流緩衝器中所緩衝之資料正被進行解碼。因此,當緩衝控制器314偵測到目前使用中的位元流緩衝器具有可用儲存空間來緩衝尚未被緩衝的資料時,緩衝控制器314便調整相對應的寫入指標,並允許尚未被緩衝
的資料可被饋入至目前使用中的位元流緩衝器。
於上述的設計範例中,一特定位元流緩衝器之一讀取指標以及一寫入指標是用以決定/偵測該特定位元流緩衝器是滿的或空的,或者用以決定/偵測該特定位元流緩衝器中具有多少可用的儲存空間。然而,此僅作為範例說明,而非用以作為本發明的限制。採用其它可以決定/偵測特定位元流緩衝器是滿的或空的或者決定/偵測特定位元流緩衝器中上具有多少可用的儲存空間的手段亦是可行的。
對於解碼裝置304來說,其包含有複數個位元流直接記憶體存取(direct memory access,DMA)控制器316、317以及複數個桶形移位器(barrel shifter)318、319。位元流直接記憶體存取控制器316是透過直接記憶體存取的方式,來將已緩衝的位元流資料(亦即標頭資訊/關於每一巨集區塊的預測資訊)由位元流緩衝器312_1傳送至桶形移位器318,而桶形移位器318則會分析(parse)由前端的位元流直接記憶體存取控制器316所提供的位元流資料。位元流直接記憶體存取控制器317是透過直接記憶體存取的方式,來將已緩衝的位元流資料(亦即轉換係數)由複數個位元流緩衝器312_2~312_N的其中之一傳送至桶形移位器319,而桶形移位器319則會分析由前端的位元流直接記憶體存取控制器317所提供的位元流資料。如此一來,第3圖所示之解碼裝置304便可同時對兩個分割進行解碼。
由於複數個係數分割(亦即分割102_2~102_N)中僅允許一個分割可被解碼裝置304所解碼,因此,緩衝裝置302便利用多工器315來選取位元流緩衝器312_2~312_N的其中之一,以作為要被位元流直接記憶體存取控制器317所存取的資料來源。舉例來說,當分割102_2的係數資料需要在一第一時間點被處理時,多工器315便將位元流緩衝器312_2耦接至位元流直接記憶體控制器317。然而,當分割102_3的係數資料需要在一第二時間點被處理時,多工器315便將位元流緩衝器312_3耦接至位元流直接記憶體控制器317。若位元流緩衝器(例如環形緩衝器)312_2~312_N中的每一位元流緩衝器經由適當控制而於具有可用儲存空間時便會緩衝要被解碼的資料,則需要處理之係數資料便保證會存於位元流緩衝器312_2~312_N之中,因此,緩衝裝置302便不需要先釋放一個分割之已緩衝的資料並接著載入另一分割之要被處理的資料,換言之,由於資料緩衝機制採用了專門用來緩衝各個分割之部分資料(partial data)的多個位元流緩衝器,因此可避免頻繁地釋放已緩衝的資料及載入要被處理的資料,故使得解碼效能可大幅改善。
請注意,第3圖所示之電路組態僅是作為本發明的一個實施例,任何不違反本發明精神的設計變化均落入本發明的範疇。舉例來說,只要緩衝裝置中包含有多個位元流緩衝器來分別緩衝同一壓縮圖框中不同分割的資料,均符合本發明的精神。例如,於一設計變化中,緩衝裝置302可經由修改而包含有:用以緩衝分割102_1的位元流資料的位元流緩衝器312_1、用以緩衝分割102_2~102_N
中至少其一的位元流資料的位元流緩衝器312_2~312_N中的至少一位元流緩衝器,以及用以緩衝分割102_2~102_N中其餘的分割的位元流資料的單一位元流緩衝器。於另一設計變化中,緩衝裝置302可經由修改而包含有:用以緩衝分割102_2~102_N中至少兩個分割的位元流資料的位元流緩衝器312_2~312_N,以及用以緩衝分割102_1的位元流資料和分割102_2~102_N中其餘的分割的位元流資料的單一位元流緩衝器。這些設計變化同樣可達到改善解碼裝置304之解碼效能的目的。
解碼裝置304的解碼效能可透過使用一具有預取(prefetch)機制的緩衝裝置而得到進一步的改善。請參閱第4圖,其為本發明視訊/影像解碼系統之第二實施例的示意圖。視訊/影像解碼系統300與視訊/影像解碼系統400之間的主要不同點在於:第4圖所示之緩衝裝置402中具有一預取電路(prefetch circuit)404。於此一實施例中,預取電路404包含有一預取單元(prefetch unit)406以及一儲存單元(storage unit)408。預取單元406用以於解碼裝置304正在解碼一目前分割(current partition)時,從儲存待處理之後續分割(next partition)的係數資料的一位元流緩衝器中預取資料,並將所預取的資料儲存至儲存單元404,其中當解碼裝置304開始解碼該後續分割時,儲存於儲存單元408中所預取的資料會被解碼裝置304所讀取。儲存單元408可以是解碼裝置304之一內部緩衝器(internal buffer),因此,儲存單元408的資料存取速度便會快於位元流緩衝器213_2~312_N中每一位元流緩衝器的資料存取速度。舉例來說,儲存單元
408可以由一暫存器(register)或一靜態隨機存取記憶體(static random access memory,SRAM)來加以實作。當解碼裝置304切換至解碼該後續分割時,由於儲存單元408中會儲存著所預取的資料,因而可節省/降低從位元流緩衝器312_2~312_N的其中之一取得該後續分割的係數資料的所需時間。換言之,取得該後續分割的係數資料的所需時間會隱藏於該目前分割進行解碼的時間之中,如此一來,預取電路404的使用確實可以加速整體的解碼程序。
於第4圖所示之實施例中,預取機制是用來預取要被後端的解碼裝置所解碼之後續分割的資料。然而,相同的概念亦可應用於預取要被複數個位元流緩衝器的其中之一所緩衝之後續分割的資料。請參閱第5圖,其為第3圖所示之緩衝裝置302的另一種設計的示意圖。緩衝裝置502包含有一預取電路504以及上述的位元流緩衝器312_1~312_N與多工器315。預取電路504會同時監控位元流緩衝器312_1~312_N之中正在緩衝一目前分割之係數資料的一位元流緩衝器以及位元流緩衝器312_1~312_N之中用以緩衝後續分割之係數資料的一個或多個位元流緩衝器,並且當位元流緩衝器312_1~312_N之中用以緩衝後續分割之係數資料的一個或多個位元流緩衝器具有可用儲存空間來緩衝預取的資料時,預取電路504便會從前一級(例如網際網路(Internet)、中介軟體(middleware)或碟片(disk))要求更多的資料。簡而言之,當對應一目前分割的位元流緩衝器正在緩衝被後端的解碼裝置所處理之該目前分割的係數資料時,預取電路504會預取資料並將所預取的資料儲存至對應後續分
割的至少一位元流緩衝器。因此,透過所採用之預取機制的輔助,緩衝裝置的位元流緩衝效率便可以獲得改善。
於上述的實施例中,內含預取機制的緩衝裝置具有專門用來緩衝各個分割之資料的N個位元流緩衝器,其中N可以是任何大於1的正整數。然而,本案所揭示的預取機制亦可應用於一個具有用以緩衝複數個分割之資料的單一位元流緩衝器的緩衝裝置。
請參閱第6圖,其為本發明視訊/影像解碼系統之第三實施例的示意圖。視訊/影像解碼系統600包含有一緩衝裝置602以及一解碼裝置604,其中緩衝裝置602具有單一位元流緩衝器612以及上述的預取電路404,此外,解碼裝置604具有單一位元流直接記憶體存取控制器616與單一桶形移位器618。於本實施例中,單一位元流緩衝器612並非是環形緩衝器,此外,壓縮圖框100的位元流大小(bitstream size)可能很大。因此,假若單一位元流緩衝器612的緩衝器大小(buffer size)小於壓縮圖框100的位元流大小,則單一位元流緩衝器612僅會緩衝壓縮圖框100的一部分資料(亦即,壓縮圖框100中的目前分割與後續分割的資料)。雖然單一位元流緩衝器612可能需要於不同的分割之間進行切換,以便由前一級(例如網際網路、中介軟體或碟片)載入所要的資料,不過,於後續分割的解碼操作開始進行時,由於可立即地將後續分割中的所要資料饋入至解碼裝置604,故預取電路404的使用仍然可以改善解碼裝置604的解碼效率。
再者,不論單一位元流緩衝器612的緩衝器大小為何(例如小於/大於/等於壓縮圖框100的位元流大小),預取電路404的使用仍然可以加速整體的解碼程序。由於熟習技藝者於閱讀以上的段落說明之後應可輕易地瞭解解碼裝置604與預取電路404的操作,故進一步的說明便在此省略以求簡潔。
第7圖為本發明視訊/影像解碼系統之第四實施例的示意圖。視訊/影像解碼系統700包含有上述的緩衝裝置602與解碼裝置304。進一步來說,緩衝裝置602具有單一位元流緩衝器612以及預取電路404,而解碼裝置304則具有複數個位元流直接記憶體存取控制器316、317與複數個桶形移位器318、319。相較於第6圖所示的解碼裝置604,第7圖所示之解碼裝置304可以同時對兩個分割進行解碼。位元流直接記憶體存取控制器316與桶形移位器318的組合是用以處理分割102_1中所包含的標頭資訊與關於每一巨集區塊的預測資訊,而位元流直接記憶體存取控制器317與桶形移位器319的組合則是用以處理分割102_2~102_N中所包含的係數資料。同樣地,雖然單一位元流緩衝器612可能需要於不同的分割之間進行切換,以便由前一級(例如網際網路、中介軟體或碟片)載入所要的資料,不過,於後續分割的解碼操作開始進行時,由於可立即地將後續分割中的所要資料饋入至解碼裝置304,故預取電路404的使用仍然可以改善解碼裝置304的解碼效率。
再者,不論單一位元流緩衝器612的緩衝器大小為何(例如小於/大於/等於壓縮圖框100的位元流大小),預取電路404的使用仍然可以加速整體的解碼程序。由於熟習技藝者於閱讀以上的段落說明之後應可輕易地瞭解解碼裝置304與預取電路404的操作,故進一步的說明便在此省略以求簡潔。
請注意,上述的實施例是針對一多重分割VP8/WebP位元流的緩衝與解碼,然而,此並非是本發明的限制。亦即,本案所揭示之緩衝機制及/或預取機制亦可應用於處理任何基於多重分割的位元流(multi-partition based bitstream)。
第8圖為本發明視訊/影像解碼系統之第五實施例的示意圖。舉例來說,視訊/影像解碼系統800也可以用來處理符合一高效率視訊編碼標準或一聯合影像專家組織延伸範圍標準的一多重影像塊視訊/影像位元流(multi-tile video/image bitstream)BS_IN’。由於聯合影像專家組織延伸範圍位元流(JPEG-XR bitstream)之多重影像塊編碼影像所具有的影像塊組態(tile configuration)類似於高效率視訊編碼位元流(HEVC bitstream)之多重影像塊編碼影像的影像塊組態,因此同樣可以使用所揭示之應用在多重影像塊高效率視訊編碼位元流的緩衝及/或解碼方法,來處理多重影像塊聯合影像專家組織延伸範圍位元流。視訊/影像解碼系統800包含有一緩衝裝置802和一解碼裝置804。緩衝裝置802是用於緩衝多重影像塊視訊/影像位元流BS_IN’,而多重影像塊視訊/影像位元流BS_IN’係傳送複數個壓縮/
編碼圖框PIC_IN,其中每一壓縮/編碼圖框PIC_IN都具有複數個影像塊。在此示範性實施例中,緩衝裝置802包含有一儲存裝置812、一緩衝控制器814以及一指標緩衝器(pointer buffer)816,其中儲存裝置812可包含有一個或多個位元流緩衝器,主要是取決於實際的設計考慮。多重影像塊視訊/影像位元流BS_IN’被儲存到由緩衝控制器814所控制的儲存裝置812中。具體而言,指標緩衝器816可以針對儲存裝置812中的每一位元流緩衝器儲存一個寫入指標和一個或多個讀取指標,而緩衝控制器814會參考該寫入指標以及該讀取指標以決定是否相對應的位元流緩衝器具有可用的儲存空間,以用於容納多重影像塊視訊/影像位元流BS_IN’的資料。
解碼裝置804係被用於對藉由多重影像塊視訊/影像位元流BS_IN'所傳送的每個多重影像塊編碼影像PIC_IN進行解碼。在本實施例中,解碼裝置804包含有一位元流直接記憶體存取控制器822和一熵解碼器(entropy decoder)824。除了控制儲存裝置812中的多重影像塊視訊/影像位元流BS_IN’的資料緩衝之外,緩衝控制器814還輸出一個讀取指標PTR_C以將儲存裝置812中所請求之資料(例如欲解碼的一最大編碼單元/樹狀結構/巨集區塊)的存取位置告知位元流直接記憶體存取控制器822。因此,位元流直接記憶體存取控制器822會參考目前所使用的讀取指標PTR_C來將所請求的資料從儲存裝置812傳輸至熵解碼器824來進行熵解碼。應當注意的是,每當一個所請求的資料(即,一個所請求的最大編碼單元/樹狀結構/巨集區塊)從儲存裝置812中被讀取時,讀取指標PTR_C便會被
更新。
應當注意的是,所揭示的讀取指標暫存機制(read pointer maintenance scheme)也可以用於獨立影像塊或相依影像塊的解碼操作。在下面的內容中,提出一個解碼相依影像塊的範例,而此範例僅用於說明的目的,且不意味著是本發明的限制。
請參照第9圖,第9圖為第8圖所示的熵解碼器824所執行的一示範性熵解碼操作的示意圖。假設一個欲解碼的多重影像塊編碼影像PIC_IN係來自於一多重影像塊高效率視訊編碼位元流,因此,該多重影像塊編碼影像PIC_IN被劃分成複數個影像塊(例如,在本實施方式中係為9個相依影像塊T11
~T33
)。每一個影像塊T11
~T33
係由複數個最大編碼單元/樹狀結構所組成。如果採用以往的解碼方式,第9圖所示之複數個最大編碼單元/樹狀結構索引值(LCU/TB index value)表示多重影像塊編碼影像PIC_IN中所包含之最大編碼單元/樹狀結構的傳統解碼順序。具體而言,對於傳統的解碼器設計而言,含有複數個影像塊的多重影像塊編碼影像的解碼順序包含有每一影像塊中的複數個最大編碼單元/樹狀結構的柵狀掃描順序,以及該複數個影像塊的柵狀掃描順序。換句話說,傳統的解碼順序係相同於多重影像塊編碼影像PIC_IN中的最大編碼單元/樹狀結構的傳送順序,也就是說,在同一影像塊中的複數個最大編碼單元/樹狀結構會以一柵狀掃描順序而連續地傳送,以及該複數個影像塊也會以柵狀掃描順序而連續地傳送。不同於傳統的解碼器設
計,本發明所揭示的解碼器設計所具有的熵解碼器824係設計用來以柵狀掃描的方式對整個多重影像塊編碼影像PIC_IN之中所有的最大編碼單元/樹狀結構進行解碼,其中解碼順序會包含有如第9圖所示的連續解碼序列S1~S8。例如,如解碼序列S1所表示,位於第9圖所示之第一列並且屬於不同影像塊T11
、T12
以及T13
之最大編碼單元/樹狀結構會依序從最左邊的最大編碼單元/樹狀結構往最右邊的最大編碼單元/樹狀結構來解碼;如緊接在解碼序列S1之後的解碼序列S2所表示,位於第9圖所示之第二列並且屬於不同影像塊T11
、T12
以及T13
之最大編碼單元/樹狀結構會依序從最左邊的最大編碼單元/樹狀結構往最右邊的最大編碼單元/樹狀結構來解碼;如緊接在解碼序列S2之後的解碼序列S3所表示,位於第9圖所示之第三列並且屬於不同影像塊T11
、T12
以及T13
之最大編碼單元/樹狀結構會依序從最左邊的最大編碼單元/樹狀結構往最右邊的最大編碼單元/樹狀結構來解碼。換言之,本發明所揭示的熵解碼器824之解碼順序和多重影像塊編碼影像PIC_IN所包含之最大編碼單元/樹狀結構之傳輸順序不同。
在本實施例中,使用基於上下文的自適應二進制算術編碼演算法來對最大編碼單元/樹狀結構的資料進行編碼,因此,上下文模型(context model),其為一個機率模型(probability model),應該要在對多重影像塊編碼影像PIC_IN進行熵解碼的期間被適當地選擇以及更新。應注意的是,熵解碼器824在操作上會初始化每一影像塊之第一個最大編碼單元/樹狀結構的基於上下文的自適應二進制
算術編碼統計資料(CABAC statistics),也就是說,一目前的影像塊之第一個最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料可繼承自水平方向上相鄰於該目前影像塊的一前一影像塊的一特定最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料,其中該第一個最大編碼單元/樹狀結構以及該特定最大編碼單元/樹狀結構係互相水平相鄰,且分別位於該目前的影像塊和該前一影像塊之間的一影像塊邊界(即,一垂直/行邊界)的左右兩側。從第9圖可得知,在影像塊T12
中編號為“13”之第一個最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料係繼承自影像塊T11
中編號為“4”之最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料;類似地,在影像塊T13
中編號為“31”之第一個最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料係繼承自影像塊T12
中編號為“18”之最大編碼單元/樹狀結構之基於上下文的自適應二進制算術編碼統計資料。影像塊T11
~T13
係互相水平鄰接的影像塊,亦即水平的分割(horizontal partition)。然而,影像塊T11
、T21
以及T31
則是垂直方向上相鄰的影像塊,亦即垂直的分割(vertical partition)。對於影像塊T21
來說,其為垂直相鄰於影像塊T11
,影像塊T21
中編號為“40”之第一個最大編碼單元/樹狀結構之初始的基於上下文的自適應二進制算術編碼統計資料會繼承自影像塊T13
中編號為“39”之最後一個最大編碼單元/樹狀結構之處所更新的基於上下文的自適應二進制算術編碼統計資料。由於其餘的影像塊之基於上下文的自適應二進制算術編碼統計資料的初始設定可以輕易
地依此類推,因此為簡潔起見,在此將省略更進一步的描述。
熵解碼器824所採用的解碼順序包含有連續的解碼序列S1~S8,並且由於在熵解碼器824對一前一影像塊的一部分進行解碼之後,便會開始對一目前影像塊的一部分進行解碼,因此在同一影像塊中之最大編碼單元/樹狀結構將不會連續地依序解碼。從第9圖中可以看出,在影像塊T11
中編號為“1”、“2”、“3”和“4”之最大編碼單元/樹狀結構被連續地解碼之後,下一個要被熵解碼器824所解碼之最大編碼單元/樹狀結構將會是下一影像塊T12
中編號為“13”之第一個最大編碼單元/樹狀結構,而不是目前影像塊T11
中編號為“5”之最大編碼單元/樹狀結構;在影像塊T12
中編號為“13”、“14”、“15”、“16”、“17”以及“18”之最大編碼單元/樹狀結構被依序地解碼後,下一個要被熵解碼器824所解碼的最大編碼單元/樹狀結構將會是下一影像塊T13
中編號為“31”之第一個最大編碼單元/樹狀結構,而不是目前影像塊T12
中編號為“19”之最大編碼單元/樹狀結構;在影像塊T13
中編號為“31”、“32”、以及“33”之最大編碼單元/樹狀結構被依序地解碼後,下一個要被熵解碼器824所解碼的最大編碼單元/樹狀結構將會是先前處理過的影像塊T11
中編號為“5”之最大編碼單元/樹狀結構,而不是目前影像塊T13
中編號為“34”之最大編碼單元/樹狀結構。雖然每一影像塊具有連續傳送且儲存至儲存裝置中的複數個最大編碼單元/樹狀結構,然而由第9圖中所揭示之解碼順序可得知,位於同一影像塊的最大編碼單元/樹狀結構並非連續地被解碼。因此,應適當
地設計緩衝控制器814以提供應用於緩衝裝置802之所要的讀取指標暫存。
請參照第10圖,第10圖為依據本發明的一實施例之一緩衝控制器的示意圖。第8圖所示的緩衝控制器814可以透過第10圖所示的緩衝控制器1000來加以實現。在本實施例中,緩衝控制器1000包含有一判斷單元1002、一控制單元1004以及一多工器1006。判斷單元1002係用於判斷多重影像塊編碼影像PIC_IN的一目前影像塊的解碼是否遇到該目前影像塊的一影像塊邊界(例如,一右側的垂直/行邊界),並相對應地產生一判斷結果JR。例如,判斷單元1002可以主動地監控解碼裝置804所執行的熵解碼操作,來判斷是否遇到影像塊邊界,或者可以被動地接收解碼裝置804所提供的一熵解碼狀況(entropy decoding status),來判斷是否遇到影像塊邊界。
控制單元1004係用於儲存一目前使用中的讀取指標PTR_C到指標緩衝器816中,並且在當判斷結果JR指示遇到了影像塊邊界時,會從指標緩衝器816中載入一選取的讀取指標以作為目前使用中的讀取指標PTR_C,其中從指標緩衝器816中所載入之選取的讀取指標可以是緊接該目前影像塊之後即將要被解碼之一下一影像塊的讀取指標。如第10圖所示,控制單元1004產生一選擇信號SEL至多工器1006,以控制指標緩衝器816中所儲存的讀取指標RP1
、RP2
、RP3
~RPN
中的哪一個要被選取並載入作為目前使用中的讀取指標PTR_C。
舉例來說(但本發明並非以此為限),在對多重影像塊編碼影像PIC_IN進行熵解碼的期間,保持在指標緩衝器816中的讀取指標的數目取決於多重影像塊編碼影像PIC_IN的影像塊分割設定。例如,當多重影像塊編碼影像PIC_IN具有N個水平相鄰的分割時(即,位於同一列的N個水平的分割/影像塊),在對多重影像塊編碼影像PIC_IN進行熵解碼的期間,指標緩衝器816中所保持的讀取指標的數目會等於N。對於第9圖所示的例子來說,N等於3,因此,有3個讀取指標(例如,RP1
~RP3
)會同時暫存在指標緩衝器816中,其中,每個讀取指標都分別表示儲存裝置812中的一存取位置。
讀取指標RP1
~RPN
可以藉由參照經由多重影像塊視訊/影像位元流BS_IN'所傳送的標頭資訊(header information)來初始化。第11圖為依據本發明的一實施例之多重影像塊視訊/影像位元流BS_IN'的簡略示意圖。包含在多重影像塊編碼影像PIC_IN中的每個影像塊尺寸(tile size)都被記錄在標頭資訊的區段中。這些影像塊尺寸提供了計算從多重影像塊編碼影像PIC_IN的起始處算起的第n個影像塊的偏移量(例如,一進入點偏移量(entry point offset))所需的資訊。因此,當該些影像塊被依序地儲存到儲存裝置812中的一個或是多個位元流緩衝器中時,便可以很容易地獲得每一影像塊的起始處的儲存位置,並且可用來設定指標緩衝器816中的一相對應的讀取指標的初始值。
依據高效率視訊編碼標準,一影像塊中的所有影像切片(slice)應當是完整的,或者一影像切片內的所有影像塊應該是完整的。第11圖中的高效率視訊編碼位元流結構是針對具有複數個影像塊包含於其中的一影像切片。然而,根據高效率視訊編碼標準,一個影像塊有可能會包含有複數個影像切片,因此上述針對讀取指標RP1
~RPN
之基於進入點偏移量的初始化方法並不適用於一影像塊包含有複數個影像切片的情況。請連同第13圖來參照第12圖。第12圖為依據本發明的一實施例之複數個影像塊(其中每一影像塊都包含有複數個影像切片)的示意圖。第13圖為依據本發明的一實施例之多重影像塊視訊/影像位元流BS_IN’的另一簡略示意圖。如第12圖所示,一個影像塊Tile_0包含有複數個影像切片Slice_0以及Slice_1,而另一影像塊Tile_1包含有複數個影像切片Slice_2以及Slice_3。如第13圖所示,影像切片Slice_0~Slice_3係依序傳送並且儲存到儲存裝置812中的位元流緩衝器中。在單一影像塊中包含有複數個影像切片的情況下,本發明提出了藉由參考影像切片位址(slice address)來初始化讀取指標RP1
~RPN
。因此,當影像切片被依序儲存到儲存裝置812的位元流緩衝器中,可以很容易地從影像塊中所包含之第一個影像切片之切片位址來獲得每一影像塊的開頭的儲存位址。例如,影像塊Tile_1的影像切片Slice_2的切片位址可以被用於設定指標緩衝器816中的一相對應讀取指標的初始值。此一作法同樣可實現初始化每一影像塊的一讀取指標的目的。
有關於緩衝裝置802的示範性讀取指標暫存操作係一併參考第
14圖來進行敘述。假設多重影像塊編碼影像PIC_IN具有如第9圖所示的影像塊分割設定,因此暫存的讀取指標的數目等於3(即,N=3)。在一開始時,具有一初始值之讀取指標RP1
會經由多工器1006載入以作為目前使用中的讀取指標PTR_C,且位元流直接記憶體存取控制器822係參考目前使用中的讀取指標PTR_C來從儲存裝置812中讀取編號為“1”的最大編碼單元/樹狀結構。當影像塊T11
的熵解碼在解碼編號為“4”的最大編碼單元/樹狀結構之後遇到一影像塊邊界(例如,一個垂直/行邊界VB1
)時,指向編號為“5”之下一最大編碼單元/樹狀結構的一存取位址的目前使用中的讀取指標PTR_C將被儲存到指標緩衝器816中,以更新指標緩衝器816中暫存的讀取指標RP1
,此外,具有一初始值的讀取指標RP2
經由多工器1006載入以作為目前使用中的讀取指標PTR_C,且位元流直接記憶體存取控制器822會參考目前使用中的讀取指標PTR_C來從儲存裝置812中讀取編號為“13”的最大編碼單元/樹狀結構。當影像塊T12
的熵解碼在解碼編號為“18”的最大編碼單元/樹狀結構之後遇到一影像塊邊界(例如,一個垂直/行邊界VB2
)時,指向編號為“19”之下一最大編碼單元/樹狀結構的一存取位址的目前使用中的讀取指標PTR_C將被儲存到指標緩衝器816中,以更新指標緩衝器816中暫存的讀取指標RP2
,此外,讀取指標RP3
經由多工器1006載入以作為目前使用中的讀取指標PTR_C,且位元流直接記憶體存取控制器822會參考目前使用中的讀取指標PTR_C來從儲存裝置812中讀取編號為“31”的最大編碼單元/樹狀結構。當影像塊T13
的熵解碼在解碼編號為“33”的最大編碼單元/樹狀結構之後遇到一
影像塊邊界(例如,一個垂直/行邊界VB3
)時,指向編號為“34”之下一最大編碼單元/樹狀結構的一存取位址的目前使用中的讀取指標PTR_C將被儲存到指標緩衝器816中,以更新指標緩衝器816中暫存的讀取指標RP3
,此外,讀取指標RP1
會經由多工器1006載入以作為目前使用中的讀取指標PTR_C,且位元流直接記憶體存取控制器822會參考目前使用中的讀取指標PTR_C來從儲存裝置812中讀取編號為“5”的最大編碼單元/樹狀結構。熟習此領域者應可藉由參考第9圖來輕易地理解後續需要讀取的最大編碼單元/樹狀結構的讀取指標的載入和儲存,因此為了簡潔起見,在此省略更進一步的描述。
儲存裝置812可以使用單一位元流緩衝器或是多個位元流緩衝器來加以實作。在使用多個位元流緩衝器來實作儲存裝置812的例子中,可以節省緩衝器的大小。例如,該多個位元流緩衝器係為連續/不連續的環形緩衝器,專門用於分別緩衝不同影像塊的最大編碼單元/樹狀結構/巨集區塊的資料,且當該環形緩衝器有閒置儲存空間時(即該環形緩衝器的一寫入指標尚未追上該環形緩衝器的一讀取指標),最大編碼單元/樹狀結構/巨集區塊的資料可被饋入至該環形緩衝器進行暫存。
第15圖為依據本發明的儲存裝置的第一實施例的示意圖。第8圖所示的儲存裝置812可以藉由第15圖所示的儲存裝置1300來實現。在本實施例中,儲存裝置1300包含有複數個位元流緩衝器
1302_1、1302_2、1302_3~1302_N以及一多工器1304,其中不同的位元流緩衝器1302_1~1302_N分別提供了複數個不同的(distinct)儲存空間以供資料緩衝。舉例來說(但本發明並不以此為限),儲存裝置1300中所具有之位元流緩衝器(即,儲存空間)的數目取決於多重影像塊片編碼影像PIC_IN的影像塊分割設定,例如,當多重影像塊編碼影像PIC_IN具有N個水平相鄰的分割時(即,位於同一列的N個水平的分割/影像塊),儲存裝置1300中所具有之位元流緩衝器的數量等於N。對於第9圖所示的例子來說,N等於3。因此,有三個位元流緩衝器(例如,1302_1~1302_3)分別用來緩衝三個影像塊(例如,T11
~T13
、T21
~T23
或T31
~T33
)的最大編碼單元/樹狀結構/巨集區塊的資料。位元流緩衝器1302_1-1302_N可以是環形緩衝器。
此外,位元流資料根據儲存在指標緩衝器816中且由緩衝控制器814所控制/更新的寫入指標WPTR_1~WPTR_N,而儲存至位元流緩衝器1302_1~1302_N中,且位元流資料根據儲存在指標緩衝器816中且由緩衝控制器814所控制/更新的讀取指標RPTR_1~RPTR_N,而自位元流緩衝器1302_1~1302_N中讀取出來。更具體地說,在第一個影像塊到第N個影像塊是位於同一列之水平方向上的相鄰影像塊的情況下,寫入指標WPTR_1控制第一個影像塊的最大編碼單元/巨集區塊資料寫入至位元流緩衝器1302_1的寫入位址(write address),而讀取指標RPTR_1則控制第一個影像塊的最大編碼單元/巨集區塊資料由位元流緩衝器1302_1讀取出來的讀取位址
(read address);寫入指標WPTR_2控制第二個影像塊的最大編碼單元/巨集區塊資料寫入至位元流緩衝器1302_2的寫入位址,而讀取指標RPTR_2則控制第二個影像塊的最大編碼單元/巨集區塊資料由位元流緩衝器1302_2讀取出來的讀取位址;寫入指標WPTR_3控制第三個影像塊的最大編碼單元/巨集區塊資料寫入至位元流緩衝器1302_3的寫入位址,而讀取指標RPTR_3則控制第三個影像塊的最大編碼單元/巨集區塊資料由位元流緩衝器1302_3讀取出來的讀取位址;以及寫入指標WPTR_N控制第N個影像塊的最大編碼單元/巨集區塊資料寫入至位元流緩衝器1302_N的寫入位址,而讀取指標RPTR_N則控制第N個影像塊的最大編碼單元/巨集區塊資料由位元流緩衝器1302_N讀取出來的讀取位址。
緩衝控制器814另外會產生一選擇訊號SEL'到多工器1304,以選擇位元流緩衝器1302_1~1302_N當中的一個位元流緩衝器來作為要被位元流直接記憶體存取控制器822所存取的一資料源。例如,當熵解碼器824要對第一個影像塊之最大編碼單元/巨集區塊資料進行處理的時候,多工器1304會將位元流緩衝器1302_1耦接至位元流直接記憶體存取控制器822,此外,緩衝控制器814會將所選擇之位元流緩衝器1302_1的讀取指標RPTR_1設定為目前使用中的讀取指標PTR_C。然而,當熵解碼器824要對第二個影像塊之最大編碼單元/巨集區塊資料進行處理的時候,多工器1304會將位元流緩衝器1302_2耦接至位元流直接記憶體存取控制器822,此外,緩衝控制器814會將所選擇之位元流緩衝器1302_2的讀取指標
RPTR_2設定為目前使用中的讀取指標PTR_C。換句話說,當一目前解碼中的影像塊之所請求的最大編碼單元/巨集區塊被位元流直接記憶體存取控制器822取回的時候,目前並非解碼中的其他影像塊之最大編碼單元/巨集區塊會被緩衝在其他的位元流緩衝器中。若位元流緩衝器1302_1-1302_N有閒置的儲存空間時便經由適當控制位元流緩衝器1302_1-1302_N來緩衝要被解碼的資料,所請求的最大編碼單元/巨集區塊的資料便保證可以在位元流緩衝器(例如,環形緩衝器)1302_1~1302_N之中取得,因此,緩衝裝置1300並不需要釋放一影像塊之緩衝資料以及載入另一影像塊之所請求的資料。如此一來,由於緩衝機制採用了多個位元流緩衝器來專門緩衝各個影像塊的部分資料,從而避免頻繁的釋放緩衝資料和載入所請求的資料,因此可以大大提高解碼效能。
請注意,第15圖所示的電路配置僅僅作為本發明的一個示範性實施例,舉凡任何不脫離本發明精神的其他設計變化也隸屬本發明的範疇。例如,只要一緩衝裝置包含有多個位元流緩衝器用來分別緩衝同一多重影像塊編碼影像中的不同影像塊的緩衝資料,便符合本發明的精神。舉例來說,在一個設計變化中,緩衝裝置1300可以被修改為包含有多個位元流緩衝器,分別用於緩衝在一多重影像塊編碼影像中的一些影像塊的最大編碼單元/巨集區塊的資料,以及另包含一單一位元流緩衝器,用來緩衝該多重影像塊編碼影像中其餘影像塊的最大編碼單元/巨集區塊的資料,亦可以達到提升解碼裝置的解碼效能的目的。
解碼裝置804的解碼效能可藉由利用具有一預取機制的一緩衝裝置而進一步提升。請參照第16圖,第16圖為依據本發明的儲存裝置的第二實施例的示意圖。第8圖所示的儲存裝置812可以由第16圖所示的儲存裝置1400來加以實現。儲存裝置1300和儲存裝置1400之間的主要差別是緩衝裝置1400具有一預取電路1401包含於其中。在此示範性實施例中,預取電路1401包含有一預取單元1402和一儲存單元1404。預取單元1402係用來在當解碼裝置804正在解碼一目前的影像塊時,從一位元流緩衝器中預先讀取資料(其中即將被處理的下一影像塊之最大編碼單元/樹狀結構/巨集區塊的資料儲存於該位元流緩衝器中),並且將該預先讀取的資料儲存至儲存單元1404中,其中當解碼裝置804開始對該下一影像塊進行解碼時,儲存於儲存單元1404之該預先讀取資料便會被解碼裝置804所讀取。舉例來說,儲存單元1404可以是解碼裝置804的一內部緩衝器(internal buffer),因此,儲存單元1404中的資料存取速度可以比每一位元流緩衝器1302_1~1302_N的資料存取速度來的快。例如,儲存單元408可以使用一個暫存器或一個靜態隨機存取記憶體(static random access memory,SRAM)來加以實現。當解碼裝置804切換到解碼該下一影像塊時,由於從儲存單元1404中可以得到預取的資料,因此節省/減少了從位元流緩衝器1302_1~1302_N的其中之一取出該下一影像塊之最大編碼單元/巨集區塊的資料的所需時間。換句話說,取出該下一影像塊之最大編碼單元/巨集區塊的資料的所需時間被隱藏在該目前影像塊的解碼時段中,因此,使用預取
電路1401便能夠加快整體的解碼程序。
在第16圖所示之示範性實施例中,採用預取機制來預取要被解碼裝置所解碼之下一影像塊的資料,然而,同樣的概念也可以應用於預取要被位元流緩衝器所緩衝之下一影像塊的資料。請參照第17圖,第17圖為依據本發明的儲存裝置的第三實施例的示意圖。第8圖所示的儲存裝置812可以採用第17圖所示的儲存裝置1500來加以實現。儲存裝置1500中包含有一預取電路1502,以及另包含上述的位元流緩衝器1302_1~1302_N和多工器1304。預取電路1502係用來同時監視位元流緩衝器1302_1~1302_N之中用來緩衝目前解碼中之影像塊的最大編碼單元/巨集區塊資料的一位元流緩衝器以及位元流緩衝器1302_1~1302_N之中用來緩衝目前並非解碼中之影像塊的最大編碼單元/巨集區塊資料的一個或是多個位元流緩衝器,並且在用來緩衝目前並非解碼中之影像塊的最大編碼單元/巨集區塊資料的位元流緩衝器具有閒置儲存空間可以緩衝預取資料的時候,從前一級(例如網際網路、中介軟體或是硬碟)要求更多的資料。簡單地說,預取電路1502係用來在一目前影像塊位元流緩衝器(current tile bitstream buffer)正在緩衝解碼裝置804所處理之該目前影像塊的最大編碼單元/巨集區塊的資料的時候,進行資料預取並將所預取之資料存入至少一下一影像塊位元流緩衝器(next tile bitstream buffer)中。因此,在位元流緩衝器之前配置該預取機制,可以提高緩衝裝置的位元流緩衝效率。
關於第8圖所示的儲存裝置812的上述示範性實施方式,第15圖中的儲存裝置1300/第16圖中的儲存裝置1400/第17圖中的儲存裝置1500使用了複數個位元流緩衝器(例如連續/不連續的環形緩衝器)來實現,以節省緩衝器的尺寸,然而,這並非用以限制本發明。於一設計變化中,儲存裝置812可以使用一單一位元流緩衝器來加以實現。請參照第18圖,第18圖為依據本發明的儲存裝置的第四實施例的示意圖。第15圖/第16圖/第17圖中所示的多個位元流緩衝器以及一個多工器的組合可以使用儲存裝置1600中的單一位元流緩衝器1602來取代。單一位元流緩衝器1602中具有複數個不同的緩衝器區段(buffer section)1604_1、1604_2、1604_3-1604_N,其中每一個緩衝器區段都提供一儲存空間來進行資料緩衝。一寫入指標WPTR控制第一個到第N個影像塊的最大編碼單元/巨集區塊寫入至單一位元流緩衝器1602的寫入位址,而讀取指標RPTR_1~RPTR_N中的每一個讀取指標則控制一相對應的影像塊之最大編碼單元/巨集區塊的緩衝資料從位元流緩衝器1602的一緩衝器區段中被讀取出來的讀取位址。一開始時,每個讀取指標RPTR_1~RPTR_N係指示位元流緩衝器1602中的一相對應影像塊的一開頭位址。而在開始對一影像塊進行解碼後,一相對應的讀取指標將被適當地更新,以指示要被解碼之最大編碼單元/巨集區塊緩衝資料的讀取位址。
舉例來說(但本發明並不以此為限),單一位元流緩衝器1602中所配置的緩衝器區段(即,儲存空間)的數目取決於多重影像塊編
碼影像PIC_IN的影像塊分割設定。例如,當多重影像塊編碼影像PIC_IN具有N個水平相鄰的分割(即,位於同一列的N個水平分割/影像塊),在單一位元流緩衝器1602中配置的緩衝器區段的數目會等於N,對於第9圖中所示的範例來說,N等於3。因此,有三個緩衝器區段(例如,1604_1~1604_3)可用來分別緩衝三個影像塊(例如,T11
-T13
、T21
-T23
或T31
-T33
)的最大編碼單元/樹狀結構/巨集區塊資料。
請注意,上述示範性實施例係針對緩衝和解碼一多重影像塊高效率視訊編碼/聯合影像專家組織延伸範圍位元流,然而,這並非本發明的限制。本發明所提出的緩衝機制及/或預取機制可被用來處理任何基於多重影像塊的位元流(multi-tile based bitstream)。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100、200‧‧‧壓縮圖框
102_1、102_2、102_3、...、102_N‧‧‧分割
300、400、600、700、800‧‧‧視訊/影像解碼系統
302、402、502、602、802‧‧‧緩衝裝置
304、604、804‧‧‧解碼裝置
312_1~312_N、612、1602‧‧‧位元流緩衝器
1302_1、1302_2、1303_3、...、1302_N‧‧‧位元流緩衝器
314、814、1000‧‧‧緩衝控制器
315、1006、1304‧‧‧多工器
316、317、616、822‧‧‧位元流直接記憶體存取控制器
318、319、618‧‧‧桶形移位器
404、504‧‧‧預取電路
406、1402‧‧‧預取單元
408、1404‧‧‧儲存單元
812、1300、1400、1500、1600‧‧‧儲存裝置
816‧‧‧指標控制器
824‧‧‧熵解碼器
1002‧‧‧判斷單元
1004‧‧‧控制單元
1401、1502‧‧‧預取電路
1604_1、1604_2、1604_3、...、1604_N‧‧‧緩衝器區段
10‧‧‧影像
第1圖為被本發明所揭示之緩衝裝置所處理之一壓縮圖框中的多個分割的示意圖。
第2圖為如何將壓縮圖框中的轉換係數封裝至4個分割的示意圖。
第3圖為本發明視訊/影像解碼系統之第一實施例的示意圖。
第4圖為本發明視訊/影像解碼系統之第二實施例的示意圖。
第5圖為緩衝裝置的另一種設計的示意圖。
第6圖為本發明視訊/影像解碼系統之第三實施例的示意圖。
第7圖為本發明視訊/影像解碼系統之第四實施例的示意圖。
第8圖為本發明視訊/影像解碼系統之第五實施例的示意圖。
第9圖為第8圖所示的熵解碼器所執行的一示範性熵解碼操作的示意圖。
第10圖為本發明緩衝控制器的一實施例的示意圖。
第11圖為本發明多重影像塊視訊/影像位元流的一實施例的簡略示意圖。
第12圖為本發明複數個影像塊(其中每一個都包含有複數個影像切片)的一實施例的示意圖。
第13圖為本發明多重影像塊視訊/影像位元流的一實施例的另一簡略示意圖。
第14圖為示範性緩衝裝置的讀取指標暫存操作的示意圖。
第15圖為本發明儲存裝置的第一實施例的示意圖。
第16圖為本發明儲存裝置的第二實施例的示意圖。
第17圖為本發明儲存裝置的第三實施例的示意圖。
第18圖為本發明儲存裝置的第四實施例的示意圖。
第19圖為高效率視訊編碼標準中所採用的影像塊的示意圖。
第20圖為對第19圖中所示之影像塊進行一傳統解碼順序的示意圖。
800‧‧‧視訊/影像解碼系統
802‧‧‧緩衝裝置
804‧‧‧解碼裝置
812‧‧‧儲存裝置
814‧‧‧緩衝控制器
816‧‧‧指標緩衝器
822‧‧‧位元流直接記憶體存取控制器
824‧‧‧熵解碼器
Claims (10)
- 一種用於緩衝裝置之讀取指標暫存的方法,該緩衝裝置係用來緩衝一多重影像塊編碼影像的資料,該多重影像塊編碼影像具有複數個影像塊,該用於緩衝裝置之讀取指標暫存的方法包含有:判斷在解碼該多重影像塊編碼影像的一第一影像塊時是否遇到該第一影像塊之一影像塊邊界;以及當判斷遇到該第一影像塊之該影像塊邊界時,將一目前使用中的讀取指標儲存至一指標緩衝器,並且從該指標緩衝器中載入一選取的讀取指標來作為該目前使用中的讀取指標;其中,該選取的讀取指標係為緊接於該第一影像塊之後將要被解碼的一第二影像塊的一讀取指標,該第二影像塊中的一部分的解碼是開始於該第一影像塊中的一部分的解碼完成之後。
- 如申請專利範圍第1項所述之用於緩衝裝置之讀取指標暫存的方法,其中該影像塊邊界係一右側垂直邊界。
- 如申請專利範圍第1項所述之用於緩衝裝置之讀取指標暫存的方法,其中整個的該多重影像塊編碼影像係以一柵狀掃描的順序來進行解碼。
- 如申請專利範圍第1或4項所述之用於緩衝裝置之讀取指標暫存的方法,其中該第一影像塊以及該第二影像塊符合一高效率視訊編碼標準或一聯合影像專家組織延伸範圍標準。
- 如申請專利範圍第1項所述之用於緩衝裝置之讀取指標暫存的方法,其中該多重影像塊編碼影像具有N個水平相鄰的分割,該指標緩衝器中所儲存之讀取指標的數目等於N,且N係為一正整數。
- 一種緩衝控制器,用於一緩衝裝置的讀取指標暫存,該緩衝裝置係用來緩衝至少一多重影像塊編碼影像的資料,該多重影像塊編碼影像具有複數個影像塊,該緩衝控制器包含有:一判斷單元,用來判斷在解碼該多重影像塊編碼影像的一第一影像塊時是否遇到該第一影像塊之一影像塊邊界;以及一控制單元,用以於該判斷單元判斷遇到該第一影像塊之該影像塊邊界時,將一目前使用中的讀取指標儲存至一指標緩衝器,並且從該指標緩衝器中載入一選取的讀取指標來作為該目前使用中的讀取指標;其中,該選取的讀取指標係為緊接於該第一影像塊之後將要被解碼的一第二影像塊的一讀取指標,該第二影像塊中的一部分的解碼是開始於該第一影像塊中的一部分的解碼完成之後。
- 如申請專利範圍第6項所述之緩衝控制器,其中該影像塊邊界係一右側垂直邊界。
- 如申請專利範圍第6項所述之緩衝控制器,其中整個的該多重影像塊編碼影像係以一柵狀掃描的順序來進行解碼。
- 如申請專利範圍第6或8項所述之緩衝控制器,其中該第一影像塊以及該第二影像塊符合一高效率視訊編碼標準或一聯合影像專家組織延伸範圍標準。
- 如申請專利範圍第6項所述之緩衝控制器,其中該多重影像塊編碼影像具有N個水平相鄰的分割,該指標緩衝器中所儲存之讀取指標的數目等於N,且N係為一正整數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/304,372 US9497466B2 (en) | 2011-01-17 | 2011-11-24 | Buffering apparatus for buffering multi-partition video/image bitstream and related method thereof |
US201161566984P | 2011-12-05 | 2011-12-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201331886A TW201331886A (zh) | 2013-08-01 |
TWI470575B true TWI470575B (zh) | 2015-01-21 |
Family
ID=49479062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101142652A TWI470575B (zh) | 2011-11-24 | 2012-11-15 | 用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI470575B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050053290A1 (en) * | 2003-07-28 | 2005-03-10 | Yoshiyuki Wada | Video decoding apparatus |
TW200732912A (en) * | 2005-10-20 | 2007-09-01 | Qualcomm Inc | Pointer computation method and system for a scalable, programmable circular buffer |
CN101124556A (zh) * | 2004-12-16 | 2008-02-13 | 桑迪士克股份有限公司 | 具有用于高速暂存器和更新区块的改进索引的非易失性存储器和方法 |
US20080049240A1 (en) * | 2006-08-28 | 2008-02-28 | Fujitsu Limited | Image data buffer apparatus and data transfer system for efficient data transfer |
US20100061455A1 (en) * | 2008-09-11 | 2010-03-11 | On2 Technologies Inc. | System and method for decoding using parallel processing |
-
2012
- 2012-11-15 TW TW101142652A patent/TWI470575B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050053290A1 (en) * | 2003-07-28 | 2005-03-10 | Yoshiyuki Wada | Video decoding apparatus |
CN101124556A (zh) * | 2004-12-16 | 2008-02-13 | 桑迪士克股份有限公司 | 具有用于高速暂存器和更新区块的改进索引的非易失性存储器和方法 |
TW200732912A (en) * | 2005-10-20 | 2007-09-01 | Qualcomm Inc | Pointer computation method and system for a scalable, programmable circular buffer |
US20080049240A1 (en) * | 2006-08-28 | 2008-02-28 | Fujitsu Limited | Image data buffer apparatus and data transfer system for efficient data transfer |
US20100061455A1 (en) * | 2008-09-11 | 2010-03-11 | On2 Technologies Inc. | System and method for decoding using parallel processing |
Also Published As
Publication number | Publication date |
---|---|
TW201331886A (zh) | 2013-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8990435B2 (en) | Method and apparatus for accessing data of multi-tile encoded picture stored in buffering apparatus | |
TWI499282B (zh) | 緩衝裝置以及用以緩衝多重分割視訊/影像位元流的方法 | |
US8068545B2 (en) | Method and apparatus for processing image data | |
JP4668914B2 (ja) | 画像復号装置 | |
EP4027642A1 (en) | Method for picture segmentation using columns | |
JP4825644B2 (ja) | 画像復号装置、画像符号化装置、およびシステムlsi | |
US9509992B2 (en) | Video image compression/decompression device | |
TWI520582B (zh) | 用以緩衝內容陣列的緩衝裝置、緩衝方法以及熵解碼器 | |
TWI675584B (zh) | 具有多個句法解析電路和/或多個後解碼電路的視訊處理系統 | |
US20110310958A1 (en) | System for entropy decoding of h.264 video for real time hdtv applications | |
RU2265879C2 (ru) | Устройство и способ для извлечения данных из буфера и загрузки их в буфер | |
JP5526641B2 (ja) | メモリコントローラ | |
KR100335441B1 (ko) | 다중 비디오 디코딩 장치 및 그 방법 | |
TWI470575B (zh) | 用於緩衝裝置之讀取指標暫存的方法、緩衝控制器以及緩衝裝置 | |
JP2008294669A (ja) | 画像符号化装置 | |
JP2002112268A (ja) | 圧縮画像データ復号装置 | |
KR101602871B1 (ko) | 데이터 부호화 방법 및 장치와 데이터 복호화 방법 및 장치 | |
WO2010056600A1 (en) | Video coding using virtual reference data | |
WO1996036178A1 (en) | Multiple sequence mpeg decoder and process for controlling same | |
JP2009060536A (ja) | 画像符号化装置、画像符号化方法 | |
KR100821922B1 (ko) | 미디어 디코딩용 국부 메모리 관리 장치 | |
JP5768631B2 (ja) | 動画像処理装置および動画像処理システム | |
JP2011015358A (ja) | 映像復号化装置及び映像復号化方法 |