專利名稱::在自適應(yīng)編碼和解碼中選擇性地使用多個熵模型的制作方法在自適應(yīng)編碼和解碼中選擇性地使用多個熵模型站雖冃眾工程師使用各種技術(shù)以在保持數(shù)字音頻的質(zhì)量的同時高效地處理數(shù)字音頻。為理解這些技術(shù),理解在計算機中如何表示和處理音頻信息是有幫助的。I.在計算機中表示音頻信息計算機將音頻信息處理為表示音頻信息的一系列數(shù)字。例如,單個數(shù)字可表示一個音頻樣本,該樣本在特定時刻是一幅值。若干因素影響了音頻信息的質(zhì)量,包括樣本深度、釆樣速率和聲道模式。樣本深度(或精度)指示用于表示一個樣本的數(shù)字的范圍。對樣本的可能值越多,質(zhì)量也越高,因為該數(shù)字能捕捉幅度的更細微變化。例如,8位樣本具有256個可能值,而16位樣本具有65,536個可能值。采樣速率(通常是作為每秒的樣本數(shù)來測量的)也影響質(zhì)量。采樣速率越高,質(zhì)量就越高,因為可表示更多聲音頻率。一些常見的采樣速率是8,000、11,025、22,050、32,000、44,100、48,000和96,000樣本/秒。單聲道和立體聲是對于音頻的兩種常見的聲道模式。在單聲道模式中,音頻信息存在于一個聲道中。在立體聲模式中,音頻信息存在于通常標為左聲道和右聲道的兩個聲道中。具有更多聲道,諸如5.1聲道、7.1聲道或9.1聲道環(huán)繞聲("1"指示亞低音揚聲器或低頻音效聲道)的其它模式也是可能的。表1示出了具有不同質(zhì)量水平的若干音頻格式,以及對應(yīng)的原始比特率成本。樣本深度(位/樣本)采樣速率(樣本/秒)聲道模式原始比特率(比特/秒)因特網(wǎng)電話88,000單聲道64,000電話811,025單聲道88,200CD音頻1644,100立體聲1,411,200表1不同質(zhì)量音頻信息的比特率環(huán)繞聲音頻通常具有甚至更高的原始比特率。如表1所示,高質(zhì)量音頻信息的成本是高比特率。高質(zhì)量音頻信息消耗了大量的計算機存儲和傳輸能力。然而,公司和消費者越來越依賴于計算機來創(chuàng)建、分發(fā)和回放高質(zhì)量音頻內(nèi)容。II.在計算機中處理音頻信息許多計算機和計算機網(wǎng)絡(luò)缺少處理原始數(shù)字音頻的資源。壓縮(也稱為編碼或譯碼)通過將信息轉(zhuǎn)換成較低比特率的形式降低了儲存和傳送音頻信息的成本。壓縮可以是無損(其中質(zhì)量不受損害)或有損(其中質(zhì)量受到損害,但是因隨后的無損壓縮而得到的比特率減小更顯著)。例如,使用有損壓縮來逼近原始音頻信息,然后對該逼近進行無損壓縮。解壓(也稱為解碼)從壓縮形式中提取原始信息的重構(gòu)版本。音頻壓縮的一個目的是數(shù)字地表示音頻信號以用可能的最少量比特來提供所察覺信號的最大質(zhì)量。用此目的作為目標,各種當今的音頻編碼系統(tǒng)利用了人類知覺模型。編碼器和解碼器系統(tǒng)包括微軟公司的Windows媒體音頻("WMA")編碼器和解碼器以及WMAPro編碼器和解碼器的某些版本。其它系統(tǒng)由運動圖片專家組音頻第3層("MP3")標準、運動圖片專家組2高級音頻編碼("AAC")標準和杜比(Dolby)AC3的某些版本來指定。這些系統(tǒng)通常使用組合的有損和無損壓縮和解壓。A.有損壓縮和相應(yīng)的解壓常規(guī)上,音頻編碼器使用各種不同的有損壓縮技術(shù)。這些有損壓縮技術(shù)通常涉及在頻率變換之后的知覺建模/加權(quán)和量化。相應(yīng)的解壓涉及量化、反加權(quán)和頻率反變換。頻率變換技術(shù)將數(shù)據(jù)轉(zhuǎn)換成使得能更容易地從知覺上不重要的信息中分離出知覺上重要的信息的形式。較不重要的信息然后可進行更有損的壓縮,而較重要的信息被保留,以提供對給定比特率的最佳察覺質(zhì)量。頻率變換通常接收音頻樣本,并將其轉(zhuǎn)換成頻域中的數(shù)據(jù),該數(shù)據(jù)有時也稱為頻率系數(shù)或頻譜系數(shù)。知覺建模涉及根據(jù)人類聽覺系統(tǒng)的模型來處理音頻數(shù)據(jù)以改進對給定比特率的重構(gòu)音頻信號的察覺質(zhì)量。使用知覺建模的結(jié)果,編碼器以最小化對給定比特率的噪聲可聽見性為目標來對音頻數(shù)據(jù)中的噪聲(例如,量化噪聲)整形。量化將輸入值的范圍映射到單個值,從而引入了不可逆的信息損失,但也許編碼器調(diào)節(jié)輸出的質(zhì)量和比特率。有時,編碼器結(jié)合調(diào)整量化的速率控制器來執(zhí)行量化以調(diào)節(jié)比特率和/或質(zhì)量。有各種類型的量化,包括自適應(yīng)和非自適應(yīng)、標量和向量、均勻和非均勻。知覺加權(quán)可被認為是一種形式的非均勻量化。反量化和反加權(quán)將加權(quán)的、量化的頻率系數(shù)數(shù)據(jù)重構(gòu)成原始的頻率系數(shù)數(shù)據(jù)的逼近。頻率反變換然后將重構(gòu)的頻率系數(shù)數(shù)據(jù)轉(zhuǎn)換成重構(gòu)的時域音頻樣本。B.無損壓縮和解壓常規(guī)上,音頻編碼器使用各種不同無損壓縮技術(shù)中的一種或多種,這些技術(shù)也稱為熵編碼技術(shù)。一般而言,無損壓縮技術(shù)包括行程長度編碼、可變長度編碼和算術(shù)編碼。對應(yīng)的解壓技術(shù)(也稱為熵解碼技術(shù))包括行程長度解碼、可變長度解碼和算術(shù)解碼。行程長度編碼是一種簡單、公知的壓縮技術(shù)。一般而言,行程長度編碼用具有相同值的連續(xù)碼元序列(即行程)的值和長度來替換該序列。在行程長度解碼中,從行程值和行程長度中重構(gòu)連續(xù)碼元序列。開發(fā)了行程長度編碼/解碼的眾多變型。行程級別編碼類似于行程長度編碼,因為具有相同值的連續(xù)碼元的行程用行程長度來替換。行程的值是數(shù)據(jù)中的主導(dǎo)值(predominantvalue)(例如,0),并且行程由具有不同值(例如,非零值)的一個或多個級別隔開。行程長度編碼或行程級別編碼的結(jié)果(例如,行程值和行程長度)可以被可變長度編碼以進一步減小比特率。如果是這樣,則可變長度編碼的數(shù)據(jù)在行程長度解碼之前進行可變長度解碼。可變長度編碼是另一種公知的壓縮技術(shù)。一般而言,可變長度碼["VLC"]表將VLC與唯一碼元值(或值的唯一組合)相關(guān)聯(lián)。哈夫曼(Huffman)碼是一種常見類型的VLC。較短的代碼被分配給較有可能的碼元值,而較長的代碼被分配給較不可能的碼元值。對某種內(nèi)容的典型示例計算概率。或者,對剛編碼的數(shù)據(jù)或?qū)⒁幋a的數(shù)據(jù)計算概率,在這一情況下,VLC自適應(yīng)以改變唯一碼元值的概率。與靜態(tài)可變長度編碼相比,自適應(yīng)可變長度編碼通常通過結(jié)合數(shù)據(jù)的更準確概率來減小壓縮數(shù)據(jù)的比特率,但是還需要傳送指定VLC的額外信息。為編碼碼元,可變長度編碼器用與VLC表中的碼元值相關(guān)聯(lián)的VLC來替換碼元值。為解碼,可變長度解碼器用與VLC相關(guān)聯(lián)的碼元值來替換VLC。在標量可變長度編碼中,VLC表將單個VLC與一個值,例如直接級別的量化數(shù)據(jù)值相關(guān)聯(lián)。在向量可變長度編碼中,VLC表將單個VLC與值的組合,例如,按特定順序的一組直接級別的量化數(shù)據(jù)相關(guān)聯(lián)。向量可變長度編碼可得到比標量可變長度編碼更好的比特率減小(例如,通過允許編碼器在二進制VLC中微小地利用概率)。另一方面,用于向量可變長度編碼的VLC表在單個代碼表示一大組碼元或碼元具有大范圍的可能值(由于大量的可能組合)時可能極大,這在計算VLC表和找出VLC時消耗了存儲器和處理資源。開發(fā)了可變長度編碼/解碼的眾多變型。算術(shù)編碼是另一種公知的壓縮技術(shù)。算術(shù)編碼有時在編碼一給定輸入碼元的最優(yōu)位數(shù)是分數(shù)位數(shù)的應(yīng)用中使用,以及在某些個別的輸入碼元中存在統(tǒng)計相關(guān)的情況下使用。算術(shù)編碼一般涉及將輸入序列表示為給定范圍內(nèi)的單個數(shù)字。通常,該數(shù)字是0和1之間的分數(shù)。輸人序列中的碼元與占據(jù)0和1之間的控件部分的范圍相關(guān)聯(lián)。范圍是基于特定碼元出現(xiàn)在輸入序列中的概率來計算的。用于表示輸入序列的分數(shù)參考范圍來構(gòu)造。因此,輸入碼元的概率分布在算術(shù)編碼方案中是重要的。.在基于上下文的算術(shù)編碼中,將輸入碼元的不同概率分布與不同上下文相關(guān)聯(lián)。用于編碼輸入序列的概率分布在上下文改變時改變。上下文可通過測量預(yù)期會影響特定輸入碼元出現(xiàn)在輸入序列中的概率的不同因素來計算。給定壓縮和解壓對于媒體處理的重要性,壓縮和解壓是豐富開發(fā)的領(lǐng)域并不是令人驚奇的。然而,不論用于無損壓縮和解壓的現(xiàn)有技術(shù)和系統(tǒng)有什么優(yōu)點,它們都沒有此處所描述的技術(shù)和系統(tǒng)的各種優(yōu)點。概述此處描述了用于在自適應(yīng)編碼和解碼中選擇性地使用多個熵模型的技術(shù)和工具。例如,選擇性地使用多個熵模型可顯著降低對多個分布/VLC表的資源使用。同時,可獲得與使用多個分布/VLC表相關(guān)聯(lián)的大量編碼增益。根據(jù)第一組技術(shù)和工具,諸如編碼器或解碼器等工具對碼元從包括多個熵模型的第一模型集中選擇一熵模型。該第一模型集的多個熵模型中的每一個包括用于切換到包括一個或多個熵模型的第二模型集的模型切換點。該工具使用所選的熵模型來處理碼元,并輸出處理的結(jié)果。該第二模型集的一個或多個熵模型中的每一個本身可包括用于切換到另一模型集的模型切換點。此外,該第一模型集的多個熵模型中的每一個還可包括用于切換到另一模型集的第二模型切換點。更一般地,第一模型集的多個熵模型中的每一個可包括用于切換到其它模型集(其它模型集中的每一模型集本身包括零個或多個熵模型)的零個或多個模型切換點。以遞歸的方式,對其它模型集的一給定模型集,該模型集的熵模型可包括用于切換到另外的其它模型集的零個或多個模型切換點,依此類推。根據(jù)第二組技術(shù)和工具,一系統(tǒng)生成熵模型。該系統(tǒng)根據(jù)第一成本度量(諸如均方誤差)來聚集概率分布,得到初步聚類(cluster)。該系統(tǒng)根據(jù)不同于第一成本度量的第二成本度量(諸如相對熵)來細化該初步聚類,得到最終聚類。該系統(tǒng)然后至少部分地基于該最終聚類來設(shè)置熵模型。根據(jù)第三組技術(shù)和工具,一系統(tǒng)獲得碼元值的概率分布。該系統(tǒng)生成熵模型。如此,該系統(tǒng)將多個較不可能的碼元值約束為具有跨概率分布的公共條件分布,而不對較有可能的碼元值進行這樣的約束。參考附圖閱讀以下詳細描述,將更清楚本發(fā)明的前述和其它目的、特征和優(yōu)點。附圖簡述圖1是可結(jié)合來實現(xiàn)所描述的各實施例的通用操作環(huán)境的框圖。圖2、3、4、5、6和7是可結(jié)合來實現(xiàn)所描述的各實施例的通用編碼器和/或解碼器的框圖。圖8a和8b分別是示出多聲道音頻信號和相應(yīng)的窗配置的圖表。圖9和10分別是示出帶有時間噪聲整形的編碼器和解碼器的框圖。圖11和12分別是示出帶有對比特率減小的系數(shù)預(yù)測的編碼器和解碼器的框圖。圖13和14分別是示出用于量化的頻譜系數(shù)的編碼和解碼中的系數(shù)預(yù)測的的技術(shù)的流程圖。圖15a和15b分別是示出時域中的周期性音頻信號和相應(yīng)的頻譜系數(shù)的圖表。圖16和17分別是示出帶有系數(shù)重排的編碼器和解碼器的框圖。圖18a到18c是示出用于在熵編碼前重排頻譜系數(shù)的技術(shù)的流程圖。圖19a到19c是示出用于在熵解碼之后重排頻譜系數(shù)的技術(shù)的流程圖。圖20是示出在重排之后的圖15b的頻譜系數(shù)的圖表。圖21是示出由于對示例音頻文件的每一子幀進行系數(shù)重排而得到的編碼增益的圖表。圖22是示出分層組織的熵模型的圖示。圖23是示出用于碼元值的近似分布的哈夫曼碼的圖表。圖24和25是示出用于聚集概率分布的訓練向量的技術(shù)的流程圖。圖26是示出用于以對多個熵模型的選擇性使用來進行編碼的技術(shù)的流程圖。圖27是示出用于以對多個熵模型的選擇性使用來進行解碼的技術(shù)的流程圖。詳細描述描述了用于熵編碼/解碼和相關(guān)聯(lián)的處理的各種技術(shù)和工具。這些技術(shù)和工具便于即使以非常低的比特率來創(chuàng)建、分發(fā)和回放高質(zhì)量音頻內(nèi)容。此處描述的各種技術(shù)和工具可獨立使用。某些技術(shù)和工具可組合使用(例如,在組合的編碼和/或解碼過程的不同階段中)。以下參考處理動作的流程圖描述了各種技術(shù)。流程圖中所述的各種處理動作可被合并成較少的動作后被分離成更多動作。為了簡明起見,特定流程圖中所述的動作與別處描述的動作之間的關(guān)系通常不示出。在許多情況下,流程圖中的動作可被重排。I.用于編碼器和/或解碼器的示例操作環(huán)境圖l示出了其中可實現(xiàn)幾個所描述的實施例的合適的計算環(huán)境(100)的通用的示例。計算環(huán)境(100)并不對使用范圍或功能提出任何局限,因為所描述的技術(shù)和工具可在不同的通用或?qū)S糜嬎悱h(huán)境中實現(xiàn)。參考圖1,計算環(huán)境(100)包括至少一個處理單元(110)和存儲器(120)。在圖1中,這一最基本的配置(130)被包括在虛線內(nèi)。處理單元(110)執(zhí)行計算機可執(zhí)行指令,并且可以是真實或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。存儲器(120)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPROM、閃存等)或兩者的某種組合。存儲器(120)儲存實現(xiàn)使用此處所描述的一種或多種技術(shù)的編碼器和/或解碼器的軟件(180)。計算環(huán)境可具有附加特征。例如,計算環(huán)境(100)包括存儲(140)、一個或多個輸入設(shè)備(150)、一個或多個輸出設(shè)備(160)以及一個或多個通信連接(170)。諸如總線、控制器或網(wǎng)絡(luò)等互連機制(未示出)將計算環(huán)境(100)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計算環(huán)境(100)中執(zhí)行的其它軟件提供了操作環(huán)境,并協(xié)調(diào)計算環(huán)境(100)的各組件的活動。存儲(140)可以是可移動或不可移動的,并包括磁盤、磁帶或磁帶盒、CD-ROM、DVD或可用于儲存信息并可在計算環(huán)境(100)內(nèi)訪問的任何其它介質(zhì)。存儲(140)儲存用于軟件(180)的指令。輸入設(shè)備(150)可以是諸如鍵盤、鼠標、筆或跟蹤球的觸摸輸入設(shè)備、語音輸入設(shè)備、掃描設(shè)備或向計算環(huán)境(100)提供輸入的另一設(shè)備。對于音頻或視頻編碼,輸入設(shè)備(150)可以是話筒、聲卡、顯卡、電視調(diào)諧卡或接受模擬或數(shù)字形式的音頻輸入的類似設(shè)備、或?qū)⒁纛l或視頻樣本讀入計算環(huán)境(100)的CD-ROM或CD-RW。輸出設(shè)備(160)可以是顯示器、打印機、CD刻錄機或提供來自計算環(huán)境(100)的輸出的另一設(shè)備。通信連接(170)允許在通信介質(zhì)上與另一計算實體的通信。通信介質(zhì)在已調(diào)制數(shù)據(jù)信號中傳輸諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸出、或其它數(shù)據(jù)等信息。己調(diào)制數(shù)據(jù)信號是其一個或多個特性以對信號中的信息編碼的方式來設(shè)定或更改的信號。作為示例而非局限,通信介質(zhì)包括用電、光、RF、紅外、聲學或其它載體實現(xiàn)的有線或無線技術(shù)。該技術(shù)和工具可在計算機可讀介質(zhì)的一般上下文中描述。計算機可讀介質(zhì)可以是可在計算環(huán)境內(nèi)訪問的任何可用介質(zhì)。作為示例而非局限,對于計算環(huán)境(100),計算機可讀介質(zhì)可包括存儲器(120)、存儲(140)、通信介質(zhì)和以上任一種的組合。該技術(shù)和工具可在諸如程序模塊中所包括的在目標真實或虛擬處理器上的計算環(huán)境中執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可如各種實施例中所需地被組合或在程序模塊之間拆分。用于程序模塊的計算機可執(zhí)行指令可在本地或分布式計算環(huán)境中執(zhí)行。出于表示的目的,詳細描述使用了如"信號"、"確定"和"應(yīng)用"等術(shù)語來描述計算環(huán)境中的計算機操作。這些術(shù)語是對由計算機執(zhí)行的操作的高級抽象,并且不應(yīng)與人類執(zhí)行的動作混淆。對應(yīng)于這些術(shù)語的實際計算機操作可取決于實現(xiàn)而變化。II.示例編碼器和解碼器圖2示出了其中可實現(xiàn)一個或多個所描述的實施例的第一音頻編碼器(200)。編碼器(200)是基于變換的知覺音頻編碼器(200)。圖3示出了對應(yīng)的音頻解碼器(300)。圖4示出了其中可實現(xiàn)一個或多個所描述的實施例的第二音頻編碼器(400)。編碼器(400)也是基于變換的知覺音頻編碼器,但是編碼器(400)包括用于處理多聲道音頻的附加模塊。圖5示出了對應(yīng)的音頻解碼器(500)。圖6示出了其中可實現(xiàn)一個或多個所描述的實施例的更通用的媒體編碼器(600)。圖7示出了對應(yīng)的媒體解碼器(700)。盡管圖2到7所示的系統(tǒng)是通用的,但其各自都具有可在真實系統(tǒng)中找到的特性。在任何情況下,在編碼器和解碼器內(nèi)的模塊之間示出的關(guān)系指示了編碼器和解碼器中的信息流;為簡明起見未示出其它關(guān)系。取決于所需的實現(xiàn)和壓縮類型,編碼器或解碼器的模塊可被添加、省略、拆分成多個模塊、與其它模塊組合、和/或用類似模塊來替換。在替換實施例中,根據(jù)一個或多個所描述的實施例,具有不同模塊和/或其它配置的編碼器/解碼器處理音頻數(shù)據(jù)或某一其它類型的數(shù)據(jù)。例如,圖2到7中處理頻譜系數(shù)的模塊可用于僅處理基帶或基頻子范圍(諸如較低頻率)中的系數(shù),而不同的模塊(未示出)處理其它頻率子范圍(諸如較高頻率)中的頻譜系數(shù)。A.第一音頻編碼器總體上,編碼器(200)以某一采樣深度和速率接收輸入音頻樣本(205)的時間序列。輸入音頻樣本(205)是針對多聲道音頻(例如,立體聲)或單聲道音頻的。編碼器(200)壓縮音頻樣本(205),并多路復(fù)用由編碼器(200)的各模塊產(chǎn)生的信息以輸出諸如WMA格式、高級流格式("ASF")或其它格式等格式的比特流(295)。頻率變換器(210)接收音頻樣本(205),并將其轉(zhuǎn)換成頻譜域中的數(shù)據(jù)。例如,頻率變換器(210)將音頻樣本(205)拆分成塊,塊可以是可變的大小以允許可變時間分辨率。塊可重疊以減小塊之間否則會由稍后的量化引入的可察覺的不連續(xù)性。頻率變換器(210)將時變調(diào)制重疊變換("MLT")、調(diào)制DCT("MDCT")、MLT或DCT的某一其它變體、或某種其它類型的調(diào)制或非調(diào)制、重疊或非重疊頻率變換應(yīng)用于塊,或使用子帶或小波編碼。頻率變換器(210)向多路復(fù)用器("MUX")(280)輸出頻譜系數(shù)數(shù)據(jù)塊,并輸出諸如塊大小等輔助信息。對于多聲道音頻數(shù)據(jù),多聲道變換器(220)可將多個原始的、獨立編碼的聲道轉(zhuǎn)換成聯(lián)合編碼的聲道。或者,多聲道變換器(220)可使左和右聲道作為獨編碼的聲道通過。多聲道變換器(220)向MUX(280)產(chǎn)生指示所使用的聲道模式的輔助信息。編碼器(200)可在多聲道變換之后向音頻數(shù)據(jù)塊應(yīng)用多聲道重新矩陣化。知覺建模器(230)對人類聽覺系統(tǒng)的特性建模以改善對給定比特率的重構(gòu)音頻信號的察覺質(zhì)量。知覺建模器(230)使用各種聽覺模型中的任一種。知覺建模器(230)輸出加權(quán)器(240)用于對音頻數(shù)據(jù)中的噪聲整形以降低噪聲的可聽見性的信息。例如,使用各種技術(shù)中的任一種,加權(quán)器(240)基于所接收到的信息生成用于量化矩陣(有時稱為掩碼)的加權(quán)因子(有時稱為縮放因子)。加權(quán)器(240)然后向從多聲道變換器(220)接收到的數(shù)據(jù)應(yīng)用加權(quán)因子??蔀榱烁行У谋硎径鴫嚎s一組加權(quán)因子。量化器(250)量化加權(quán)器(240)的輸出,從而向熵編碼器(260)產(chǎn)生量化的系數(shù)數(shù)據(jù),并向MUX(280)產(chǎn)生包括量化步長的輔助信息。在圖2中,量化器(250)是自適應(yīng)的、均勻的標量量化器。量化器(250)向每一頻譜數(shù)據(jù)應(yīng)用相同的量化步長,但是量化步長本身可在量化循環(huán)的各個迭代之間變化以影響熵編碼器(260)輸出的比特率。其它種類的量化有非均勻、向量量化和/或非自適應(yīng)量化。熵編碼器(260)無損地壓縮從量化器(250)接收到的量化的系數(shù)數(shù)據(jù),例如執(zhí)行行程級別編碼和向量可變長度編碼。某些實施例中用于熵編碼(可能包括預(yù)處理)的各種機制在第III到第V節(jié)中詳細描述?;蛘撸鼐幋a器(260)使用某種其它形式或組合的熵編碼機制。熵編碼器(260)可計算編碼音頻信息所花費的比特數(shù)并將該信息傳遞到速率/質(zhì)量控制器(270)??刂破?270)與量化器(250)—起工作以調(diào)節(jié)編碼器(200)的輸出的比特率和/或質(zhì)量??刂破?270)以滿足比特率和質(zhì)量約束為目標向量化器(250)輸出量化步長。另外,編碼器(200)可向音頻數(shù)據(jù)塊應(yīng)用噪聲替代和/或頻帶截斷。MUX(280)多路復(fù)用從音頻編碼器(200)的其它模塊接收到的輔助信息以及從熵編碼器(260)接收到的經(jīng)熵編碼的數(shù)據(jù)。MUX(280)可包括儲存要由編碼器(200)輸出的比特流(295)的虛擬緩沖器。B.第一音頻解碼器總體上,解碼器(300)接收包括經(jīng)熵編碼的數(shù)據(jù)以及輔助信息的壓縮音頻信息的比特流(305),從該比特流中,解碼器(300)重構(gòu)音頻樣本(395)。多路分解器("DEMUX")(310)解析比特流(305)中的信息,并將該信息發(fā)送到解碼器(300)的各模塊。DEMUX(310)包括一個或多個緩沖器補償由于音頻復(fù)雜性的波動、網(wǎng)絡(luò)抖動和/或其它因素而產(chǎn)生的比特率的短期變化。熵解碼器(320)無損地解壓從DEMUX(310)接收到的熵代碼,從而產(chǎn)生經(jīng)量化的頻譜系數(shù)數(shù)據(jù)。熵解碼器(320)通常應(yīng)用編碼器中使用的熵編碼技術(shù)的反過程。某些實施例中用于熵解碼的各種機制在第III到第V節(jié)中詳細描述。反量化器(330)從DEMUX(310)接收量化步長,并從熵解碼器(320)接收經(jīng)量化的頻譜系數(shù)數(shù)據(jù)。反量化器(330)向經(jīng)量化的頻率系數(shù)數(shù)據(jù)應(yīng)用量化步長,以部分地重構(gòu)頻率系數(shù)數(shù)據(jù),或以其它方式執(zhí)行反量化。噪聲生成器(340)從DEMUX(310)接收指示數(shù)據(jù)塊中的哪些頻帶進行了噪聲替代以及用于該形式的噪聲的任何參數(shù)的信息。噪聲生成器(340)生成用于所指示的頻帶的模式,并將該信息傳遞給反加權(quán)器(350)。反加權(quán)器(350)從DEMUX(310)接收加權(quán)因子,從噪聲生成器(340)接收任何經(jīng)噪聲替代的頻帶,并從反量化器(330)接收部分重構(gòu)的頻率系數(shù)數(shù)據(jù)。在必要時,反加權(quán)器(350)解壓加權(quán)因子。反加權(quán)器(350)將加權(quán)因子應(yīng)用于對未經(jīng)噪聲替代的頻帶的部分重構(gòu)的頻率系數(shù)數(shù)據(jù)。反加權(quán)器(350)然后對經(jīng)噪聲替代的頻帶將從噪聲生成器(340)接收到的噪聲模式相加。多聲道反變換器(360)從反加權(quán)器(350)接收重構(gòu)的頻譜系數(shù)數(shù)據(jù),并從DEMUX(310)接收聲道模式信息。如果多聲道音頻是獨立編碼的聲道,則多聲道反變換器(360)使該聲道通過。如果多聲道數(shù)據(jù)是聯(lián)合編碼的聲道,則多聲道反變換器(360)將數(shù)據(jù)轉(zhuǎn)換成獨立編碼的聲道。頻率反變換器(370)接收由多聲道變換器(360)輸出的頻譜系數(shù)數(shù)據(jù)以及來自DEMUX(310)的諸如塊大小等輔助信息。頻率反變換器(370)應(yīng)用編碼器中所使用的頻率變換的反過程,并輸出重構(gòu)的音頻樣本(395)的塊。C.第二音頻編碼器參考圖4,編碼器(400)以某一采樣深度和速率接收輸入音頻樣本(405)的時間序列。輸入音頻樣本(405)是針對多聲道音頻(例如,立體聲、環(huán)繞)或單聲道音頻的。編碼器(400)壓縮音頻樣本(405)并多路復(fù)用由編碼器(400)的各模塊產(chǎn)生的信息,以輸出諸如WMAPro格式或其它格式等格式的比特流(495)。編碼器(400)在用于音頻樣本(405)的多個編碼模式之間選擇。在圖4中,編碼器(400)在混合/純無損編碼模式和有損編碼模式之間切換。無損編碼模式包括混合/純無損編碼器(472),且通常用于高質(zhì)量(以及高比特率)壓縮。有損編碼模式包括諸如加權(quán)器(442)和量化器(460)等組件,且通常用于可調(diào)整質(zhì)量(以及受控比特率)壓縮。選擇決策取決于用戶輸入或其它準則。對于多聲道音頻數(shù)據(jù)的有損編碼,多聲道預(yù)處理器(410)可任選地對時域音頻樣本(405)重新矩陣化。在某些實施例中,多聲道預(yù)處理器(410)選擇性地對音頻樣本(405)重新矩陣化以丟棄一個或多個己編碼聲道或增加編碼器(400)中的聲道間相關(guān),但仍允許解碼器(500)中的(某種形式的)重構(gòu)。多聲道預(yù)處理器(410)可將諸如用于多聲道后處理的指令等輔助信息發(fā)送到MUX(490)。加窗模塊(420)將音頻輸入樣本(405)的幀劃分成子幀塊(窗)。窗可具有時變大小和窗整形函數(shù)。當編碼器(400)使用有損編碼時,可變大小窗允許可變時間分辨率。加窗模塊(420)向MUX(490)輸出劃分的數(shù)據(jù)塊,并輸出諸如塊大小等輔助信息。在圖4中,小塊配置器(422)在每一聲道的基礎(chǔ)上劃分多聲道音頻的幀。小塊配置器(422)在質(zhì)量/比特率允許的情況下獨立地劃分幀中的每一聲道。例如,小塊配置器(422)將時間上相同位置的相同大小的窗歸組為小塊。頻率變換器(430)接收音頻樣本,并將其轉(zhuǎn)換成頻域中的數(shù)據(jù),從而應(yīng)用了如上對圖2的頻率變換器(210)所述的變換。頻率變換器(430)向加權(quán)器(442)輸出頻譜系數(shù)數(shù)據(jù)塊,并向MUX(490)輸出諸如塊大小等輔助信息。頻率變換器(430)向知覺建模器(440)輸出頻率系數(shù)和輔助信息兩者。知覺建模器(440)對人類聽覺系統(tǒng)的特性建模,從而根據(jù)聽覺模型來處理音頻數(shù)據(jù)。加權(quán)器(442)基于從知覺建模器(440)接收到的信息生成用于量化矩陣的加權(quán)因子。加權(quán)器(442)向從頻率變換器(430)接收到的數(shù)據(jù)應(yīng)用加權(quán)因子。加權(quán)器(442)向MUX(490)輸出諸如量化矩陣和聲道加權(quán)因子等輔助信息,并且量化矩陣可以被壓縮。對于多聲道音頻數(shù)據(jù),多聲道變換器(450)可應(yīng)用多聲道變換。例如,多聲道變換器(450)向小塊中的部分但不是全部聲道和/或量化頻帶選擇性地且靈活地應(yīng)用多聲道變換。多聲道變換器(450)選擇性地使用預(yù)定義的矩陣或自定義矩陣,并向自定義矩陣應(yīng)用有效壓縮。多聲道變換器(450)向MUX(490)產(chǎn)生指示例如所使用的多聲道變換和經(jīng)多聲道變換的小塊部分的輔助信息量化器(460)量化多聲道變換器(450)的輸出,從而向熵編碼器(470)產(chǎn)生經(jīng)量化的系數(shù)數(shù)據(jù),并向MUX(490)產(chǎn)生包括量化步長的輔助信息。在圖4中,量化器(460)是對每一小塊計算一量化因子的自適應(yīng)、均勻、標量量化器,但是量化器(460)也可執(zhí)行某種其它量化。熵編碼器(470)—般如上參考圖2的熵編碼器(260)所述地無損地壓縮從量化器(460)接收到的經(jīng)量化的系數(shù)數(shù)據(jù)。某些實施例中用于熵編碼(可能包括預(yù)處理)的各種機制在第III到第V節(jié)中詳細描述??刂破?480)與量化器(460)—起工作以調(diào)節(jié)編碼器(400)的輸出的比特率和/或質(zhì)量??刂破?480)以滿足質(zhì)量和/或比特率約束為目標向量化器(460)輸出量化因子?;旌?純無損編碼器(472)和相關(guān)聯(lián)的熵編碼器(474)壓縮用于混合/純無損編碼模式的音頻數(shù)據(jù)。編碼器(400)對整個序列使用混合/純無損編碼模式,或在逐幀、逐塊、逐小塊或其它基礎(chǔ)上在編碼模式之間切換。MUX(490)多路復(fù)用從音頻編碼器(400)的其它模塊接收到的輔助信息以及從熵編碼器(470、474)接收到的經(jīng)熵編碼的數(shù)據(jù)。MUX(490)包括用于速率控制或其它目的的一個或多個緩沖器。D.第二音頻解碼器參考圖5,第二音頻解碼器(500)接收壓縮音頻信息的比特流(505)。比特流(505)包括經(jīng)熵編碼的數(shù)據(jù)以及輔助信息,解碼器(500)從這些數(shù)據(jù)和信息中重構(gòu)音頻樣本(595)。DEMUX(510)解析比特流(505)中的信息并將該信息發(fā)送到解碼器(500)的其它模塊。DEMUX(510)包括一個或多個緩沖器以補償由于音頻復(fù)雜性波動、網(wǎng)絡(luò)抖動和/或其它因素而產(chǎn)生的比特率短期變化。熵解碼器(520)無損地解壓從DEMUX(510)接收到的熵代碼,通常應(yīng)用編碼器(400)中使用的熵編碼技術(shù)的反過程。當解碼以有損編碼模式壓縮的數(shù)據(jù)時,熵解碼器(520)產(chǎn)生經(jīng)量化的頻譜系數(shù)數(shù)據(jù)。某些實施例中用于熵解碼的各種機制在第III和第V節(jié)中詳細描述?;旌?純無損解碼器(522)和相關(guān)聯(lián)的熵解碼器(520)無損地解壓用于混合/純無損編碼模式的無損編碼音頻數(shù)據(jù)。小塊配置解碼器(530)從DEMUX(590)接收指示幀的小塊的模式的信息,并在必要時對其解碼。小塊模式信息可被熵編碼或以其它方式參數(shù)化。小塊配置解碼器(530)然后將小塊模式信息傳遞到解碼器(500)的各其它模塊。多聲道反變換器(540)從熵解碼器(520)接收經(jīng)量化的頻譜系數(shù)數(shù)據(jù),并從小塊配置解碼器(530)接收小塊模式信息,并從DEMUX(510)接收指示例如所使用的多聲道變換和已變換的小塊部分的輔助信息。使用該信息,多聲道反變換器(540)在必要時解壓變化矩陣,并向音頻數(shù)據(jù)選擇性地且靈活地應(yīng)用一個或多個多聲道反變換。反量化器/加權(quán)器(550)從DEMUX(510)接收小塊和聲道量化因子以及量化矩陣,并從多聲道反變換器(540)接收經(jīng)量化的頻譜系數(shù)數(shù)據(jù)。反量化器/加權(quán)器(550)在必要時解壓接收到的量化因子/矩陣信息,然后執(zhí)行反量化和加權(quán)。頻率反變換器(560)接收由反量化器/加權(quán)器(550)輸出的頻譜系數(shù)數(shù)據(jù),以及來自DEMUX(510)的輔助信息和來自小塊配置解碼器(530)的小塊模式信息。頻率反變換器(570)應(yīng)用編碼器中使用的頻率變換的反過程,并向重疊器/累加器(570)輸出各塊。除了從小塊配置解碼器(530)接收小塊模式信息之外,重疊器/累加器(570)還從頻率反變換器(560)和/或混合/純無損解碼器(522)接收已解碼信息。重疊器/累加器(570)在必要時重疊并累加音頻數(shù)據(jù),并交織用其它模式編碼的幀或其它音頻數(shù)據(jù)序列。多聲道后處理器(580)可任選地重新矩陣化由重疊器/累加器(570)輸出的時域音頻樣本。對于受比特流控制的后處理,后處理變換矩陣隨時間變化,且在比特流(505)中用信號表示或包括在其中。E.通用媒體編碼器圖6示出了編碼音頻、視頻或其它媒體內(nèi)容的通用媒體編碼器(600)的各部分。為簡明起見,未示出取決于媒體內(nèi)容的類型的編碼器(600)的眾多模塊以及輔助信息類型。與分別在圖2和4中所示的編碼器(200、400)—樣,編碼器(600)是基于變換的,因為圖6所示的輸入是未量化的頻譜系數(shù)(605)。然而,在某些實施例中,此處所描述的熵編碼機制的一種或多種(例如,第V節(jié)中描述的機制)是對某種其它輸入執(zhí)行的。量化器(620)量化系數(shù)(605),從而產(chǎn)生經(jīng)量化的系數(shù)數(shù)據(jù)。例如,量化器(620)是自適應(yīng)、均勻、標量量化器或某種其它量化器。熵編碼處理器(640)在熵編碼之前選擇性地執(zhí)行預(yù)處理。例如,預(yù)處理器(640)對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測,如第III節(jié)中所描述的?;蛘撸A(yù)處理器(640)重排經(jīng)量化的頻譜系數(shù),如第IV節(jié)中所描述的?;蛘?,預(yù)處理器(640)執(zhí)行某種其它類型的預(yù)處理。除了預(yù)處理的系數(shù)之外,預(yù)處理器(640)向輸出比特流(695)輸出描述該預(yù)處理的輔助信息。例如,輔助信息包括在系數(shù)預(yù)測中使用的預(yù)測因子,如在第III節(jié)中所描述的。或者,輔助信息包括在重排經(jīng)量化的頻譜系數(shù)時使用的信息,如在第IV節(jié)中所描述的。熵編碼器(660)無損地壓縮經(jīng)量化的系數(shù)數(shù)據(jù),例如執(zhí)行行程級別編碼和向量可變長度編碼。第V節(jié)描述了用于自適應(yīng)熵編碼的機制?;蛘撸鼐幋a器(660)使用某種其它形式或組合的熵編碼機制。盡管圖6簡單地示出了向熵編碼器(660)提供輸入并在沒有來自熵編碼器(660)的反饋的情況下執(zhí)行預(yù)處理的預(yù)處理器(640),但是替換地,熵編碼器(660)向預(yù)處理器(640)提供反饋,預(yù)處理器(640)使用該反饋來調(diào)整預(yù)處理。例如,預(yù)處理器(640)基于來自熵編碼器(660)的反饋調(diào)整系數(shù)重排,使得對熵編碼器(660)的輸入更好地適合熵編碼模型。F.通用媒體解碼器圖7示出了解碼音頻、視頻或其它媒體內(nèi)容的通用媒體解碼器(700)的各部分。為簡明起見,未示出取決于媒體內(nèi)容類型的解碼器(700)的眾多模塊以及輔助信息類型。與分別在圖3和5中示出的解碼器(300、500)—樣,解碼器(700)是基于變換的,因為圖7所示的輸出是重構(gòu)的頻譜系數(shù)(705)。然而,在某些實施例中,此處所描述的熵解碼機制中的一種或多種(例如,第V節(jié)中所描述的機制)是對某種其它輸出執(zhí)行的。熵解碼器(760)無損地解壓經(jīng)量化的系數(shù)數(shù)據(jù),例如執(zhí)行行程級別解碼和向量可變長度解碼。第V節(jié)描述了用于自適應(yīng)熵解碼的機制?;蛘?,熵解碼器(760)使用某種其它形式或組合的熵解碼機制。熵解碼后處理器(740)在熵解碼之后選擇性地執(zhí)行后處理。例如,后處理器(740)對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測,如在第III節(jié)中所描述的?;蛘?,后處理器(740)重排經(jīng)量化的頻譜系數(shù),如在第IV節(jié)中所描述的?;蛘?,后處理器(740)執(zhí)行某種其它類型的后處理。除經(jīng)熵解碼的系數(shù)之外,后處理器(740)從比特流(795)中接收描述該后處理器的輔助信息。例如,輔助信息包括在系數(shù)預(yù)測中使用的預(yù)測因子,如在第III節(jié)中所描述的?;蛘撸o助信息包括在重排經(jīng)量化的頻譜系數(shù)時使用的信息,如在第IV節(jié)中所描述的。反量化器(720)執(zhí)行反量化,從而產(chǎn)生重構(gòu)的系數(shù)(705)數(shù)據(jù)。例如,反量化器(720)是自適應(yīng)、均勻、標量反量化器或某種其它量化器。III.在頻譜域中預(yù)測系數(shù)用于編碼和解碼音頻編碼器通常使用變換編碼,接著使用量化和熵編碼來實現(xiàn)壓縮。當使用固定變換時,對音頻信號的某些模式,在變換之后在相鄰系數(shù)之間仍留有相關(guān)。以下描述了利用這種相關(guān)來改進編碼效率的各種技術(shù)和工具。具體地,在某些實施例中,諸如圖2、4或6所示的編碼器在編碼期間對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測。對應(yīng)的解碼器(諸如圖3、5或7所示的)在解碼期間對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測。A.示例問題域在將音頻作為波形來壓縮的典型音頻編碼器中,輸入音頻信號是使用可變窗大小MDCT或具有可變大小窗的其它變換來變換的。例如,假定對圖8a所示的立體聲音頻的加窗分析得到圖8b所示的窗配置。一般而言,這一窗配置減少了解碼的信號中的前回聲(pre-echo)和后回聲(post-echo)(通過對過渡段使用較短的窗),同時促進了總體編碼效率(通過對其它段使用較長的窗)。加窗分析的一個目的是標識窗邊界,使得任何給定窗內(nèi)的信號大部分都是固定的。在聲道變換之前或之后,量化頻譜系數(shù)。常規(guī)上,假定子幀或其它窗的頻譜系數(shù)之間沒有任何線性相關(guān)。相反,假定頻譜系數(shù)通常具有某一較高階的統(tǒng)計相關(guān),這是編碼器在熵編碼期間試圖利用的統(tǒng)計相關(guān)。在實踐中,隱含在這一編碼中的若干假設(shè)在各種情況下并不成立。例如,對于某些類型和模式的音頻信號,用于子幀或其它窗的頻譜系數(shù)并不一定是不相關(guān)的。出于許多與窗中的信號可以是非固定的(見下文)的相同原因,頻譜系數(shù)可顯示出線性相關(guān)。當代的基于波形的編碼器無法在熵編碼期間利用這一相關(guān)。作為另一示例,當向某些音頻信號應(yīng)用加窗分析時,特定窗內(nèi)的信號不一定是固定的。如果輸入音頻隨時間有較大的變化(例如,對語音信號),則即使短窗也可能不足以隔離過渡段?;蛘撸绻俾士刂破髦械木彌_器已滿,則控制器可能迫使編碼器使用較長的窗來降低比特率,即使在其它情況下是使用較小的窗?;蛘?,如果過渡較慢,則加窗分析可能無法檢測到該過渡,從而不會引入較短的窗。或者,加窗分析可能針對因每幀僅一個過渡而引入的前回聲進行保護,而沒有針對幀中的其它過渡進行保護。或者,窗內(nèi)的信號可能出于某種其它原因而是不固定的。標量因子可幫助控制失真的頻譜分布。然而,對于失真的時間分布,在頻譜上的簡單量化引入了在完成的變換塊上恒定的失真,這可導(dǎo)致一幀的各時間段中的可聽見的失真。時間噪聲整形("TNS")是MPEG的某些變型中的一種技術(shù),該技術(shù)在頻域中使用可預(yù)測方法來隨時間對量化噪聲整形。采用TNS,編碼器向頻譜系數(shù)應(yīng)用預(yù)測濾波器,并量化經(jīng)濾波的信號,以限制量化噪聲跨時間窗的拖尾效應(yīng)。圖9和IO分別示出了編碼器和解碼器中的TNS。參考圖9,編碼器計算未量化的頻譜系數(shù)(905)和作為兩個先前重構(gòu)的系數(shù)的組合的預(yù)測值之差。對于該組合,兩個重構(gòu)的、延時的系數(shù)(在延遲910和912中)各自乘以一預(yù)測因子(911、913)并加在一起。預(yù)測因子(911、913)被量化并被包括在比特流(995)中。量化器(970)量化該差值,并且熵編碼器(990)對經(jīng)量化的差值進行熵編碼以在比特流(995)中輸出。反量化器(980)重構(gòu)該差值,并將其加到對系數(shù)(905)的預(yù)測值中。這得到系數(shù)的重構(gòu),它被緩沖在第一延遲(910)中,然后被緩沖在第二延遲(912)中,以對用于后一系數(shù)(905)的預(yù)測值做出貢獻。在對應(yīng)的解碼器中,熵解碼器(1090)對來自比特流(1095)的差值進行熵解碼,并且反量化器(1080)對該差值進行反量化。解碼器將該差值與一預(yù)測值組合以產(chǎn)生重構(gòu)的頻譜系數(shù)(1005),其中該預(yù)測值是兩個先前重構(gòu)的系數(shù)的組合。該組合的計算涉及從比特流(1095)中恢復(fù)的兩個延遲(1010、1012)和兩個預(yù)測因子(1011、1013)。重構(gòu)的頻譜系數(shù)(1005)被緩沖在第一延遲(1010)中,然后緩沖在第二延遲(1012)中,以對用于后一系數(shù)(1005)的預(yù)測值做出貢獻。MPEGAAC中的TNS允許向輸入信號的不同頻譜區(qū)域引用多達三種不同的無限沖激響應(yīng)濾波器(或預(yù)測器)。濾波器系數(shù)被量化并被包括在比特流中。即使MEPGAAC允許使用短窗,在短窗中也不使用TOS,因為預(yù)測器描述信息所需的總信息相對較大,從而導(dǎo)致用于頻譜值的位減少。由此,在MEPGAAC中僅對長窗允許TNS,這限制了TNS的使用。同樣,如圖9和10中所示,TNS中的預(yù)測在未量化/重構(gòu)的域中發(fā)生。結(jié)果,解碼器必須交織反量化和預(yù)測(以及甚至可能熵解碼)的操作,導(dǎo)致復(fù)雜度增加。另外,對于未量化/重構(gòu)的域中的預(yù)測,在MPEGAAC中將TNS操作指定為浮點運算,這導(dǎo)致定點實現(xiàn)的困難。TNS預(yù)測器是二階預(yù)測器,它需要兩次乘法用于每一頻譜系數(shù)處的預(yù)測運算。在編碼器側(cè),對有效預(yù)測器的設(shè)計可能是困難的,并且不穩(wěn)定的預(yù)測器可能是一個問題。類似于圖9和IO所示的一種體系結(jié)構(gòu)可用于差分脈沖碼調(diào)制,其中編碼器計算時間樣本和預(yù)測值之差,且預(yù)測值基于預(yù)測因子以及緩沖的、經(jīng)反量化的時間樣本。預(yù)測通常使用細節(jié)預(yù)測器,它難以設(shè)計且通常不穩(wěn)定,并且需要大量的信號傳輸和重構(gòu)邏輯。此外,這種方案的壓縮效率不佳??偠灾枋隽丝捎上禂?shù)預(yù)測技術(shù)和工具來解決的幾個問題。然而,不一定要應(yīng)用這種系數(shù)預(yù)測技術(shù)和工具來解決任何或全部這些問題。B.用于系數(shù)預(yù)測的示例體系結(jié)構(gòu)在某些實施例中,編碼器在編碼期間對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測,并且對應(yīng)的解碼器在解碼期間對經(jīng)量化的頻譜系數(shù)執(zhí)行系數(shù)預(yù)測。對于某些模式和類型的內(nèi)容,系數(shù)預(yù)測減少了頻譜系數(shù)中的冗余度以改進隨后的熵編碼的效率。預(yù)測是可逆的一在解碼期間,系數(shù)預(yù)測(在熵解碼之后)是編碼器中的系數(shù)預(yù)測的鏡像。圖11示出了具有對經(jīng)量化的頻譜系數(shù)的預(yù)測的編碼器。例如,該編碼器是圖2或4中所示的編碼器的經(jīng)修改的形式,對其添加了計算預(yù)測值和差值的各級?;蛘?,該編碼器是圖6所示的編碼器的經(jīng)修改的形式,其中系數(shù)預(yù)測作為熵編碼之前的預(yù)處理。參考圖11,編碼器計算經(jīng)量化的頻譜系數(shù)(1105)與預(yù)測值之差(也稱為預(yù)測殘留)。對于該預(yù)測值,將經(jīng)延時的經(jīng)量化的頻譜系數(shù)(在延遲1110)中乘以預(yù)測因子(1111)。預(yù)測因子(1111)作為輔助信息在比特流(1195)中用信號表示。熵編碼器(1190)對該差值進行熵編碼以在比特流(1195)中輸出。經(jīng)量化的頻譜系數(shù).(1105)也被緩沖在第一延遲(1110)中用于計算用于后一經(jīng)量化的頻譜系數(shù)(1105)的預(yù)測值。圖12示出了具有對經(jīng)量化的頻譜系數(shù)的預(yù)測的對應(yīng)的解碼器。例如,該解碼器是圖3或5所示的解碼器的經(jīng)修改的形式,對其添加了計算預(yù)測值并將該預(yù)測值與差值相組合的各級。或者,該解碼器是圖7所示的解碼器的經(jīng)修改的形式,其中系數(shù)預(yù)測作為熵解碼之后的后處理。參考圖12,熵解碼器(1290)對來自比特流(1295)的差值進行解碼。解碼器計算一預(yù)測值并將該差值與該預(yù)測值相組合,從而產(chǎn)生經(jīng)量化的頻譜系數(shù)(1205)。對于該預(yù)測值,將經(jīng)延時的經(jīng)量化的頻譜系數(shù)(在延遲1210)中乘以一預(yù)測因子(1211)。該預(yù)測因子(1211)從比特流(1295)中解析。經(jīng)量化的頻譜系數(shù)(1205)也被緩沖在第一延遲(1210)中用于計算用于后一經(jīng)量化的頻譜系數(shù)(1205)的預(yù)測值。在圖11和12中,編碼器中的預(yù)測和求差運算以及解碼器中的預(yù)測和求和運算在量化域中進行。這簡化了編碼器和解碼器設(shè)計以及復(fù)雜性,因為運算在同一域中進行。在某些實現(xiàn)中,預(yù)測、求和和求差運算對整數(shù)值進行。這通常簡化了實現(xiàn)因為運算可用整數(shù)運算而非浮點運算來執(zhí)行。為進一步簡化預(yù)測,可使用均勻步長0.25來量化范圍在-1到1之間的預(yù)測因子。對預(yù)測值的乘法運算然后可使用二進制位移/加法運算來實現(xiàn)。在圖11和12中,預(yù)測器是一階預(yù)測器,這再一次簡化了編碼器/解碼器("編解碼器")系統(tǒng)的復(fù)雜性。采用自適應(yīng)一階預(yù)測器,預(yù)測因子改變,因此不需長期使用同一預(yù)測因子。對于一階預(yù)測器,對穩(wěn)定性的測試是平凡的。例如,編碼器只需將預(yù)測因子約束在-1到1(包括端點)的范圍內(nèi)?;蛘撸A(yù)測器是高階預(yù)測器。例如,對16階預(yù)測器,預(yù)測器具有多達16個預(yù)測因子。對于自適應(yīng)系數(shù)預(yù)測,編碼器在各子幀之間或在某一其它基礎(chǔ)上改變預(yù)測因子。例如,編碼器將子幀拆分成多個均勻大小的段并對每一段計算一預(yù)測因子。對于信號傳輸,編碼器用信號表示子幀的段數(shù)以及預(yù)測因子。由此,如果2048個頻譜系數(shù)的子幀被拆分成16段,則編碼器用信號表示該段數(shù)以及每一128個系數(shù)的段的預(yù)測因子。每一子幀的段數(shù)對一個序列信號表示一次、對每一子幀信號表示一次或在某一其它基礎(chǔ)上用信號表示?;蛘?,段具有可變長度,和/或編碼器使用不同的機制來用信號表示預(yù)測因子(例如,僅用信號表示預(yù)測因子的變化,或用信號表示預(yù)測因子以及對其使用該預(yù)測因子的段數(shù))。對于某些輸入,系數(shù)預(yù)測不改進性能。除了在逐段的基礎(chǔ)上禁用系數(shù)預(yù)測(如下描述)之外,編碼器和解碼器可對整個序列(例如,用序列層開/關(guān)標志)或在某一其它級別上禁用系數(shù)預(yù)測。當對多聲道音頻使用系數(shù)預(yù)測時,在量化等在編碼期間處于多聲道變換的下游時,系數(shù)預(yù)測在每一己編碼聲道上進行。在解碼期間,系數(shù)預(yù)測也在每一已編碼聲道上進行。由此,對于這種多聲道音頻,對每一段或每一子幀用信號表示的預(yù)測信息通常對特定已編碼聲道的每一段或每一子幀用信號表示。系數(shù)預(yù)測可以在序列級或某一其它級別上對每一已編碼聲道選擇性地禁用。當對多聲道音頻使用系數(shù)預(yù)測時,可對每一已編碼聲道、已編碼聲道的每一子幀或在某一其它級別上用信號表示每一子幀的段數(shù)。在某些情況下,系數(shù)預(yù)測主要為低頻和中頻中的頻譜系數(shù)提供了編碼增益。因此,系數(shù)預(yù)測可對較高頻率下的頻譜系數(shù)自動禁用。或者,如果從系數(shù)預(yù)測所得的編碼增益主要是用于特定頻率子范圍中的頻譜系數(shù)的,則可在這些頻率子范圍中選擇性地啟用系數(shù)預(yù)測,而在別處禁用系數(shù)預(yù)測。C.用于編碼期間的系數(shù)預(yù)測的示例技術(shù)圖13示出了用于在編碼期間對經(jīng)量化的頻譜系數(shù)進行預(yù)測的技術(shù)(1300)。例如,諸如圖11所示的編碼器執(zhí)行該技術(shù)(1300)。或則,另一編碼器執(zhí)行該技術(shù)(1300)。開始,編碼器對一音頻段計算(1310)預(yù)測因子。一般而言,編碼器使用若干技術(shù)中的任一種來計算該預(yù)測因子。例如,對于一階預(yù)測器,編碼器對可能預(yù)測因子執(zhí)行窮盡搜索以找出最終預(yù)測因子(例如,得到最少的經(jīng)熵編碼的比特的預(yù)測因子)?;蛘?,編碼器對段的經(jīng)量化的頻譜系數(shù)計算一相關(guān)常數(shù)(即,E{x[i-l]X[i]}/E{X[i]x[i]})以導(dǎo)出預(yù)測因子?;蛘?,對于高階預(yù)測器,編碼器使用線性預(yù)測系數(shù)算法(例如,涉及對自相關(guān)和自協(xié)方差的計算)并且不需要穩(wěn)定性?;蛘?,如果濾波器的階數(shù)和精度是靈活的,則編碼器計算預(yù)測器階數(shù)(一階、二階、三階等)以及用于該段的預(yù)測因子值和精度。或者,編碼器使用某種其它機制來計算預(yù)測因子。在許多情況下,經(jīng)量化的頻譜系數(shù)不展示出跨子幀的整個頻譜的均勻相關(guān)。為改善這種情形中的預(yù)測,編碼器可在逐個頻譜段的基礎(chǔ)上改變預(yù)測因子。例如,編碼器將一子幀(或其它頻譜系數(shù)塊)的整個頻譜拆分成多個均勻大小的段,并對每一段計算一預(yù)測因子?;蛘?,編碼器對作為一子幀或其它頻譜系數(shù)塊的整個頻譜的一段計算一預(yù)測因子,或以其它方式來拆分該頻譜。編碼器用信號表示(1320)用于該段的預(yù)測因子信息。例如,編碼器量化該預(yù)測因子并在比特流中用信號表示它。預(yù)測因子可被熵編碼。編碼器可用信號表示一開/關(guān)位,作為預(yù)測因子信息的一部分,以在逐段的基礎(chǔ)上解碼時選擇性地禁用系數(shù)預(yù)測。表2示出了一個實現(xiàn)中對于預(yù)測因子的位表示,其中范圍在-1到1中的預(yù)測因子使用均勻步長0.25來量化。<table>tableseeoriginaldocumentpage24</column></row><table>表2預(yù)測因子(輔助信息)的表示或者,預(yù)測因子信息使用某種其它表示來用信號表示。如上所述,情況可以是并非所有段都得益于頻譜系數(shù)預(yù)測。預(yù)測因子0有效地對一段禁用了預(yù)測;不向該預(yù)測值給予任何權(quán)重且不必計算該預(yù)測值。釆用表2所示的代碼,用于以信號表示預(yù)測因子o的單比特碼元用作受影響的段的開/關(guān)位。以單個比特用信號表示零預(yù)測因子在零預(yù)測值是最常見的預(yù)測因子時節(jié)省了比特。如上所述,允許高階預(yù)測器。例如,為用信號表示用于高階預(yù)測器的預(yù)測因子信息,編碼器首先發(fā)送預(yù)測器的階數(shù)和精度,然后逐個發(fā)送預(yù)測因子。編碼器然后確定(1330)是否對該段使用頻譜系數(shù)預(yù)測。如果是,則編碼器預(yù)測(1340)段中的一個或多個經(jīng)量化的頻譜系數(shù),然后對該預(yù)測性編碼的系數(shù)進行熵編碼(1350)。例如,編碼器使用了如圖11所示的延遲緩沖器和算術(shù)來進行系數(shù)預(yù)測?;蛘?,編碼器使用某種其它預(yù)測機制。(預(yù)測(1340)和隨后的熵編碼(1350)可以對某些類型的熵編碼(1350)迭代地進行,但是更典型的是對于向量可變長度編碼、行程級別編碼或某種其它類型的熵編碼進行批處理。)如果編碼器跳過系數(shù)預(yù)測(1340),則編碼器只需對一個或多個經(jīng)量化的頻譜系數(shù)進行熵編碼(1350)?;蛘?,編碼器跟隨預(yù)測因子為O時的該預(yù)測性編碼路徑。編碼器然后確定(1360)是繼續(xù)下一段還是結(jié)束該技術(shù)(1300)。如果編碼器繼續(xù),則編碼器計算(1310)用于下一段的預(yù)測因子,用信號表示(1302)該預(yù)測因子信息等等。圖13示出了在逐段的基礎(chǔ)上對預(yù)測因子的計算和信號表示,其中段數(shù)是預(yù)定的且不用信號表示?;蛘?,對其計算并用信號表示預(yù)測因子的段數(shù)是靈活的。這通常以增加指定段信息的比特開銷為代價改善了預(yù)測準確性。對于子幀或其它塊,編碼器找出均勻或非均勻分段(例如,得到最少比特數(shù)),并且在比特流中用信號表示總段數(shù)和/或其它分段信息。D.用于解碼期間的系數(shù)預(yù)測的示例技術(shù)圖14示出了用于在解碼期間對經(jīng)量化的頻譜系數(shù)進行預(yù)測的技術(shù)(1400)。例如,諸如圖12所示的解碼器執(zhí)行該技術(shù)(1400)?;蛘?,另一解碼器執(zhí)行該技術(shù)(1400)。開始,解碼器獲得(1410)用于一音頻段的預(yù)測因子信息。例如,解碼器解析來自比特流的預(yù)測因子信息,并重構(gòu)預(yù)測因子。如果預(yù)測因子是經(jīng)熵編碼的,則解碼器對該預(yù)測因子進行熵解碼。如果編碼器用信號表示一開/關(guān)位作為預(yù)測因子信息的一部分以在解碼期間選擇性地啟用/禁用系數(shù)預(yù)測,則解碼器獲得該開/關(guān)位。由此,解碼器可在逐個頻譜段的基礎(chǔ)上改變預(yù)測因子,其中段取決于實現(xiàn)是子幀或其它塊的整個頻譜的全部或部分,并且預(yù)測因子信息使用以上參考圖13所描述的機制中的任一種來用信號表示。解碼器對該段的一個或多個經(jīng)量化的頻譜系數(shù)的信息進行熵解碼(1420)。當在編碼期間使用了系數(shù)預(yù)測時,該信息是經(jīng)量化的頻譜系數(shù)的預(yù)測殘留(差值)。當在編碼期間沒有使用系數(shù)預(yù)測(零預(yù)測值)時,信息是經(jīng)量化的頻譜系數(shù)本身。解碼器然后確定(1430)是否對該段使用了頻譜系數(shù)預(yù)測。如果是,則解碼器預(yù)測(1440)該段中經(jīng)量化的頻譜系數(shù)。例如,解碼器使用如圖12所示的延遲緩沖器和算術(shù)來進行系數(shù)預(yù)測?;蛘撸獯a器使用某種其它預(yù)測機制。(熵解碼(1420)和預(yù)測(1440)可以對某些類型的熵解碼(1420)迭代地進行,但是更典型的是對向量可變長度解碼、行程級別解碼或某種其它類型的熵解碼進行批處理)。在某些情況下,解碼器在解碼期間跳過系數(shù)預(yù)測,僅僅對經(jīng)量化的頻譜系數(shù)進行熵解碼(1420)?;蛘撸獯a器跟隨預(yù)測因子為O時的該預(yù)測性解碼路徑。解碼器然后確定(1450)是繼續(xù)下一段還是結(jié)束該技術(shù)(1400)。如果解碼器繼續(xù),則解碼器獲得(1410)用于下一段的預(yù)測因子信息等等。在圖14中,段數(shù)是預(yù)定的且不用信號表示?;蛘?,段數(shù)和預(yù)測因子是靈活的,并且解碼器解析由編碼器用信號表示的分段信息。E.結(jié)果一般而言,對經(jīng)量化的頻譜系數(shù)的預(yù)測改進了對于某些類型和模式的內(nèi)容的隨后的熵編碼的效率。例如,預(yù)測減少了相鄰系數(shù)之間的冗余度,使得后續(xù)的向量可變長度編碼和/或行程級別編碼更高效。與其形成對比,MPEGTNS的目的是控制失真的時間分布。為測量由于對經(jīng)量化的頻譜系數(shù)進行預(yù)測而帶來的編碼效率的改進,使用系數(shù)預(yù)測來編碼較大的一套測試歌曲。對于典型的輸入歌曲,該歌曲中的大多數(shù)子幀并未通過在量化域中使用系數(shù)預(yù)測而得到任何好處,然而,某些子幀得到非常顯著的好處。例如,對某些子幀產(chǎn)生的比特通過對經(jīng)量化的頻譜系數(shù)的預(yù)測而被丟棄了多達30%。對于某些歌曲,在以32Kb/s的額定比特率操作時采用系數(shù)預(yù)測的總體比特率減小是3%,而在以128Kb/s操作時總體比特率減小是3.75。/。。在整套歌曲上,總體比特率減小大約是0.5%。盡管多種預(yù)測使用了高階預(yù)測器或更高的精度來實現(xiàn)編碼增益,但是具有相對較低精度(例如,每一經(jīng)量化的預(yù)測因子值為3位)的一階預(yù)測器在大多數(shù)情形中對經(jīng)量化的頻譜系數(shù)能執(zhí)行得相當好。經(jīng)量化的頻譜系數(shù)通常是非常小的整數(shù),因此提高預(yù)測因子精度不一定會改變預(yù)測的值或使其更好一殘留值對熵編碼是整數(shù),并且將預(yù)測的值計算為整數(shù)是可接受的。此外,即使在頻譜系數(shù)中存在高階相關(guān),該高階相關(guān)通常通過量化而失真,使得不需要高階預(yù)測器。然而,在某些編碼情形中,當量化步長較小并且經(jīng)量化的頻譜系數(shù)具有較大的幅度時,高階預(yù)測器和/或更高精度的預(yù)測因子可導(dǎo)致編碼效率的更大改進。以上所描述的系數(shù)預(yù)測技術(shù)和工具一般支持高階預(yù)測器和高精度預(yù)測因子。IV.頻譜系數(shù)的交織或重排如上所述,音頻編碼器通常使用變換編碼,之后使用量化和熵編碼來實現(xiàn)壓縮。對于某些音頻信號模式,在頻率變換之后在頻譜系數(shù)中還留有周期性模式。描述了各種技術(shù)和工具來利用這一冗余性以提高編碼效率。特別地,在某些實施例中,諸如圖2、4或6所示的編碼器執(zhí)行對經(jīng)量化的頻譜系數(shù)的交織或重排。對應(yīng)的解碼器(諸如圖3、5或7所示)反轉(zhuǎn)了對經(jīng)量化的頻譜系數(shù)的交織或重排。A.示例問題域常規(guī)地,子幀或其它窗的頻譜系數(shù)被假定為它們之中沒有任何線性相關(guān)。相反,假定頻譜系數(shù)通常具有某些更高階統(tǒng)計關(guān)系,編碼器在熵編碼期間試圖利用這些統(tǒng)計關(guān)系。這些假設(shè)在某些情況下并不成立。對于某些類型和模式的音頻信號,用于子幀或其它窗的頻譜系數(shù)不一定是不相關(guān)的。這例如在音頻信號在時域中為周期性,并且周期性信號的頻譜系數(shù)也顯示出周期性的時候發(fā)生。在實踐中,正弦信號通常顯示出這一行為,某些非固定信號也是如此。為了圖示,圖15a示出了時域中的周期性信號,繪出了對于一樣本時間序列的幅度。圖15b示出了來自DCT運算的對應(yīng)的經(jīng)量化的頻譜系數(shù)。在圖15b中,在每57個頻譜系數(shù)周圍有較強的峰值非零頻譜系數(shù),并且在其它地方的頻譜系數(shù)大多數(shù)都具有零或較小的值。使用諸如行程級別編碼或向量可變長度編碼等技術(shù)直接對具有這種周期性模式的頻譜系數(shù)進行熵編碼并不是高效的。特別地,對其周圍具有零值或小值系數(shù)的峰值系數(shù)進行熵編碼通常在行程級別編碼和向量可變長度編碼中都使用了很多位。然而,這種類型的峰值模式對于周期性信號是常見的??偠灾?,描述了可由系數(shù)重排技術(shù)和工具來解決的若干問題。然而,不一定要應(yīng)用這種系數(shù)重排技術(shù)和工具來解決任何或全部這些問題。B.用于重排頻譜系數(shù)的示例體系結(jié)構(gòu)在某些實施例中,編碼器在熵編碼之前對經(jīng)量化的頻譜系數(shù)執(zhí)行重排,并且對應(yīng)的解碼器在熵解碼之后對經(jīng)量化的頻譜系數(shù)進行重排。對于某些模式和類型的內(nèi)容,諸如具有基音或諧波的周期性信號,重排降低了頻譜系數(shù)中的冗余度以改進隨后的熵編碼的效率。在解碼期間,重排(在熵解碼之后)補償了編碼器中的重排。圖16示出了具有對經(jīng)量化的頻譜系數(shù)的重排的編碼器。例如,該編碼器是圖2或4所示的編碼器的經(jīng)修改的形式,對其添加了重排頻譜系數(shù)的各階。或者,該編碼器是圖6所示的編碼器的經(jīng)修改的形式,其中重排作為熵編碼之前的預(yù)處理。參考圖16,編碼器從量化器接受經(jīng)量化的頻譜系數(shù)(1605)。經(jīng)量化的頻譜系數(shù)由重排/交織模塊(1680)來處理,該模塊可任選地重排部分或全部頻譜系數(shù)(1605),從而在比特流(1695)中用信號表示重排信息。假定經(jīng)量化的頻譜系數(shù)(1605)展示出可被充分利用來改進熵編碼效率的期性模式。在熵編碼之前,考慮經(jīng)量化的頻譜系數(shù)中的周期性,對這些系數(shù)進行交織或重排。例如,重排將高值的峰值系數(shù)聚集在一起,這對這些系數(shù)改進了隨后的向量可變長度編碼的效率,并且重排將其它系數(shù)(例如,峰值之間的零值系數(shù)和低值系數(shù))聚集在一起,這改進了對于這些系數(shù)的隨后的行程級別編碼的效率。為交織頻譜系數(shù),編碼器沿顯示出周期性模式的段來交織頻譜系數(shù)。作為一個簡單的示例,編碼器以多遍的方式瀏覽周期中的系數(shù),首先選擇各個周期中的第一個系數(shù),然后選擇各個周期中的第二個系數(shù),然后選擇各個周期中的第三個系數(shù),依此類推。編碼器繼續(xù)該重排,直到選擇了所有系數(shù)。假定一系列頻譜系數(shù)包括四個周期A、B、C和D,并且每一周期包含四個頻譜系數(shù)。在交織之前,該序列為A0A!A2A3B0B!B2B3C0C!C2C3D0D!D2D3,而在交織后,該序列為A0B0CoDoBD!A2B2C2D2A3B3C3D3。由此,經(jīng)重排的序列首先放置系數(shù)O、4、8和12,然后放置系數(shù)l、5、9和13,依此類推。如果在每一周期中僅第一系數(shù)具有重要值,則在交織之后僅序列中的前四個系數(shù)具有重要值,并且所有其它系數(shù)具有小值或零值。向量可變長度編碼有效地壓縮了前四個系數(shù),而行程級別編碼有效地處理了其余的系數(shù)。返回到圖16,在可任選重排(1680)之后,熵編碼器(1690)對頻譜系數(shù)(可能進行了重排)進行熵編碼。編碼器在比特流(1695)中用信號表示經(jīng)熵編碼的信皁圖17示出了具有對經(jīng)量化的頻譜系數(shù)的重排的對應(yīng)的解碼器。例如,該解碼器是圖3或5所示的解碼器的經(jīng)修改的形式,對其添加了進行重排的各級?;蛘?,該解碼器是圖7所示的解碼器的經(jīng)修改的形式,其中重排作為熵解碼之后的后處理。參考圖17,熵解碼器(1790)解碼來自比特流(1795)的用于經(jīng)量化的頻譜系數(shù)的信息。使用從比特流(1795)中解析的重排信息,重排/交織模塊(1780)可任選地重排部分或全部已解碼的頻譜系數(shù),從而產(chǎn)生原始順序的經(jīng)量化的頻譜系數(shù)(1705)。本質(zhì)上,解碼器中的重排反轉(zhuǎn)了編碼器中執(zhí)行的重排。在以上所示的示例序列中,執(zhí)行基于周期長度的簡單重排。然而,在某些情況下,這種簡單重排無法解決段中的前導(dǎo)非周期性信息、前導(dǎo)零或特定周期中的其它偏移,和/或在周期開始處對峰值系數(shù)的聚集。附加的重排信息(以下描述)可以解決這些現(xiàn)象。為給出一個簡單的數(shù)字示例,假定一段具有128個頻譜系數(shù),并且包括用于某些系數(shù)的周期性模式。該周期性模式的平均周期長度為io個系數(shù),從第I9個系數(shù)開始,并在第102個系數(shù)處結(jié)束。按照周期長度的倍數(shù),作為一種粗略的估算,第一個重排周期是該段的第三個周期(系數(shù)20-29),而最后一個重排周期是第十個周期(系數(shù)卯-99)。用于第三個周期的偏移是-1(指示該周期的起始位置在第19個系數(shù)而非第20個系數(shù)處),而用于第十個周期的偏移是2。用于其它周期的偏移也可適當?shù)赜眯盘柋硎?。如果要重排的周期通常以多個峰值系數(shù)開始,則可用信號表示一值以指示每一周期中甚至在重排之后也應(yīng)當保持相鄰的初始系數(shù)的個數(shù)。對于自適應(yīng)系數(shù)重排,編碼器在逐個子幀或某一其它基礎(chǔ)上改變重排。例如,編碼器將一個子幀拆分成多個段,并對一個或多個段計算重排信息,從而用信號表示分段信息以及重排信息?;蛘?,編碼器使用一不同的機制來進行分段和/或信號表示。對于某些輸入,系數(shù)重排不改善性能。除了在逐段的基礎(chǔ)上禁用系數(shù)重排(以下描述)之外,編碼器和解碼器可對整個序列(例如,用序列層開/關(guān)標志)或在某一其它級別上禁用系數(shù)重排。當對多聲道音頻使用系數(shù)重排時,在量化等在編碼期間處于多聲道變換的下游時,在每一已編碼聲道上進行系數(shù)重排。在解碼期間,也對每一已編碼聲道進行系數(shù)重排。由此,對于這一多聲道音頻,對每一段、每一子幀或每一周期用信號表示的重排信息通常是對一特定一編碼聲道對每一段、每一子幀或每一周期用信號表示的。當對多聲道音頻使用系數(shù)重排時,可對每一已編碼聲道、已編碼聲道的每一子幀、或在某一其它級別上用信號表示分段信息和重排開/關(guān)信息。在許多情況下,系數(shù)重排提供了主要用于低頻和中頻中的頻譜系數(shù)的編碼增益。因此,可對較高頻率下的頻譜系數(shù)自動禁用系數(shù)重排?;蛘撸绻麖南禂?shù)重排所得的編碼增益主要是用于特定頻率子范圍中的頻率系數(shù)的,則可在這些頻率子范圍中選擇性地啟用系數(shù)重排,并在別處禁用系數(shù)重排。在第III節(jié)中描述的系數(shù)預(yù)測可結(jié)合系數(shù)重排來使用,但是系數(shù)預(yù)測和系數(shù)重排更常見的是對不同類別的輸入分開使用。當它們被一起使用時,在編碼期間,系數(shù)預(yù)測在重排之后,并且在解碼期間,系數(shù)重排在預(yù)測之后,并且系數(shù)預(yù)測是用于經(jīng)重排的系數(shù)的至少某一些(例如,峰值系數(shù))上的。C.用于在編碼期間重排系數(shù)的示例技術(shù)圖18a示出了用于在編碼期間重排經(jīng)量化的頻譜系數(shù)的技術(shù)(1800),而圖18b和18c詳細描述了執(zhí)行該技術(shù)(1800)的某些動作的可能方式。例如,諸如圖16所示的編碼器執(zhí)行該技術(shù)(1800)。或者,另一編碼器執(zhí)行該技術(shù)(1800)。開始,編碼器對一段計算(1810)重排信息。例如,編碼器如圖18b所示計算(1810)重排信息?;蛘撸幋a器計算其它和/或附加重排信息。參考圖18b,編碼器標識(1812)其中要重排系數(shù)的段。例如,編碼器找出具有周期性模式的頻譜系數(shù)的段。為了圖示,在圖15b中,僅前面的約800個系數(shù)具有周期性模式。編碼器可在重排中不包括該段的某些周期。例如,如果前一個或兩個周期與其它周期不類似,則前一個或兩個周期不包括在重排過程中。在某些情況下,一段的第一部分包括前導(dǎo)零或非周期性系數(shù)。由此,編碼器跟蹤段中要重排的第一個周期。類似地,編碼器也跟蹤段中要重排的最后一個周期。接著,編碼器對該段標識(1814)周期長度。例如,編碼器對段中的峰值數(shù)進行計數(shù),并將段長度除以峰值數(shù)?;蛘撸幋a器對候選周期長度執(zhí)行窮盡搜索。或者,編碼器使用二分細化方法(而不是對參數(shù)空間的窮盡搜索)來搜索候選周期長度?;蛘?,編碼器評估零值/小值系數(shù)的行程長度?;蛘撸幋a器使用某種其它機制來標識段的周期長度。周期長度可限于整數(shù)值,或者周期長度也可以是非整數(shù)值。允許小于整數(shù)的精度可顯著改善重排效率,最終改善熵編碼增益。編碼器還標識(1816)其它重排信息,這可包括周期調(diào)整和預(yù)巻(preroll)值。例如,在允許非整數(shù)周期長度的實現(xiàn)中,編碼器如下計算其它重排信息。周期i的初始起始位置為roimd(^周期長度),并且周期i的初始結(jié)束位置是下一周期的初始起始位置。編碼器保持一周期位置表,該表為跟蹤目的儲存周期的起始位置和/或結(jié)束位置。這還允許編碼器在評估不同位置時簡單地調(diào)整表中的周期位置。具體地,編碼器可將周期的起始位置和/或結(jié)束位置從初始位置移動一個或多個系數(shù),以改善熵編碼。例如,如果在周期的起始位置之前恰有幾個較大的重要系數(shù),則編碼器將起始位置左移幾個系數(shù),使得這些較大的重要系數(shù)在周期的開始而非前一周期的結(jié)尾出現(xiàn)?;蛘撸幋a器使用某種其它機制來確定用于要重排的周期的起始和/或結(jié)束位置的調(diào)整量。編碼器還選擇一預(yù)巻值。預(yù)巻指示周期開始處未相對于彼此重排的系數(shù)。通常,周期開始處的峰值不僅僅是一個頻譜系數(shù)。例如,在周期的開始處可以有兩個或三個具有較大值的系數(shù),并且這些系數(shù)是預(yù)巻系數(shù)。預(yù)巻系數(shù)以一特殊方式來交織,從而有效地作為一組來處理以便重排。換言之,預(yù)巻系數(shù)即使在對段的周期進行重排之后也是相鄰的。預(yù)巻值指示要重排的周期的預(yù)巻系數(shù)的個數(shù)(例如,1、2、3)?;蛘撸鎸γ恳欢斡嬎泐A(yù)巻,編碼器而是對要重排的每一周期計算預(yù)巻?;蛘?,編碼器使用某種其它機制來標識(1816)其它重排信息。返回到圖18a,編碼器在比特流中用信號表示(1830)用于段的重排信息。例如,編碼器對于如18b所示計算的重排信息,如圖18c所示用信號表示(1830)重排信息。或者,編碼器用信號表示其它和/或附加重排信息。參考圖18c,編碼器用信號表示(1S32)用于重排的開/關(guān)位。例如,編碼器將使用系數(shù)重排時的比特成本與不使用系數(shù)重排時的比特成本進行比較。編碼器選擇提供較好性能的模式,并且編碼器使用每一段單個位來指示選擇哪一模式?;蛘?,編碼器使用某種其它機制和/或?qū)Τ麄€段之外的某一其它持續(xù)時間用信號表示開/關(guān)信息。當使用重排時(從判定1834出發(fā)的"是"分支),編碼器用信號表示(1836)周期長度。當允許非整數(shù)周期長度時,周期長度可用整數(shù)部分和分數(shù)部分來表示,這兩部分都在比特流中用信號表示。整數(shù)周期長度(或非整數(shù)周期長度的整數(shù)部分)用信號表示為具有l(wèi)og2(最大周期長度)位的固定長度碼["FLC"]。例如,最大周期長度是128,并且整數(shù)周期長度用log2(128)=7位來以信號表示。分數(shù)部分可以用三位的FLC來以信號表示?;蛘撸芷陂L度用另一機制來以信號表示。編碼器還用信號表示(1838)將對其重排系數(shù)的第一周期。實際上,這粗略地指示用于重排的起始位置。第一個經(jīng)重排的周期可用周期長度為單位來表示。第一經(jīng)重排的周期例如用三位的FLC來以信號表示,在這一情況下,第一經(jīng)重排的周期是段中從第一個周期到第八個周期的任何周期?;蛘撸谝唤?jīng)重排的周期用另一機制來以信號表示。編碼器還用信號表示(1840)對其將重排系數(shù)的最后一個周期。最后一個經(jīng)重排的周期可用周期長度為單位來表示。最后一個經(jīng)重排的周期例如用信號表示為具有1og2(最大周期數(shù))位的FLC。編碼器從段中的系數(shù)數(shù)以及周期長度中導(dǎo)出最大周期數(shù)。或者,最后一個經(jīng)重排的周期用另一機制來以信號表示。編碼器用信號表示(1842)位置調(diào)整。對于對其將重排系數(shù)的周期,編碼器用信號表示指示相對于初始起始和/或結(jié)束位置的偏移的信息。例如,對每一周期用信號表示一個調(diào)整值,并且該調(diào)整值用信號表示為系數(shù)數(shù)。這一調(diào)整值可用信號表示為具有1og2(偏移范圍)位的FLC。由此,如果偏移范圍是16,則對于-8...7系數(shù)的調(diào)整范圍,調(diào)整值用log2(16^4位來以信號表示?;蛘?,調(diào)整值用另一機制來以信號表示(例如,用信號表示相對于前一調(diào)整值的調(diào)整(而非絕對項),或用信號表示用于所有周期的一個調(diào)整)。編碼器還用信號表示(1844)預(yù)巻值。某些個數(shù)的系數(shù)的預(yù)巻值用信號表示為具有l(wèi)og2(最大預(yù)巻+l)位的FLC。例如,最大預(yù)巻長度是3(對0、1、2或3的預(yù)巻),并且預(yù)巻值用log2(4)=2位來以信號表示。或者,預(yù)巻值用另一機制來以信號表示。返回到圖18a,編碼器確定(1860)是否使用系數(shù)重排。如果不是,則編碼器僅使用向量可變長度編碼、行程級別編碼或某種其它熵編碼來對該段的經(jīng)量化的頻譜系數(shù)進行熵編碼(1880)。另一方面,如果使用了系數(shù)重排,則編碼器重排(1870)該段的至少某些系數(shù),并使用向量可變長度編碼、行程級別編碼或某種其它熵編碼來對如此(選擇性地)重排的系數(shù)進行熵編碼(1880)。例如,編碼器如下執(zhí)行重排(1870),以重排如圖18b中所示地計算并如圖18c中所示地用信號表示的信息??偠灾幋a器重排系數(shù),并將系數(shù)輸出到一新的系數(shù)緩沖器(或直接輸出到熵編碼器,使得重排過程不使用額外的資源來緩沖)。編碼器瀏覽指示對其將重排系數(shù)的周期的起始位置和/或結(jié)束位置的表(如上所述)。一般而言,編碼器從第一個這樣的周期循環(huán)到最后一個這樣的周期。對于一個周期,編碼器找出重排中尚未處理的第一個系數(shù)。如果該系數(shù)在一預(yù)巻區(qū)域內(nèi),則編碼器輸出該系數(shù)以及按原始順序的一個或多個接下來的預(yù)巻系數(shù)。否則,編碼器僅輸出尚未處理的第一個系數(shù)。編碼器然后將該周期中任何已處理的系數(shù)標記為已處理。編碼器繼續(xù)下一周期的第一個未處理系數(shù)。如果對某一周期沒有未處理的系數(shù),則編碼器簡單地移至下一周期。在編碼器在一次迭代中從第一個到最后一個檢查了所有周期之后,編碼器從第一個周期開始重復(fù)。最終,編碼器處理了要重排的周期中的所有系數(shù)。當段中的系數(shù)未被重排時,編碼器可簡單地將這些系數(shù)復(fù)制到新的系數(shù)緩沖器(或在適當時將其直接發(fā)送到熵編碼器)。或者,編碼器使用某種其它機制來執(zhí)行重排(1870)?;蛘撸幋a器根據(jù)其它和/或另外的重排信息來執(zhí)行重排(1870)。編碼器然后確定(1890)是繼續(xù)下一段還是結(jié)束該技術(shù)(1800)。如果編碼器繼續(xù),則編碼器計算(1810)用于下一段的重排信息,用信號表示(1802)重排信息,等等。盡管圖18a到18c將計算重排信息的動作示為為分開的且在用信號表示重排信息的動作之前,但這些動作可替換地彼此或與其它動作交錯。D.用于在解碼期間重排系數(shù)的示例技術(shù)圖19a示出了用于在解碼期間重排經(jīng)量化的頻譜系數(shù)的技術(shù)(1800),而圖19b和19c詳細示出了執(zhí)行該技術(shù)(1900)的某些動作的可能方式。例如,諸如圖12所示的解碼器執(zhí)行該技術(shù)(1900)?;蛘撸硪唤獯a器執(zhí)行該技術(shù)(1900)。開始,解碼器獲得(1910)用于一段的重排信息。解碼器通常從比特流中讀取輔助信息以在交織/重排中使用。例如,解碼器如圖19b所示地獲得(1910)重排信息,用于重排如圖18c所示地用信號表示的信息?;蛘?,解碼器獲得其它和/或另外的重排信息。參考圖19b,解碼器從比特流中解析(1912)用于重排的開/關(guān)位。例如,解碼器從比特流中讀取單個位,其中該單個位指示是使用具有系數(shù)重排的模式還是沒有系數(shù)重排的模式?;蛘?,該開/關(guān)信息使用某種其它機制來用信號表示和解析,和/或是用于對除整個段之外的某一其它持續(xù)時間的。當使用系數(shù)重排時(判定1914出來的"是"分支),則解碼器從比特流中解析(1916)周期長度。當允許非整數(shù)周期長度時,周期長度可用整數(shù)部分和分數(shù)部分來表示,這兩部分都從比特流中解析出來。整數(shù)周期長度(或非整數(shù)周期長度的整數(shù)部分)被表示為具有l(wèi)og2(最大周期長度)位的FLC?;蛘?。周期長度用另一機制來以信號表示。解碼器還從比特流中解析(1918)對其將重排系數(shù)的第一個周期,它粗略地指示了用于重排的起始位置。第一個已重排周期可用周期長度為單位來表示。第一個已重排周期例如用三位的FLC來表示。或者,第一個己重排周期用另一機制來以信號表示和解析。解碼器還從比特流中解析(1940)將對其重排系數(shù)的最后一個周期。最后一個已重排周期可用周期長度為單位來表示。最后一個已重排周期例如用信號表示為具有1og2(最大周期數(shù))位的FLC,其中解碼器從段中的系數(shù)數(shù)和周期長度中得到最大周期數(shù)。或者,最后一個己重排周期用另一機制來以信號表示和解析。有了周期長度、第一個已重排周期和最后一個己重排周期,解碼器具有填充周期位置表的信息,該表儲存了用于跟蹤目的的周期的起始位置和/或結(jié)束位置。由此,解碼器可再現(xiàn)由對應(yīng)的編碼器使用的周期位置表。解碼器從比特流中解析(1922)位置調(diào)整。對于對其將重排系數(shù)的周期,解碼器解析指示相對于初始起始和/或結(jié)束位置的偏移的信息。例如,可對每一周期解析一個調(diào)整值,并且該調(diào)整值可被表示為系數(shù)數(shù)。這一調(diào)整值可被表示為具有1og2(偏移范圍)位的FLC?;蛘撸{(diào)整值用另一機制來以信號表示和解析。有了位置調(diào)整信息,解碼器具有調(diào)整周期位置表中的周期的起始位置和/或結(jié)束位置的信息。解碼器還解析(1924)預(yù)巻值。某些個數(shù)的系數(shù)的預(yù)巻值被表示為具有1og2(最大預(yù)巻+l)位的FLC。或者,預(yù)巻值可用另一機制來以信號表示和解析。返回到圖19a,解碼器使用向量可變長度解碼、行程級別解碼或某種其它熵解碼來對來自比特流的系數(shù)信息進行熵解碼(1930)。當編碼中未使用重排時,解碼器以其原始順序?qū)Χ沃械慕?jīng)量化的頻譜系數(shù)進行熵解碼(1930)。另一方面,當在編碼中使用了重排時,解碼器對重排的經(jīng)量化的頻譜系數(shù)進行熵解碼(930)。解碼器還確定(1960)在解碼期間是否使用系數(shù)重排。如果在解碼期間使用系數(shù)重排,則解碼器重排(1970)經(jīng)熵解碼的段的至少某些系數(shù)。例如,解碼器如下執(zhí)行重排(1970),以重排如圖19b所示地檢索到的信息。解碼器從用于該段的重排信息(例如,周期長度、第一個已重排周期、最后一個已重排周期)中生成(1972)周期位置表,并向該表應(yīng)用(1974)周期調(diào)整。該表儲存周期的起始位置和/或結(jié)束位置以在重排時使用。或者,解碼器跳過表生成過程,或使用某種其它表結(jié)構(gòu)。解碼器然后使用周期位置表和預(yù)巻值來重排(1976)系數(shù)。總而言之,解碼器重排系數(shù)并將系數(shù)輸出到新的系數(shù)緩沖器,從而反轉(zhuǎn)了在編碼期間執(zhí)行的重排。(或者,解碼器可直接重排熵解碼器的輸出,因此不使用用于系數(shù)緩沖的附加資源)。解碼器使用周期位置表(如上所述),該表指示了對其應(yīng)重排系數(shù)的周期的起始位置和/或結(jié)束位置。一般而言,解碼器以從熵解碼所得的順序處理經(jīng)熵解碼的頻譜系數(shù)。例如,解碼器將第一個已重排周期的第一個未處理的系數(shù)以及預(yù)巻區(qū)域中的任何未處理的系數(shù)放入第一個已重排周期的位置中。接著,解碼器將第二個已重排周期的下一未處理系數(shù)以及預(yù)巻區(qū)域中的任何未處理系數(shù)放入第二個已重排周期中。解碼器對每一周期重復(fù)該預(yù)巻處理直到最后一個己重排周期。然后,解碼器迭代地將連續(xù)的未處理系數(shù)放到第一個、第二個、第三個等已重排周期的位置中,在一已重排周期已被填滿時跳過該己重排周期。最終,解碼器處理了要重排的周期中的所有系數(shù)。當該段中的系數(shù)未被重排時,解碼器可僅僅將這些系數(shù)復(fù)制到新系數(shù)緩沖器中的對應(yīng)位置?;蛘?,解碼器使用某種其它機制來執(zhí)行重排(1970)。例如,使用周期位置表和預(yù)巻值,解碼器瀏覽經(jīng)熵解碼的系數(shù),選擇并輸出用于第一個己重排周期的頻譜系數(shù)。然后,編碼器瀏覽經(jīng)熵解碼的系數(shù),選擇并輸出用第二個已重排周期的頻譜系數(shù),依此類推,直到最后一個已重排周期。或者,解碼器根據(jù)其它和/或另外的重排信息來執(zhí)行重排(1970)。解碼器然后確定(1990)是繼續(xù)下一段還是結(jié)束該技術(shù)(1900)。如果解碼器繼續(xù),則解碼器獲得(1910)用于下一段的重排信息,等等。盡管圖19a到19c將獲得重排信息的動作示為分開的并且在重排的其它動作之前,但是這些動作替換地可彼此或與其它動作交錯。E.結(jié)果一般而言,對經(jīng)量化的頻譜系數(shù)的重排改進了對周期性信號的隨后的熵編碼的效率。例如,重排對具有相同值的系數(shù)局部歸組,從而使得隨后的向量可變長度編碼和/或行程級別編碼更高效。上述重排的實現(xiàn)相對簡單,并且具有較低的計算復(fù)雜度。對于存儲器使用,在某些實現(xiàn)中,重排操作所需的唯一的額外存儲器是周期位置表,這是非常小的。圖20示出了在系數(shù)重排之后的圖15b的頻譜系數(shù)。周期長度是56.7。重排在位置114處開始(開始段中的第三個周期),并且重排在約位置1021處結(jié)束(結(jié)束段中的第18個周期)。預(yù)巻對于段中的周期為三。在重排之后,達約位置250的系數(shù)很好地建立以用于向量可變長度編碼,并且之后的系數(shù)很好地建立以用于行程級別編碼。歸因于重排的編碼增益取決于信號的周期性。如果信號在時域中是周期性的,則因?qū)︻l譜系數(shù)的重排通常能得到顯著的增益。否則,編碼增益通常較不顯著或者不存在。圖21示出了由于對具有周期性信號的一個示例音頻文件的每一子幀進行重排而得到的編碼增益。對子幀的最大增益超過40%,而對文件平均增益為約11%。V.在自適應(yīng)編碼/解碼中選擇性地使用多種熵模型在某些實施例中,諸如圖2、4或6所示的編碼器執(zhí)行自適應(yīng)熵編碼,其中編碼器選擇性地使用多個熵模型。對應(yīng)的解碼器(諸如圖3、5或7所示)執(zhí)行自適應(yīng)熵解碼,其中解碼器選擇性地使用多個熵模型。選擇性地使用多個熵模型的技術(shù)和工具適用于其中碼元值具有多個概率分布的各種情形,包括音頻、視頻、圖像或任何其它數(shù)據(jù)的無損和有損壓縮和解壓。A.示例問題域通常在碼元值的概率分布變化時使用碼元的自適應(yīng)編碼來改善熵編碼的效率。自適應(yīng)算術(shù)編碼可直接使用不同或變化的概率分布。對于自適應(yīng)可變長度編碼(諸如自適應(yīng)哈夫曼編碼),用于碼元值的不同熵模型被包含在不同或變化的VLC表中。釆用后向自適應(yīng),編碼/解碼基于已處理的碼元來自適應(yīng)。使用前向自適應(yīng),描述自適應(yīng)的信息被明確地用信號表示。例如,用信號表示一表切換碼以指示要用于一系列碼元的VLC表。自適應(yīng)可通過動態(tài)地改變概率分布(或用于可變長度編碼/解碼的對應(yīng)VLC)來實現(xiàn)?;蛘?,自適應(yīng)可通過從一組固定的不同的、預(yù)先訓練的概率分布(或?qū)?yīng)的VLC表)來實現(xiàn)。使用多個不同分布/VLC表的一個缺點是編碼器和解碼器所需的存儲器,因為所使用的存儲器隨著分布/VLC表的數(shù)目呈線性地增長。例如,如果使用了16個VLC表,則與單個VLC表的情況相比,在編碼器和解碼器中對VLC表使用了大約16倍的存儲器??偠灾?,描述了用于選擇性地使用多個熵模型的技術(shù)和工具可解決的問題。然而,不一定要應(yīng)用這些技術(shù)和工具來解決這一問題。B.選擇性地使用多個熵模型選擇性地使用多個熵模型可顯著減少對多個分布/VLC表的資源使用。同時,仍可實現(xiàn)與使用多個熵模型相關(guān)聯(lián)的大多數(shù)編碼增益。在各種常見情形中,選擇性地使用多個熵模型涉及對某些但非全部碼元值在不同分布/VLC表之間選擇。更一般地,它涉及在被分層組織的不同分布/VLC表之間選擇以對某些碼元值實現(xiàn)較多自適應(yīng)性而多其它碼元值實現(xiàn)較少自適應(yīng)性。假定根據(jù)某一測試,一組碼元值包括某些較有可能的碼元值和某些較不可能的碼元值。為減少用于分布/表的存儲器,編碼器和解碼器對較有可能的碼元值使用多個分布/表,但在多個分布/表中不表示較不可能的碼元值。這減少了用于多個分布/表的存儲器,但對編碼增益有可忽略的損失。(在許多情形中,相對較小一部分碼元值解決了很大百分比的概率分布)。具體地,如果熵模型被視為對一給定自適應(yīng)狀態(tài)是有條件的,則在各個不同狀態(tài)中,對較有可能的碼元值有不同的分布。然而,在不同狀態(tài)中,對較不可能的碼元值的相對分布是相同的。對于一組256個碼元值,如果大部分時間使用了這些碼元值中的32個,則編碼器和解碼器可在用于32個碼元值的6個VLC表之間切換,其中這6個VLC表中的每一個還包括用于切換到用于另外224個碼元值的單個VLC表的逸出碼。或者,假定對該組256個碼元值,大部分時間使用其中的7個碼元值,偶爾使用其中的21個碼元值,并且其余的碼元很少使用。編碼器和解碼器可在用于7個最常用的碼元值的11個VLC表之間切換,其中這11個VLC表中的每一個包括用于切換到用于21個接下來最常用的碼元值的2個VLC表的逸出碼。(逸出碼后可跟有用于前向自適應(yīng)的表選擇信息。)用于這21個碼元值的2個VLC表中的每一個包括用于切換到用于其余碼元值的VLC表的逸出碼。圖22示出了在熵模型/狀態(tài)的分層組織(例如,分布、VLC表)方面更復(fù)雜的示例。編碼器和解碼器對碼元值B、F、H和I使用8個熵模型,其中8個熵模型中的每一個還包含了兩個切換點。例如,如果編碼器和解碼器對熵模型使用概率分布,則切換點是分布中的特殊切換概率值。如果編碼器和解碼器對熵模型使用VLC表,則切換點是逸出碼或其它特殊VLC。在8個熵模型中,第一個切換點用于切換到用于碼元值A(chǔ)和C的熵模型,而第二個切換點用于切換到用于碼元值D、E、G、J和K的熵模型。編碼器和解碼器對碼元值A(chǔ)和C使用三個熵模型。編碼器和解碼器對碼元值E、J和K使用4個熵模型,其中這4個熵模型中的每一個還包含一切換點。該切換點用于切換到用于碼元值D和G的熵模型。在圖22中,碼元值的一個子集具有比其超集少的相關(guān)聯(lián)熵模型。這與其中對較有可能的碼元值實現(xiàn)更多的自適應(yīng)性,而對較不可能的碼元值實現(xiàn)較少的自適應(yīng)行的許多常見情形相一致。然而,作為替代,子集可具有比其超集多的相關(guān)聯(lián)熵模型。多個熵模型之間的選擇可以通過后向自適應(yīng)機制或前向自適應(yīng)機制來進行。多個熵模型本身可以是固定且預(yù)先訓練的,或者它們可動態(tài)改變。熵模型可以適用于各種熵編碼和解碼方案。算術(shù)編碼和解碼可對某些但全部碼元值選擇性地使用多個概率分布?;蛘撸勺冮L度編碼和解碼可對某些但非全部碼元值使用多個VLC1.調(diào)整狀態(tài)的分布為使編碼器或解碼器對某些碼元值(但非全部碼元值)選擇性地使用多個熵模型,相應(yīng)地調(diào)整多個熵模型。以下分析參考一簡單示例示出了對一組狀態(tài)的實際概率分布的調(diào)整。假定有標為S(刀=S(O),S(l),...,S(7V-1)的N個狀態(tài)用于自適應(yīng)標為=義(0),Z(l),...,Z(M-1)的M個碼元值的分布。尸s指示狀態(tài)的概率分布,其中&(y)是狀態(tài)為^G')的概率。^(力,義指示當在狀態(tài)^C/)下時碼元值的概率分布,其中&(y),;^)是當在狀態(tài)S(/)下時一碼元具有值義(0的概率分布。在M個碼元值中,L個碼元值被指定為較有可能的,而M-L個碼元值被指定為較不可能的。該組L個較有可能的碼元值是集合Q,而該組M-L個較不可能的碼元值是集合R。較有可能相比較不可能碼元的指定是實現(xiàn)相關(guān)且是靈活的,然而正確的指定導(dǎo)致更高效的編碼。并不要求對所有狀態(tài)S(力,&(A;^)>&(y),;^),其中X(《)指示Q中的一個碼元值,而Z(O指示R中的一個碼元值。換言之,并不要求給定的"較有可能的"碼元值在每一狀態(tài)下具有比給定的"較不可能的"碼元值高的概率。對狀態(tài)S(/)的經(jīng)修正的分布P逼近對狀態(tài)的實際碼元值分布&(刀,義。尸^.X義逼近&C/),義,使得(!)對集合R中的碼元值義(0的條件分布尸's(A義(z),w對所有S(/)相同,但是(2)對集合Q中的碼元值的分布對任何給定SC/)都不改變(對集合Q中的碼元值義(/),尸'巧v^.)=_/),卯))。假定N-3且M-5。狀態(tài)集合是A^{S(0),S(1),S(2)},并且碼元值集合是M-{Z(0),Z(1),X(2)J(3)J(4)}。還假定狀態(tài)概率是A(o)=0.5,&(i)=0.2,Ps(2)=0.3,如表3所示。由此,處于狀態(tài)0的概率是50%,處于狀態(tài)1的概率是20%,處于狀態(tài)2的概率是30%。<table>tableseeoriginaldocumentpage38</column></row><table><table>tableseeoriginaldocumentpage39</column></row><table>表4各狀態(tài)中碼元值的實際概率分布作為一個任意閾值,假定如果對任一狀態(tài),該狀態(tài)中的碼元值義(/)的概率乘以處于該狀態(tài)的概率大于O.l,則碼元值屬于較有可能的集合Q。即,如果對給定義(/),對任何S(刀,*尸w)〉0.1,則碼元值X(/)在集合Q中。否則,碼元值義(Z)在集合R中。對于表4中的分布,£=2,Q=(X(1),I(3))并且={義(0),^(2),義(4)}。(注意,即使&(2),義(0)>A(2),;r(),碼元值Z(1)也被指定為較有可能的碼元值,而碼元值義(0)仍被指定為較不可能的碼元值。在狀態(tài)S(1)中,Z(1)具有非常高的概率。)或者,閾值和/或測試是不同的。例如,閾值按照碼元值的百分比來設(shè)置,或者測試需要多個不同狀態(tài)中的高概率。一般而言,對于集合Q和R的大小的給定約束,可通過查看實際和近似分布之間的相對熵來找到最優(yōu)劃分。(一般而言,如此處所使用的,術(shù)語"最優(yōu)"描述了根據(jù)某一參數(shù)化或建模,比其它解決方案更好滿足某組準則的解決方案,該解決方案取決于環(huán)境在絕對方面可以是也可以不是最優(yōu)的,而術(shù)語"優(yōu)化"用于指示找到這一解決方案的過程。)在該近似中,對集合Q中的碼元值Z(/),尸'w),外.)=^c/),鄰)。對狀態(tài)S(力的分布對于集合Q中的碼元未修改。然而,對于集合R中的碼元值義(/),近似分布是不同的。開始,計算對集合R中的碼元值的實際條件分布&(^j(,)^。對于集合R中的碼元值,實際條件分布(去除了集合Q中的碼元值X(1),義(3)的貢獻,并僅用來自X(0),X(2),義(4)的貢獻來加權(quán))在表5中給出。&(0),義(0),^是<table>tableseeoriginaldocumentpage39</column></row><table>表5對集合R中的碼元值的實際條件分布然后,近似條件分布尸、y),義(/),y被計算為即,當在集合R中時近似條件分布是在N個狀態(tài)上的實際條件分布的加權(quán)平均(按照&(力)。對于表4和5中的值,當在集合R中時的近似條件分<table>tableseeoriginaldocumentpage40</column></row><table>表6對集合R中的碼元值的近似條件分布對每一狀態(tài)S(力的最終近似分布為(2)由此,對集合Q中的碼元值,在對狀態(tài)5^)的近似分布中使用了狀態(tài)s(y)中的實際概率值。對于集合R中的碼元值,將對該碼元值的近似條件分布概率尸'^),耶),w乘以對狀態(tài)s(力集合R中的碼元值的實際概率之和。對于碼元值x(o)和狀態(tài)<formula>formulaseeoriginaldocumentpage40</formula>。對于表4和6中的其它值,對狀態(tài)S(/)的最終近似概率分布在表7中給出。<table>tableseeoriginaldocumentpage40</column></row><table>表7各狀態(tài)中對碼元值的最終近似分布基本上,將表7與表4進行比較,對于較有可能的碼元值Z(1),X(3),分布未改變,而對于較不可能的碼元值X(0),義(2),Z(4),分布已改變以實施對集合R中的碼元值的相對概率在各狀態(tài)之間相同的條件。即,在表7中的每一狀態(tài)中,X(O)的可能性是義(2)的兩倍,且Z(0)的可能性是義(4)的兩倍。對于一般的情況,從對M個碼元的N個狀態(tài)開始,可通過將對于集合R的N個條件分布聚集成P個分布(其中P<N)來減少用于某些碼元值(集合R)的狀態(tài)數(shù)。這一過程然后可對M個碼元值的某一其它子集重復(fù)。它還可在集合R的P個聚集的分布上遞歸地重復(fù),其中集合R具有帶P個狀態(tài)的風個碼元值(IRI表示集合R中的元素的勢或個數(shù))。這對M個碼元值的N個狀態(tài)(或分布,或聚類)施加了約束。這些約束可在固定了用于M個碼元的N個狀態(tài)之后施加,或者為得到更多最優(yōu)性,可在訓練階段本身期間施加。訓練將以用于M個碼元的大量分布開始,并且將得到N個聚集的分布,使得它們滿足關(guān)于條件分布的額外約束。2.示例VLC表不同狀態(tài)中的碼元值的近似分布可用于各種類型的自適應(yīng)熵編碼和解碼,包括哈夫曼編碼和解碼以及其它可變長度編碼和解碼。哈夫曼碼表可被視為樹,其中該樹的每一葉對應(yīng)于一碼元值。該樹的左分支具有與一個二進制值(例如,o)的關(guān)聯(lián),并且該樹的右分支具有與相反的二進制值(例如l)的關(guān)聯(lián)。圖23所示的樹對應(yīng)于表7中所示的近似分布。在圖23中,各個樹的虛線部分針對集合R中的碼元值,而該樹的其它部分針對集合Q中的碼元值。在表7所示的近似分布中,集合R中的碼元值的條件分布不管狀態(tài)如何都是相同的,因此圖23中的每一樹都可具有用于集合R中的碼元值公共且相同的分支。該公共、相同分支的放置可以是樹中的任何位置,一般取決于該公共分支中表示的碼元值的概率的累積與該樹的其它碼元值的概率相比如何。由此,該公共分支可以在各樹之間或高或低。對于圖23中的任何給定樹/狀態(tài),用于集合R中的所有碼元值的VLC具有如由該樹中的分支的放置所指示的相同前綴。另外,不論圖23中的狀態(tài)如何,集合R中的每一碼元值都具有如由該公共、相同分支所指示的公共后綴。對于圖23中的樹,示例哈夫曼碼如下。<table>tableseeoriginaldocumentpage41</column></row><table>表8示例哈夫曼碼和表同一表可用于狀態(tài)S(O)和S(l)。在狀態(tài)S(0)和S(1)中,用于集合R中的碼元值的公共前綴(示為帶下劃線的)不論集合R中的碼元值如何都是"11"。在狀態(tài)S(2)中,用于集合R中的碼元值的公共前綴(示為帶下劃線的)是"10"。在狀態(tài)S(O)、S(1)和S(2)中,用于各個碼元值的后綴(示為加粗)是相同的。(用于Z(0)的后綴是"0",用于Z(1)的后綴是"10",用于JT(2)的后綴是"11"。)在這一情況下,用于近似的分布的哈夫曼碼方便了用于集合R中的碼元值的二階段編碼/解碼,并且可用其來實現(xiàn)。表8所示的代碼可如表9和10中所示地進一步拆分。<table>tableseeoriginaldocumentpage42</column></row><table>表9用于各個狀態(tài)的第一階段碼表<table>tableseeoriginaldocumentpage42</column></row><table>表10用于所有狀態(tài)的第二階段碼表對于具有集合R中的一個值的碼元,編碼器首先編碼表示集合R中的所有碼元值的逸出碼。這用信號表示了從用于對特定狀態(tài)的集合Q中的碼元值的第一碼表到用于跨所有狀態(tài)的集合R中的碼元值的第二碼表的切換。編碼器然后從第二碼表中編碼適當?shù)拇a。在哈夫曼碼表的更復(fù)雜的分層組織中,哈夫曼碼表可包括多個公共分支,每一公共分支對應(yīng)于對碼元值的一不同子集的單個條件分布。在二階段實現(xiàn)中,第一階段哈夫曼碼表可包括多個逸出碼,對多個公共分支中的每一個都有一逸出碼。更一般地,哈夫曼碼表可用任意的分層結(jié)構(gòu)來組織,其中使用了逸出碼(以及可能的其它選擇信息)來切換到另一個或一組哈夫曼碼表。在一特定表中,也可使用逸出碼來切換到用于某些碼元值的固定長度編碼/解碼方案(而非切換到另一表)?;蛘撸瑯?gòu)造不遵循哈夫曼碼的規(guī)則的其它類型的VLC表。例如,單個VLC表將VLC與對一組狀態(tài)中的全部狀態(tài)的集合R中的碼元值相關(guān)聯(lián),而多個VLC表(對該組中的每一狀態(tài)有一個表)將VLC與集合Q中的碼元值相關(guān)聯(lián)。此外,盡管以上示例示出了固定的、預(yù)先訓練的碼表,但是替換地,碼表可取決于已處理的碼元值來動態(tài)改變其代碼。對于這種動態(tài)改變的表,編碼器和解碼器仍可對某些碼元值選擇性地使用多個碼表,并對其它碼元值使用單個碼表。一般而言,如果對M個碼元值有N個狀態(tài),則有N個VLC表,或者如果使用哈夫曼碼,則有N個樹。如果有M個碼元值的L個不相交的子集,這L個子集中的每一個都具有尸,個狀態(tài),其中/=0,1,...,1-1且對所有/,尸/<W,則N個樹中的每一個都具有L個分支(標為&,,每一分支6,是從對該子集/可用的尸/個公共分支之一中選擇的。此外,如果L個子集中的任一個再次遞歸地劃分成各子集,每一子集具有比其父集中更少的狀態(tài),則關(guān)于尸/個分支中發(fā)出的各分支情況也是相同的。3.用于算術(shù)編碼/解碼的示例分布在其它編碼器/解碼器中,在算術(shù)編碼/解碼中使用了近似分布。算術(shù)編碼一般涉及將一系列碼元表示為給定范圍內(nèi)的單個數(shù)字。通常,該數(shù)字是0到l之間的分數(shù)。碼元通過將其置于范圍的一部分中來編碼,其中該范圍取決于碼元值的概率分布來劃分。對于在算術(shù)編碼和解碼中的使用,表7所示的近似分布可被拆分成表6和表11。表11中對Z(O)、X(2)和X(4)的切換值指示從表11所示的狀態(tài)/分布之一到表6所示的狀態(tài)/分布的改變。<table>tableseeoriginaldocumentpage43</column></row><table>表ll對具有Q種組合的碼元值的近似分布盡管以上示例示出了固定的、預(yù)先訓練的分布,但是替換地,分布可以取決于已被處理的碼元值而動態(tài)地改變。對于這一動態(tài)改變的分布,編碼器和解碼器仍可選擇性地對某些碼元值使用多個分布,而對其它碼元值使用單個分布。4.確定熵模型的示例訓練當編碼器和解碼器對碼元選擇性地使用多個熵模型時,熵模型最終取決于這些碼元的概率分布信息。在某些實現(xiàn)中,諸如編碼器或統(tǒng)計分析軟件等工具使用以下方法來確定用于熵模型的狀態(tài)和概率分布。圖24示出了用于將概率分布聚集成用于多熵模型編碼/解碼方案的狀態(tài)的二階段技術(shù)(2400)。該技術(shù)(2400)將碼元值的概率分布作為訓練向量來對待,并且訓練向量被歸組成聚類,這類似于用于向量量化方案的聚集方法。開始,該工具獲得(2410)用于訓練向量的實際概率分布。訓練向量來自代表源的訓練集。例如,對于音頻編碼/解碼,子幀中的碼元值的概率分布變?yōu)橐粋€訓練向量。對于一般的音頻編碼/解碼,該訓練集包括多個音頻源,使得對不同音頻源的多個子幀獲得概率分布。訓練向量可從各比特率和/或質(zhì)量設(shè)置下的訓練中獲得。該工具然后使用第一成本度量來聚集(2420)訓練向量。例如,第一成本度量是均方誤差("MSE")。聚集本身可使用如參考圖25所解釋的通用Lloyd算法("GLA")的變型或使用某一其它機制?;旧希贕LA變型中,該工具迭代地將訓練向量聚集成給定數(shù)目的聚類,在對給定解碼器找到最優(yōu)編碼器和對給定編碼器找到最優(yōu)解碼器之間迭代。在幾次迭代之后,該工具找出一組使得第一成本度量被最小化的聚類。該工具然后使用第二成本度量來細化(2430)聚類。例如,第二成本度量是相對熵度量。Itakura-Saito距離是測量兩個概率分布之間的相對熵的一種方式。在細化(2430)中,聚集邏輯的各部分可以與用于第一成本度量的聚集邏輯的各部分相同或不同。由此,根據(jù)圖24,該工具使用二階段訓練過程。在第一階段中,該工具使用第一成本度量(例如,MSE)來獲得用于分布的近似概率質(zhì)量函數(shù)("PMF")聚類。在第二階段中,該工具使用第二成本度量(例如,Itakura-Saito距離)來進一步細化PMF聚類。MSE的計算相對簡單,但是沒有對用于編碼/解碼目的的熵以及相對熵度量進行建模。另一方面,相對熵是用于細化聚類的一種有效度量,但是當它是所使用的唯一度量時會導(dǎo)致非最優(yōu)的聚集。在許多情況下,二階段訓練不僅在復(fù)雜性方面更快(因為相對熵的計算更復(fù)雜),而且還導(dǎo)致用于編碼/解碼應(yīng)用的更好的聚類?;蛘?,該工具使用另一種方法來確定狀態(tài)和概率分布。例如,該工具對第一或第二成本度量使用除MSE或相對熵之外的度量?;蛘?,該工具在單階段過程中使用單個成本度量。圖25示出了用于根據(jù)GLA的變型來聚集訓練向量的技術(shù)(2500)。與圖24中一樣,該技術(shù)(2500)將碼元值的概率分布作為訓練向量來對待,并且訓練向量被歸組成聚類。開始,該工具從訓練向量中計算(2510)單個聚類。例如,對于一般的音頻編碼/解碼,訓練向量是對來自諸如以不同比特率和/或質(zhì)量設(shè)置編碼的音頻文件等不同音頻源的子幀的概率分布。所獲得的訓練向量的個數(shù)取決于實現(xiàn)。在一種實現(xiàn)中,該工具獲得所計算的最終聚類的大約100倍的訓練向量。單個聚類是訓練向量的質(zhì)心,通過對訓練向量求平均或訓練向量的某種其它組合來計算。該工具然后將單個聚類拆分(2520)成多個聚類。例如,該工具使用主分量分析來將單個聚類拆分成兩個聚類;一個是原始聚類,而另一個是原始聚類加上實現(xiàn)相關(guān)常量乘以主分量(例如,另一個是沿主分量的方向有某一偏移的聚類)?;蛘?,該工具使用某種其它分析來將聚類拆分成多個聚類。該工具根據(jù)某一成本度量在多個當前聚類之間對訓練矢量進行分類(2530)。例如,成本度量是MSE、相對熵或某一其它度量。訓練向量與聚類的MSE之比指示了訓練向量的概率分布點與聚類的對應(yīng)點之間的歐幾里德距離。訓練向量和聚類之間的相對熵可給出訓練向量和聚類之差如下-Z訓練向量ZlOg2(聚類JA(3)其中k指示訓練向量和聚類中的點。較不正式而言,相對熵指示了由于訓練向量和聚類之間的失配而導(dǎo)致的比特率損失。該工具將一訓練向量與對其該訓練向量具有最低MSE、最低相對熵等的聚類分類在一起。該工具從所分類的訓練向量中重新計算(2540)當前聚類。例如,對每一當前聚類,該工具計算被分類到該聚類的訓練向量的質(zhì)心。或者,該工具將每一當前聚類計算為被分類到該聚類的訓練向量的某一其它組合。該工具確定(2545)聚類是否已穩(wěn)定。例如,該工具檢查重新計算(2540)之前和之后聚類中的變化是否滿足某一準則。一個準則是聚類在重新計算(2540)中未位移多于某一閾值量,其中閾值量取決于實現(xiàn)?;蛘?,該工具考慮其它和/或附加準則。如果聚類未穩(wěn)定,則該工具根據(jù)成本度量在(重新計算(2540)的)當前聚類之間分類(2530)訓練向量。當當前聚類穩(wěn)定時,該工具確定(2550)是否有足夠的聚類。一般而言,期望的聚類數(shù)可被設(shè)為存儲器使用與編碼性能之間的折衷。具有更多聚類往往導(dǎo)致熵模型中的更多狀態(tài)和自適應(yīng)性,但以增加的用于儲存分布、VLC表等的存儲器使用為代價。當使用前向自適應(yīng)時,具有更多聚類也意味著用信號表示更多輔助信息(例如,用于指示分布、表等)。相反,具有較少聚類往往會增加訓練向量和最終聚類之間的失配,這通常指示編碼期間熵模型和碼元值的實際分布之間的增加的失配。如果未達到所需數(shù)目的聚類,則該工具拆分(2560)部分或全部當前聚類。例如,該工具使用主分量分析或某一其它分析來將一個聚類拆分成兩個聚類。假定該工具尋找G個最終聚類并且當前具有F個當前聚類,其中F〈G。如果拆分F個當前聚類中的每一個將得到太多聚類,則該工具可將最前面(例如,按照有多少訓練向量被分類到當前聚類來計算的"最前面")的G-F個當前聚類中的每一個拆分成兩個聚類?;蛘撸摴ぞ呖蓛H僅在每次迭代中拆分第一個聚類或使用用于拆分的某一其它規(guī)則。該工具然后根據(jù)成本度量在(拆分(2560)的)當前聚類之間分類(2530)訓練向量。當當前聚類已穩(wěn)定并且達到了所需數(shù)目的聚類時,該技術(shù)(2500)結(jié)束。分類(2530)、重新計算(2540)和拆分(2560)基本上構(gòu)成了GLA變型的一次迭代,并且在迭代期間,成本度量將減小。圖25的技術(shù)(2500)可被如下結(jié)合到圖24中的技術(shù)(2400)中。該工具使用MSE作為成本度量來執(zhí)行圖25的技術(shù)(2500),直到達到所需數(shù)目的聚類。此時,該工具使用相對熵作為成本度量迭代地執(zhí)行分類(2530)、重新計算(2540)和檢查(2545)穩(wěn)定性,直到聚類穩(wěn)定/沒有位移多于某一闡值量。技術(shù)(2400、2500)可用于以逼近實際分布但對某些碼元值具有相同的條件分布的概率分布來產(chǎn)生最終聚類。按照第V.A.l節(jié)的分析框架,技術(shù)(2400、2500)可用于通過在分類和聚集操作中添加對集合R中的碼元值的條件分布對所有聚類/狀態(tài)都相同(對所有狀態(tài)S(/),尸'^),;^),w相同)的約束來產(chǎn)生如表7所示的近似概率分布。本質(zhì)上,對應(yīng)于集合R中的碼元值的聚類的維數(shù)如公式(1)和(2)中所示地受到約束。在分析中,處于給定狀態(tài)的概率&(力由被分類在對該狀態(tài)的聚類中的訓練向量的個數(shù)來指示。另一約束是每一聚類的維數(shù)之和為1。參考圖25,在重新計算(2540)當前聚類之后,可施加一個或多個條件分布約束。一般而言,假定對M個碼元值有N個狀態(tài),并且有M個碼元值的L個子集,L個子集中的每一個具有尸/個狀態(tài)和&個元素,其中尸,<W,/=0,1,....,。L個子集中給定一子集內(nèi)的所有碼元值可被歸組成一公共(逸出/切換)碼元值。將有L個這樣的逸出/切換碼元值。然后,訓練繼續(xù)對M-(五o+A+.,.+五w)+L個碼元值(減去L個子集中的A個元素,并對逸出/切換碼元值加上L個元素)找出N個聚類(或分布)。然后,對M個碼元值的L個子集中的每一個,在該子集內(nèi)計算條件分布。對L個子集中的每一個重復(fù)該訓練,以找出用于這些子集中的每一個的尸,個聚類,其中/=0,i,...,li。用于此目的的訓練向量將分別是l個子集內(nèi)的條件分布。如果L個子集中的任一個被進一步細分,則可對該細分的子集遞歸地重復(fù)該過程,因為現(xiàn)在對A個碼元值有尸/個狀態(tài)。對于指定哪些碼元值在集合Q和R中,最初這是基于單個起始聚類的概率分布的。隨后,集合Q和R的構(gòu)成取決于處于各個狀態(tài)的概率(訓練向量在各個聚類中的比例)以及聚類的概率分布。5.替換前述示例中的許多涉及對某些碼元值使用多個分布/表,并對其它碼元值使用單個分布/表。盡管該配置通常在不顯著損害熵編碼性能的情況下減少了存儲器使用,但是在第V節(jié)中描述的技術(shù)和工具更一般地適用于分層組織的熵模型。編碼器或解碼器可在對某些碼元值實現(xiàn)更多自適應(yīng)性并對其它碼元值實現(xiàn)更少自適應(yīng)性的分層組織中的不同熵模型之間選擇性地選取。分層組織的熵模型可對每一切換參考多個熵模型(例如,不僅切換到用于較不可能碼元值的單個熵模型)。例如,某一級的一組哈夫曼碼表包括一個哈夫曼碼表或多個哈夫曼碼表。訓練可在多個階段中進行。在第一訓練階段,碼元值被指定為在集合Q或集合R中,其中對集合R中的碼元值的條件分布對所有狀態(tài)是相同的。然后,在用于集合R中的碼元值的后續(xù)訓練階段中,對用于集合R中的碼元值的條件分布的較早約束被解除(lift),并且對集合R中的碼元值的概率分布被分類到用于不同熵模型的多個聚類/狀態(tài)中。一組熵模型的每一成員可包括到另一級上的不同組熵模型的切換點。例如,對于前向自適應(yīng),第一組哈夫曼碼表中的每一表包括兩個逸出碼一到第二組一個或多個哈夫曼碼表的第一逸出碼,以及到第三組一個或多個哈夫曼碼表的第二逸出碼。對于訓練,碼元值可被指定為對第一組熵模型在集合Q中,對第二組熵模型在集合R中,對第三組熵模型在集合S中。對集合R中的碼元值的條件分布(忽略Q和S中的碼元值)對所有狀態(tài)是相同的,并且對集合S中的碼元值的條件分布(忽略Q和R中的碼元值)對所有狀態(tài)是相同的。除了附加范圍之外,分層組織的熵模型可包括三、四或更多級熵模型。例如,對于前向自適應(yīng),第一組哈夫曼碼表中的每一表包括到第二組哈夫曼碼表的逸出碼,而第二組哈夫曼碼表中的每一表包括到第三組哈夫曼碼表的逸出碼。訓練可在多個階段中進行。在第一階段,碼元值被指定為在對第一組熵模型在集合Q中或?qū)ζ渌啬P图诩蟁中。對集合R中的碼元值的條件分布(忽略Q中的碼元值)對所有狀態(tài)是相同的。然后,在對集合R中的碼元值的附加訓練階段中,對條件分布的這一約束被解除,并且來自集合R的碼元值被指定為對第二組熵模型在集合S中,或者對任何其它組熵模型在集合T中。在這一階段中,對集合T中的碼元值的條件分布(忽略s中的碼元值)對所有狀態(tài)是相同的。除了可變長度(例如,哈夫曼)編碼和解碼以及算術(shù)編碼和解碼之外,其它類型的熵編碼和解碼可結(jié)合對熵模型的選擇性使用。例如,變量到變量的編碼和解碼可包含分層組織的VLC表。C.用于編碼的示例技術(shù)圖26示出了以對多個熵模型的選擇性使用來編碼碼元的技術(shù)(2600)。諸如圖2、4或6所示的編碼器等編碼器執(zhí)行該技術(shù)(2600)。在波形音頻編碼器中,碼元通常是針對經(jīng)量化的頻譜系數(shù)的。經(jīng)量化的頻譜系數(shù)可被預(yù)處理(例如,通過系數(shù)預(yù)測或系數(shù)重排)。每一碼元可表示一經(jīng)量化的頻譜系數(shù)?;蛘?,每一碼元可表示一組經(jīng)量化的頻譜系數(shù)。對于向量哈夫曼編碼,例如,一個碼元表示一組4個經(jīng)量化的頻譜系數(shù)。對于行程級別編碼,例如,一個碼元表示一個行程級別對。對于一系列碼元,編碼器從第一組熵模型中選擇(2610)—個熵模型。例如,編碼器從對哈夫曼編碼或行程級別編碼可用的多個哈夫曼碼表中選擇一個哈夫曼碼表?;蛘撸幋a器選擇在另一熵編碼方案中使用的熵模型。在某些實現(xiàn)中,編碼器取決于上下文信息來選擇熵模型。在其它實現(xiàn)中,編碼器在評估使用各種熵模型的編碼性能之后選擇一熵模型。以下描述使用網(wǎng)格結(jié)構(gòu)來選擇哈夫曼碼表的過程的一個示例?;蛘撸幋a器使用另一機制來選擇熵模型。返回到圖26,編碼器可任選地用信號表示(2620)指示所選的熵模型的信息。對于前向自適應(yīng),編碼器明確地用信號表示指示所選的熵模型的信息。一種前向自適應(yīng)機制在以下對哈夫曼碼表切換詳細描述?;蛘?,編碼器使用另一信號表示機制。對于后向自適應(yīng),對熵模型的選擇從解碼器處可用的上下文中推導(dǎo)。編碼器然后使用所選的熵模型來對該一系列碼元進行熵編碼(2630)。在熵模型中的任何切換點處,編碼器可切換到另一組一個或多個熵模型。例如,編碼器使用第一哈夫曼碼表中的逸出碼來用信號表示到第二哈夫曼碼表的切換,然后使用該第二哈夫曼碼表來編碼碼元。編碼器然后用信號表示(2640)經(jīng)熵編碼的碼元。當發(fā)生任何切換時,編碼器也可用信號表示諸如逸出碼等切換信息或用于在模型集內(nèi)選擇的其它模型切換編碼器確定(2650)是否繼續(xù)下一序列,如果是,則選擇(2610)用于下一序列的碼元的熵模型。例如,當在一個實現(xiàn)中使用哈夫曼碼表來編碼經(jīng)量化的頻譜系數(shù)時,允許編碼器在樹皮邊界(barkboundary)處改變碼表。換言之,劃分頻譜的樹皮邊界用作改變從第一碼表集中選擇的哈夫曼碼表的可能改變位置。如果用于所編碼的當前碼元的系數(shù)延伸超過了樹皮邊界(例如,由于碼元表示跨邊界的系數(shù)向量或系數(shù)行程級別對),則當前碼元的系數(shù)的末尾變?yōu)橛行Ц淖兾恢谩;蛘撸幋a器在其它改變位置處改變來自第一模型集的熵模型的選擇,并且根據(jù)所選的熵模型編碼的碼元序列具有某一其它持續(xù)時間。如上所述,在一個實現(xiàn)中,編碼器使用網(wǎng)格結(jié)構(gòu)來選擇哈夫曼碼表以評估不同的表。編碼器用所有可能的表來編碼兩個有效表改變位置(是樹皮邊界)之間的所有碼元。編碼器跟蹤每一表使用的位數(shù)來編碼碼元。編碼器構(gòu)造網(wǎng)格來找到最佳的可能編碼,考慮了在改變表時要用信號表示的比特。假定6,,,是在編碼到表改變位置Z時使用的最小位數(shù),其中表/是使用的上一個表。位計數(shù)",是使用表/來編碼改變位置/和改變位置&l之間的碼元所需的位。位計數(shù)^a是編碼在改變位置f處從表/到的表f的表改變所需的位。換言之,在改變位置f處使用的上一個表是表/,現(xiàn)在用表f來編碼到改變位置什l。表,.是在改變位置M處使用以獲得其中改變位置f處的當前表是表f的最優(yōu)編碼的表。a(4)、,,n(、+氣,編碼器通過找出最小化&wa;t,,的/來對整個子幀或序列的其它部分確定最優(yōu)編碼,其中加^是/的最大值。編碼器通過査看w的值跟蹤最優(yōu)路徑來找出最優(yōu)表。編碼表改變所需的位基本上是10g2(表數(shù))+l0g2(剩余樹皮數(shù))+l。當一表改變時,編碼器發(fā)送一個位的信號來指示這是否是使用的最后一個表,并且如果不是使用的最后一個表,則編碼器用信號表示1og2(剩余樹皮數(shù))來對該表適用于多少樹皮帶進行編碼。D.用于解碼的示例技術(shù)圖27示出了用于以對多個熵模型的選擇性使用來解碼碼元的技術(shù)(2700)。諸如圖3、5或7所示的解碼器等解碼器執(zhí)行該技術(shù)(2700)。在波形音頻解碼器中,碼元通常是針對經(jīng)量化的頻譜系數(shù)的。如果經(jīng)量化的頻譜系數(shù)已在編碼期間被預(yù)處理(例如,通過系數(shù)預(yù)測或系數(shù)重排),則系數(shù)在熵解碼之后進行后處理(例如,通過系數(shù)預(yù)測或系數(shù)重排)。每一碼元可以表示一經(jīng)量化的頻譜系數(shù)?;蛘?,每一碼元可表示一組經(jīng)量化的頻譜系數(shù)。對于向量哈夫曼編碼,例如,一碼元表示一組4個經(jīng)量化的頻譜系數(shù)。對于行程級別編碼,例如,一碼元表示一行程級別對。對于一系列碼元,解碼器可任選地解析(2710)指示所選熵模型的信息。例如,對于前向自適應(yīng),解碼器使用作為編碼器側(cè)信號傳送的鏡像的機制來解析指示所選熵模型的信息。解碼器從第一組熵模型中選擇(2720)—熵模型。例如,解碼器從對向量哈夫曼解碼或行程等級解碼可用的多個哈夫曼碼表中選擇一哈夫曼碼表?;蛘?,解碼器選擇在另一熵解碼方案中使用的熵模型。在某些實現(xiàn)中,解碼器取決于用于后向自適應(yīng)的上下文信息來選擇熵模型。在其它實現(xiàn)中,解碼器基于編碼器用信號表示的并從比特流中解析(2710)的信息來選擇熵模型。解碼器然后使用所選的熵模型來對該一系列碼元進行熵解碼(2730)。在熵模型中的任何切換點處,解碼器可切換到另一組一個或多個熵模型。例如,解碼器接收指示到第二哈夫曼碼表的切換的、第一哈夫曼碼表的逸出碼,然后使用第二哈夫曼碼表來解碼碼元。編碼器然后輸出(2740)用于經(jīng)熵解碼的碼元,例如準備好后續(xù)處理的經(jīng)量化的頻譜系數(shù)的信息。解碼器確定(2750)是否繼續(xù)下一序列,如果是,則選擇(2710)用于下一序列的碼元的熵模型。例如,當在一個實現(xiàn)中使用哈夫曼碼表來解碼經(jīng)量化的頻譜系數(shù)時,允許解碼器在樹皮邊界處改變碼表。如果用于所解碼的當前碼元的系數(shù)延伸超過了樹皮邊界(例如,因為碼元表示跨越邊界的系數(shù)向量或系數(shù)的行程級別對),則當前碼元的系數(shù)的末尾變?yōu)橛行Ц淖兾恢谩;蛘?,解碼器在其它改變位置處改變對第一模型集中的熵模型的選擇,并且根據(jù)所選熵模型解碼的碼元序列具有某一其它持續(xù)時間。E.結(jié)果對較不可能的碼元值使用近似分布來編碼能夠節(jié)省編碼器和解碼器中的分布或碼表所需的存儲器。按照第V.A.l節(jié)的分析框架,編碼器和解碼器儲存用于尸W/);^。)的分布和/或碼表。即,編碼器和解碼器儲存用于集合Q中的碼元值義(O的每一狀態(tài)S(刀的分布和/或碼表。對于集合R中的碼元值義(O,編碼器和解碼器儲存用于單個分布尸'^),W)^的分布和域表。假定一表對每一狀態(tài)占據(jù)存儲器的B個字節(jié),并且有16個狀態(tài)。則在典型的全表情況下,編碼器和解碼器各自需要存儲器的16*8個字節(jié)來用于16個表。然而,如果僅碼元值的10%被指定為較有可能的(在集合Q中),則對所需存儲器的簡單近似為(16*^*.1)+(5*.9)=2.5*5。由此,與全表情況相比,所需的存儲器被減少了6倍,而熵編碼增益僅有輕微的降低。鑒于可應(yīng)用所公開的本發(fā)明的原理的許多可能的實施例,應(yīng)當認識到,所示實施例僅是本發(fā)明的優(yōu)選示例,并且不應(yīng)認為是限制本發(fā)明的范圍。相反,本發(fā)明的范圍由所附權(quán)利要求書來定義。因此,要求保護落入這些權(quán)利要求的精神和范圍內(nèi)的所有內(nèi)容作為本發(fā)明。權(quán)利要求1.一種方法,包括對于多個碼元,從包括多個熵模型的第一模型集中選擇一熵模型,所述第一模型集的多個熵模型中的每一個包括用于切換到包括一個或多個熵模型的第二模型集的模型切換點;使用所選的熵模型來處理所述多個碼元;以及輸出所述處理的結(jié)果。2.如權(quán)利要求1所述的方法,其特征在于,一編碼器在編碼期間執(zhí)行所述選擇、所述處理和所述輸出,其中所述處理包括熵編碼。3.如權(quán)利要求1所述的方法,其特征在于,一解碼器在解碼期間執(zhí)行所述選擇、所述處理和所述輸出,其中所述處理包括熵解碼。4.如權(quán)利要求1所述的方法,其特征在于,所述第一模型集的多個熵模型和所述第二模型集的一個或多個熵模型是用于算術(shù)編碼和/或解碼的概率分布,并且其中,所述模型切換點是所述第一模型集的多個概率分布中的模型切換概率。5.如權(quán)利要求1所述的方法,其特征在于,所述第一模型集的多個熵模型分別被包含在所述第一表集的多個VLC表中,其中所述第二模型集的一個或多個熵模型分別被包含在第二表集的一個或多個VLC表中,其中所述模型切換點是逸出碼,并且其中,所述第一表集的多個VLC表中的每一個包括用于切換到所述第二表集的逸出碼。6.如權(quán)利要求5所述的方法,其特征在于,所述第一表集的多個VLC表和所述第二表集的一個或多個VLC表是哈夫曼碼表,并且其中所述第二表集包括單個哈夫曼碼表,使得所述單個哈夫曼碼表表示代表所述第一表集的各個的多個哈夫曼碼表的樹中的公共分支。7.如權(quán)利要求5所述的方法,其特征在于,所述第一表集的多個VLC表適用于包括較有可能的碼元值的第一碼元值集,并且其中,所述第二表集的一個或多個VLC表適用于包括較不可能的碼元值的第二碼元值集。8.如權(quán)利要求7所述的方法,其特征在于,所述第二表集包括單個VLC表,并且其中,所述處理是針對具有所述較不可能的碼元值的多個碼元的二階段可變長度編碼或解碼的。9.如權(quán)利要求1所述的方法,其特征在于,還包括生成所述第一模型集的多個熵模型以及所述第二模型集的一個或多個熵模型,其中所述生成包括根據(jù)第一成本度量聚集概率分布,得到多個初步聚類;以及根據(jù)不同于所述第一成本度量的第二成本度量細化所述多個初步聚類,得到多個最終聚類。10.如權(quán)利要求1所述的方法,其特征在于,所述第二模型集包括單個熵模型,所述方法還包括生成所述第一模型集的多個熵模型以及所述第二模型集的單個熵模型,其中所述生成包括對所述第二模型集的單個熵模型將較不可能的碼元值約束為具有跨概率分布的公共條件分布。11.如權(quán)利要求1所述的方法,其特征在于,所述第二模型集的一個或多個熵模型中的每一個包括用于切換到包括一個或多個熵模型的第三模型集的第二模型切換點。12.如權(quán)利要求1所述的方法,其特征在于,對所述第一模型集的多個熵模型中的至少某一些,所述模型切換點具有在各模型之間不同的值。13.如權(quán)利要求l所述的方法,其特征在于,所述第一模型集的多個熵模型中的每一個還包括用于切換到包括一個或多個熵模型的第三模型集的第二模型切換點。14.如權(quán)利要求1所述的方法,其特征在于,所述多個碼元是針對用于音頻數(shù)據(jù)的經(jīng)量化的頻譜系數(shù)的。15.如權(quán)利要求l所述的方法,其特征在于,所述選擇是前向自適應(yīng)切換的一部分。16.如權(quán)利要求1所述的方法,其特征在于,所述選擇是后向自適應(yīng)切換的一部分。17.—種包括用于通過以下步驟來生成熵模型的一個或多個模塊的系統(tǒng)根據(jù)第一成本度量來聚集概率分布,得到多個初步聚類;根據(jù)不同于所述第一成本度量的第二成本度量來細化所述多個初步聚類,得到多個最終聚類;以及至少部分地基于所述多個最終聚類來設(shè)置所述熵模型。18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述第二成本度量是相對熵。19.一種系統(tǒng),包括用于獲得對碼元值的概率分布的裝置;以及用于生成熵模型的裝置,所述生成包括將多個較不可能的碼元值約束為具有跨所述概率分布的公共條件分布,而不對多個較有可能的碼元值作此約束。20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述熵模型分別被包含在第一表集的多個VLC表以及第二表集的單個VLC表中,其中所述多個VLC表適用于多個較有可能的碼元值,并且其中所述單個VLC表適用于多個較不可能的碼元值。全文摘要此處描述了在自適應(yīng)編碼和解碼中選擇性地使用多個熵模型的技術(shù)和工具。例如,對于多個碼元,音頻編碼器從包括多個熵模型的第一模型集中選擇一熵模型。多個熵模型中的每一個包括用于切換到包括一個或多個熵模型的第二模型集的模型切換點。編碼器使用所選的熵模型處理多個碼元并輸出結(jié)果。還描述了用于生成熵模型的技術(shù)和工具。文檔編號G10L15/00GK101223573SQ200680025810公開日2008年7月16日申請日期2006年7月14日優(yōu)先權(quán)日2005年7月15日發(fā)明者S·梅若特拉,W-G·陳申請人:微軟公司