TW201406162A - 由量化控制改良解碼器效能的方法與系統 - Google Patents

由量化控制改良解碼器效能的方法與系統 Download PDF

Info

Publication number
TW201406162A
TW201406162A TW101148484A TW101148484A TW201406162A TW 201406162 A TW201406162 A TW 201406162A TW 101148484 A TW101148484 A TW 101148484A TW 101148484 A TW101148484 A TW 101148484A TW 201406162 A TW201406162 A TW 201406162A
Authority
TW
Taiwan
Prior art keywords
value
block
data
decoder
run length
Prior art date
Application number
TW101148484A
Other languages
English (en)
Other versions
TWI539793B (zh
Inventor
Xuanming Du
Original Assignee
Omnivision Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omnivision Tech Inc filed Critical Omnivision Tech Inc
Publication of TW201406162A publication Critical patent/TW201406162A/zh
Application granted granted Critical
Publication of TWI539793B publication Critical patent/TWI539793B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本發明揭露一種編解碼器,包括編碼器,具有定義特定區塊的數值(例如,變換係數)的量化位準的量化位準產生器、根據區塊-特定的量化位準量化該區塊的變換係數的量化器、行程編碼器、以及熵編碼器。定義該量化位準以導致具有預定值的至少一預定數量(k)的量化係數。該編碼器的資料壓縮量與k成比例。該編解碼器還包括解碼器,具有熵解碼部分以及行程解碼部分,該兩解碼部分的吞吐量與k成比例。該解碼器利用複數個解碼通道藉由進一步平行解碼係數而取得了這種提高吞吐量的優點。又揭露了編解碼資料的方法。本發明非常適於量化、基於熵及/或行程的編解碼器,例如JPEG。

Description

由量化控制改良解碼器效能的方法與系統
本發明通常涉及資料壓縮,尤其是涉及一種編解碼器(Encoder-Decoder,codec)系統。更特別地,本發明涉及在單一編碼器的編解碼器系統中提高解碼器的性能。
近年來對高清(HD)媒體(例如,視頻、靜止影像等)的需求已經顯著增長。結果,對媒體裝置(例如,照相機、行動電話、平板電腦等)的需求也已經增長。對現代媒體裝置的主要設計目標是確保不間斷的媒體吞吐量(throughput)。
編解碼器用於媒體裝置中,以便藉由對所述媒體進行編碼而提高資料壓縮以及吞吐量。在編解碼器中,編碼器接收媒體資料並將其編碼成壓縮資料流。該壓縮資料流最終被發送到解碼器,該解碼器解碼該壓縮資料並將其提供在輸出。不幸的是,解碼器常常在資料流中產生瓶頸(bottleneck),當解碼器的資料輸出速率不足以以一種期望的方式(例如,以期望的圖框速率、以期望的解析度等)播放該媒體或者造成資料丟失時,這是有問題的。
採用行程(Run-Length)與熵(Entropy)編解碼技術(例如,JPEG、MPEG等)的編解碼器特別容易使解碼器瓶頸,因為來自該編碼器的壓縮資料流的內容是不可預知的。該不可預知性造成解碼過程花費太長時間和影像資料丟失,及/或迫使媒體裝置運行太緩慢。該不可預知性還把先前技術的解碼器限制於單個解碼通道。
因此,需要的是一種在編解碼器系統中提高解碼器性能的系統及方法。還需要的是一種在初始編碼過程中控制資料壓縮及解碼器性能的系統及方法。還需要的是一種在解碼過程中極大地減小或消除瓶頸的系統及方 法。
本發明通過提供一種編碼器和解碼器系統克服了現有技術中的問題,該編碼器和解碼器系統通過在編碼期間控制每一個區塊的資料的量化過程來提高資料壓縮和解碼器性能。作為編碼過程的一部分,量化每一個區塊的資料,本發明有利於產生量化區塊,該區塊包括至少一預定數量(或百分比)之具有一預定值(例如,值為0)的量化係數。此外,雖然解碼器接收單一壓縮資料流作為輸入,該解碼器能夠平行解碼與兩個或更多個係數相關的資料。通過在熵和行程解碼過程中增加的吞吐量而易於平行解碼,因為該吞吐量通過量化過程來控制。也公開了一種改善的行程解碼系統和方法。
根據本發明中的編碼器包括:一輸入,接收一區塊的數值(例如,來自變換單元的一區塊的變換係數);一量化位準產生器,定義該區塊的變換係數的量化位準;以及一量化器,基於量化位準量化該區塊的變換係數,以產生一區塊的量化係數。定義該量化位準以使至少一預定數量(k)(例如,大於或等於一半,等)的量化係數在量化之後具有一預定值(例如,值為0)。該量化器通過將每一個變換係數劃分為量化位準和與變換係數相關的量化資料而部分量化該區塊的變換係數。當編碼器很適合於JPEG應用時,量化位準產生器和量化器可以以任意編碼器實施,其中需要一區塊的數值的量化。
根據特定實施例,該量化位準產生器藉由基於量化資料和默認量化位準(例如,值為1)初始地量化該區塊的變換係數來確定量化位準,以產生測試區塊的量化係數。如果該測試區塊包括至少該預定數量之具有0值(預定值)的係數,然後默認量化位準被用作為該區塊的量化位準。如果該測試區塊的量化係數不包括足夠的0值,然後例如藉由識別該測試區塊中第k個最小量化係數並且將新量化位準設定為大於兩倍的該第k個最小量化係數的值的數值來確定新量化位準。在特定實施例中,該量化器通過進一步將該測試區塊量化為新量化位準而完成量化。編碼器也可以包括一量化位準輸出,輸出量化位準例如至先進先出記憶體。
在另一特定實施例中,該編碼器進一步包括一離散餘弦變換單元,以產生該區塊的變換係數;一“之”字型單元,執行“之”字型操作,以在複數個量化係數的線性資料流中排列該區塊的量化係數;一行程編碼器,將複數個量化係數編碼為行程編碼資料;以及一熵編碼器,熵編碼該行程編碼資料。該編碼器例如可以為JPEG或MPEG編碼器。可以進一步選擇該預定數量(k),以控制該解碼器的輸入資料及/或吞吐量的壓縮數量。
根據本發明中的解碼器包括:一輸入,接收包含有與一系列區塊的資料相關的行程編碼資料如影像的一區塊的影像資料的行程編碼資料流;一行程解碼器,將與連續區塊相關的行程編碼資料解碼為連續複數個數值(例如,量化係數);以及平行操作的複數個解碼通道。每一個解碼通道可以將複數個係數解碼為一區塊的解碼影像資料。該連續複數個係數被依序地提供至不同的解碼通道,以使兩個或更多個係數通過其各自解碼通道至少部分地平行解碼。例如,第二複數個係數可以通過第二解碼通道至少部分地解碼,同時第一複數個係數正在通過第一解碼通道解碼。該解碼器也可以包括一熵解碼器,接收熵編碼資料流並且產生行程編碼資料流,例如在JPEG實施。
根據特定實施例,複數個係數為複數個量化係數,每一個解碼通道包括一量化位準輸入,接收與正在解碼之複數個量化係數相關的量化位準。每一個解碼通道也包括一解量化器,根據經由該量化位準輸入接收的相關量化位準解量化該複數個量化係數(例如,產生一區塊的變換係數)。根據一實施例,該複數個解碼通道自一先進先出記憶體順序地讀取量化位準。每一個解碼通道也可以包括一逆“之”字型單元,對該複數個量化係數執行逆“之”字型過程,以產生一區塊的量化係數;以及一逆離散餘弦變換單元,對該區塊的變換係數執行逆離散餘弦變換,以產生一區塊的解碼影像資料。
如上所述,該解碼器的行程和熵解碼器部分以足夠速率操作,以使至少兩個解碼通道平行操作。尤其是,該熵和行程解碼器部分以一速度操作,該速度為與具有一預定值的量化資料中的係數的數量成比例。在解碼期間,該行程解碼器存取一緩衝器,該緩衝器定義複數個連續存取的儲存位置。為了解碼行程編碼資料,該行程解碼器在所有緩衝器的儲存位置中儲存一預定值(例如,0)。然後該行程解碼器基於該行程編碼資料將第一非0 值寫入第一儲存位置(例如,用指標表示),基於該行程編碼資料跳至(例如,移動指標)下一個儲存位置,然後基於該行程編碼資料將下一個非0值寫入第二儲存位置。在特定實施例中,該行程編碼資料包括複數個數值對,其中該等數值對的其中之一表示行程0。該行程解碼器使用每一對中的行程值來確定在緩衝器中有多少個儲存位置在寫入下一個非0值之前跳過。當該行程解碼器包括一指標時,跳過的儲存位置可以藉由增加一加在行程編碼資料中定義的行程值的指標來完成。
還描述了產生編碼資料的方法。根據本發明中編碼資料的方法包括以下步驟:接收一區塊的數值(例如,通過一變換單元產生的一區塊變換係數);定義與該區塊的變換係數相關的量化位準;以及基於該量化位準量化該區塊的變換係數,以產生一區塊的量化係數。定義該量化位準以使至少一預定數量(k)的量化係數具有一預定值(例如,值為0)。根據特定方法,該值(k)為大於或等於該區塊的量化係數中量化係數的數量的一半。也可以定義該值(k)以控制該解碼器的熵解碼部分和行程解碼部分的速度。根據特定方法,可以藉由基於量化資料和默認量化位準(例如,值為1)初始地量化該區塊而部分地確定區塊-特定的量化位準,以產生測試區塊的量化係數,然後確定該測試區塊是否具有至少該預定數量之具有如上所述該預定值的係數。如果沒有,可以為該區塊確定新量化位準,該測試區塊可以通過新量化位準進一步量化。當該編碼方法很適合於JPEG應用時,該量化過程應用於任意編碼方法,其中需要量化一區塊的數值。
還描述了一種解碼編碼資料的方法。該方法包括:接收行程編碼資料流,該資料流包括與一系列區塊的資料如影像的一區塊影像資料相關的行程編碼資料;將與第一區塊的影像資料相關的行程編碼資料行程解碼為第一複數個數值(例如,量化係數);以及利用自平行操作的複數個解碼通道中選擇的第一解碼通道解碼該第一複數個係數。該方法還包括以下步驟:將與第二區塊的影像資料相關的行程編碼資料行程解碼為第二複數個係數;以及使用該複數個解碼通道中的第二解碼通道解碼第二複數個個係數。執行該方法以使解碼第一和第二複數個係數的步驟至少部分地同時出現。根據本發明中的行程解碼方法可以包括以下步驟:如上所述,將一預定值(例如,0)儲存在緩衝器中複數個連續存取的儲存位置的每一個中, 然後使用在該行程編碼資料中的行程值以跳至將寫入非0係數的儲存位置。該行程解碼(還有熵解碼)的速度與具有該預定值的係數的數量成比例。
100‧‧‧編解碼器
102‧‧‧主機
104‧‧‧編碼器
106‧‧‧解碼器
108、114、302、710‧‧‧輸入
110、116(1)~116(n)、712(1)~712(n)‧‧‧輸出
112‧‧‧壓縮資料路徑
113‧‧‧壓縮資料記憶體
118‧‧‧區塊量化位準路徑
120‧‧‧速度控制輸入
202‧‧‧離散餘弦變換單元
204‧‧‧量化位準產生及量化單元
208‧‧‧“之”字型排序單元
210‧‧‧行程編碼器
212‧‧‧熵編碼器
214‧‧‧區塊準備單元
216‧‧‧區塊量化位準記憶體
220‧‧‧時序控制單元
222‧‧‧時序控制路徑
304‧‧‧初始量化單元
306‧‧‧量化驗證及量化位準產生單元
308‧‧‧輔助量化單元
310‧‧‧默認量化位準記憶體
312‧‧‧量化資料記憶體
314‧‧‧量化係數輸出
316‧‧‧區塊量化位準輸出
400A、400B、400C、400D‧‧‧量化係數的示例性區塊
500‧‧‧資料流程圖
602‧‧‧熵解碼器
604‧‧‧行程解碼器
606(1)~606(n)‧‧‧解碼通道
608(1)~608(n)‧‧‧反“之”字型排序單元
610(1)~610(n)‧‧‧反量化器
612(1)~612(n)‧‧‧反離散餘弦變換單元
614‧‧‧資料重組單元
702‧‧‧控制單元
704‧‧‧係數緩衝器
706‧‧‧指標
708‧‧‧輸出通道管理器
714‧‧‧係數路徑
716‧‧‧指標控制路徑
718‧‧‧重置路徑
720‧‧‧輸出控制路徑
722‧‧‧路徑
802(0)~802(12)‧‧‧行
804、806、808、810‧‧‧列
800‧‧‧表
812(0)、812(63)‧‧‧儲存位置
900‧‧‧電腦系統
902‧‧‧處理單元
904‧‧‧非揮發性記憶體
906‧‧‧使用者輸入/輸出控制器
908‧‧‧網路介面
910‧‧‧工作記憶體
912‧‧‧系統匯流排
914‧‧‧操作系統
916‧‧‧媒體編程
918‧‧‧編碼器程式
920‧‧‧量化位準緩衝器
922‧‧‧解碼器程式
924‧‧‧量化係數緩衝器
1000、1200‧‧‧方法
1002、1004、1006、1008、1010‧‧‧步驟
1102、1104、1106、1108、1110、1112‧‧‧步驟
1202、1204、1206、1208、1210‧‧‧步驟
1302、1304、1306、1308、1310‧‧‧步驟
參考所附圖式描述本發明,其中相似的元件符號實質上表示類似的元件:第1圖為顯示依據本發明之編解碼器系統實施例的方塊圖;第2圖為更詳細地顯示第1圖的編碼器的方塊圖;第3圖為更詳細地顯示第2圖的量化位準產生器與量化單元的方塊圖;第4A圖顯示至少包含32個具有預定值的係數的量化係數示例性區塊;第4B圖顯示至少包含43個具有預定值的係數的量化係數示例性區塊;第4C圖顯示至少包含48個具有預定值的係數的量化係數示例性區塊;第4D圖顯示至少包含52個具有預定值的係數的量化係數示例性區塊;第5圖為第2圖的編碼器所採用之編碼過程的資料流程圖;第6圖為更詳細地顯示第1圖的解碼器的方塊圖;第7圖為更詳細地顯示第6圖的解碼器的行程解碼器部分的方塊圖;第8A圖為顯示第4D圖的區塊的行程編碼資料以及與第7圖的行程解碼器有關之相關行程解碼參數的表800;第8B圖更詳細地顯示第7圖的量化係數緩衝區;第9圖為電腦系統900的方塊圖,該圖顯示了以軟體實施之本發明的編碼器及/或解碼器;第10圖為概括依據本發明的編碼資料的方法的流程圖;第11圖為概括用於執行第10圖的方法之第三步驟的特定方法的流程圖;第12圖為概括依據本發明用於解碼編碼資料流的方法的流程圖;以及第13圖為概括用於執行第12圖的方法之第二步驟及/或第四步驟的方法的流程圖。
本發明藉由提供一種編解碼器系統而克服了與先前技術相關的問題,該編解碼器系統藉由控制在編碼過程中對每個資料區塊(block of data)的量化過程提高了資料壓縮與解碼器的性能。作為編碼過程的一部分,量化每個資料區塊,使得被量化的區塊包含至少一預定數量(或百分比)的量化係數,所述量化係數具有一預定值。此外,由於被控制的量化過程促進快速的熵及行程解碼,以及解碼器平行解碼被編碼的資料,因此提高了解碼器的速度。在以下描述中,為了提供本發明的徹底理解,闡明了許多具體的細節(例如,解碼器速度控制的輸入、產生區塊-特定(block-specific)的量化位準的方法等)。然而,本領域技術人員將意識到本發明可以脫離這些具體的細節實踐。在其他例子中,已知的編解碼技術與元件的細節已經被省略,不是為了不必要地模糊本發明。
第1圖為顯示依據本發明的編解碼器100的方塊圖,其整合在主機102中。正如下面將要更詳細描述,編解碼器100將資料編碼成壓縮資料以及將壓縮資料解碼成解碼資料。主機102為從資料壓縮中獲益的某個設備(例如,顯示器驅動器、媒體處理器、影像感應器等)。在本實施例中,主機102為一積體電路,編解碼器100實施在積體電路中。然而,編解碼器100還可以軟體、韌體等來實現,並且編解碼器100的不同部分(例如,編碼器部分與解碼器部分)還可分開實現。
編解碼器100包括編碼器104以及解碼器106。編碼器104在其輸入108接收未經編碼的資料、編碼該資料以及在其輸出110輸出壓縮資料流。該壓縮資料流經壓縮資料路徑112提供至壓縮資料記憶體113,並從壓縮資料記憶體113提供至解碼器106的輸入114。解碼器106在其輸入114接收該壓縮資料流、利用複數個解碼通道(參見第2圖)解碼該壓縮資料以及通過複數個輸出116(1)至116(n)輸出解碼資料。因為解碼器106能夠利用其複數個解碼通道平行解碼該壓縮資料,因此相對於先前技術,解碼器106有利地提高了解碼過程的速度。
壓縮資料記憶體113為記憶體(例如,圖框緩衝器等),該記憶體整合在編解碼器100及/或主機102中。壓縮資料記憶體113還可以為主機102外部的記憶體,例如揮發性記憶體(例如,RAM)或者非揮發性記憶體(例如,快閃記憶體等)。因為直接在編碼器104與解碼器106之間傳輸壓縮資 料是可取的,因此可選擇使用壓縮資料記憶體113。
在本實施例中,編解碼器100為JPEG編解碼器,其將以此被描述。然而,正如下面將要描述的,本發明適合任何利用量化、行程及/或熵編碼及/或解碼技術的編解碼器。在本實施例中,編碼器104編碼一串8×8影像資料區塊,其中每個區塊包括與64個影像像素有關的資料。作為其編碼過程的一部分,編碼器104為每個區塊定義一個特定的量化位準,並根據該被定義的量化位準(及其他量化資料)量化每個區塊。編碼器104還通過區塊量化位準路徑118將一串量化位準輸出至解碼器106,其中每個量化位準與經JPEG編碼的特定資料區塊相關。解碼器106在解碼過程中接收區塊-特定的量化位準,並利用這些區塊-特定的量化位準反量化相關的資料區塊。
第1圖還顯示了編解碼器100回應從例如主機102的速度控制輸入120接收的速度控制訊號。施加到速度控制輸入120的該速度控制訊號被提供至編碼器104,並選擇性地提供至解碼器106。正如下面將要更詳細描述的,該速度控制訊號可用來控制編碼器104中的量化過程,因此除了控制解碼器106的輸出速率以外還控制資料壓縮量。可選擇地,該速度控制訊號還可提供至解碼器106,以便促進其他的功能,如下文中所描述的。
第2圖為更詳細地顯示編解碼器100的編碼器104的方塊圖。在所示的JPEG實施例中,編碼器104包括離散餘弦變換(Discrete Cosine Transform,DCT)單元202,量化位準產生及量化(Q-Level Generation and Quantization,QLGQ)單元204、“之”字型排序(zig-zag)單元208、行程編碼器210以及熵編碼器212。第2圖除了壓縮資料記憶體113以外,還顯示了區塊準備單元214、區塊量化位準記憶體216以及時序控制單元220。
編碼器104在其輸入108從區塊準備單元214接收一串8×8影像資料區塊。區塊準備單元214被顯示為主機102的一個元件,但是其也可以併入編碼器104中。區塊準備單元214將來自主機102的影像資料格式化成與JPEG編碼器104相容的影像資料區塊。例如,區塊準備單元214可將影像資料從一個色彩空間(例如,紅色、綠色、藍色(RGB)等)轉換成另一個色彩空間(例如,YUV、YCbCr等)。區塊準備單元214將不同色彩空間的組成(例如,Y、Cb以及Cr等)分成不同影像資料流,每個影像資料流包含不同色彩空間組成的其中之一的資料,除此之外,區塊準備單元214 為了編碼的目的,還可將一個影像資料圖框分成複數個影像資料區塊。
提供至編碼器104的每個影像資料區塊經過下面的編碼過程。首先,DCT單元202在該區塊上執行DCT,藉此在頻域中該區塊被變換成64個變換係數的區塊。作為本領域已知的,每區塊的DCT係數包括一DC分量係數以及63個AC分量係數。
然後,DCT係數的區塊被提供至QLGQ單元204,該QLGQ單元204確定該等DCT係數的區塊的量化位準。該區塊的量化位準是基於量化資料、期望的資料壓縮量及/或期望的解碼器106的輸出速率。具體地,該量化位準被定義成使得在完成量化之後,DCT係數的區塊將產生一量化係數區塊,其中預定數量(k)的量化係數具有一預定值。在本實施例中,該預定值為0。換句話說,QLGQ單元204提供了一個用來定義區塊-特定的量化位準使得在完成量化後該區塊中至少一預定數量的量化係數將具有該預定值的方法。
QLGQ單元204將每個區塊-特定的量化位準輸出至區塊量化位準記憶體216。在本實施例中,區塊量化位準記憶體216為先進先出(First In First Out,FIFO)記憶體,該記憶體確保量化位準以編碼器104產生它們的順序提供至該解碼器106。因此,區塊量化位準記憶體216確保在解碼過程中量化位準與解碼器106中它們的相關區塊匹配。雖然本發明人利用FIFO作為區塊量化位準記憶體216已經獲得了很好的成功,但是在某種程度上由於其實施的簡單,只要在解碼過程中所述區塊-特定的量化位準能夠與相應的資料匹配,其他類型的記憶體(例如,可定址記憶體等)也可以同本發明使用。
QLGQ單元204還基於預定的量化資料(例如,8×8的表的量化值、所有DCT係數的一固定量化值等)以及所述區塊-特定的量化位準來量化每個DCT係數,以產生量化係數區塊,第3圖將更加詳細地描述。
一旦資料區塊被量化,QLGQ單元204就將量化係數區塊提供至“之”字型排序單元208。該“之”字型排序單元208接收量化係數的8×8的區塊,並對該區塊執行“之字型排序”操作。所述“之字型排序”操作藉由“之字型排序”將該量化係數區塊沿著該區塊的對角線排列成一線性序列。然後該線性序列被輸出至行程編碼器210。
行程編碼器210從“之”字型排序單元208接收量化係數的該線性序列,並且將該線性序列編碼成行程編碼(RLE)資料。行程編碼是資料壓縮的一種形式,其中具有相同值(例如,0)的資料行程(runs of data)儲存為一個計數。行程編碼的特定方法儲存作為RLE資料的區塊中的複數個量化係數,該RLE資料包括複數對值,每對值中具有定義0的行程的第一值以及指示下一個非0量化係數的第二值。該RLE資料還可包括區塊結束代碼,該區塊結束代碼指示與該區塊關聯之所有剩餘的量化係數為0。一旦產生該RLE資料,則該RLE資料就被輸出至熵編碼器212。
熵編碼器212接收該RLE資料,並對其執行熵編碼處理,藉此利用較短代碼編碼頻繁出現的RLE資料,而利用較長代碼編碼不頻繁出現的RLE資料。一類型的熵編碼被稱為哈弗曼編碼。一旦該RLE資料被熵編碼,那麼熵編碼器212就輸出編碼資料作為壓縮資料流。如上述所表明的,該壓縮資料流在提供至解碼器106之前可儲存於壓縮資料記憶體113中。
第2圖還顯示了時序控制單元220,該時序控制單元220通過一條或多條時序控制路徑222將時序(例如,時脈等)以及可選擇性提供的其他控制訊號提供至編碼器104、區塊量化位準記憶體216、壓縮資料記憶體113以及區塊準備單元214。可選擇地,時序控制單元220為主機102的元件。由時序控制單元220提供的該時序以及其他控制訊號(例如,時脈脈衝、致能訊號、重置訊號等)能夠使編碼器104執行其預期的功能以及在適當的時間移動通過編碼器104的資料。
第3圖為更詳細地顯示編碼器104的QLGQ單元204(第2圖)的方塊圖。QLGQ 204包括輸入302、初始量化單元304、量化驗證及量化位準產生(Quantization Verification and Q-Level Generation,QVQG)單元306、輔助量化單元308、儲存至少一個默認(default)量化位準的默認量化位準記憶體310、儲存量化資料的量化資料記憶體312、量化係數輸出314以及區塊量化位準輸出316。此外,QVQG單元306係被耦合以通過速度控制輸入120接受速度控制訊號。在本實施例中,所述量化資料包括一個8×8的表的量化值,其中每個量化值用來量化該區塊中相應的DCT係數。另外在本發明的實施例中,該默認量化位準為每區塊的值1,其提供了如下面所述的特別優點。
耦合初始量化單元304,以通過其輸入302接收區塊DCT係數、從量化資料記憶體312接收量化資料以及從默認量化位準記憶體310接收默認量化位準。回應這些輸入,初始量化單元304根據該量化資料以及該默認量化位準量化該區塊變換係數,以產生量化係數的試驗區塊。初始量化單元304根據下列公式量化該區塊中的每個DCT係數Ti=round((DCTi)/(qi * Default_Q-level)),
其中Ti表示該試驗區塊中產生的量化係數的值,DCTi表示被量化的DCT係數的值,qi表示用來量化相應DCT係數的量化值,Default_Q_level表示默認量化位準,以及round為進位函數,該進位函數將一小數點值四捨五入成最接近的整數。當初始量化單元304結束量化該區塊DCT係數時,單元304將該量化係數的試驗區塊輸出至QVQG單元306。
應該注意的是,初始量化單元304所使用的該量化資料可以週期性改變(例如,每圖框一次、根據來自主機102的指令、根據影像資料等等)。例如,量化資料記憶體312可包括多個根據事件而選擇使用的量化表,及/或,量化資料記憶體312中的該量化資料可以根據需要以不同的量化資料重新寫入。因此,改變量化過程中所使用的該量化資料在本發明的範圍內。同樣地,週期性改變量化過程中所使用的該默認量化位準的值也在本發明的範圍內。
QVQG單元306從初始量化單元304接收該量化係數的試驗區塊、通過輸入120接收該速度控制訊號以及從默認量化位準記憶體310接收該默認量化位準。然後,QVQG單元306確定該試驗區塊是否至少具有一預定量(k)之具有0值的量化係數。在一特定實施例中,QVQG單元306確定在該試驗區塊中的第k個最小量化係數。如果該試驗區塊中的第k個最小量化係數等於0,那麼該默認量化位準足以確保資料將被充分壓縮以及解碼器106將在期望的速度下操作。在這種情況下,QVQG單元306檢索該默認量化位準,並且將其通過輸出316輸出至區塊量化位準記憶體216,作為區塊-特定的量化位準。
然而,如果該試驗區塊沒有包含k個具有0值的係數,那麼QVQG單元306為該區塊產生新的量化位準。繼續之前的例子,如果該試驗區塊中的第k個最小量化係數不等於0,那麼QVQG模組306為該試驗區塊確定 一新的量化位準,該試驗區塊將產生至少k個具有0值的量化係數。例如,該試驗區塊的新的量化位準(New_Q-level)可如下計算得出:New_Q-level=(2*Tk)+1,
其中Tk表示該試驗區塊中的第k個最小量化係數的值。一旦產生該新的量化位準,則QVQG模組在輸出316輸出該新的量化位準,作為區塊-特定的量化位準。
發明人已發現,對於JPEG編解碼器,可利用下述之區塊-特定的量化位準產生過程以多位元資料來表示量化位準。然而,可根據期望採用產生或表示該區塊-特定的量化位準的其他方法。
QVQG單元306所使用之用來確定區塊的量化位準的k的值可由主機102通過在速度控制輸入120提供的一訊號來控制。例如,第一速度控制訊號可設定k為32(例如,至少該區塊中的所述量化係數的一半(32/64)為0),而隨後的速度控制訊號可設定k為43(例如,至少該區塊中的所述量化係數的三分之二(43/64)為0)。因為k的值有很多種可能,因此該速度控制訊號可為一多位元訊號,該多位元訊號獨特地確認QVQG單元306所使用之不同的k值。並且,該速度控制輸入120允許資料壓縮量以及解碼器的速度是可動態調整的。
控制預定數量k就控制了資料壓縮量以及該解碼器106的速度,因為資料壓縮量以及解碼器106的熵解碼部分與行程解碼部分的吞吐量與k值成比例。因此,當k值較小時(少量0係數),該量化係數區塊將具有大量非0值(少量資料壓縮),並且熵解碼過程與行程解碼過程將花費較長時間。相反,當k值較大時(大量0係數以及大量資料壓縮),該量化係數區塊將具有少量非0值,並且熵解碼過程與行程解碼過程將更短。因為熵解碼部分與行程解碼部分的吞吐量能夠可預見地增進,因此本發明還使平行解碼成為可能。
隨著量化驗證與量化位準的產生,輔助量化單元308從QVQG單元306接收該試驗區塊與該區塊-特定的量化位準,並利用該區塊-特定的量化位準對該試驗區塊執行第二次量化過程。輔助量化單元308如下式量化該試驗區塊中的每個係數Qi=round(Ti/Block_Q-level),
其中Qi表示在所產生的量化係數區塊中的量化係數的值,Block_Q-level表示由QVQG單元306在區塊量化位準輸出316輸出的區塊-特定的量化位準。輔助量化單元308對該試驗區塊中每個係數執行輔助量化,並且在量化係數輸出314輸出產生的量化係數區塊。
在一選擇性實施例中,輔助量化單元308還可接收該默認量化位準,並將其與由QVQG單元306輸出的該區塊-特定的量化位準進行比較。在由QVQG單元306輸出的量化位準與該默認量化位準相同的情況下,然後輔助量化單元308可藉由將該量化係數的試驗區塊直接輸出至“之”字型排序單元208而放棄輔助量化過程。這樣做將節省與該輔助量化過程相關的週期並加速編碼。作為另一種選擇,初始量化單元304與輔助量化單元308可組合成一個單個量化器,以促進初始量化單元304與輔助量化單元308之各自的功能。
如上述所表明的,設定該默認量化位準的值為1提供了特別的優點。例如,當產生新的量化位準時,默認量化位準1能夠使同樣的新的量化位準值既輸出至區塊量化位準記憶體216,又輸出至該輔助量化過程308。然而,如果該默認量化位準大於1,且產生了新的量化位準,那麼不同的值將被提供至輔助量化單元308與區塊量化位準記憶體216。例如,由於該試驗區塊根據該默認量化位準被初始量化,因此輔助量化單元308將只需要新的量化位準值來完成該試驗區塊的量化。然而,默認量化位準與新的量化位準的乘積將在該解碼器106的反量化過程中需要,因此該乘積將在區塊量化位準輸出316輸出,以儲存到區塊量化位準記憶體216中。因此,在該默認量化位準大於1的情況下,QVQG單元306可包括兩個輸出:一個將新的量化位準提供至輔助量化單元308,另一個通過輸出316將默認量化位準與新的量化位準的乘積提供至區塊量化位準記憶體216。因此,設定該默認量化位準為1簡化了QLGQ單元204的操作,並且減小了系統複雜度。
描述上述實施例與處理,從而給出了QLGQ單元204操作的徹底理解。然而,在仍就保護QLGQ單元204的主要功能的同時,對QLGQ單元204的修改是可能的。那些主要功能包括(1)為每個資料區塊產生區塊-特定的量化位準,使得隨著量化,被量化的區塊將至少具有k個預定值的係數,以及(2)根據該區塊-特定的量化位準來量化每個資料區塊。作為一個示例, 其他的QLGQ單元204可首先利用默認量化位準以及量化資料將區塊DCT係數量化成試驗區塊,然後分析該試驗區塊。如果該試驗區塊沒有包含至少k個具有該預定值的係數,那麼將確定新的量化位準(例如,藉由上文描述的過程或某個其他過程)。然後,該其他的QLGQ單元204可利用該新的量化位準以及該量化資料再量化該區塊DCT係數,以產生最終的量化係數區塊。然後,該其他QLGQ單元204可將該默認量化位準或者該新的量化位準作為該區塊-特定的量化位準輸出。作為另一個示例,QLGQ單元204的不同模組(例如,該初始量化單元、輔助量化單元以及該QVQG單元)可被分成分開的單元、可被組合等等。作為再另一個示例,QLGQ單元204可用於在任何採用量化的編碼器中量化任意區塊值,而不只是在量化變換係數的編碼器中。實際上,這些和對QLGQ單元204的其他修改都是可能的。
如上面討論的,不管該量化位準是對應默認量化位準記憶體310中的該默認量化位準還是對應不同的量化位準,QLGQ單元204都輸出被編碼的影像資料之每個區塊的區塊-特定量化位準。雖然只輸出非默認量化位準到區塊量化位準記憶體216將是可能的,但是本發明人已經發現這樣做增進了複雜度。例如,如果該默認量化位準被用來編碼一個區塊,而不是被輸出至該解碼器106,那麼編解碼器100將需要某些手段(例如,與一個區塊以及一個量化位準相關的唯一識別字等),使特定的區塊與解碼器106中的該區塊-特定的各個量化位準相關聯。
利用區塊-特定的量化位準控制每量化係數區塊中0的數量提供了重要的優點。首先,控制每組中0的數量就控制了該組(以及進而完整的影像)所經歷的資料壓縮量。因此,可以選擇該k值,以便確保影像被充分壓縮至其能夠被儲存到一個具有預定大小的緩衝器(例如,圖框緩衝器)。因而,壓縮資料記憶體113可以做的更小,這樣節省了電路空間以及成本。
在解碼過程開始之前,控制每個區塊的資料壓縮量還將該編碼器所輸出的位元速率維持在一個期望的範圍內。因此,該解碼器106不會變得超負荷,影像資料不會丟失,並且不必調整編碼過程以回應不充分的解碼器吞吐量。
依據本發明的控制量化過程的再另一個優點是其允許編碼器104控制 解碼器106的速度。因為該解碼器的速度與k成比例,所以編碼器104可藉由調整k來動態增進或減少解碼器106的吞吐量。例如,編碼器104為了高吞吐量可增進k,以便在短時間內產生許多縮略(thumbnail)影像。相反地,當解碼影像品質更重要時,編碼器104為了低吞吐量可減小k。
第4A圖至第4D圖顯示了可由QLGQ單元204根據不同k值產生的量化係數的示例性區塊400A至400D。
第4A圖顯示對於k至少等於32的情況量化係數的示例性區塊400A。如此,區塊400A包含至少32個為0的係數以及至多32個為非0的係數(在第4A圖中用“x”注記)。因此,區塊400A利用隨著量化而產生至少32個0的量化位準而產生。正如下面將要更詳細描述的,因為區塊400A中至多一半係數不為0,所以解碼器106提供改進的熵及行程解碼。因此,解碼器106的熵解碼部分及行程解碼部分將以大約是兩倍快於區塊400A中的每個量化係數都為非0時的速度解碼與區塊400A相關聯的資料。因此,該k的值導致大約是區塊400A中的每個量化係數都為非0時兩倍的資料壓縮。
第4B圖顯示對於k至少等於43的情況量化係數的示例性區塊400B。如此,區塊400B包含至少43個為0的係數以及至多21個為非0的係數(在第4B圖中用“x”注記)。因此,區塊400B利用隨著量化而產生至少43個0的量化位準而產生。因為區塊400B中大約三分之一的值不為0,因此解碼器106的熵解碼部分與行程解碼部分將以大約是三倍快於區塊400B中的每個量化係數都為非0時的速度解碼與區塊400B相關聯的資料。因此,該k的值導致大約是區塊400B中的每個量化係數都為非0時三倍的資料壓縮。
第4C圖顯示對於k至少等於48的情況量化係數的示例性區塊400C。如此,區塊400C包含至少48個為0的係數以及至多16個非0係數(在第4C圖中用“x”注記)。因此,區塊400C利用隨著量化而產生至少48個0的量化位準而產生。因為區塊400C中至多四分之一的值可具有非0值,因此解碼器106的熵解碼部分與行程解碼部分將以大約是四倍快於區塊400C中的每個量化係數都為非0時的速度解碼與區塊400C相關聯的資料。因為區塊400C具有是區塊400A一半數量的非0值,因此該熵解碼部分與行程解碼部分還將以大約是區塊400A兩倍快的速度解碼區塊400C。另外,該k的值導致大約是區塊400C中的每個量化係數都為非0時四倍的資料壓縮。
第4D圖顯示對於k至少等於52的情況量化係數的示例性區塊400D。如此,區塊400D包含至少52個0係數以及至多12個非0係數(在第4D圖中表示為“x0至x11”)。因此,區塊400D利用隨著量化而產生至少52個0的量化位準而產生。因為區塊400D中大約五分之一的值可具有非0值,因此解碼器106的熵解碼部分與行程解碼部分將以大約是五倍快於區塊400D中的每個量化係數都為非0時的速度解碼與區塊400D相關聯的資料。另外,該k的值導致大約是區塊400D中的每個量化係數都為非0時五倍的資料壓縮。
概括地說,第4A圖至第4D圖顯示了如何藉由增進在量化過程中產生的0係數的數量,即,藉由增進k的值,來提高該解碼器106的速度。第4A圖至第4D圖進一步說明了編碼器104的資料壓縮量與該k值成比例。雖然在第4A圖至第4D圖中說明了對於k的特定值,但是可以根據期望的資料壓縮量及/或解碼器速度來決定採用任何k值。例如,可以選擇產生大約1.5倍的資料壓縮與解碼器吞吐量的k值。
雖然增進k的值具有提高解碼器106速度的優點,但是增進k的值還具有越來越高的k值將逐漸降低解碼影像品質的缺點。正如本領域技術人員將瞭解的,量化是一個有損的資料壓縮過程。因此,由於更多的係數被量化為0,所以較高的k值將造成更多影像資料丟失。由此,當選擇k值時,還應當考慮到期望的解碼影像資料的品質。
如果一個應用需要高解碼影像品質與高解碼速度,那麼可以在主機102中實現編解碼器100的多次迭代(iteration)。更進一步地,因為每個壓縮資料流將與具有n個解碼通道的解碼器106關聯,因此在最小化其他被集成在主機102中的電路數量的同時,提高了吞吐量。
現在,將用第4D圖作為示例來更詳細地描述“之”字型排序、行程編碼以及熵編碼過程。特別是,當“之”字型排序單元208接收量化係數區塊時,“之”字型排序單元208以線性方式按照如第4D圖箭頭所示沿著該區塊的對角線排列該量化係數區塊。在區塊400D的具體情況中,“之”字型排序單元208將輸出如下量化係數的序列:x0,x1,x2,0,x3,x4,0,x5,x6,x7,x8,x9,0,0,0,x10,0,x11,0,0,...0。
然後,該量化係數的序列將被提供至行程編碼器210,並經行程編碼。 依據該特定實施例,行程編碼器210編碼該量化係數,並且將如下行程編碼資料輸出至熵編碼器212:(0,x0) (0,x1) (0,x2) (1,x3) (0,x4) (1,x5) (0,x6) (0,x7) (0,x8) (0,x9) (3,x10) (1,x11) (E.O.B.)。
每對RLE資料值包含第一值以及第二值,該第一值由先前的非0量化係數或者由對於該區塊係數的起點,定義0的行程。該第二值定義下一個非0量化係數。例如,由於在非0係數x0與x1之間沒有0(按照“之”字型排序處理),因此在x0後面直到x1以及包括x1的係數的RLE資料可以被定義為(0,x1)。同樣,由於在非0係數x9與x10之間有三個0,因此在x9後面直到x10以及包括x10的量化係數的RLE資料可以被表示為(3,x10)。該RLE資料的最後一個元素為區塊結束(End Of Block,E.O.B.)代碼,該區塊結束代碼用來表示該區塊中所有剩餘量化係數均為0。
由行程編碼器210輸出的該RLE資料被提供至熵編碼器212,在熵編碼器212該RLE資料經熵編碼。如上述解釋的,藉由將不同代碼分配給不同資料值,來執行熵編碼。在本實施例中,熵編碼器212接收每對RLE資料,並且(例如,在一個查找表中)查找相關的熵代碼。然後,熵編碼器212在壓縮資料流中輸出該熵代碼,以作為熵編碼資料。
由於k增進將使行程對以及熵代碼的數量減小,因此控制量化過程改善了由編碼器輸出的壓縮資料中的資料壓縮。例如,第4A圖至第4D圖顯 示由於k增進,需要少量行程對來編碼一量化係數區塊。相應地,少量行程對意味著需要少量熵代碼來表示與每個區塊相關的行程資料。因此,本發明相對於先前技術而言改善了資料壓縮。另外,本發明根據k值來控制資料壓縮量。
最後,應當注意的是,可使用不同的“之”字型排序、行程編碼以及熵編碼的方法來代替上面提供的具體示例。
第5圖為關於JPEG編碼過程中流經編碼器104的每個資料區塊的資料流程圖500。如圖所示,由編碼器104接收一個與複數個像素有關的8×8影像資料區塊。然後,對該影像資料區塊執行DCT,以產生一個8×8的DCT係數區塊。然後,該區塊DCT係數經過初始量化過程,所述初始量化過程利用默認量化位準(例如,1值)以及量化資料表將該區塊DCT係數量化成量化係數試驗區塊。然後,該量化係數試驗區塊經過量化位準產生過程,以定義一個具體到該區塊的量化位準,使得隨著量化預定數量(k)的量化係數將有一預定值(例如,0)。然後,該量化係數測試區塊以及該區塊的量化位準轉至輔助量化過程,以產生一區塊至少具有k個0的量化係數。然後,該量化係數區塊經過“之”字型排序過程,產生一個依序的資料流。接著,行程編碼該依序的資料流,以產生RLE資料,再熵編碼該RLE資料,以產生壓縮資料流。然後,該壓縮資料流被輸出至記憶體及/或該解碼器106。
如第5圖所示,被壓縮的編碼資料流包括標頭(header)訊息,該標頭訊息在所述編碼過程中被嵌入到該資料流中。該標頭訊息除了包含所述編碼過程中使用的查找表以外,還包含所述量化過程中使用的該量化資料。另外,可定期以新的訊息來更新該壓縮資料流中的該標頭訊息,例如,每圖框一次。
第6圖為更詳細地顯示編解碼器100的解碼器106的方塊圖。解碼器106進一步包括熵解碼器602、行程解碼器604以及複數個平行操作的解碼通道606(1)至606(n),每個解碼通道連接至輸出116(1)至116(n)中各自的輸出。每個解碼通道606(1)至606(n)包括各自的反“之”字型排序單元608(1)至608(n)、反量化器610(1)至610(n)以及反DCT單元612(1)至612(n)。編解碼器100還包括資料重組單元614,該資料 重組單元可選擇性地與解碼器106整合在一起。
當被編碼的JPEG影像資料需要被解碼時,該被編碼的JPEG影像資料作為一個與一串影像資料區塊相關聯的熵編碼位元流而被提供至該解碼器106的輸入114。熵解碼器602對該熵編碼資料執行反熵處理,以產生與該串影像資料區塊相關聯的RLE資料。
在所述編碼過程中使用的量化控制極大地提高了熵解碼器602的速度,並且消除或者至少極大地減小了在熵解碼器602處的瓶頸。如上述表明的,需要用來表示資料區塊的熵代碼的數量與k成反比。因此,由於k增進,熵解碼器602將極少執行查表。換句話說,熵解碼器602的吞吐量與k成比例,因此由於k增進,吞吐量也增進。
參考第4A圖,由於區塊400A包括至多32個非0量化係數(k32),所以將至多有32個資料行程對(除了該區塊結束代碼之外)。因此,熵解碼器602能夠以大約是其解碼一區塊具有64個非0係數的量化係數時兩倍的速度解碼區塊400A。因為同樣的理由,熵解碼器602能夠以大約是解碼一區塊具有64個非0係數的量化係數時三倍的速度解碼區塊400B(k43)。同樣,熵解碼器602能夠以大約是解碼一區塊具有64個非0係數的量化係數時四倍的速度並且大約是解碼區塊400A時兩倍的速度解碼區塊400C(k48)。熵解碼器602還能夠以大約是解碼一區塊具有64個非0係數的量化係數時五倍的速度解碼區塊400D(k52)。
由於可通過量化控制來提高熵解碼器602的吞吐量,因此解碼器106能夠利用複數個解碼通道606(1)至606(n)平行解碼資料。另外,由於量化過程控制RLE資料量以及產生的熵編碼資料量,因此對熵解碼器602的位元速率還可由k值來控制。因此,熵解碼器602沒有超限運轉,資料沒有丟失,且熵解碼器602沒有變成瓶頸。
由熵解碼器602輸出的該RLE資料接下來被提供至行程解碼器604,行程解碼器604連續解碼該RLE資料,以產生複數個量化係數區塊,其中每量化係數區塊與影像資料區塊相關聯。如上述表明的,行程解碼器604的速度與和具有0值的區塊相關的量化係數的數量成比例。隨著行程解碼,行程解碼器604將每量化係數區塊輸出至解碼器通道606(1)至606(n)的其中之一,以便進一步平行解碼。因此,行程解碼器604是將RLE資料 連續解碼成連續的係數區塊的工具。
行程解碼器604將連續的量化係數區塊按順序輸出至它們各自的解碼通道606(1)至606(n)。例如,行程解碼器604將第一量化係數區塊輸出至解碼通道606(1),然後將第二量化係數區塊輸出至解碼通道606(2),...將第n量化係數區塊輸出至解碼通道606(n)。然而,行程解碼器604的其他輸出方法是可能的。例如,可隨機使用每個解碼通道606(1)至606(n)。作為另一個示例,如果解碼器106不需要所有解碼通道606(1)至606(n)在一期望的速度下操作,那麼行程解碼器604可以只使用解碼通道606(1)至606(n)中的某些解碼通道,而不使用其他的解碼通道。
正如將從以下討論中顯而易見的,解碼通道606(1)至606(n)提供用於平行解碼複數個量化係數區塊的工具。解碼通道606(1)至606(n)的操作如下。
一旦複數個量化係數被提供至解碼通道606(1)至606(n),那麼相關的反“之”字型排序單元608(1)至608(n)就對該資料執行反“之”字型排序處理,以重新產生來自編碼過程的該8×8量化係數區塊。然後,該區塊轉至相關的反量化器610(1)至610(n)。
反量化器610(1)至610(n)反量化該量化係數區塊,以產生區塊DCT係數。在本實施例中,反量化器610(1)至610(n)藉由將量化係數乘以相關量化資料與為區塊-特定定義的量化位準的乘積,來反量化每個量化係數。正如上述表明的,該量化資料嵌入到壓縮資料流的標頭中。因此,反量化器610(1)至610(n)可從該標頭中獲得該量化資料。反量化器610(1)至610(n)還藉由從區塊量化位準記憶體216中讀取下一個值來獲得該區塊-特定的量化位準。由於行程解碼器604以編碼該等區塊的順序解碼與影像資料區塊相關的RLE資料,並將該資料順序地提供至解碼通道606(1)至606(n),因此從區塊量化位準記憶體216檢索的區塊量化位準有利地與經反量化器610(1)至610(n)反量化的該等區塊同步。
隨著反量化,該區塊DCT係數被提供至各個反DCT單元612(1)至612(n)。在那裏,該區塊經過反DCT處理,產生解碼影像資料區塊,該解碼影像資料區塊從該解碼器通過各自的輸出116(1)至116(n)輸出。因為在編碼器104中進行的量化過程是有損失的,所以該解碼影像資料區 塊不是輸入到編碼器106的原始影像資料區塊的準確再生。如上述表明的,解碼影像資料的品質將取決於在編碼過程中使用的k值。
可選擇地,在輸出116(1)至116(n)提供的該解碼影像資料區塊可由資料重組單元614進行重組(例如,重組成影像)。因為行程解碼器604將複數個係數以連續的順序提供至解碼通道606(1)至606(n),所以資料重組單元614以同樣的順序在輸出116(1)至116(n)解多工(de-multiplex)該解碼影像資料區塊。此外,資料重組單元614還可將來自一個色彩空間(例如YUV、YCbCr等)的解碼影像資料轉換到另一個色彩空間(例如,RGB等)。
速度控制輸入120作為一個輸入可選擇性地設置於行程解碼器604與解碼通道606(1)至606(n)的其中之一個或兩個,以促進解碼器106的其他功能。特別是,在速度控制輸入120的訊號可用來去能一個或多個解碼通道606(1)至606(n),例如,達到節約電能。如上述表明的,由於k增進使行程解碼器604提高了其解碼速度,因此操作解碼通道606(1)至606(n)的數量也將隨著k的增進而增進。由於在輸入120的速度控制訊號可與k值相關聯,因此該速度控制訊號還可定義應當在一個給定時序間操作之解碼通道606(1)至606(n)的數量,以防止解碼器106中的瓶頸。通常,應該利用足夠多的解碼器通道606(1)至606(n),以便使行程解碼器604不必不合理地長時間等待將每量化係數區塊輸出至下一個解碼器通道606(1)至606(n)。該速度控制訊號還可提示行程解碼器604的通道606(1)至606(n)當前被去能。
第6圖還顯示時序控制單元220通過一條或多條時序控制路徑222提供時序(例如,時脈等)以及選擇性地提供其他控制訊號到第6圖的元件。像編碼器104一樣,由時序控制單元220提供的訊號使解碼器106能夠執行其預期的功能以及在適當的時間移動通過解碼器106的資料。可選擇地,例如,如果解碼器106與編碼器104不在同一個主機中,那麼解碼器106可包括其自身的時序與控制系統。
解碼器106相對於先前技術而言提供了重要的優點。特別是,解碼器106能夠接收來自單個編碼器的壓縮資料流以及利用複數個平行操作的解碼通道606(1)至606(n)來解碼該位元流。藉由更快速熵解碼器602以 及更快速行程解碼器604來促進平行操作解碼通道606(1)至606(n),該更快速熵解碼器602以及更快速行程解碼器604能夠提供兩個或以上具有充足資料量的解碼通道606(1)至606(n)。因此,解碼器106相對於先前技術提高了吞吐量,這在HD媒體應用中特別重要。而且,由於只有解碼通道606(1)至606(n)以積體電路複製,因此解碼器106需要這樣做最小化其他電路的數量,同時相對於先前技術而言提高了資料吞吐量。
第7圖為更詳細地顯示解碼器106的行程解碼器604的方塊圖。在所顯示的實施例中,行程解碼器604包括控制單元702、係數緩衝器704、指標(pointer)706以及輸出通道管理器708。行程解碼器604還包括輸入710,接收來自熵解碼器602的RLE資料,以及複數個輸出712(1)至712(n),每個輸出用來將係數輸出至各自的解碼通道606(1)至606(n)。
控制單元702控制及協調行程解碼器604的全部解碼以及輸入/輸出(I/O)。控制單元702通過輸入710接收來自熵解碼器602的RLE資料,並執行各種功能。特別是,控制單元702將由該RLE資料定義的非0量化係數通過係數路徑714儲存到係數緩衝器704。藉由斷言(assert)在指標控制路徑716上的訊號,控制單元702還根據該RLE資料對中的行程改變由指標706指向的位置。此外,控制單元702產生重置訊號並通過重置路徑718輸出重置訊號,重置路徑718將該重置訊號提供至係數緩衝器704、指標706以及輸出通道管理器708。控制單元702還藉由斷言在輸出控制路徑720上的輸出致能訊號來協調輸出712(1)至712(n)的資料輸出。當控制單元702知道與一組資料相關聯的RLE資料已經結束解碼時,例如當控制單元702在該RLE資料流中遇到一個區塊結束代碼時,控制單元702將產生輸出致能訊號。每當輸出通道管理器708結束從係數緩衝器704向解碼通道606(1)至606(n)的其中之一輸出複數個係數時,控制單元702還通過路徑722接收輸出完成訊號。
量化係數緩衝器704包括大量可連續取得的緩衝位置,其數量等於資料區塊中係數的數量。對於JPEG而言,因為有64個與每個影像資料區塊相關聯的量化係數,所以係數緩衝器704包括64個儲存位置(第8B圖)。回應重置路徑718上的重置訊號,係數緩衝器704將其每個儲存位置重置成預定值0。然後,當係數緩衝器704在係數路徑714上接收非0係數時, 係數緩衝器704將每個非0係數儲存到由指標706指示的該儲存位置。當係數緩衝器704在輸出控制路徑720上接收來自控制單元702的輸出致能訊號時,係數緩衝器704按儲存位置的順序連續地將其完整內容輸出至輸出通道管理器708。
指標706被操作以選擇性地指向係數緩衝器704中該等儲存位置中的任何一個。重置路徑718接收到重置訊號,指標706就重置其自身指向係數緩衝器704中的第一儲存位置。基於指標控制路徑716上的來自控制單元702的控制訊號,指標706移動,以便指向係數緩衝器704中的一個新的儲存位置。在指標控制路徑716上由控制單元702提供的該控制訊號可為序列的增量訊號,該增量訊號致使指標706移動多個儲存位置,移動的儲存位置的數量等於其接收的增量訊號的數量。或者,控制單元702可提供一跳(jump)訊號到指示關於指標706的多個連續儲存位置的指標706,以便在係數緩衝器704中“跳”過。實際上,控制單元702可以不同方式移動指標706。
輸出通道管理器708選擇性地將係數緩衝器704的內容通過各自的輸出712(1)至712(n)提供至解碼通道606(1)至606(n)的其中之一。回應在輸出控制路徑720上的來自控制單元702的輸出致能訊號,輸出通道管理器708連續地將每個係數從係數緩衝器704輸出至解碼通道606(1)至606(n)的其中之一。當最後一個量化係數已經被輸出時,輸出通道管理器708通過路徑722將一訊號提供至控制單元702,以指示輸出完成。回應重置路徑718上的重置訊號,輸出通道管理器選擇接下來的輸出712(1)至712(n),該接下來的輸出將用來輸出被行程解碼器604解碼的下一組係數。在本實施例中,輸出通道管理器708以特定的順序(例如,按次序的順序)選擇輸出712(1)至712(n)。然而,如上述表明的,輸出通道管理器708可選擇性地回應速度控制訊號120,以便跳過輸出712(1)至712(n)的某幾個。
在本實施例中,在與一區塊相關的RLE資料結束行程解碼以及係數緩衝器704中的係數已經通過輸出712(1)至712(n)被輸出之後,控制單元702產生重置訊號。在當前的實施例中,當係數緩衝器704中的所有係數都已被讀出時,輸出通道管理器708通過路徑722指示控制單元702。此 後,控制單元702在知道其是安全的重置路徑718上產生重置訊號,以便重置係數緩衝器704。
現在根據第8A圖以及第8B圖來描述行程解碼器604的操作,第8A圖以及第8B圖使用了與作為一個示例的第4D圖的區塊400D相關的RLE資料。
第8A圖顯示包含複數行802(0)至802(12)以及複數列804、806、808及810的表800。每行808(0)至802(12)將包含在列804中的RLE資料的各個部分與其他列806、808及810中的訊息關聯起來。列804限定第4D圖的區塊400D的RLE資料,該RLE資料包含行802(0)至802(11)中的對值(pair value)以及行802(12)中的區塊結束(E.O.B.)代碼。
列806中的每個值指示根據相應行802(0)至802(11)中的RLE資料中的遊程訊息的指標706增進了多少個儲存位置。一個指標增進不適用於區塊結束(E.O.B.)代碼,因為其指示所有剩餘係數均為0以及係數緩衝器704的所有儲存位置均已被預載入0。正如從該表中顯而易見的,與行802(0)至802(11)相關聯的列806中的指標增進是基於定義在相應數值對中的行程。在所示的實施例中,藉由多個儲存位置,增進該指標706,該多個儲存位置的數量等於1加上定義在除了第一個RLE數值對以外的其餘相應RLE數值對(即,行802(1)至802(11))中的行程。對於行802(0)中的第一個RLE數值對,該指標藉由數量等於定義在該第一個RLE對中的行程的多個儲存位置來增進該指標。
列808指示係數緩衝器704中的儲存位置,每當指標706藉由列806中的相關數量增進時,這些儲存位置就被指標706漸進地指向。換句話說,顯示在行802(1)至802(11)中的非0係數x0至x11將被寫入列808中指示的係數緩衝器704中的儲存位置。
最終,列810中的每個值指示一個被寫入相關行802的列808中所指示的儲存位置的非0係數。列810中的該非0係數從列804中的RLE資料獲得。需注意的是,在列808與810中沒有適用於行802(12)中的區塊結束代碼的訊息,因為沒有更多的非0係數,並且該指標706不需要進一步移動直到由控制單元702產生重置。
第8B圖更詳細地顯示係數緩衝器704包含64個連續存取的儲存位置 812(0)至812(63)。第8B圖還通過圖表解釋列804中的該RLE資料如何被解碼成區塊400D的複數個量化係數。
首先,回應由控制單元702在重置路徑718上斷言的重置訊號,0被儲存到所有儲存位置812(0)至812(63)。另外,指標706被重置指向係數緩衝器704中的第一儲存位置812(0)。此後,由於在x0之前沒有0(該對中的第一個值是“0”)以及指標706正指向儲存位置812(0),因此控制單元702接收第一RLE資料對(0,x0),並將x0通過係數路徑714寫入儲存位置812(0)。接下來,控制單元702依序處理列804中的行802(1)至802(11)中所示的RLE對值。首先,行802(1)中的RLE資料指示在x0與x1之間沒有0(該對中的第一個值是“0”)以及x1(該對中的第二個值)為下一個非0量化係數。因此,控制單元702藉由通過斷言指標控制路徑716上的控制訊號使1加上行程(在這種情況下的一個位置的增進),來增進指標706。此後,指標706指向儲存位置812(1),並且控制單元702通過係數路徑714將x1寫入儲存位置812(1)。接下來,控制單元702處理行802(2)中顯示的RLE對值。行802(2)中的RLE資料指示在x1與x2之間沒有0(該對中的第一個值是“0”)以及x2(該對中的第二個值)為下一個非0量化係數。因此,控制單元702藉由通過斷言指標控制路徑716上的控制訊號使1加上行程(在這種情況下的一個位置的增進),來增進指標706。此後,指標706指向儲存位置812(2),並且控制單元702通過係數路徑714將x2寫入儲存位置812(2)。對表800的行802(3)至802(9)中剩餘的對值類似地繼續進行該過程。
當控制單元702遇到行802(10)中的RLE資料時,該對值指示在x9與x10之間有三個0(該對中的第一個值是“3”)以及x10(該對中的第二個值)為下一個非0係數。因此,控制單元702藉由通過斷言指標控制路徑716上的控制訊號使1加上行程(在這種情況下的四個位置的增進),來增進指標706。此後,指標706指向儲存位置812(15),並且控制單元702通過係數路徑714將x10寫入儲存位置812(15)。接下來,行802(11)中的RLE資料指示在x10與x11之間有一個0(該對中的第一個值是“1”)以及x11(該對中的第二個值)為下一個非0係數。因此,控制單元702藉由通過斷言指標控制路徑716上的控制訊號使1加上行程(在這種情況下
的兩個位置的增進),來增進指標706。此後,指標706指向儲存位置812(17),並且控制單元702通過係數路徑714將x11寫入儲存位置812(17)。
在接收行802(11)中的RLE資料之後,控制單元702接收區塊結束代碼,該區塊結束代碼指示與影像資料的當前區塊相關聯的所有剩餘量化係數具有0值。當控制單元702達到這個代碼時,其已經結束將RLE資料解碼成複數個與影像資料區塊相關聯的量化係數。控制單元702然後可以繼續進行,致使係數緩衝器704中的64個係數被輸出至輸出通道管理器708,例如藉由斷言輸出控制路徑720上的輸出致能訊號。
在解碼與每個影像資料區塊相關的RLE資料之前把所有0載入到該係數緩衝器704提供特定的優點。具體地,因為所有具有0值的量化係數都被預載入,所以行程解碼器604不需要花費解碼這些係數的時間及資源。反而,恰恰相反,行程解碼器604只利用時間和資源解碼與非0係數相關的RLE資料。正如表800的列804中表明的,區塊400D只包括12個非0係數,這意味著行程解碼器604能夠以大約是其必須分別解碼區塊400D中的64個係數的每一個時五倍的速度解碼區塊400D。換句話說,行程解碼器604具有五倍先前技術之行程解碼器的吞吐量。解碼通道606(1)至606(n)藉由平行完成對資料區塊的解碼處理而取得了行程解碼器604的這種提高的速度的優點。
更進一步地,因為熵解碼器602的吞吐量與行程解碼器604的吞吐量都與k值成比例,所以兩個解碼器602與604的吞吐量隨另一個變化,這還防止它們之間的瓶頸。此外,解碼器106可包括足夠多的解碼通道606(1)至606(n),以便取得這種提高的吞吐量的優點以及防止瓶頸。在一非限制實施例中,解碼通道606(1)至606(n)的數量可由下式來確定:
其中Q表示每個資料區塊中的係數數量,INT是整數函數。
重要的是還應當注意,雖然已經根據JPEG編解碼器描述了本發明,但是行程解碼器604還將提供採用行程解碼的任何解碼器中的重要優點。因為行程解碼器604藉由首先將該預定值載入到緩衝器的所有儲存位置中來同時解碼每個具有一預定值的係數(並非必須是量化係數),所以行程解碼 器604提高RLE資料的解碼速度。結果,只有具有與該預定值不同的值的係數需要被分別解碼並儲存到該緩衝器中。因此,行程解碼器604相對於先前技術的行程解碼器而言,特別是相對於分別解碼每個係數的解碼器而言,提高了行程解碼性能。
由於這些相同的原因,重要的是還應當注意,輸出通道管理器708(第7圖)為可選組件。即使在只具有一個輸出712的行程解碼器604中,行程解碼器604因為上述原因仍然會加速行程解碼過程。實際上,對於任何k值以及即使在缺少複數個平行解碼通道606(1)至606(n)的情況下,行程解碼器604都提供性能優點。
第9圖為電腦系統900的方塊圖,該圖顯示了以例如電子可讀媒體這樣的軟體實施的本發明的編碼器及/或解碼器。電腦系統900包括一個或多個處理單元(CPU)902、非揮發性記憶體904、使用者輸入/輸出控制器906、網路介面908以及工作記憶體910,上述元件都通過系統匯流排912互通。CPU 902執行包含在工作記憶體910中的資料和代碼,以便使電腦系統900進行其預期的功能(例如,影像處理、視頻重播等)。非揮發性記憶體904(例如,唯讀記憶體、一個或多個硬碟驅動、快閃記憶體等)提供資料與代碼(例如,啟動代碼、程式、壓縮影像檔等)的儲存,即使當電腦系統900斷電,上述資料與代碼也被保留下來。使用者輸入/輸出控制器906管理對使用者介面裝置(未顯示)的連接,該使用者介面裝置例如是鍵盤、滑鼠、顯示器、印表機、照相機以及其他有助於電腦系統900與使用者之間通訊的裝置。網路介面908(例如,乙太網介面卡)在互聯網(例如,網際網路)上發送資料封包以及從互聯網接收資料封包,以便使用者可通過互聯網發送與接收資料(例如,影像資料)。系統匯流排912有助於電腦系統900的各種元件之間的互通。
工作記憶體910(例如,隨機存取記憶體)為電腦系統900提供動態儲存,且工作記憶體910包括可執行代碼(例如,操作系統914等),該可執行代碼在系統啟動時被載入到工作記憶體910中。操作系統914有助於載入到工作記憶體910中的其他所有模組的控制與執行。工作記憶體910還包括媒體編程916(例如,影像流覽器、電影播放器等),該媒體編程916利用媒體壓縮(例如,JPEG、MPEG等)來編碼及/或解碼媒體資料。編碼 器程式918代表執行本文之前描述的編碼器104的任何或者所有功能的程式。編碼器程式918利用量化位準緩衝器920來儲存在編碼過程中產生的區塊-特定的量化位準,該量化位準緩衝器920可像FIFO一樣操作。由編碼器程式918產生的壓縮資料可暫時儲存在工作記憶體910中,或者可長期儲存在非揮發性記憶體904中。可選擇地,儲存在緩衝器920中的該量化位準還可以作為壓縮資料檔案的一部分或者作為單獨的檔儲存在非揮發性記憶體904中。工作記憶體910還可包括解碼器程式922,該解碼器程式922可以執行本文描述的解碼器106的任何以及所有功能。工作記憶體910還包括量化係數緩衝器924,該量化係數緩衝器924提供第7圖的係數緩衝器704的功能。
利用本領域技術人員熟知的方法,前述的每個程式及緩衝器都在工作記憶體910中被初始化及/或從非揮發性記憶體904載入到工作記憶體910中。可選擇地,前述的程式及緩衝器可以從可替代的大規模資料儲存裝置載入到工作記憶體910中,該大規模資料儲存裝置包括但不限於CD-ROM、DVD-ROM、快閃記憶體盤等。此外,上述程式的一些或者全部可以根據需要載入到工作記憶體910中。例如,可在不載入編碼器程式918的情況下(例如,對於儲存影像的重播等)執行解碼器程式922。同樣,可在不執行解碼器程式的情況下(例如,對於影像的儲存)執行編碼器程式918。
現在參考第10圖至第13圖來描述本發明的方法。為了解釋清楚的目的,參考之前描述的實施例的特定元件來描述這些方法,這些特定元件實現特定功能。然而,應該注意的是,不管是在本文中明確描述的其他元件還是根據本公開而創造的其他元件都可以被在不脫離本發明範圍的條件下引用的那些組件替代。因此,應該理解的是,本發明的方法並非限制在實現任意特定功能的任意特定組件。進一步地,本發明方法中的一些步驟不必按所示的順序出現。例如,在某些情況中,兩個或以上方法步驟可同時出現。特別是根據本文之前提供的本發明的描述,這些和本文中描述的方法的其他變化將非常顯而易見,並且被認為是在本發明的全部範圍內。
第10圖為概括依據本發明之編碼資料的方法1000的流程圖。在第一步驟1002中,接收區塊值(例如,與複數個影像像素相關的區塊變換係數)。在第二步驟1004中,為該區塊值定義一個區塊-特定的量化位準。該量化位 準被定義成使得根據該區塊-特定的量化位準對該區塊值的量化過程將產生量化係數區塊,該量化係數區塊具有至少一預定數量之具有一預定值(例如,0)的量化係數。在第三步驟1006中,根據在步驟1004定義的該區塊-特定的量化位準來量化該區塊值,以產生包含至少該預定數量之具有該預定值的該量化係數區塊。在第四步驟1008中,該區塊-特定的量化位準被輸出(例如,輸出至記憶體等),以便在接下來的解碼過程中使用。在第五步驟1010中,確定是否有另一區塊值需要編碼。如果有,那麼方法1000返回到步驟1002。如果沒有,那麼方法1000結束。
第11圖為概括用來執行第10圖的第二步驟1004(為區塊定義量化位準)的特定方法的流程圖。第一步驟1102包括確定隨著量化在被量化區塊中之必須具有該預定值的量化係數的最小數量k。如上述表明的,該k值對於所有區塊可以是不變的,或者該k值可以根據某些其他參數(例如,由輸出120的速度控制訊號指示的期望的解碼器速度、期望的解碼影像品質等)週期性改變。在第二步驟1104中,利用量化資料以及默認量化位準來初始量化該區塊值(例如,變換係數),以產生量化係數的試驗區塊。在第三步驟1106中,確定該試驗區塊中第k個最小量化係數的值,以及在第四步驟1108中,確定該第k個最小量化係數的值是否等於該預定值(例如,0)。如果等於,那麼在第五步驟1110中,定義該默認量化位準作為第10圖的步驟1008中之該區塊-特定的量化位準,然後該方法結束。
如果在步驟1108中確定該第k個最小量化係數的值不為0,那麼該方法繼續進行第六步驟1112,在第六步驟1112中,產生一個新的區塊-特定的量化位準,然後該方法結束。
第12圖為概括依據本發明的解碼資料流的方法1200的流程圖。在第一步驟1202中,解碼器接收行程編碼資料流,該行程編碼資料流例如是從熵解碼器輸出的。在第二步驟1204中,解碼器行程解碼RLE資料,以產生第一區塊值(例如,量化係數)。在第三步驟1206中,第一複數個係數利用選自複數個平行操作的解碼通道606(1)至606(n)的第一解碼通道606(1)開始進一步解碼。在第四步驟1208中,解碼器106行程解碼RLE資料,以產生第二區塊值(例如,量化係數)。在第五步驟1210中,該第二區塊係數利用一選自複數個平行操作的解碼通道606(1)至606(n)的第 二解碼通道606(2)開始進一步解碼,以便該第一區塊係數與第二區塊係數至少部分地被同時解碼。
第13圖為概括用來執行第12圖的步驟1204與1208(行程解碼RLE資料)二者之一的特定方法的流程圖。在行程解碼過程的第一步驟1302中,將預定值(例如,0)儲存到係數緩衝器704的複數個儲存位置的每一個中。在第二步驟1304中,將不同於該預定值的第一值寫入基於該RLE資料的該係數緩衝器704的第一儲存位置812。在第三步驟1306中,從第一儲存位置812到基於該RLE資料的下一個儲存位置812跳過了多個連續的儲存位置812。接下來,在第四步驟814中,不同於該預定值的下一個值被寫入基於該RLE資料的下一個儲存位置812。然後,在第五步驟1310中,確定是否遇到該RLE資料中的區塊結束代碼。如果遇到該區塊結束代碼,則該方法結束。如果沒有遇到該區塊結束代碼,則該方法返回到第三步驟1306,以便將另一個下一個係數寫入另一個基於該RLE資料的下一個儲存位置。
本發明的特定實施例及方法的描述現在完成。所描述的許多特徵在不脫離本發明範圍的條件下都可以被替代、改變或者省略。例如,儘管已經就JPEG壓縮描述了本發明,但是本發明可同樣地應用到其他資料壓縮編解碼器以及涉及量化、熵及/或行程編解碼的方法(例如,MPEG等)。作為另一個示例,可以省略速度控制輸入120,以及解碼器106的行程解碼器604可根據其接收的該RLE資料自動調整其行程解碼。這些以及來自所示特定實施例的其他偏差對於本領域技術人員將是顯而易見的,特別是在基於前述說明的情況下。
本申請為同一發明人於2012年7月19日提交之共同待決的美國專利申請第13/553,299號的分案申請,上述美國專利申請為同一發明人於2012年7月19日提交之共同待決的美國專利申請第13/553,049號的分案申請,上述申請案特此作為參考全部納入到本文。不管在優先之申請專利範圍中存在何種缺陷,美國專利申請第13/553,299號以及第13/553,049號都作為參考而納入。
100‧‧‧編解碼器
102‧‧‧主機
104‧‧‧編碼器
106‧‧‧解碼器
108、114‧‧‧輸入
110、116(1)~116(n)‧‧‧輸出
112‧‧‧壓縮資料路徑
113‧‧‧壓縮資料記憶體
118‧‧‧區塊量化位準路徑
120‧‧‧速度控制輸入

Claims (27)

  1. 一種行程解碼與複數個數值相關聯的行程編碼資料的方法,該方法包括:接收該行程編碼資料;將一預定值儲存於一緩衝器的複數個連續存取的儲存位置的每一個中;基於該行程編碼資料,將不同於該預定值的一第一值寫入一第一儲存位置;基於該行程編碼資料,自該第一儲存位置跳過多個該連續存取的儲存位置到一下一個儲存位置;以及基於該行程編碼資料,將不同於該預定值的一下一個數值寫入該下一個儲存位置。
  2. 依據申請專利範圍第1項所述之方法,其中:該行程編碼資料包含複數個數值對;該等數值對的每一個包含一第一值以及一第二值,該第一值代表具有該預定值的數值的一行程,該第二值代表不同於該預定值的一下一個數值;以及被跳過的多個該等連續存取的儲存位置的數量等於該等數值對的其中之一中的該第一值。
  3. 依據申請專利範圍第2項所述之方法,其中所述跳過的步驟包括多次增進指標,其中增進指標的次數等於一加上該等數值對的其中之一的該第一值。
  4. 依據申請專利範圍第1項所述之方法,進一步包括:基於該行程編碼資料,自該下一個儲存位置跳過另一多個該等連續存取的儲存位置到另一下一個儲存位置;以及 基於該行程編碼資料,將不同於該預定值的另一下一個數值寫入該另一下一個儲存位置。
  5. 依據申請專利範圍第1項所述之方法,進一步包括重置該等儲存位置的每一個以包含該預定值。
  6. 依據申請專利範圍第5項所述之方法,進一步包括重置一指標以指向該等連續存取的儲存位置中的一起始儲存位置。
  7. 依據申請專利範圍第6項所述之方法,其中所述重置該等儲存位置的每一個的步驟以及重置該指標的步驟緊隨著接收到該行程編碼資料中的一結束代碼而發生,該結束代碼代表已接收到除了該預定值之外的一最後一個值。
  8. 依據申請專利範圍第5項所述之方法,進一步包括:輸出包含在該緩衝器的該等儲存位置每一個中的數值作為該等數值;以及其中所述重置該等儲存位置的每一個以包含該預定值的步驟發生在所述輸出該等數值的步驟之後。
  9. 依據申請專利範圍第8項所述之方法,其中所述輸出包含在該等儲存位置的每一個中的數值的步驟緊隨著接收到該行程編碼資料中的一結束代碼而發生,該結束代碼代表已接收到除了該預定值之外的一最後一個值。
  10. 依據申請專利範圍第1項所述之方法,進一步包括將包含在該等儲存位置的每一個中的數值輸出到複數個通道的任意一個中。
  11. 依據申請專利範圍第1項所述之方法,其中該預定值為0。
  12. 依據申請專利範圍第1項所述之方法,其中:該行程編碼資料定義與複數個像素的影像資料相關聯的一區塊的量化係數;以及該緩衝器包含64個該等連續存取的儲存位置。
  13. 一種用於解碼與複數個數值相關聯的行程編碼資料的行程解碼器,該行程解碼器包括:一輸入,被操作以接收該行程編碼資料;一緩衝器,包含複數個連續存取的儲存位置;以及一控制單元,被操作以:將一預定值儲存於該等儲存位置的每一個中;基於該行程編碼資料,將不同於該預定值的一第一值寫入一第一儲存位置;移動至離該第一儲存位置多個該等連續存取的儲存位置的一下一個儲存位置,該多個該等連續存取的儲存位置係根據該行程編碼資料來確定的;以及基於該行程編碼資料,將不同於該預定值的一下一個值寫入該下一個儲存位置。
  14. 依據申請專利範圍第13項所述之行程解碼器,其中:該行程編碼資料包含複數個數值對;該等數值對的每一個包含一第一值以及一第二值,該第一值代表具有該預定值的數值的一行程,該第二值代表不同於該預定值的一下一個數值;以及該第一儲存位置與該下一個儲存位置之間的該等連續存取的儲存位置的數量等於該等數值對的其中之一的該第一值。
  15. 依據申請專利範圍第14項所述之行程解碼器,進一步包括:一指標,被操作以指向任意一個的該等儲存位置;以及其中該控制單元被操作以:當該指標指向該第一儲存位置時,寫入該第一儲存位置,根據該行程編碼資料修改該指標指向該下一個儲存位置,以及當該指標指向該下一個儲存位置時,寫入該下一個儲存位置。
  16. 依據申請專利範圍第15項所述之行程解碼器,其中該控制單元被操作以藉由多次增進該指標而修改該指標,其中增進該指標的次數等於一加上該等數值對的該其中之一的該第一值。
  17. 依據申請專利範圍第13項所述之行程解碼器,其中該控制單元進一步被操作以:基於該行程編碼資料,移動至離該另一儲存位置多個該等連續存取的儲存位置的另一下一個儲存位置;以及基於該行程編碼資料,將不同於該預定值的另一下一個數值寫入該另一下一個儲存位置。
  18. 依據申請專利範圍第13項所述之行程解碼器,其中該控制單元進一步被操作以重置該等儲存位置的每一個以包含該預定值。
  19. 依據申請專利範圍第18項所述之行程解碼器,進一步包括:一指標,被操作以指向任意一個的該等儲存位置;以及 其中該控制單元被操作以重置該指標指向該等連續存取的儲存位置中的一起始儲存位置。
  20. 依據申請專利範圍第19項所述之行程解碼器,其中該控制單元被操作以緊隨著在該輸入接收到該行程編碼資料中的一結束代碼而重置該等儲存位置的每一個以及該指標,該結束代碼代表已接收到除了該預定值之外的一最後一個值。
  21. 依據申請專利範圍第18項所述之解碼器,進一步包括:一輸出,以及其中該控制單元被操作以:使包含在該緩衝器的該等儲存位置每一個中的數值作為該等數值而從該緩衝器輸出,以及在包含在該緩衝器中的該等數值被輸出之後,重置該等儲存位置的每一個以包含該預定值。
  22. 依據申請專利範圍第21項所述之解碼器,其中該控制單元被操作以緊隨著接收到該行程編碼資料中的一結束代碼而使包含在該等儲存位置的每一個中的數值從該緩衝器輸出,該結束代碼代表已接收到除了該預定值之外的一最後一個值。
  23. 依據申請專利範圍第13項所述之解碼器,其中該控制單元被操作以使包含在該等儲存位置的每一個中的數值被輸出到複數個通道中的任意一個通道。
  24. 依據申請專利範圍第13項所述之解碼器,其中該預定值為0。
  25. 依據申請專利範圍第13項所述之解碼器,其中:該行程編碼資料定義與複數個像素的影像資料相關聯的一區塊的量化係數;以及該緩衝器包含64個該等連續存取的儲存位置。
  26. 一種非暫時性電可讀儲存媒質,具有編入其內的代碼以使一電子裝置:接收與複數個數值相關聯的行程編碼資料;將一預定值儲存於一緩衝器的複數個連續存取的儲存位置的每一個中;基於該行程編碼資料,將不同於該預定值的一第一值寫入一第一儲存位置;基於該行程編碼資料,自該第一儲存位置跳過多個該等連續存取的儲存位置到一下一個儲存位置;以及基於該行程編碼資料,將不同於該預定值的一下一個數值寫入該下一個儲存位置。
  27. 一種用於解碼與複數個數值相關聯的行程編碼資料的行程解碼器,該行程解碼器包括:一輸入,被操作以接收該行程編碼資料;一緩衝器,包含複數個連續存取的儲存位置,其中包含在該等連續存取的儲存位置中的數值定義該等數值;以及用於集中解碼在該緩衝器中具有該預定值的該等數值的每一個的裝置;以及基於該行程編碼資料,用於分別解碼在該緩衝器中具有不同於該預定值的數值的該等數值的每一個的裝置。
TW101148484A 2012-07-19 2012-12-19 用於解碼行程編碼資料的解碼器與方法 TWI539793B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/553,299 US8861877B2 (en) 2012-07-19 2012-07-19 System and method for improving decoder performance by using multiple decoding channels
US13/553,049 US9002122B2 (en) 2012-07-19 2012-07-19 System and method for improving decoder performance using quantization control
US13/553,402 US8724913B2 (en) 2012-07-19 2012-07-19 Decoder and method for decoding run-length-encoded data

Publications (2)

Publication Number Publication Date
TW201406162A true TW201406162A (zh) 2014-02-01
TWI539793B TWI539793B (zh) 2016-06-21

Family

ID=49946596

Family Applications (3)

Application Number Title Priority Date Filing Date
TW101148483A TWI514853B (zh) 2012-07-19 2012-12-19 由量化控制改良解碼器效能的方法與系統
TW101148484A TWI539793B (zh) 2012-07-19 2012-12-19 用於解碼行程編碼資料的解碼器與方法
TW101148482A TWI496116B (zh) 2012-07-19 2012-12-19 由量化控制改良解碼器效能的方法與系統

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW101148483A TWI514853B (zh) 2012-07-19 2012-12-19 由量化控制改良解碼器效能的方法與系統

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW101148482A TWI496116B (zh) 2012-07-19 2012-12-19 由量化控制改良解碼器效能的方法與系統

Country Status (3)

Country Link
US (3) US8861877B2 (zh)
CN (3) CN103581679B (zh)
TW (3) TWI514853B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2786812C (en) * 2010-01-18 2018-03-20 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for supporting playout of content
US8861877B2 (en) 2012-07-19 2014-10-14 Omnivision Technologies, Inc. System and method for improving decoder performance by using multiple decoding channels
US20140072027A1 (en) 2012-09-12 2014-03-13 Ati Technologies Ulc System for video compression
US20140281367A1 (en) * 2013-03-14 2014-09-18 Mark W. Johnson Address calculation for received data
US9762912B2 (en) * 2015-01-16 2017-09-12 Microsoft Technology Licensing, Llc Gradual updating using transform coefficients for encoding and decoding
US9979969B2 (en) * 2015-04-24 2018-05-22 Fingram Co., Ltd. Method and system for image compression using image block characteristics
JP6623843B2 (ja) * 2016-03-01 2019-12-25 富士ゼロックス株式会社 データ処理装置およびプログラム
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
CN112398484B (zh) * 2019-08-15 2024-04-23 华为技术有限公司 一种编码方法及相关设备
CN112862106B (zh) * 2021-01-19 2024-01-30 中国人民大学 一种基于自适应编解码迭代学习控制信息传输系统和方法
CN114554226A (zh) * 2022-02-25 2022-05-27 北京市商汤科技开发有限公司 图像处理方法及装置、电子设备和存储介质

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5233348A (en) * 1992-03-26 1993-08-03 General Instrument Corporation Variable length code word decoder for use in digital communication systems
KR0166722B1 (ko) * 1992-11-30 1999-03-20 윤종용 부호화 및 복호화방법 및 그 장치
KR0134343B1 (ko) * 1993-04-13 1998-04-29 김광호 양자화레벨을 이용한 부호화방법 및 그 장치
KR100197190B1 (ko) * 1994-10-12 1999-06-15 모리시다 요이치 런렝스 부호의 복호회로
US5673209A (en) * 1995-03-29 1997-09-30 International Business Machines Corporation Apparatus and associated method for compressing and decompressing digital data
US5812791A (en) 1995-05-10 1998-09-22 Cagent Technologies, Inc. Multiple sequence MPEG decoder
US5889893A (en) * 1996-03-27 1999-03-30 Xerox Corporation Method and apparatus for the fast rotation of an image
US5654806A (en) 1996-05-06 1997-08-05 Xerox Corporation Code manipulation for a high speed JPEG decoder
US5818364A (en) 1996-06-19 1998-10-06 Hewlett-Packard Company High bit-rate huffman decoding
US5790705A (en) 1996-09-13 1998-08-04 Apple Computer, Inc. Compression techniques for substantially lossless digital image data storage
US5825312A (en) 1996-11-25 1998-10-20 Xerox Corporation DX JPEG Huffman decoder
US5883823A (en) * 1997-01-15 1999-03-16 Sun Microsystems, Inc. System and method of a fast inverse discrete cosine transform and video compression/decompression systems employing the same
CN1156171C (zh) * 1997-04-07 2004-06-30 松下电器产业株式会社 提高处理效率的图象声音处理装置
US6121905A (en) 1998-05-11 2000-09-19 Oak Technology, Inc. Method and apparatus for decoding JPEG symbols
US6263021B1 (en) 1998-09-18 2001-07-17 Sarnoff Corporation Treating non-zero quantized transform coefficients as zeros during video compression processing
US6657561B1 (en) * 2000-05-15 2003-12-02 International Business Machines Corporation Data decompression system and method
GB2364843A (en) * 2000-07-14 2002-02-06 Sony Uk Ltd Data encoding based on data quantity and data quality
US6898323B2 (en) 2001-02-15 2005-05-24 Ricoh Company, Ltd. Memory usage scheme for performing wavelet processing
CN1245839C (zh) * 2001-07-04 2006-03-15 矽统科技股份有限公司 分散式视频数据流解码方法
US7003599B2 (en) * 2001-10-24 2006-02-21 Intel Corporation Pipelined, universal serial bus parallel frame delineator and NRZI decoder
WO2003084243A1 (en) * 2002-03-28 2003-10-09 Sony Corporation Image compression/encoding device, method, and program
US6985635B2 (en) * 2002-04-22 2006-01-10 Koninklijke Philips Electronics N.V. System and method for providing a single-layer video encoded bitstreams suitable for reduced-complexity decoding
US7792891B2 (en) * 2002-12-11 2010-09-07 Nvidia Corporation Forward discrete cosine transform engine
US6956511B2 (en) 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
JP3990392B2 (ja) * 2004-08-31 2007-10-10 松下電器産業株式会社 可変長復号化装置、可変長復号化方法および撮像システム
US7565021B2 (en) * 2005-03-01 2009-07-21 Microsoft Corporation Efficient implementation of block-based transform on graphics processing unit
US7720017B2 (en) 2005-03-11 2010-05-18 Qualcomm Incorporated Parallel turbo decoders with multiplexed output
US7983562B1 (en) * 2005-06-30 2011-07-19 Hrl Laboratories, Llc Dynamic coding for optical code-division multiple access
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US20070110151A1 (en) * 2005-11-14 2007-05-17 Ess Technology, Inc. System and method for video frame buffer compression
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
CN100403802C (zh) * 2006-04-30 2008-07-16 西安交通大学 一种基于寄存器组的行程解码与反扫描实现方法
US8233545B2 (en) * 2006-08-21 2012-07-31 Texas Instruments Incorporated Run length encoding in VLIW architecture
US8331663B2 (en) * 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
US8121197B2 (en) * 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
CN101908035B (zh) * 2010-07-30 2012-09-05 北京华傲精创科技开发有限公司 视频编解码方法、gpu及其与cpu的交互方法及系统
US8508612B2 (en) * 2010-09-30 2013-08-13 Apple Inc. Image signal processor line buffer configuration for processing ram image data
US8732538B2 (en) 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
US8861877B2 (en) 2012-07-19 2014-10-14 Omnivision Technologies, Inc. System and method for improving decoder performance by using multiple decoding channels

Also Published As

Publication number Publication date
CN103581679B (zh) 2017-11-14
TW201405488A (zh) 2014-02-01
US20140023286A1 (en) 2014-01-23
CN103581680A (zh) 2014-02-12
CN103581680B (zh) 2017-10-20
TW201406161A (zh) 2014-02-01
US9002122B2 (en) 2015-04-07
CN103581678A (zh) 2014-02-12
US20140023285A1 (en) 2014-01-23
US20140023284A1 (en) 2014-01-23
TWI496116B (zh) 2015-08-11
CN103581679A (zh) 2014-02-12
US8861877B2 (en) 2014-10-14
CN103581678B (zh) 2017-03-01
TWI514853B (zh) 2015-12-21
TWI539793B (zh) 2016-06-21
US8724913B2 (en) 2014-05-13

Similar Documents

Publication Publication Date Title
TWI539793B (zh) 用於解碼行程編碼資料的解碼器與方法
US10313695B2 (en) Parallel decode of a progressive JPEG bitstream
US9083977B2 (en) System and method for randomly accessing compressed data from memory
JP2014039257A (ja) デコーダおよび復号方法
JP2007235759A (ja) 画像符号化装置及びその制御方法
KR20210094054A (ko) 데이터 어레이들의 비트 평면 인코딩
RU2265879C2 (ru) Устройство и способ для извлечения данных из буфера и загрузки их в буфер
US10003812B2 (en) Information processing apparatus, method of controlling the same, and storage medium
US10791332B2 (en) Video data processing system
WO2015041652A1 (en) A progressive jpeg bitstream transcoder and decoder
US20050249423A1 (en) Block decoding method and system capable of decoding and outputting data in a rotated direction
KR20210049002A (ko) 데이터 어레이 인코딩
JP2008113268A (ja) データ符号化装置、データ復号装置
JP2003339046A (ja) ジグザグアドレス生成装置