由量化控制改良解碼器性能的方法與系統的製作方法
2023-10-08 14:48:59
由量化控制改良解碼器性能的方法與系統的製作方法
【專利摘要】一種編解碼器,包括編碼器,具有定義特定區塊的數值(例如,變換係數)的量化電平的量化電平產生器、根據區塊-特定的量化電平量化該區塊的變換係數的量化器、行程編碼器、以及熵編碼器。定義該量化電平以導致具有預定值的至少一預定數量(k)的量化係數。該編碼器的數據壓縮量與k成比例。該編解碼器還包括解碼器,具有熵解碼部分以及行程解碼部分,該兩解碼部分的吞吐量與k成比例。該解碼器利用多個解碼信道通過進一步並行解碼係數而利用這種提高的吞吐量。又公開了編解碼數據的方法。本發明非常適於量化、基於熵和/或行程的編解碼器,例如JPEG。
【專利說明】由量化控制改良解碼器性能的方法與系統
【技術領域】
[0001]本發明一般地涉及數據壓縮,尤其是涉及一種編解碼器(codec)系統。更特別地,本發明涉及在單一編碼器的編解碼器系統中提高解碼器的性能。
【背景技術】
[0002]近年來對高清(HD)媒體(例如,視頻、靜止圖像等)的需求已經顯著增長。結果,對媒體裝置(例如,照相機、行動電話、平板計算機等)的需求也已經增長。對現代媒體裝置的主要設計目標是確保不間斷的媒體吞吐量(throughput)。
[0003]編解碼器用於媒體裝置中,以便通過對所述媒體進行編碼而提高數據壓縮以及吞吐量。在編解碼器中,編碼器接收媒體數據並將其編碼成壓縮數據流。該壓縮數據流最終被發送到解碼器,該解碼器解碼該壓縮數據並將其提供在輸出。不幸的是,解碼器常常在數據流中產生瓶頸(bottleneck),當解碼器的數據輸出速率不足以以一種期望的方式(例如,以期望的幀速率、以期望的解析度等)播放該媒體或者造成數據丟失時,這是有問題的。
[0004]採用行程(Run-Length)與熵(Entropy)編解碼技術(例如,JPEG、MPEG等)的編解碼器特別容易使解碼器瓶頸,因為來自該編碼器的壓縮數據流的內容是不可預知的。該不可預知性造成解碼過程花費太長時間和圖像數據丟失,和/或迫使媒體裝置運行太緩慢。該不可預知性還把現有技術的解碼器限制於單個解碼信道。
[0005]因此,需要的是一種在編解碼器系統中提高解碼器性能的系統及方法。還需要的是一種在初始編碼過程中控制數據壓縮及解碼器性能的系統及方法。還需要的是一種在解碼過程中極大地減小或消除瓶頸的系統及方法。
【發明內容】
[0006]本發明通過提供一種編碼器和解碼器系統克服了現有技術中的問題,該編碼器和解碼器系統通過在編碼期間控制每一個區塊的數據的量化過程來提高數據壓縮和解碼器性能。作為編碼過程的一部分,本發明有利於量化每一個區塊的數據,以產生量化區塊,該區塊包括至少預定數量(或百分比)的具有預定值(例如,值為O)的量化係數。此外,雖然解碼器接收單一壓縮數據流作為輸入,該解碼器能夠並行解碼與兩個或更多個係數相關聯的數據。通過在熵和行程解碼過程中增加的吞吐量而易於並行解碼,因為該吞吐量通過量化過程來控制。也公開了一種改善的行程解碼系統和方法。
[0007]根據本發明的編碼器包括:輸入端,接收一區塊的數值(例如,來自變換單元的一區塊的變換係數);量化電平產生器,定義該區塊的變換係數的量化電平;以及量化器,基於量化電平量化該區塊的變換係數,以產生區塊的量化係數。定義該量化電平以使至少預定數量(k)(例如,大於或等於一半,等)的量化係數在量化之後具有預定值(例如,值為O)。該量化器通過以量化電平和與變換係數相關聯的量化數據劃分每一個變換係數而部分量化該區塊的變換係數。當編碼器很適合於JPEG應用時,量化電平產生器和量化器可以以任意編碼器實施,其中需要一區塊的數值的量化。[0008]根據特定實施例,該量化電平產生器通過基於量化數據和默認量化電平(例如,值為I)初始地量化該區塊的變換係數來確定量化電平,以產生測試區塊的量化係數。如果該測試區塊包括至少該預定數量之具有O值(預定值)的係數,然後默認量化電平被用作為該區塊的量化電平。如果該測試區塊的量化係數不包括足夠的O值,然後例如通過識別該測試區塊中第k個最小量化係數並且將新量化電平設定為大於兩倍的該第k個最小量化係數的值的數值來確定新量化電平。在特定實施例中,該量化器通過進一步以新量化電平量化該測試區塊而完成量化。編碼器也可以包括量化電平輸出端,輸出量化電平例如至先進先出(FIFO)內存。
[0009]在另一特定實施例中,該編碼器進一步包括離散餘弦變換(DCT)單元,以產生該區塊的變換係數;「之」字型單元,執行「之」字型操作,以在多個量化係數的線性數據流中排列該區塊的量化係數;行程編碼器,將多個量化係數編碼為行程編碼(RLE)數據;以及熵編碼器,熵編碼該行程編碼數據。該編碼器例如可以為JPEG或MPEG編碼器。可以進一步選擇該預定數量(k),以控制該解碼器的輸入數據和/或吞吐量的壓縮數量。
[0010]根據本發明的解碼器包括:輸入端,接收包含有與一系列區塊的數據相關聯的行程編碼數據如圖像的一區塊的圖像數據的行程編碼數據流;行程解碼器,將與連續區塊相關聯的行程編碼數據解碼為連續多個數值(例如,量化係數);以及並行操作的多個解碼信道。每一個解碼信道可以將多個係數解碼為一區塊的解碼圖像數據。該連續多個係數被依序地提供至不同的解碼信道,以使兩個或更多個係數通過其各自解碼信道至少部分地並行解碼。例如,第二多個係數可以通過第二解碼信道至少部分地解碼,同時第一多個係數正在通過第一解碼信道解碼。該解碼器也可以包括熵解碼器,接收熵編碼數據流並且產生行程編碼數據流,例如在JPEG實施。
[0011]根據特定實施例,多個係數為多個量化係數,每一個解碼信道包括量化電平輸入,接收與正在解碼的多個量化係數相關聯的量化電平。每一個解碼信道也包括去量化器,根據經由該量化電平輸入接收的相關聯量化電平去量化該多個量化係數(例如,產生一區塊的變換係數)。根據一實施例,該多個解碼信道自一先進先出內存順序地讀取量化電平。每一個解碼信道也可以包括一逆「之」字型單元,對該多個量化係數執行逆「之」字型過程,以產生一區塊的量化係數;以及逆離散餘弦變換單元,對該區塊的變換係數執行逆離散餘弦變換,以產生一區塊的解碼圖像數據。
[0012]如上所述,該解碼器的行程和熵解碼器部分以足夠速率操作,以使至少兩個解碼信道並行操作。尤其是,該熵和行程解碼器部分以這樣的速度操作,該速度為與具有預定值的量化數據中的係數的數量成比例。在解碼期間,該行程解碼器存取緩衝器,該緩衝器定義多個連續存取的存儲位置。為了解碼行程編碼數據,該行程解碼器在所有緩衝器的存儲位置中存儲預定值(例如,O)。然後該行程解碼器基於該行程編碼數據將第一非O值寫入第一存儲位置(例如,用指針表示),基於該行程編碼數據跳至(例如,移動指針)下一個存儲位置,然後基於該行程編碼數據將下一個非O值寫入第二存儲位置。在特定實施例中,該行程編碼數據包括多個數值對,其中該數值對的其中之一表示行程O。該行程解碼器使用每一對中的行程值來確定在緩衝器中有多少個存儲位置在寫入下一個非O值之前跳過。當該行程解碼器包括一指針時,跳過的存儲位置可以通過增加指針以一加在行程編碼數據中定義的行程值來完成。[0013]還描述了產生編碼數據的方法。根據本發明編碼數據的方法包括以下步驟:接收一區塊的數值(例如,通過變換單元產生的一區塊變換係數);定義與該區塊的變換係數相關聯的量化電平;以及基於該量化電平量化該區塊的變換係數,以產生區塊的量化係數。定義該量化電平以使至少預定數量(k)的量化係數具有預定值(例如,值為O)。根據特定方法,該值(k)為大於或等於該區塊的量化係數中量化係數的數量的一半。也可以定義該值(k)以控制該解碼器的熵解碼部分和行程解碼部分的速度。根據特定方法,可以通過基於量化數據和默認量化電平(例如,值為I)初始地量化該區塊而部分地確定區塊-特定的量化電平,以產生測試區塊的量化係數,然後確定該測試區塊是否具有至少該預定數量之具有如上所述該預定值的係數。如果沒有,可以為該區塊確定新量化電平,該測試區塊可以通過新量化電平進一步量化。當該編碼方法很適合於JPEG應用時,該量化過程應用於任意編碼方法,其中需要量化一區塊的數值。
[0014]還描述了一種解碼編碼數據的方法。該方法包括:接收行程編碼數據流,該數據流包括與一系列區塊的數據如圖像的一區塊圖像數據相關聯的行程編碼數據;將與第一區塊的圖像數據相關聯的行程編碼數據行程解碼為第一多個數值(例如,量化係數);以及利用自並行操作的多個解碼信道中選擇的第一解碼信道解碼該第一多個係數。該方法還包括以下步驟:將與第二區塊的圖像數據相關聯的行程編碼數據行程解碼為第二多個係數;以及使用該多個解碼信道中的第二解碼信道解碼第二多個個係數。執行該方法以使解碼第一和第二多個係數的步驟至少部分地同時出現。根據本發明中的行程解碼方法可以包括以下步驟:如上所述,將一預定值(例如,O)存儲在緩衝器中多個連續存取的存儲位置的每一個中,然後使用在該行程編碼數據中的行程值以跳至將寫入非O係數的存儲位置。該行程解碼(還有熵解碼)的速度與具有該預定值的係數的數量成比例。
【專利附圖】
【附圖說明】
[0015]參考如下附圖描述本發明,其中相似的參考編號實質上表示類似的組件:
[0016]圖1為顯示根據本發明的編解碼器系統實施例的方塊圖;
[0017]圖2為更詳細地顯示第I圖的編碼器的方塊圖;
[0018]圖3為更詳細地顯示第2圖的量化電平產生器與量化單元的方塊圖;
[0019]圖4A顯示至少包含32個具有預定值的係數的量化係數示例性區塊;
[0020]圖4B顯示至少包含43個具有預定值的係數的量化係數示例性區塊;
[0021]圖4C顯示至少包含48個具有預定值的係數的量化係數示例性區塊;
[0022]圖4D顯示至少包含52個具有預定值的係數的量化係數示例性區塊;
[0023]圖5為圖2的編碼器所採用的編碼過程的數據流程圖;
[0024]圖6為更詳細地顯示圖1的解碼器的方塊圖;
[0025]圖7為更詳細地顯示圖6的解碼器的行程解碼器部分的方塊圖;
[0026]圖8A為顯示圖4D的區塊的行程編碼數據以及與圖7的行程解碼器有關的相關聯行程解碼參數的表800 ;
[0027]圖SB更詳細地顯示圖7的量化係數緩衝區;
[0028]圖9為計算機系統900的方塊圖,該圖顯示了以軟體實施的本發明的編碼器和/或解碼器;[0029]圖10為概括根據本發明的編碼數據的方法的流程圖;
[0030]圖11為概括用於執行圖10的方法的第三步驟的特定方法的流程圖;
[0031]圖12為概括根據本發明用於解碼編碼數據流的方法的流程圖;以及
[0032]圖13為概括用於執行圖12的方法的第二步驟和/或第四步驟的方法的流程圖。
【具體實施方式】
[0033]本發明通過提供一種編解碼器系統而克服了與現有技術相關聯的問題,該編解碼器系統通過控制在編碼過程中對每個數據區塊(block of data)的量化過程提高了數據壓縮與解碼器的性能。作為編碼過程的一部分,量化每個數據區塊,使得被量化的區塊包含至少預定數量(或百分比)的量化係數,所述量化係數具有預定值。此外,由於被控制的量化過程促進快速的熵及行程解碼,以及解碼器並行解碼被編碼的數據,因此提高了解碼器的速度。在以下描述中,為了提供對本發明的徹底理解,闡明了許多具體的細節(例如,解碼器速度控制的輸入、產生區塊-特定(block-specific)的量化電平的方法等)。然而,本領域技術人員將意識到本發明可以脫離這些具體的細節實踐。在其它例子中,已知的編解碼技術與組件的細節已經被省略,為了不會不必要地模糊本發明。
[0034]圖1為顯示根據本發明的編解碼器100的方塊圖,其整合在主機102中。正如下面將要更詳細描述,編解碼器100將數據編碼成壓縮數據以及將壓縮數據解碼成解碼數據。主機102為從數據壓縮中獲益的某個設備(例如,顯示器驅動器、媒體處理器、圖像感應器等)。在本實施例中,主機102為一集成電路,編解碼器100實施在集成電路中。然而,編解碼器100還可以軟體、固件等來實現,並且編解碼器100的不同部分(例如,編碼器部分與解碼器部分)還可分開實現。
[0035]編解碼器100包括編碼器104以及解碼器106。編碼器104在其輸入108接收未經編碼的數據、編碼該數據以及在其輸出端110輸出壓縮數據流。該壓縮數據流經壓縮數據路徑112提供至壓縮數據存儲器113,並從壓縮數據存儲器113提供至解碼器106的輸入114。解碼器106在其輸入114接收該壓縮數據流、利用多個解碼信道(參見圖2)解碼該壓縮數據以及通過多個輸出116 (I)至116 (η)輸出解碼數據。因為解碼器106能夠利用其多個解碼信道並行解碼該壓縮數據,因此相對於現有技術,解碼器106有利地提高了解碼過程的速度。
[0036]壓縮數據存儲器113為內存(例如,幀緩衝器等),該內存整合在編解碼器100和/或主機102中。壓縮數據存儲器113還可以為主機102外部的內存,例如易失性內存(例如,RAM)或者非易失性內存(例如,快閃記憶體等)。因為直接在編碼器104與解碼器106之間傳輸壓縮數據是可取的,因此可選擇使用壓縮數據存儲器113。
[0037]在本實施例中,編解碼器100為JPEG編解碼器,其將以此被描述。然而,正如下面將要描述的,本發明適合任何利用量化、行程和/或熵編碼和/或解碼技術的編解碼器。在本實施例中,編碼器104編碼一串8 X 8圖像數據區塊,其中每個區塊包括與64個圖像像素有關的數據。作為其編碼過程的一部分,編碼器104為每個區塊定義一個特定的量化電平,並根據該被定義的量化電平(及其它量化數據)量化每個區塊。編碼器104還通過區塊量化電平路徑118將一串量化電平輸出至解碼器106,其中每個量化電平與經JPEG編碼的特定數據區塊相關聯。解碼器106在解碼過程中接收區塊-特定的量化電平,並利用這些區塊-特定的量化電平去量化相關聯的數據區塊。
[0038]圖1還顯示了編解碼器100響應從例如主機102的速度控制輸入120接收的速度控制信號。施加到速度控制輸入120的該速度控制信號被提供至編碼器104,並選擇性地提供至解碼器106。正如下面將要更詳細描述的,該速度控制信號可用來控制編碼器104中的量化過程,因此除了控制解碼器106的輸出速率以外還控制數據壓縮量。可選擇地,該速度控制信號還可提供至解碼器106,以便促進其它的功能,如下文中所描述的。
[0039]圖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。
[0040]編碼器104在其輸入108從區塊準備單元214接收一串8X8圖像數據區塊。區塊準備單元214被顯示為主機102的一個組件,但是其也可以併入編碼器104中。區塊準備單元214將來自主機102的圖像數據格式化成與JPEG編碼器104兼容的圖像數據區塊。例如,區塊準備單元214可將圖像數據從一個色彩空間(例如,紅色、綠色、藍色(RGB)等)轉換成另一個色彩空間(例如,YUV、YCbCr等)。區塊準備單元214將不同色彩空間的組成(例如,Y、Cb以及Cr等)分成不同圖像數據流,每個圖像數據流包含不同色彩空間組成的其中之一的數據,除此之外,區塊準備單元214為了編碼的目的,還可將一個圖像數據幀分成多個圖像數據區塊。
[0041]提供至編碼器104的每個圖像數據區塊經過下面的編碼過程。首先,DCT單元202在該區塊上執行DCT,藉此在頻域中該區塊被變換成64個變換係數的區塊。作為本領域已知的,每區塊的DCT係數包括DC分量係數以及63個AC分量係數。
[0042]然後,DCT係數的區塊被提供至QLGQ單元204,該QLGQ單元204確定該DCT係數的區塊的量化電平。該區塊的量化電平是基於量化數據、期望的數據壓縮量和/或期望的解碼器106的輸出速率。具體地,該量化電平被定義成使得在完成量化之後,DCT係數的區塊將產生量化係數區塊,其中預定數量(k)的量化係數具有預定值。在本實施例中,該預定值為O。換句話說,QLGQ單元204提供了一個用來定義區塊-特定的量化電平使得在完成量化後該區塊中至少預定數量的量化係數將具有該預定值的方法。
[0043]QLGQ單元204將每個區塊-特定的量化電平輸出至區塊量化電平內存216。在本實施例中,區塊量化電平內存216為先進先出(First In First 0ut,FIF0)內存,該內存確保量化電平以編碼器104產生它們的順序提供至該解碼器106。因此,區塊量化電平內存216確保在解碼過程中量化電平與解碼器106中它們的相關聯區塊匹配。雖然本發明人利用FIFO作為區塊量化電平內存216已經獲得了很好的成功,但是在某種程度上由於其實施的簡單,只要在解碼過程中所述區塊-特定的量化電平能夠與相應的數據匹配,其它類型的內存(例如,可尋址內存等)也可以同本發明使用。
[0044]QLGQ單元204還基於預定的量化數據(例如,8X8的表的量化值、所有DCT係數的固定量化值等)以及所述區塊-特定的量化電平來量化每個DCT係數,以產生量化係數區塊,圖3將更加詳細地描述。
[0045]一旦數據區塊被量化,QLGQ單元204就將量化係數區塊提供至「之」字型排序單元208。該「之」字型排序單元208接收量化係數的8X8的區塊,並對該區塊執行「之字型排序」操作。所述「之字型排序」操作通過「之字型排序」將該量化係數區塊沿著該區塊的對角線排列成一線性序列。然後該線性序列被輸出至行程編碼器210。
[0046]行程編碼器210從「之」字型排序單元208接收量化係數的該線性序列,並且將該線性序列編碼成行程編碼(RLE)數據。行程編碼是數據壓縮的一種形式,其中具有相同值(例如,O)的數據行程(runs of data)存儲為一個計數。行程編碼的特定方法存儲作為RLE數據的區塊中的多個量化係數,該RLE數據包括複數對值,每對值中具有定義O的行程的第一值以及指示下一個非O量化係數的第二值。該RLE數據還可包括區塊結束代碼,該區塊結束代碼指示與該區塊關聯之所有剩餘的量化係數為O。一旦產生該RLE數據,則該RLE數據就被輸出至熵編碼器212。
[0047]熵編碼器212接收該RLE數據,並對其執行熵編碼處理,藉此利用較短代碼編碼頻繁出現的RLE數據,而利用較長代碼編碼不頻繁出現的RLE數據。一種類型的熵編碼被稱為霍夫曼編碼。一旦該RLE數據被熵編碼,那麼熵編碼器212就輸出編碼數據作為壓縮數據流。如上述所表明的,該壓縮數據流在提供至解碼器106之前可存儲於壓縮數據存儲器113 中。
[0048]圖2還顯示了時序控制單元220,該時序控制單元220通過一條或多條時序控制路徑222將時序(例如,時鐘等)以及可選擇性提供的其它控制信號提供至編碼器104、區塊量化電平內存216、壓縮數據存儲器113以及區塊準備單元214。可選擇地,時序控制單元220為主機102的通用組件。由時序控制單元220提供的該時序以及其它控制信號(例如,時鐘脈衝、使能信號、重置信號等)能夠使編碼器104執行其預期的功能以及在適當的時間移動數據通過編碼器104。
[0049]圖3為更詳細地顯示編碼器104的QLGQ單元204 (圖2)的方塊圖。QLGQ204包括輸入端302、初始量化單元304、量化驗證及量化電平產生(QVQG)單元306、輔助量化單元308、存儲至少一個默認(default)量化電平的默認量化電平內存310、存儲量化數據的量化數據存儲器312、量化係數輸出314以及區塊量化電平輸出316。此外,QVQG單元306系被耦合以通過速度控制輸入120接受速度控制信號。在本實施例中,所述量化數據包括一個8X8的表的量化值,其中每個量化值用來量化該區塊中相應的DCT係數。另外在本發明的實施例中,該默認量化電平為每區塊的值1,其提供了如下面所述的特別優點。
[0050]耦合初始量化單元304,以通過輸入302接收區塊DCT係數、從量化數據存儲器312接收量化數據以及從默認量化電平內存310接收默認量化電平。響應這些輸入,初始量化單元304根據該量化數據以及該默認量化電平量化該區塊變換係數,以產生量化係數的試驗區塊。初始量化單元304根據下列公式量化該區塊中的每個DCT係數
[0051 ] !ground ((DCTi) / (q^Defaul^Q-level)),
[0052]其中Ti表示該試驗區塊中產生的量化係數的值,DCTi表示被量化的DCT係數的值, 表示用來量化相應DCT係數的量化值,Default_Q_level表示默認量化電平,以及round
為進位函數,該進位函數將一小數點值四捨五入成最接近的整數。當初始量化單元304結束量化該區塊DCT係數時,單元304將該量化係數的試驗區塊輸出至QVQG單元306。
[0053]應該注意的是,初始量化單元304所使用的該量化數據可以周期性改變(例如,每幀一次、根據來自主機102的指令、根據圖像數據等等)。例如,量化數據存儲器312可包括多個根據情況而選擇使用的量化表,和/或,量化數據存儲器312中的該量化數據可以根據需要以不同的量化數據重新寫入。因此,改變量化過程中所使用的該量化數據在本發明的範圍內。同樣地,周期性改變量化過程中所使用的該默認量化電平的值也在本發明的範圍內。
[0054]QVQG單元306從初始量化單元304接收該量化係數的試驗區塊、通過輸入120接收該速度控制信號以及從默認量化電平內存310接收該默認量化電平。然後,QVQG單元306確定該試驗區塊是否至少具有預定量(k)的具有O值的量化係數。在一特定實施例中,QVQG單元306確定在該試驗區塊中的第k個最小量化係數。如果該試驗區塊中的第k個最小量化係數等於0,那麼該默認量化電平足以確保數據將被充分壓縮以及解碼器106將在期望的速度下操作。在這種情況下,QVQG單元306檢索該默認量化電平,並且將其通過輸出316輸出至區塊量化電平內存216,作為區塊-特定的量化電平。
[0055]然而,如果該試驗區塊沒有包含k個具有O值的係數,那麼QVQG單元306為該區塊產生新的量化電平。繼續之前的例子,如果該試驗區塊中的第k個最小量化係數不等於0,那麼QVQG模塊306為該試驗區塊確定一新的量化電平,該試驗區塊將產生至少k個具有O值的量化係數。例如,該試驗區塊的新的量化電平(New_Q-level)可如下計算得出:
[0056]New_Q-level= (2*Tk) +1,
[0057]其中Tk表示該試驗區塊中的第k個最小量化係數的值。一旦產生該新的量化電平,則QVQG模塊在輸出316輸出該新的量化電平,作為區塊-特定的量化電平。
[0058]發明人已發現,對於JPEG編解碼器,可利用上述之區塊-特定的量化電平產生過程以多位數據來表示量化電平。然而,可根據期望採用產生或表示該區塊-特定的量化電平的其它方法。
[0059]QVQG單元306所使用之用來確定區塊的量化電平的k的值可由主機102通過在速度控制輸入120提供的信號來控制。例如,第一速度控制信號可設定k為32(例如,至少該區塊中的所述量化係數的一半(32/64)為0),而隨後的速度控制信號可設定k為43 (例如,至少該區塊中的所述量化係數的三分之二(43/64)為O)。因為k的值有很多種可能,因此該速度控制信號可為多位信號,該多位信號獨特地確認QVQG單元306所使用之不同的k值。並且,該速度控制輸入120允許數據壓縮量以及解碼器的速度是可動態調整的。
[0060]控制預定數量k就控制了數據壓縮量以及該解碼器106的速度,因為數據壓縮量以及解碼器106的熵解碼部分與行程解碼部分的吞吐量與k值成比例。因此,當k值較小時(更少O係數),該量化係數區塊將具有更多非O值(更少數據壓縮),並且熵解碼過程與行程解碼過程將花費較長時間。相反,當k值較大時(更多O係數以及大量數據壓縮),該量化係數區塊將具有更少非O值,並且熵解碼過程與行程解碼過程將更短。因為熵解碼部分與行程解碼部分的吞吐量能夠可預見地增進,因此本發明還使並行解碼成為可能。
[0061]隨著量化驗證與量化電平的產生,輔助量化單元308從QVQG單元306接收該試驗區塊與該區塊-特定的量化電平,並利用該區塊-特定的量化電平對該試驗區塊執行第二次量化過程。輔助量化單元308如下式量化該試驗區塊中的每個係數
[0062]Qi=Iround (Ti/Block_Q-level),
[0063]其中Qi表示在所產生的量化係數區塊中的量化係數的值,Block_Q_level表示由QVQG單元306在區塊量化電平輸出端316輸出的區塊-特定的量化電平。輔助量化單元308對該試驗區塊中每個係數執行輔助量化,並且在量化係數輸出端314輸出產生的量化係數區塊。
[0064]在一可選實施例中,輔助量化單元308還可接收該默認量化電平,並將其與由QVQG單元306輸出的該區塊-特定的量化電平進行比較。在由QVQG單元306輸出的量化電平與該默認量化電平相同的情況下,然後輔助量化單元308可通過將該量化係數的試驗區塊直接輸出至「之」字型排序單元208而放棄輔助量化過程。這樣做將節省與該輔助量化過程相關聯的周期並加速編碼。作為另一種選擇,初始量化單元304與輔助量化單元308可組合成一個單個量化器,以促進初始量化單元304與輔助量化單元308之各自的功能。
[0065]如上述所表明的,設定該默認量化電平的值為I提供了特別的優點。例如,當產生新的量化電平時,默認量化電平I能夠使同樣的新的量化電平值既輸出至區塊量化電平內存216,又輸出至該輔助量化過程308。然而,如果該默認量化電平大於1,且產生了新的量化電平,那麼不同的值將被提供至輔助量化單元308與區塊量化電平內存216。例如,由於該試驗區塊根據該默認量化電平被初始量化,因此輔助量化單元308將只需要新的量化電平值來完成該試驗區塊的量化。然而,默認量化電平與新的量化電平的乘積將在該解碼器106的去量化過程中需要,因此該乘積將在區塊量化電平輸出316輸出,以存儲到區塊量化電平內存216中。因此,在該默認量化電平大於I的情況下,QVQG單元306可包括兩個輸出端:一個將新的量化電平提供至輔助量化單元308,另一個通過輸出316將默認量化電平與新的量化電平的乘積提供至區塊量化電平內存216。因此,設定該默認量化電平為I簡化了 QLGQ單元204的操作,並且減小了系統複雜度。
[0066]描述上述實施例與過程,從而給出了 QLGQ單元204操作的徹底理解。然而,在仍就保護QLGQ單元204的主要功能的同時,對QLGQ單元204的修改是可能的。那些主要功能包括(I)為每個數據區塊產生區塊-特定的量化電平,使得隨著量化,被量化的區塊將至少具有k個預定值的係數,以及(2)根據該區塊-特定的量化電平來量化每個數據區塊。作為一個示例,其它的QLGQ單元204可首先利用默認量化電平以及量化數據將區塊DCT係數量化成試驗區塊,然後分析該試驗區塊。如果該試驗區塊沒有包含至少k個具有該預定值的係數,那麼將確定新的量化電平(例如,通過上文描述的過程或某個其它過程)。然後,該其它的QLGQ單元204可利用該新的量化電平以及該量化數據再量化該區塊DCT係數,以產生最終的量化係數區塊。然後,該其它QLGQ單元204可將該默認量化電平或者該新的量化電平作為該區塊-特定的量化電平輸出。作為另一個示例,QLGQ單元204的不同模塊(例如,該初始量化單元、輔助量化單元以及該QVQG單元)可被分成分開的單元、可被組合等等。作為再另一個示例,QLGQ單元204可用於在任何採用量化的編碼器中量化任意區塊值,而不只是在量化變換係數的編碼器中。實際上,這些和對QLGQ單元204的其它修改都是可能的。
[0067]如上面討論的,不管該量化電平是對應默認量化電平內存310中的該默認量化電平還是對應不同的量化電平,QLGQ單元204都輸出被編碼的圖像數據之每個區塊的區塊-特定量化電平。雖然只輸出非默認量化電平到區塊量化電平內存216將是可能的,但是本發明人已經發現這樣做增進了複雜度。例如,如果該默認量化電平被用來編碼一個區塊,而不是被輸出至該解碼器106,那麼編解碼器100將需要某些手段(例如,與一個區塊以及一個量化電平相關聯的唯一標識符等),使特定的區塊與解碼器106中的該區塊-特定的各個量化電平相關聯。
[0068]利用區塊-特定的量化電平控制每量化係數區塊中O的數量提供了重要的優點。首先,控制每區塊中O的數量就控制了該區塊(以及進而完整的圖像)所經歷的數據壓縮量。因此,可以選擇該k值,以便確保圖像被充分壓縮至其能夠被存儲到一個具有預定大小的緩衝器(例如,幀緩衝器)。因而,壓縮數據存儲器113可以做的更小,這樣節省了電路空間以及成本。
[0069]在解碼過程開始之前,控制每個區塊的數據壓縮量還將該編碼器所輸出的位速率維持在一個期望的範圍內。因此,該解碼器106不會變得超負荷,圖像數據不會丟失,並且不必調整編碼過程以響應不充分的解碼器吞吐量。
[0070]根據本發明的控制量化過程的另一個優點是其允許編碼器104控制解碼器106的速度。因為該解碼器的速度與k成比例,所以編碼器104可通過調整k來動態增進或減少解碼器106的吞吐量。例如,編碼器104為了高吞吐量可增進k,以便在短時間內產生許多縮略(thumbnail)圖像。相反地,當解碼圖像質量更重要時,編碼器104為了低吞吐量可減小k。
[0071]圖4A至第4D圖顯示了可由QLGQ單元204根據不同k值產生的量化係數的示例性區塊400A至400D。
[0072]圖4A顯示對於k至少等於32的情況量化係數的示例性區塊400A。如此,區塊400A包含至少32個為O的係數以及至多32個為非O的係數(在圖4A中用「x」註記)。因此,區塊400A利用隨著量化而產生至少32個O的量化電平而產生。正如下面將要更詳細描述的,因為區塊400A中至多一半係數不為0,所以解碼器106提供改進的熵及行程解碼。因此,解碼器106的熵解碼部分及行程解碼部分將以大約是兩倍快於區塊400A中的每個量化係數都為非O時的速度解碼與區塊400A相關聯的數據。此外,該k的值導致大約是區塊400A中的每個量化係數都為非O時兩倍的數據壓縮。
[0073]圖4B顯示對於k至少等於43的情況量化係數的示例性區塊400B。如此,區塊400B包含至少43個為O的係數以及至多21個為非O的係數(在圖4B中用「x」註記)。因此,區塊400B利用隨著量化而產生至少43個O的量化電平而產生。因為區塊400B中大約三分之一的值不為0,因此解碼器106的熵解碼部分與行程解碼部分將以大約是三倍快於區塊400B中的每個量化係數都為非O時的速度解碼與區塊400B相關聯的數據。因此,該k的值導致大約是區塊400B中的每個量化係數都為非O時三倍的數據壓縮。
[0074]圖4C顯示對於k至少等於48的情況量化係數的示例性區塊400C。如此,區塊400C包含至少48個為O的係數以及至多16個非O係數(在圖4C中用「x」註記)。因此,區塊400C利用隨著量化而產生至少48個O的量化電平而產生。因為區塊400C中至多四分之一的值可具有非O值,因此解碼器106的熵解碼部分與行程解碼部分將以大約是四倍快於區塊400C中的每個量化係數都為非O時的速度解碼與區塊400C相關聯的數據。因為區塊400C具有是區塊400A —半數量的非O值,因此該熵解碼部分與行程解碼部分還將以大約是區塊400A兩倍快的速度解碼區塊400C。另外,該k的值導致大約是區塊400C中的每個量化係數都為非O時四倍的數據壓縮。
[0075]圖4D顯示對於k至少等於52的情況量化係數的示例性區塊400D。如此,區塊400D包含至少52個O係數以及至多12個非O係數(在圖4D中表示為「xO至xll」)。因此,區塊400D利用隨著量化而產生至少52個O的量化電平而產生。因為區塊400D中大約五分之一的值可具有非O值,因此解碼器106的熵解碼部分與行程解碼部分將以大約是五倍快於區塊400D中的每個量化係數都為非O時的速度解碼與區塊400D相關聯的數據。另外,該k的值導致大約是區塊400D中的每個量化係數都為非O時五倍的數據壓縮。
[0076]概括地說,圖4A至圖4D顯示了如何通過增進在量化過程中產生的O係數的數量,即,通過增進k的值,來提高該解碼器106的速度。圖4A至圖4D進一步說明了編碼器104的數據壓縮量與該k值成比例。雖然在圖4A至圖4D中說明了對於k的特定值,但是可以根據期望的數據壓縮量和/或解碼器速度來決定採用任何k值。例如,可以選擇產生大約
1.5倍的數據壓縮與解碼器吞吐量的k值。
[0077]雖然增進k的值具有提高解碼器106速度的優點,但是增進k的值還具有越來越高的k值將逐漸降低解碼圖像質量的缺點。正如本領域技術人員將理解的,量化是一個有損的數據壓縮過程。因此,由於更多的係數被量化為0,所以較高的k值將造成更多圖像數據丟失。由此,當選擇k值時,還應當考慮到期望的解碼圖像數據的質量。
[0078]如果一個應用需要高解碼圖像質量與高解碼速度,那麼可以在主機102中實現編解碼器100的多次迭代(iteration)。更進一步地,因為每個壓縮數據流將與具有η個解碼信道的解碼器106關聯,因此在最小化其它被集成在主機102中的附加電路數量的同時,提高了吞吐量。
[0079]現在,將用圖4D作為示例來更詳細地描述「之」字型排序、行程編碼以及熵編碼過程。特別是,當「之」字型排序單元208接收量化係數區塊時,「之」字型排序單元208以線性方式按照如圖4D箭頭所示沿著該區塊的對角線排列該量化係數區塊。在區塊400D的具體情況中,「之」字型排序單元208將輸出如下量化係數的序列:x0, xl, x2, O, x3, x4, 0, x5, x6,x7,x8,x9,0,0,0,xlO, 0,xll, 0,0,…0。
[0080]然後,該量化係數的序列將被提供至行程編碼器210,並經行程編碼。根據該特定實施例,行程編碼器210編碼該量化係數,並且將如下行程編碼數據輸出至熵編碼器212:
[0081](O, xO)
[0082](O, xl)
[0083](O, x2)
[0084](I, x3)
[0085](0,x4)
[0086](I, x5)
[0087](0,x6)
[0088](0,x7)
[0089](0,x8)
[0090](0,x9)
[0091](3, xlO)
[0092](I, xll)
[0093](E.0.B.)。
[0094]每對RLE數據值包含第一值以及第二值,該第一值由先前的非O量化係數或者由對於該區塊係數的起點,定義O的行程,該第二值定義下一個非O量化係數。例如,由於在非O係數xO與Xl之間沒有O (按照「之」字型排序處理),因此在XO後面直到Xl以及包括xl的係數的RLE數據可以被定義為(0,xl)。同樣,由於在非O係數x9與xlO之間有三個0,因此在x9後面直到xlO以及包括xlO的量化係數的RLE數據可以被表示為(3,xlO)。該RLE數據的最後一個元素為區塊結束(End Of Block,E.0.B.)代碼,該區塊結束代碼用來表示該區塊中所有剩餘量化係數均為O。
[0095]由行程編碼器210輸出的該RLE數據被提供至熵編碼器212,在熵編碼器212該RLE數據經熵編碼。如上述解釋的,通過將不同代碼分配給不同數據值,來執行熵編碼。在本實施例中,熵編碼器212接收每對RLE數據,並且(例如,在一個查找表中)查找相關聯的熵代碼。然後,熵編碼器212在壓縮數據流中輸出該熵代碼,以作為熵編碼數據。
[0096]由於k增進將使行程對以及熵代碼的數量減小,因此控制量化過程改善了由編碼器輸出的壓縮數據中的數據壓縮。例如,圖4A至圖4D顯示由於k增進,需要少量行程對來編碼量化係數區塊。相應地,少量行程對意味著需要少量熵代碼來表示與每個區塊相關聯的行程數據。因此,本發明相對於現有技術而言改善了數據壓縮。另外,本發明根據k值來控制數據壓縮量。
[0097]最後,應當注意的是,可使用不同的「之」字型排序、行程編碼以及熵編碼的方法來代替上面提供的具體示例。
[0098]圖5為關於JPEG編碼過程中流經編碼器104的每個數據區塊的數據流程圖500。如圖所示,由編碼器104接收一個與多個像素有關的8X8圖像數據區塊。然後,對該圖像數據區塊執行DCT,以產生一個8X8的DCT係數區塊。然後,該區塊DCT係數經過初始量化過程,所述初始量化過程利用默認量化電平(例如,I值)以及量化數據表將該區塊DCT係數量化成量化係數試驗區塊。然後,該量化係數試驗區塊經過量化電平產生過程,以定義一個具體到該區塊的量化電平,使得隨著量化預定數量(k)的量化係數將有一預定值(例如,O)。然後,該量化係數測試區塊以及該區塊的量化電平轉至輔助量化過程,以產生一區塊至少具有k個O的量化係數。然後,該量化係數區塊經過「之」字型排序過程,產生一個依序的數據流。接著,行程編碼該依序的數據流,以產生RLE數據,再熵編碼該RLE數據,以產生壓縮數據流。然後,該壓縮數據流被輸出至內存和/或該解碼器106。
[0099]如圖5所示,被壓縮的編碼數據流包括標頭(header)信息,該標頭信息在所述編碼過程中被嵌入到該數據流中。該標頭信息除了包含所述編碼過程中使用的查找表以外,還包含所述量化過程中使用的該量化數據。另外,可定期以新的信息來更新該壓縮數據流中的該標頭信息,例如,每巾貞一次。
[0100]圖6為更詳細地顯示編解碼器100的解碼器106的方塊圖。解碼器106進一步包括熵解碼器602、行程解碼器604以及多個並行操作的解碼信道606 (I)至606 (η),每個解碼信道連接至輸出116 (I)至116 (η)中各自的輸出。每個解碼信道606 (I)至606 (η)包括各自的逆「之」字型排序單元608 (I)至608 (η)、去量化器610 (I)至610 (η)以及逆DCT單元612 (I)至612 (η)。編解碼器100還包括數據重組單元614,該數據重組單元可選擇性地與解碼器106整合在一起。
[0101]當被編碼的JPEG圖像數據需要被解碼時,該被編碼的JPEG圖像數據作為一個與一串圖像數據區塊相關聯的熵編碼比特流而被提供至該解碼器106的輸入114。熵解碼器602對該熵編碼數據執行逆熵處理,以產生與該串圖像數據區塊相關聯的RLE數據。[0102]在所述編碼過程中使用的量化控制極大地提高了熵解碼器602的速度,並且消除或者至少極大地減小了在熵解碼器602處的瓶頸。如上述表明的,需要用來表示數據區塊的熵代碼的數量與k成反比。因此,由於k增進,熵解碼器602將極少執行查表。換句話說,熵解碼器602的吞吐量與k成比例,因此由於k增進,吞吐量也增進。
[0103]參考圖4A,由於區塊400A包括至多32個非O量化係數(k≥32),所以將至多有32個數據行程對(除了該區塊結束代碼之外)。因此,熵解碼器602能夠以大約是其解碼一具有64個非O係數的區塊的量化係數時兩倍的速度解碼區塊400A。因為同樣的理由,熵解碼器602能夠以大約是解碼一具有64個非O係數的區塊的量化係數時三倍的速度解碼區塊400B (k≥43)。同樣,熵解碼器602能夠以大約是解碼一具有64個非O係數的區塊的量化係數時四倍的速度並且大約是解碼區塊400A時兩倍的速度解碼區塊400C (k > 48)。熵解碼器602還能夠以大約是解碼一具有64個非O係數的區塊的量化係數時五倍的速度解碼區塊400D (k≥52)。
[0104]由於可通過量化控制來提高熵解碼器602的吞吐量,因此解碼器106能夠利用多個解碼信道606 (I)至606 (η)並行解碼數據。另外,由於量化過程控制RLE數據量以及產生的熵編碼數據量,因此對熵解碼器602的位速率還可由k值來控制。因此,熵解碼器602沒有超限運轉,數據沒有丟失,且熵解碼器602沒有變成瓶頸。
[0105]由熵解碼器602輸出的該RLE數據接下來被提供至行程解碼器604,行程解碼器604連續解碼該RLE數據,以產生多個量化係數區塊,其中每量化係數區塊與圖像數據區塊相關聯。如上述表明的,行程解碼器604的速度與和具有O值的區塊相關聯的量化係數的數量成比例。隨著行程解碼,行程解碼器604將每量化係數區塊輸出至解碼器信道606(1)至606 (η)的其中之一,以便進一步並行解碼。因此,行程解碼器604是將RLE數據連續解碼成連續的係數區塊的工具。
[0106]行程解碼器604將連續的量化係數區塊按順序輸出至它們各自的解碼信道606(I)至606 (η)。例如,行程解碼器604將第一量化係數區塊輸出至解碼信道606 (1),然後將第二量化係數區塊輸出至解碼信道606 (2),…將第η量化係數區塊輸出至解碼信道606 (η)。然而,行程解碼器604的其它輸出方法是可能的。例如,可隨機使用每個解碼信道606 (I)至606 (η)。作為另一個示例,如果解碼器106不需要所有解碼信道606 (I)至606 (η)在一期望的速度下操作,那麼行程解碼器604可以只使用解碼信道606 (I)至606(η)中的某些解碼信道,而不使用其它的解碼信道。
[0107]正如將從以下討論中顯而易見的,解碼信道606 (I)至606 (η)提供用於並行解碼多個量化係數區塊的工具。解碼信道606 (I)至606 (η)的操作如下。
[0108]一旦多個量化係數被提供至解碼信道606 (I)至606 (η),那麼相關聯的逆「之」字型排序單元608 (I)至608 (η)就對該數據執行逆「之」字型排序處理,以重新產生來自編碼過程的該8X8量化係數區塊。然後,該區塊轉至相關聯的去量化器610 (I)至610 (η)。
[0109]去量化器610 (I)至610 (η)逆量化該量化係數區塊,以產生區塊DCT係數。在本實施例中,去量化器610 (I)至610 (η)通過將量化係數乘以相關聯量化數據與為區塊-特定定義的量化電平的乘積,來逆量化每個量化係數。正如上述表明的,該量化數據嵌入到壓縮數據流的標頭中。因此,去量化器610 (I)至610 (η)可從該標頭中獲得該量化數據。去量化器610 (I)至610 (η)還通過從區塊量化電平內存216中讀取下一個值來獲得該區塊-特定的量化電平。由於行程解碼器604以編碼該區塊的順序解碼與圖像數據區塊相關聯的RLE數據,並將該數據順序地提供至解碼信道606 (I)至606 (n),因此從區塊量化電平內存216檢索的區塊量化電平有利地與經去量化器610 (I)至610 (η)逆量化的該區塊同步。
[0110]逆量化之後,該區塊DCT係數被提供至各個逆DCT單元612 (I)至612 (η)。在那裡,該區塊經過逆DCT處理,產生解碼圖像數據區塊,該解碼圖像數據區塊從該解碼器通過各自的輸出端116 (I)至116 (η)輸出。因為在編碼器104中進行的量化過程是有損失的,所以該解碼圖像數據區塊不是輸入到編碼器106的原始圖像數據區塊的準確再生。如上述表明的,解碼圖像數據的質量將取決於在編碼過程中使用的k值。
[0111]可選擇地,在輸出端116 (I)至116 (η)提供的該解碼圖像數據區塊可由數據重組單元614進行重組(例如,重組成圖像)。因為行程解碼器604將多個係數以連續的順序提供至解碼信道606 (I)至606 (η),所以數據重組單元614以同樣的順序在輸出端116 (I)至116 (η)多路分解(de-multiplex)該解碼圖像數據區塊。此外,數據重組單元614還可將來自一個色彩空間(例如YUV、YCbCr等)的解碼圖像數據轉換到另一個色彩空間(例如,RGB 等)。
[0112]速度控制輸入120作為一個輸入可選擇性地設置於行程解碼器604與解碼信道606 (I)至606 (η)的其中之一個或兩個,以促進解碼器106的其它功能。特別是,在速度控制輸入120的信號可用來去能一個或多個解碼信道606 (I)至606 (η),例如,達到節約電能。如上述表明的,由於k增進使行程解碼器604提高了其解碼速度,因此操作解碼信道606 (I)至606 (η)的數量也將隨著k的增進而增進。由於在輸入120的速度控制信號可與k值相關聯,因此該速度控制信號還可定義應當在一個給定時序間操作之解碼信道606
(I)至606 (η)的數量,以防止解碼器106中的瓶頸。通常,應該利用足夠多的解碼器信道606 (I)至606 (η),以便使行程解碼器604不必不合理地長時間等待將每量化係數區塊輸出至下一個解碼器信道606 (I)至606 (η)。該速度控制信號還可提示行程解碼器604的信道606 (I)至606 (η)當前被去能。
[0113]圖6還顯示時序控制單元220通過一條或多條時序控制路徑222提供時序(例如,時鐘等)以及選擇性地提供其它控制信號到第6圖的組件。像編碼器104 —樣,由時序控制單元220提供的信號使解碼器106能夠執行其預期的功能以及在適當的時間移動通過解碼器106的數據。可選擇地,例如,如果解碼器106與編碼器104不在同一個主機中,那麼解碼器106可包括其自身的時序與控制系統。
[0114]解碼器106相對於現有技術而言提供了重要的優點。特別是,解碼器106能夠接收來自單個編碼器的壓縮數據流以及利用多個並行操作的解碼信道606 (I)至606 (η)來解碼該比特流。通過更快速熵解碼器602以及更快速行程解碼器604來促進並行操作解碼信道606 (I)至606 (η),該更快速熵解碼器602以及更快速行程解碼器604能夠提供兩個或以上具有充足數據量的解碼信道606 (I)至606 (η)。因此,解碼器106相對於現有技術提高了吞吐量,這在HD媒體應用中特別重要。而且,由於只有解碼信道606 (I)至606(η)以集成電路複製,因此解碼器106需要這樣做最小化其它電路的數量,同時相對於現有技術而言提高了數據吞吐量。
[0115]圖7為更詳細地顯示解碼器106的行程解碼器604的方塊圖。在所顯示的實施例中,行程解碼器604包括控制單元702、係數緩衝器704、指針(pointer)706以及輸出信道管理器708。行程解碼器604還包括輸入710,接收來自熵解碼器602的RLE數據,以及多個輸出712 (I)至712 (n),每個輸出用來將係數輸出至各自的解碼信道606 (I)至606(η)。
[0116]控制單元702控制及協調行程解碼器604的全部解碼以及輸入/輸出(I/O)。控制單元702通過輸入710接收來自熵解碼器602的RLE數據,並執行各種功能。特別是,控制單元702將由該RLE數據定義的非O量化係數通過係數路徑714存儲到係數緩衝器704。通過將在指針控制路徑716上的信號置為有效(assert),控制單元702還根據該RLE數據對中的行程改變由指針706指向的位置。此外,控制單元702產生重置信號並通過重置路徑718輸出重置信號,重置路徑718將該重置信號提供至係數緩衝器704、指針706以及輸出信道管理器708。控制單元702還通過將在輸出控制路徑720上的輸出使能信號置為有效來協調輸出712 (I)至712 (η)的數據輸出。當控制單元702知道與一組數據相關聯的RLE數據已經結束解碼時,例如當控制單元702在該RLE數據流中遇到一個區塊結束代碼時,控制單元702將產生輸出使能信號。每當輸出信道管理器708結束從係數緩衝器704向解碼信道606 (I)至606 (η)的其中之一輸出多個係數時,控制單元702還通過路徑722接收輸出完成信號。
[0117]量化係數緩衝器704包括大量可連續存取的緩衝位置,其數量等於數據區塊中係數的數量。對於JPEG而言,因為有64個與每個圖像數據區塊相關聯的量化係數,所以係數緩衝器704包括64個存儲位置(圖8Β)。響應重置路徑718上的重置信號,係數緩衝器704將其每個存儲位置重置成預定值O。然後,當係數緩衝器704在係數路徑714上接收非O係數時,係數緩衝器704將每個非O係數存儲到由指針706指示的該存儲位置。當係數緩衝器704在輸出控制路徑720上接收來自控制單元702的輸出使能信號時,係數緩衝器704按存儲位置的順序連續地將其完整內容輸出至輸出信道管理器708。
[0118]指針706被操作以選擇性地指向係數緩衝器704中該存儲位置中的任何一個。重置路徑718接收到重置信號,指針706就重置其自身指向係數緩衝器704中的第一存儲位置。基於指針控制路徑716上的來自控制單元702的控制信號,指針706移動,以便指向係數緩衝器704中的一個新的存儲位置。在指針控制路徑716上由控制單元702提供的該控制信號可為序列的增量信號,該增量信號致使指針706移動多個存儲位置,移動的存儲位置的數量等於其接收的增量信號的數量。或者,控制單元702可提供跳躍(jump)信號到指示關於指針706的多個連續存儲位置的指針706,以便在係數緩衝器704中「跳」過。實際上,控制單元702可以不同方式移動指針706。
[0119]輸出信道管理器708選擇性地將係數緩衝器704的內容通過各自的輸出712 (I)至712 (η)提供至解碼信道606 (I)至606 (η)的其中之一。響應在輸出控制路徑720上的來自控制單元702的輸出使能信號,輸出信道管理器708連續地將每個係數從係數緩衝器704輸出至解碼信道606 (I)至606 (η)的其中之一。當最後一個量化係數已經被輸出時,輸出信道管理器708通過路徑722將一信號提供至控制單元702,以指示輸出完成。響應重置路徑718上的重置信號,輸出信道管理器選擇接下來的輸出712 (I)至712 (η),該接下來的輸出將用來輸出被行程解碼器604解碼的下一組係數。在本實施例中,輸出信道管理器708以特定的順序(例如,按次序的順序)選擇輸出712 (I)至712 (η)。然而,如上述表明的,輸出信道管理器708可選擇性地響應速度控制信號120,以便跳過輸出712 (I)至712 (η)的某幾個。
[0120]在本實施例中,在與區塊相關聯的RLE數據結束行程解碼以及係數緩衝器704中的係數已經通過輸出712 (I)至712 (η)被輸出之後,控制單元702產生重置信號。在當前的實施例中,當係數緩衝器704中的所有係數都已被讀出時,輸出信道管理器708通過路徑722指示控制單元702。此後,控制單元702在知道其是安全的重置路徑718上產生重置信號,以便重置係數緩衝器704。
[0121]現在根據圖8Α以及圖SB來描述行程解碼器604的操作,圖8Α以及第SB圖使用了與作為一個示例的圖4D的區塊400D相關聯的RLE數據。
[0122]圖8Α顯示包含複數行802 (O)至802 (12)以及複數列804、806、808及810的表800。每行808 (O)至802 (12)將包含在列804中的RLE數據的各個部分與其它列806、808及810中的信息關聯起來。列804限定第4D圖的區塊400D的RLE數據,該RLE數據包含行802 (O)至802 (11)中的對值(pair value)以及行802 (12)中的區塊結束(E.0.B.)代碼。
[0123]列806中的每個值指示根據相應行802 (O)至802 (11)中的RLE數據中的遊程信息的指針706增進了多少個存儲位置。一個指針增進不適用於區塊結束(E.0.B.)代碼,因為其指示所有剩餘係數均為O以及係數緩衝器704的所有存儲位置均已被預加載O。正如從該表中顯而易見的,與彳丁 802 (O)至802 (11)相關聯的列806中的指針增進是基於定義在相應數值對中的行程。在所示的實施例中,通過多個存儲位置,增進該指針706,該多個存儲位置的數量等於I加上定義在除了第一個RLE數值對以外的其餘相應RLE數值對(SP,行802 (I)至802 (11))中的行程。對於行802 (O)中的第一個RLE數值對,該指針通過數量等於定義在該第一個RLE對中的行程的多個存儲位置來增進該指針。
[0124]列808指示係數緩衝器704中的存儲位置,每當指針706通過列806中的相關聯數量增進時,這些存儲位置就被指針706漸進地指向。換句話說,顯示在行802 (I)至802
(11)中的非O係數xO至xll將被寫入列808中指示的係數緩衝器704中的存儲位置。
[0125]最終,列810中的每個值指示一個被寫入相關聯行802的列808中所指示的存儲位置的非O係數。列810中的該非O係數從列804中的RLE數據獲得。需注意的是,在列808與810中沒有適用於行802 (12)中的區塊結束代碼的信息,因為沒有更多的非O係數,並且該指針706不需要進一步移動直到由控制單元702產生重置。
[0126]圖8B更詳細地顯示係數緩衝器704包含64個連續存取的存儲位置812 (O)至812 (63)。圖8B還通過圖表解釋列804中的該RLE數據如何被解碼成區塊400D的多個量化係數。
[0127]首先,響應由控制單元702在重置路徑718上將的重置信號置為有效,O被存儲到所有存儲位置812 (O)至812 (63)。另外,指針706被重置指向係數緩衝器704中的第一存儲位置812 (O)。此後,由於在xO之前沒有O (該對中的第一個值是「O」)以及指針706正指向存儲位置812 (0),因此控制單元702接收第一 RLE數據對(0,xO),並將xO通過係數路徑714寫入存儲位置812 (O)。接下來,控制單元702依序處理列804中的行802 (I)至802 (11)中所示的RLE對值。首先,行802 (I)中的RLE數據指示在xO與xl之間沒有O (該對中的第一個值是「O」)以及xl (該對中的第二個值)為下一個非O量化係數。因此,控制單元702通過將指針控制路徑716上的控制信號置為有效使I加上行程(在這種情況下的一個位置的增進),來增進指針706。此後,指針706指向存儲位置812 (1),並且控制單元702通過係數路徑714將xl寫入存儲位置812 (I)。接下來,控制單元702處理行802 (2)中顯示的RLE對值。行802 (2)中的RLE數據指示在xl與x2之間沒有O (該對中的第一個值是「O」)以及x2 (該對中的第二個值)為下一個非O量化係數。因此,控制單元702通過將指針控制路徑716上的控制信號置為有效使I加上行程(在這種情況下的一個位置的增進),來增進指針706。此後,指針706指向存儲位置812(2),並且控制單元702通過係數路徑714將x2寫入存儲位置812 (2)。對表800的行802 (3)至802 (9)中剩餘的對值類似地繼續進行該過程。
[0128]當控制單元702遇到行802 (10)中的RLE數據時,該對值指示在x9與xlO之間有三個O (該對中的第一個值是「3」)以及xlO (該對中的第二個值)為下一個非O係數。因此,控制單元702通過指針控制路徑716上的控制信號置為有效使I加上行程(在這種情況下的四個位置的增進),來增進指針706。此後,指針706指向存儲位置812 (15),並且控制單元702通過係數路徑714將xlO寫入存儲位置812 (15)。接下來,行802 (11)中的RLE數據指示在xlO與xll之間有一個O (該對中的第一個值是「I」)以及xll (該對中的第二個值)為下一個非O係數。因此,控制單元702通過將指針控制路徑716上的控制信號置為有效使I加上行程(在這種情況下的兩個位置的增進),來增進指針706。此後,指針706指向存儲位置812 (17),並且控制單元702通過係數路徑714將xll寫入存儲位置812 (17)。
[0129]在接收行802 (11)中的RLE數據之後,控制單元702接收區塊結束代碼,該區塊結束代碼指示與圖像數據的當前區塊相關聯的所有剩餘量化係數具有O值。當控制單元702達到這個代碼時,其已經結束將RLE數據解碼成多個與圖像數據區塊相關聯的量化係數。控制單元702然後可以繼續進行,致使係數緩衝器704中的64個係數被輸出至輸出信道管理器708,例如通過將輸出控制路徑720上的輸出使能信號置為有效。
[0130]在解碼與每個圖像數據區塊相關聯的RLE數據之前把所有O加載到該係數緩衝器704提供特定的優點。具體地,因為所有具有O值的量化係數都被預加載,所以行程解碼器604不需要花費解碼這些係數的時間及資源。反而,恰恰相反,行程解碼器604隻利用時間和資源解碼與非O係數相關聯的RLE數據。正如表800的列804中表明的,區塊400D只包括12個非O係數,這意味著行程解碼器604能夠以大約是其必須分別解碼區塊400D中的64個係數的每一個時五倍的速度解碼區塊400D。換句話說,行程解碼器604具有五倍現有技術之行程解碼器的吞吐量。解碼信道606 (I)至606 (η)通過並行完成對數據區塊的解碼處理而取得了行程解碼器604的這種提高的速度的優點。
[0131]更進一步地,因為熵解碼器602的吞吐量與行程解碼器604的吞吐量都與k值成比例,所以兩個解碼器602與604的吞吐量隨另一個變化,這還防止它們之間的瓶頸。此夕卜,解碼器106可包括足夠多的解碼信道606 (I)至606 (n),以便取得這種提高的吞吐量的優點以及防止瓶頸。在一非限制實施例中,解碼信道606 (I)至606 (η)的數量可由下式來確定:
[0132]η > INT 表
[0133]其中Q表示每個數據區塊中的係數數量,INT是整數函數。[0134]重要的是還應當注意,雖然已經根據JPEG編解碼器描述了本發明,但是行程解碼器604還將提供採用行程解碼的任何解碼器中的重要優點。因為行程解碼器604通過首先將該預定值載入到緩衝器的所有存儲位置中來同時解碼每個具有預定值的係數(並非必須是量化係數),所以行程解碼器604提高RLE數據的解碼速度。結果,只有具有與該預定值不同的值的係數需要被分別解碼並存儲到該緩衝器中。因此,行程解碼器604相對於現有技術的行程解碼器而言,特別是相對於分別解碼每個係數的解碼器而言,提高了行程解碼性能。
[0135]由於這些相同的原因,重要的是還應當注意,輸出信道管理器708 (圖7)為可選組件。即使在只具有一個輸出712的行程解碼器604中,行程解碼器604因為上述原因仍然會加速行程解碼過程。實際上,對於任何k值以及即使在缺少多個並行解碼信道606 (I)至606 (η)的情況下,行程解碼器604都提供性能優點。
[0136]圖9為計算機系統900的方塊圖,該圖顯示了以例如電子可讀媒體這樣的軟體實施的本發明的編碼器和/或解碼器。計算機系統900包括一個或多個處理單元(CPU)902、非易失性內存904、使用者輸入/輸出控制器906、網絡接口 908以及工作內存910,上述組件都通過系統總線912互通。CPU902執行包含在工作內存910中的數據和代碼,以便使計算機系統900進行其預期的功能(例如,圖像處理、視頻回放等)。非易失性內存904 (例如,只讀存儲器、一個或多個硬碟驅動、快閃記憶體等)提供數據與代碼(例如,啟動代碼、程序、壓縮圖像文件等)的存儲,即使當計算機系統900斷電,上述數據與代碼也被保留下來。使用者輸入/輸出控制器906管理對使用者接口裝置(未顯示)的連接,該使用者接口裝置例如是鍵盤、滑鼠、顯示器、印表機、照相機以及其它有助於計算機系統900與使用者之間通訊的裝置。網絡接口 908 (例如,乙太網適配卡)在網際網路(例如,網際網路)上發送數據封包以及從網際網路接收數據封包,以便使用者可通過網際網路發送與接收數據(例如,圖像數據)。系統總線912有助於計算機系統900的各種組件之間的互通。
[0137]工作內存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的功能。
[0138]利用本領域技術人員熟知的方法,前述的每個程序及緩衝器都在工作內存910中被初始化和/或從非易失性內存904加載到工作內存910中。可選擇地,前述的程序及緩衝器可以從可替代的大規模數據存儲裝置加載到工作內存910中,該大規模數據存儲裝置包括但不限於⑶-ROM、DVD-ROM、快閃記憶體盤等。此外,上述程序的一些或者全部可以根據需要加載到工作內存910中。例如,可在不加載編碼器程序918的情況下(例如,對於存儲圖像的回放等)執行解碼器程序922。同樣,可在不執行解碼器程序的情況下(例如,對於圖像的存儲)執行編碼器程序918。
[0139]現在參考圖10至圖13來描述本發明的方法。為了解釋清楚的目的,參考之前描述的實施例的特定組件來描述這些方法,這些特定組件實現特定功能。然而,應該注意的是,不管是在本文中明確描述的其它組件還是根據本公開而創造的其它組件都可以被在不脫離本發明範圍的條件下引用的那些組件替代。因此,應該理解的是,本發明的方法並非限制在實現任意特定功能的任意特定組件。進一步地,本發明方法中的一些步驟不必按所示的順序出現。例如,在某些情況中,兩個或以上方法步驟可同時出現。特別是根據本文之前提供的本發明的描述,這些和本文中描述的方法的其它變化將非常顯而易見,並且被認為是在本發明的全部範圍內。
[0140]圖10為概括根據本發明之編碼數據的方法1000的流程圖。在第一步驟1002中,接收區塊值(例如,與多個圖像像素相關聯的區塊變換係數)。在第二步驟1004中,為該區塊值定義一個區塊-特定的量化電平(「Q-level」)。該量化電平被定義成使得根據該區塊-特定的量化電平對該區塊值的量化過程將產生量化係數區塊,該量化係數區塊具有至少預定數量之具有預定值(例如,O)的量化係數。在第三步驟1006中,根據在步驟1004定義的該區塊-特定的量化電平來量化該區塊值,以產生包含至少該預定數量之具有該預定值的該量化係數區塊。在第四步驟1008中,該區塊-特定的量化電平被輸出(例如,輸出至內存等),以便在接下來的解碼過程中使用。在第五步驟1010中,確定是否有另一區塊值需要編碼。如果有,那麼方法1000返回到步驟1002。如果沒有,那麼方法1000結束。
[0141]圖11為概括用來執行圖10的第二步驟1004 (為區塊定義量化電平)的特定方法的流程圖。第一步驟1102包括確定隨著量化在被量化區塊中之必須具有該預定值的量化係數的最小數量k。如上述表明的,該k值對於所有區塊可以是不變的,或者該k值可以根據某些其它參數(例如,由輸出120的速度控制信號指示的期望的解碼器速度、期望的解碼圖像質量等)周期性改變。在第二步驟1104中,利用量化數據以及默認量化電平來初始量化該區塊值(例如,變換係數),以產生量化係數的試驗區塊。在第三步驟1106中,確定該試驗區塊中第k個最小量化係數的值,以及在第四步驟1108中,確定該第k個最小量化係數的值是否等於該預定值(例如,O)。如果等於,那麼在第五步驟1110中,定義該默認量化電平作為第10圖的步驟1008中之該區塊-特定的量化電平,然後該方法結束。
[0142]如果在步驟1108中確定該第k個最小量化係數的值不為0,那麼該方法繼續進行第六步驟1112,在第六步驟1112中,產生一個新的區塊-特定的量化電平,然後該方法結束。
[0143]圖12為概括根據本發明的解碼數據流的方法1200的流程圖。在第一步驟1202中,解碼器接收行程編碼數據流,該行程編碼數據流例如是從熵解碼器輸出的。在第二步驟1204中,解碼器行程解碼RLE數據,以產生第一區塊值(例如,量化係數)。在第三步驟1206中,第一多個係數利用選自多個並行操作的解碼信道606 (I)至606 (η)的第一解碼信道606 (I)開始進一步解碼。在第四步驟1208中,解碼器106行程解碼RLE數據,以產生第二區塊值(例如,量化係數)。在第五步驟1210中,該第二區塊係數利用一選自多個並行操作的解碼信道606 (I)至606 (η)的第二解碼信道606 (2)開始進一步解碼,以便該第一區塊係數與第二區塊係數至少部分地被同時解碼。
[0144]圖13為概括用來執行圖12的步驟1204與1208 (行程解碼RLE數據)二者之一的特定方法的流程圖。在行程解碼過程的第一步驟1302中,將預定值(例如,O)存儲到係數緩衝器704的多個存儲位置的每一個中。在第二步驟1304中,將不同於該預定值的第一值寫入基於該RLE數據的該係數緩衝器704的第一存儲位置812。在第三步驟1306中,從第一存儲位置812到基於該RLE數據的下一個存儲位置812跳過了多個連續的存儲位置812。接下來,在第四步驟814中,不同於該預定值的下一個值被寫入基於該RLE數據的下一個存儲位置812。然後,在第五步驟1310中,確定是否遇到該RLE數據中的區塊結束代碼。如果遇到該區塊結束代碼,則該方法結束。如果沒有遇到該區塊結束代碼,則該方法返回到第三步驟1306,以便將另一個下一個係數寫入另一個基於該RLE數據的下一個存儲位置。
[0145]本發明的特定實施例及方法的描述現在完成。所描述的許多特徵在不脫離本發明範圍的條件下都可以被替代、改變或者省略。例如,儘管已經就JPEG壓縮描述了本發明,但是本發明可同樣地應用到其它數據壓縮編解碼器以及涉及量化、熵和/或行程編解碼的方法(例如,MPEG等)。作為另一個示例,可以省略速度控制輸入120,以及解碼器106的行程解碼器604可根據其接收的該RLE數據自動調整其行程解碼。這些以及來自所示特定實施例的其它偏差對於本領域技術人員將是顯而易見的,特別是在基於前述說明的情況下。
【權利要求】
1.一種行程解碼與多個數值相關聯的行程編碼(RLE)數據的方法,該方法包括: 接收該行程編碼數據; 將預定值儲存於緩衝器的多個連續存取的儲存位置的每一個中; 基於該行程編碼數據,將不同於該預定值的第一值寫入第一儲存位置; 基於該行程編碼數據,自該第一儲存位置跳過多個該連續存取的儲存位置到下一個儲存位置;以及 基於該行程編碼數據,將不同於該預定值的下一個數值寫入該下一個儲存位置。
2.根據權利要求1所述的方法,其中: 該行程編碼數據包含多個數值對; 該數值對的每一個包含第一值以及第二值,該第一值代表具有該預定值的數值的行程,該第二值代表不同於該預定值的下一個數值;以及 被跳過的多個該連續存取的儲存位置的數量等於該多個數值對的其中之一中的該第一值。
3.根據權利要求2所述的方法,其中所述跳過的步驟包括多次增進指針,其中增進指針的次數等於一加上該數值對的其中之一的該第一值。
4.根據權利要求1所述的方法,進一步包括: 基於該行程編碼數據,自該下一個儲存位置跳過第二多個該連續存取的儲存位置到另一下一個儲存位置;以及 基於該行程編碼數據,將不同於該預定值的另一下一個數值寫入該另一下一個儲存位置。
5.根據權利要求1所述的方法,進一步包括重置該儲存位置的每一個以包含該預定值。
6.根據權利要求5所述的方法,進一步包括重置指針以指向該多個連續存取的儲存位置中的起始儲存位置。
7.根據權利要求6所述的方法,其中所述重置該儲存位置的每一個的步驟以及重置該指針的步驟緊隨著接收到該行程編碼數據中的結束代碼而發生,該結束代碼代表已接收到除了該預定值之外的最後一個值。
8.根據權利要求5所述的方法,進一步包括: 輸出包含在該緩衝器的該多個儲存位置每一個中的數值作為該多個數值;以及其中所述重置該儲存位置的每一個以包含該預定值的步驟發生在所述輸出該數值的步驟之後。
9.根據權利要求8所述的方法,其中所述輸出包含在該多個儲存位置的每一個中的數值的步驟緊隨著接收到該行程編碼數據中的結束代碼而發生,該結束代碼代表已接收到除了該預定值之外的最後一個值。
10.根據權利要求1所述的方法,進一步包括將包含在該多個儲存位置的每一個中的數值輸出到多個信道的任意一個中。
11.根據權利要求1所述的方法,其中該預定值為O。
12.根據權利要求1所述的方法,其中: 該行程編碼數據定義與多個圖像數據的像素相關聯的區塊的量化係數;以及該緩衝器包含64個該連續存取的儲存位置。
13.一種用於解碼與多個數值相關聯的行程編碼(RLE)數據的行程解碼器,該行程解碼器包括: 輸入端,被操作以接收該行程編碼數據; 緩衝器,包含多個可連續存取的儲存位置;以及 控制單元,被操作以: 將一預定值儲存於該多個儲存位置的每一個中; 基於該行程編碼數據,將不同於該預定值的第一值寫入第一儲存位置; 移動至離該第一儲存位置多個該可連續存取的儲存位置的下一個儲存位置,該多個該可連續存取的儲存位置系根據該行程編碼數據來確定的;以及 基於該行程編碼數據,將不同於該預定值的下一個值寫入該下一個儲存位置。
14.根據權利要求13所述的解碼器,其中: 該行程編碼數據包含多個數值對; 該數值對的每一個包含第一值以及第二值,該第一值代表具有該預定值的數值的行程,該第二值代表不同於該預定值的下一個數值;以及 該第一儲存位置與該下一個儲存位置之間的該連續存取的儲存位置的數量等於該數值對的其中之一的該第一值。
15.根據權利要求14所述的解碼器,進一步包括: 指針,被操作以指向任意一個的該儲存位置;以及 其中該控制單元被操作以: 當該指針指向該第一儲存位置時,寫入該第一儲存位置, 根據該行程編碼數據修改該指針指向該下一個儲存位置,以及 當該指針指向該下一個儲存位置時,寫入該下一個儲存位置。
16.根據權利要求15所述的解碼器,其中該控制單元被操作以通過多次增進該指針而修改該指針,其中增進該指針的次數等於一加上該數值對的該其中之一的該第一值。
17.根據權利要求13所述的解碼器,其中該控制單元進一步被操作以: 基於該行程編碼數據,移動至離該下一儲存位置多個該連續存取的儲存位置的另一下一個儲存位置;以及 基於該行程編碼數據,將不同於該預定值的另一下一個數值寫入該另一下一個儲存位置。
18.根據權利要求13所述的解碼器,其中該控制單元進一步被操作以重置該儲存位置的每一個以包含該預定值。
19.根據權利要求18所述的解碼器,進一步包括: 指針,被操作以指向任意一個的該儲存位置;以及 其中該控制單元被操作以重置該指針指向該多個連續存取的儲存位置中的起始儲存位置。
20.根據權利要求19所述的解碼器,其中該控制單元被操作以緊隨著在該輸入端接收到該行程編碼數據中的結束代碼而重置該儲存位置的每一個以及該指針,該結束代碼代表已接收到除了該預定值之外的最後一個值。
21.根據權利要求18所述的解碼器,進一步包括: 輸出端,以及其中 該控制單元被操作以: 使包含在該緩衝器的該多個儲存位置每一個中的數值作為該多個數值而從該緩衝器輸出,以及 在包含在該緩衝器中的該數值被輸出之後,重置該儲存位置的每一個以包含該預定值。
22.根據權利要求21所述的解碼器,其中該控制單元被操作以緊隨著接收到該行程編碼數據中的結束代碼而使包含在該多個儲存位置的每一個中的數值從該緩衝器輸出,該結束代碼代表已接收到除了該預定值之外的最後一個值。
23.根據權利要求13所述的解碼器,其中該控制單元被操作以使包含在該多個儲存位置的每一個中的數值被輸出到多個信道中的任意一個信道。
24.根據權利要求13所述的解碼器,其中該預定值為O。
25.根據權利要求13 所述的解碼器,其中: 該行程編碼數據定義與圖像數據的多個像素相關聯的區塊的量化係數;以及 該緩衝器包含64個該連續存取的儲存位置。
26.一種非暫時性電可讀儲存介質,具有實施在其中的代碼以使電子裝置: 接收與多個數值相關聯的行程編碼(RLE)數據; 將預定值儲存於緩衝器的多個連續存取的儲存位置的每一個中; 基於該行程編碼數據,將不同於該預定值的第一值寫入第一儲存位置; 基於該行程編碼數據,自該第一儲存位置跳過多個該連續存取的儲存位置到下一個儲存位置;以及 基於該行程編碼數據,將不同於該預定值的下一個數值寫入該下一個儲存位置。
27.一種用於解碼與多個數值相關聯的行程編碼(RLE)數據的行程解碼器,該行程解碼器包括: 輸入端,被操作以接收該行程編碼數據; 緩衝器,包含多個連續存取的儲存位置,其中包含在該多個連續存取的儲存位置中的數值定義該多個數值;以及 用於集中解碼在具有該預定值的該緩衝器中該多個數值的每一個的裝置;以及基於該行程編碼數據,用於分別解碼在具有不同於該預定值的該緩衝器中數值的該多個數值的每一個的裝置。
【文檔編號】H04N19/124GK103581679SQ201310280651
【公開日】2014年2月12日 申請日期:2013年7月5日 優先權日:2012年7月19日
【發明者】杜宣明 申請人:豪威科技股份有限公司