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