本申請是2012年12月12日提交的中國專利申請no.201280072059.0的發明名稱為“矢量量化器”的分案申請。
所建議的技術大致涉及矢量量化(vq),且尤其涉及矢量量化的精確度和計算復雜度。
背景技術:
存在兩個主要類別的量化算法,即:標量量化器(sq),用于逐項處理輸入矢量;以及矢量量化器(vq),用于將輸入矢量作為一個單元來進行量化(對全部矢量維度進行聯合量化)。以給定的比特率,vq要優于sq,但是以計算復雜度和存儲器存儲增加為代價。
設要量化的目標矢量是m個維度:s=[s(1)s(2)...s(m)]。vq算法在預存儲的m維碼矢量ck=[ck(1)ck(2)…ck(m)]的大小為k的碼本(cb)
向解碼器發送最佳索引kopt,以及從cb(相同的cb可用于編碼器和解碼器二者)提取對應的碼矢量并將其用于重構目標矢量。cb通常是離線訓練的,并捕捉到數據的統計特性。在很多情況下,使用權重來修改簡單的均方誤差(例如,等式(2)),以使得:
其中,權重w(m)取決于應用。在本文中為了陳述簡潔,在下面的描述中將僅使用等式(2)中定義的均方誤差。然而,應該注意到的是,本文中討論的原理在使用更復雜的準則(例如,等式(3)中的準則)時也是有效的。
從以上描述可以總結出,所重構的目標信號的精確度或質量取決于碼本的大小k;其中,與較小的cb相比,較大的cb導致更高的精確度,以及因此更好的質量。同時,根據等式(1),可以總結出主要的計算復雜度也與cb的大小有關,假設矢量維度被應用所固定。
通常在有限計算復雜度的約束之下來建造音頻傳輸系統。亦即,最差情況的復雜度不應超過某個預定等級lmax。例如,通常通過加權的每秒百萬次操作(wmops)來衡量音頻編解碼的計算復雜度,然而當考慮vq模塊時,復雜度直接與搜索空間的大小(cb的大小)相關。vq通常是編解碼器中最復雜的模塊,且此外,cb搜索(與cb矢量的比較次數)是vq如此復雜的原因。
如果vq系統要每次量化一個目標矢量s,必須要優化搜索空間k,以使得復雜度不超過lmax。給定矢量s的特性和重構矢量質量要求,某些離線優化技術(例如,拆分及多級vq)可以提供復雜度(以及存儲)的一定減少。
如果vq系統要一次量化多個目標(輸入)矢量
技術實現要素:
本文中描述的技術例如可應用于對輸入流執行有損壓縮的音頻和視頻壓縮/傳輸系統,并可通過眾多的不同方案來進行描述。本文中描述的技術涉及碼本(將其劃分為各個類別并排序)以及對要被量化到所述類別之一中的輸入目標矢量s的分類。本文中描述的技術使得在碼本中的類別中,首先搜索碼本中包括與輸入矢量s有關的最有可能的候選碼矢量集合的碼矢量類別。因此,在搜索中可以及早找到輸入矢量s的最佳匹配碼矢量,并且可降低計算復雜度。
根據第一方案,提供了矢量量化器中的方法。所述方法包括將輸入目標矢量s與多個質心(centroid)(即,參考矢量)進行比較,每個質心表示碼本中碼矢量的相應類別。所述方法還包括:確定碼本中與碼本中的輸入目標矢量相關的搜索的起點,其中,該起點是基于比較結果確定的。根據反映每個碼矢量與質心之間的距離的失真測量對碼本中的碼矢量排序。該方法使得在碼本中的類別中,首先搜索碼本中包括與輸入矢量s有關的最有可能的候選碼矢量集合的碼矢量類別。
根據第二方案,提供了矢量量化器,包括適于執行根據第一方案的方法的功能單元。矢量量化器包括比較單元,適于將輸入目標矢量s與多個質心進行比較,每個質心表示碼本中碼矢量的相應類別。矢量量化器還包括:確定單元,適于基于比較結果確定針對所述碼本中的搜索的起點。根據反映每個碼矢量與質心之間的距離的失真測量對碼本中的碼矢量排序。矢量量化器使得在碼本中的類別中,首先搜索包括與輸入矢量s有關的最有可能的候選碼矢量的碼矢量類別。
根據第三方案提供編解碼器,該編解碼器包括根據第二方案的矢量量化器。
根據第四方案提供移動終端,該移動終端包括根據上述第二方案的矢量量化器。
根據第五方案,提供了將碼本用于矢量量化的方法,所述碼本被布置為使得所述碼本的碼矢量被劃分為多個類別,由質心表示各個類別,以及其中,還根據反映所述碼矢量與所述多個類別的質心的距離的失真測量對所述碼矢量排序。可根據下降或上升的失真值來對碼矢量排序。
根據第六方案,提供了針對矢量量化的碼本使用,所述碼本被布置為使得所述碼本的碼矢量被劃分為多個類別,由質心表示各個類別,以及其中,還根據反映所述碼矢量與所述多個類別的質心的距離的失真測量對所述碼矢量排序。可根據下降或上升的失真值來對碼矢量排序。
根據第七方案,提供了計算機程序,包括計算機可讀代碼,當在處理單元中運行時,使矢量量化器執行根據第一方案的方法。
根據第八方案,提供計算機程序產品,包括計算機可讀介質和根據第六方案的計算機程序,該計算機程序存儲在計算機可讀介質上。
可基于輸入目標矢量的數目和最大復雜度約束來適配碼本中執行搜索的搜索區域的大小。每編碼單位的輸入目標矢量數目可以是可變的。此外,可以動態設置最大復雜度約束。此外,可以在所確定的搜索空間中在碼本中執行搜索,該搜索開始于所確定的起點,其中,搜索傳遞與輸入目標矢量s的最佳匹配。“最佳匹配”在此處意指最接近的匹配、關于輸入目標矢量和碼本中的候選矢量之間的距離的最短距離,即,最佳匹配是根據距離測量與輸入目標矢量具有最短距離的碼矢量。
第五方案可以是包括根據第二方案的矢量量化器的編解碼器。
第六方案可以是包括根據第二方案的矢量量化器的移動終端。
附圖說明
現在將通過示例性實施例的方式并參考附圖來更詳細地描述所建議的技術,在附圖中:
圖1a和1b示出了根據本文中描述的解決方案的有序cb的結構。所述從點0或點1向cb的另一端開始。
圖2示出利用了對稱的示例性cb結構。在rom存儲器中僅存儲碼矢量c0和c1。
圖3示出了通過將輸入矢量s與多個質心{c0c1c1,flipc0,flip}中的每個質心進行比較來確定輸入矢量s的最優類別的示例性功能單元,每個質心與碼本的類別相關聯。
圖4示出了基于在當前幀中檢測到的頻譜峰值的數目(且很可能基于編解碼的比特速率)來確定搜索區域的大小的功能單元。
圖5是示出搜索區域隨著每幀峰值的數目降低而增加的表。在該示例中,在17個峰值(=17個輸入矢量)的情況下,僅在7比特cb(在本示例中定義為最小搜索空間)中執行搜索,然而在8個峰值或更少峰值的情況下,在8比特cb(最大搜索空間)中執行搜索,因為在最大復雜度約束下,這是可“負擔”的。
圖6a-d示出了不同搜索區域的示例。
圖7示出了可從外部實體向系統信號通知所允許的復雜度lmax。參數lmax可例如基于cpu負荷或電池狀態。
圖8是示出在創建要在所建議的技術中使用的碼本cb的過程中的動作的流程圖。
圖9a-c是示出根據本文中建議的技術的示例,矢量量化vq的過程中的動作的流程圖。
圖10是示出根據本文中建議的技術的示例的矢量量化器的框圖。
圖11是示出根據本文中建議的技術的示例,包括矢量量化器的編解碼器的框圖。
圖12是示出根據本文中建議的技術的示例,用于矢量量化的裝置的框圖。
具體實施方式
簡而言之,本文中描述的解決方案涉及動態適配vq的搜索空間,以使得對于(針對每個塊或時間間隔的)任何數目的目標(輸入)矢量,在給定復雜度約束內實現高精確度(以及因此高質量)的量化。亦即,不違反計算復雜度(例如,lmax)的要求。這是通過在特殊分類并排序的cb中執行搜索來實現的。搜索空間中針對每個目標矢量的起點基于分類過程,且搜索空間的大小基于目標矢量的數目增大或減小。本文中描述的vq算法可被認為是數據壓縮的“工具”,與是什么數據無關,即,數據可以例如是視頻和/或音頻。在本描述中,vq是在音頻編解碼的上下文下描述的,然而本文中描述的概念不限于音頻編解碼。例如,其還可以在視頻編解碼中實現。
本文中描述的算法基于特殊設計的cb。下面將更詳細地描述這種碼本的一些變型。首先將描述基本情況,且將在更下面討論更高級的方案。可在離線模式下根據本文中描述的技術方案來布置cb的碼矢量。
為了創建該特殊設計的有利的cb的基本版本,將cb的碼矢量拆分為兩類,在此表示為c0和c1(該符號將被用于類別的名稱,以及用于對應的質心,例如參考圖1)。為了將數據劃分為兩類,可以使用所謂的k平均(k-means)算法(統稱為lloyd算法)。這是眾所周知的技術,其將整個數據集合作為輸入,以及所希望的類別數目,并輸出所希望的類別數目的質心。例如,如果已經將所希望的類別數目指定為2,算法輸出2個質心矢量。要注意到的是,在使用k平均算法時,這些質心是與來自數據集合的矢量具有相同維度的矢量,然而其不屬于數據集合。亦即,質心矢量在cb之外,且不需要與某些現有的碼矢量一致。一般而言,“質心”在本文中意指表示矢量類別的參考矢量。
因此,根據失真測量來對cb中的所有碼矢量排序,例如,如等式(4)中所定義:
以上失真測量導致(或假設)碼矢量的接近c0的較大負值,以及碼矢量的接近c1的較大正值。與兩個類別的質心(c0和c1)等距的碼矢量產生接近零的失真測量d。在cb中,如圖1a和b中所示出的,例如按照增加的失真測量來對碼矢量排序。
將每個輸入目標矢量與兩個質心(兩個類別各自的質心)相比較,并根據結果將其指派給(即,決定或確定屬于)類別c0或類別c1。基于該分類,將搜索的起點選擇為最高點(圖1a)或最左側(圖1b)點0(當目標矢量屬于類別c0時)或者最低點(圖1a)或最右側(圖1b)點1(當目標矢量屬于類別c1時)。現在應該使搜索空間的大小取決于每塊或時間段/間隔的輸入目標矢量n的數目。如果將搜索空間k重新定義為不是整個cb的大小,而是變量,可以在等式(5)中定義本文中描述的適配背后的概念
n×k≈const(5)
換言之,#quantizers×#operations_per_quantizer≈const,其中,可將“quantizer”視為是將輸入矢量映射到碼矢量之一的算法。
在本文中,作為示例,在變換編解碼的上下文中描述vq,該變換編解碼對頻譜峰值(或嚴格地,頻譜峰值周圍的區域)進行編碼。在這種編解碼的上下文中,輸入目標矢量可以反映出正在被處理的音頻信號的分段的頻譜峰值(區域)。一時間段(例如,30ms)的音頻信號的信號頻譜中的頻譜峰值的數目取決于該時間段中的音頻信號的頻譜特性。由于音頻信號的頻譜特性可隨著時間改變且例如對于不同類型的音頻是不同的,在不同的時間段之間且在不同的音頻信號之間,頻譜峰值的數目可以改變。因此,當使用對頻譜峰值區域編碼的變換編碼器時,針對vq的每塊或每時間段的輸入矢量的數目將會改變。在本文中的示例中,與音頻信號的時間段中的頻譜峰值的數目相對應的輸入矢量的最大數目是17。然而,該數目僅是示例,且一般不應被解釋為限制解決方案。
事實上,上述方案將vq所需的操作的數目保持在較窄的范圍內(或幾乎恒定);亦即,當vq的數目增加時,即,輸入目標矢量的數目增加時,每vq的操作數目減少(搜索空間的大小減小/僅搜索cb的一部分),以使得不違背復雜度要求(即,約束)。隨著n的降低,搜索空間k可能增大,最多高至整個cb的大小,這導致較高的精確度并因此較高的重構矢量質量。可以將矢量量化器的精確度測量為原始信號和對應的重構數據之間的均方誤差。
通過這種方式,不需要針對最差情況場景(即,最大數目的輸入目標矢量)來設計vq的碼本。相反,例如可針對最佳情況場景來進行設計,從而與在最大復雜度約束lmax內可能可以針對最大數目的輸入目標矢量進行搜索相比,包括了更多的碼矢量。將會滿足最大復雜度要求,按照該最大復雜度要求,cb中的搜索范圍(即,搜索空間的大小)取決于輸入目標矢量的數目。然而,如果這將會被“盲”進行,例如,沒有本文中建議的cb,則量化質量將會極大地受損,因為不會知道“最匹配”的矢量位于cb中的何處或者該最匹配的矢量是否位于碼本中在減小搜索空間時將會搜索的部分中。通過本文中描述的碼本的特殊設計來解決該問題。應該注意到,對于其中每編碼單位的輸入矢量數目恒定的應用,本文中描述的cb設計也是有益的。
示例實施例1:頻譜峰值區域上受約束的vq
目標矢量s的集合表示變換域音頻編碼中的頻譜峰值區域,例如,與mdct峰值的鄰居中的變換系數。因此,在該上下文中,目標矢量的數目隨時間改變,因為頻譜峰值的數目逐時間塊而改變。
在該類型的應用(峰值區域編碼)中,目標矢量s展現出一定的對稱性,可將其用于進一步優化cb。例如,頻譜峰值兩側的變換系數具有類似的統計。如果假設目標矢量s以峰值位置為中心,上述對稱性允許在來自圖1a和1b的有序cb中添加其他結構。圖2中示出了這種新的、進一步改進的cb的結構。圖2示出了cb,其中,左側部分的碼矢量被存儲在存儲器(例如,只讀存儲器)中。然而,沒有針對cb的右側(即,針對類別c1,flip和c0,flip)預先存儲的碼矢量。這些類別的碼矢量是cb右側的碼矢量的翻轉版本。因此,當在類別c0,flip和c1,flip中執行搜索時,在左側的碼矢量(存儲在存儲器中)上執行搜索,但碼矢量的項圍繞中心進行了翻轉,以使得通過等式(6)給出碼矢量ck,flip
ck,flip=[ck(m)ck(m-1)...ck(1)],(6)
其中,ck(m)是所存儲的cb(即,c0或c1)中的對應類別cj的矢量項。亦即,如果c0中的某個碼矢量的項是{c01c02c03c04},則c0,flip中的對應碼矢量的項是{c04c03c02c01}。
在使用如圖2中所示cb的cb時,將輸入目標矢量與4個質心進行比較,并指派給類別以確定搜索的起點,即,通過將輸入矢量s與質心{c0c1c1,flipc0,flip}中的每一個進行比較來確定輸入目標矢量的最優類別。圖3中對此進行了示出,其中,目標矢量s被輸入到類別指派單元302,類別指派單元302傳送類別指示符cj來作為輸出。質心c1,flip和c0,flip未被存儲在表中,而是通過翻轉質心c0和c1的項來“創建”。不需要逐字(literally)來翻轉項,相反,在讀取c0,flip和c1,flip時,已修改的搜索操作可按相反的順序讀取c0和c1,即質心和碼本矢量。通過這種方式,與在cb中物理存儲的碼矢量相比,可擴展cb以包括兩倍數目的碼矢量,這意味著節省了存儲器資源。由于如上所述利用了峰值區域的對稱性,這是可能的。更明確地,解決方案基于對可利用對稱性的觀察,由此翻轉的有效碼矢量也是有效的碼矢量。
使搜索區域與頻譜峰值的數目相適配,頻譜峰值的數目對應于輸入目標矢量的數目。圖4中將這作為示例,圖4示出了將峰值/矢量的數目的指示符作為輸入并產生搜索區域的指示符作為輸出的功能單元402。圖4還示出了當確定搜索區域(搜索空間)時,可以例如考慮應用了vq的編解碼的比特速率。例如,針對不同的比特速率可以存在不同的質量要求,如比特速率越高,所期望的質量越高。此外,例如由于以不同的比特速率激活編解碼器中的不同模塊(該不同模塊不是同等復雜的),所允許的最大復雜度可以隨著比特速率而改變,即,整個編碼過程的最大復雜度約束的針對vq所允許的剩余復雜度可能是不相同的。亦即,比特速率信息反映出質量和復雜度要求的改變,其在矢量量化中可被考慮到。
圖5中示出的表說明了搜索區域與峰值的數目如何相適配。在圖5中,將搜索區域指示為搜索中針對每輸入矢量的系數(碼矢量)的數目。圖5中的表中的數目是在假設來自圖2的cb包括4個7比特段(4個各自128個碼矢量的段,其中,兩個是“正常的”或“物理的”,以及兩個是“翻轉的”或“虛擬的”)的情況下導出的。
圖5中的表背后的邏輯是:如果少了一個要編碼的峰值(例如,16個而不是17個),可以在剩余的峰值之間分布“所節省的”128個比較。在某個點處,搜索長度飽和,因為其到達了cb的物理大小。在圖5中示出的示例中,當峰值的數目是8或更少時,達到該點。亦即,在圖5中示出的示例中,當峰值的數目是8或更少時,可以針對所有的輸入目標矢量(即,峰值)來進行整個搜索,而不到達最大允許復雜度。
圖6a-d中示出了搜索過程的示例。實際上,這是與較早結合圖1a-b描述的搜索類型相同的搜索,然而使用了到“正常”和“翻轉”的cb分段/類別的附加分類。
在圖6a中示出的示例中,輸入矢量s屬于類別c1(以向下的箭頭指示的位置)。從而,搜索空間被限制為僅類別c1與類別c0和c1的聯合空間之間的大小。在圖6a中,使用指示不同大小的搜索空間的3個虛線箭頭對此進行了示出。圖6b示出了輸入矢量屬于類別c0的情況(以向下的箭頭指示的位置),在該情況下,搜索具有不同的起點。
類似地,如圖6c-d中示出的,如果輸入矢量屬于類別c1,flip和c0,flip之一,可以在c1,flip和/或c0,flip類別中執行搜索。在c1和c1,flip的聯合空間中不執行搜索。其原因是常規類別和翻轉類別的聯合空間不對應于真實的數據集合(其統計不對應于真實的數據統計)。因此,在這種空間中極不可能找到輸入矢量的好的匹配。
示例實施例2:具有對最大允許復雜度的外部控制的通信系統
其復雜度被動態調整到目標矢量s的數目的vq的概念可被擴展到復雜度限制未被預先確定時的情況,但可例如基于某種準則而改變,并可信號通知給vq和/或應用了vq的實體。在圖7中的示意性框圖中對此進行了示出,圖7示出了將峰值/矢量的指示符或數目作為輸入,以及還將復雜度約束lmax作為輸入的功能單元702。參考圖6a-d中的虛線箭頭,功能單元702傳送cb的搜索空間/區域的指示符。
本文中呈現的具有可調整復雜度的vq算法給出了在量化精確度(即,質量)與將計算復雜度維持在預定義的閾值之下之間的最優平衡。
用于實現cb結構的示例過程
下面將參考圖8描述用于設計或組織在vq中使用的cb的示例性過程。該過程用于創建在vq中使用的cb,該vq在變換音頻編碼器(例如,如mdct編碼器)中提供量化。
下面描述的過程涉及cb創建過程的各部分,其偏離傳統的vqcb創建或組織,和/或是對傳統的vqcb創建或組織的補充。
如前所述,在動作802中例如通過使用所謂的k平均算法來將cb劃分為類別。因此,基于失真測量來在cb中對cb的碼矢量排序,例如,如等式(4)中所描述的排序。針對每個碼矢量的失真測量取決于碼矢量和表示cb的每個類別的質心之間的關系,如前所述。
cb的該組織使得可以通過高度預留vq質量(例如,重構目標矢量的質量)來適配搜索空間,并因此可適配vq中的搜索復雜度。
示例vq過程
下面將參考圖9a描述矢量量化器(vq)中的示例過程。該過程適于在變換域音頻編碼器(例如,如編碼如頻譜峰值區域的mdct編碼器)中使用。音頻信號可以包括例如話音和/或音樂。
vq接收多個(n個)輸入目標矢量,如前所述。下面,出于簡潔的原因,將描述與輸入目標矢量之一相關聯的動作。
將輸入目標矢量s與各自表示cb類別(參考之前描述的類別c0和c1等)的多個碼矢量相比較,優選地,與各個類別的質心相比較。在圖9a-c中將該比較示出為動作902。如圖9c中示出的,備選地,可以將動作902認為與動作904相結合。取決于比較結果,在動作904中向輸入目標矢量s指派cb的類別或部分之一。根據某種距離測量(誤差測量),向輸入目標矢量s指派(或決定其屬于)與其具有最短距離的類別,即,與其最相似的類別。在動作906中基于類別指派或距離測量來確定cb中搜索的起點。
在動作910中,可在碼本中執行搜索。在所選擇的起點中發起并在搜索空間或其部分上執行搜索,該搜索空間可以具有所確定的大小,包括一個或多個類別。由于該有利地設計和組織的cb,即使在搜索空間被限制為例如cb的一半的時候,將會在搜索空間內找到整個cb的所有候選碼矢量中針對輸入目標矢量s的最佳匹配的可能性非常高。在搜索空間將會包括整個碼本的情況下,當在所確定的起點處開始搜索時,將會在該搜索中及早找到最佳匹配碼矢量。
當在所確定的搜索空間內找到最佳匹配時,在動作912中,提供最佳匹配碼矢量的索引作為來自vq的結果,以例如在音頻解碼器中使用。
此外,在圖9c中示出的動作908中可以確定搜索空間的大小。可以將搜索空間描述為cb中應在針對輸入目標矢量s的最佳匹配的搜索中評估的碼矢量的數目。搜索空間的大小是基于輸入目標矢量的數目和對技術復雜度的約束lmax來確定的。因此,可根據要量化的信號的特性和/或編解碼的屬性,例如一次性針對每個編碼塊或針對某個其他時間間隔確定搜索空間的大小。如果輸入目標矢量的數目和約束lmax在時間上是恒定或半恒定的,搜索空間的大小在對應時間上也可以保持恒定。
示例性vq布置
下面將參考圖10描述適于在變換編碼器/編解碼中使用的示例性vq布置。變換編解碼例如可以是mdct編解碼。vq適于執行上述過程的動作。
vq1001被示出為經由通信單元1002與其他實體(例如,音頻編解碼器)通信。vq還可以包括其他功能單元1016,例如,如提供常規功能的功能單元,且還可以包括一個或多個存儲單元1014。
可通過以下一項或多項來實現vq1001:處理器或微處理器以及適當軟件(因此具有適合的存儲器)、可編程邏輯器件(pld)或其他電子組件和/或電路。
通信單元1002被假設包括用于獲得例如從編碼實體提供的適當參數(例如,輸入目標矢量和lmax)的功能單元。
vq可包括比較單元1004,比較單元1004適于將輸入目標矢量s與表示cb的每個類別的矢量(例如,每個類別的質心矢量)進行比較。此外,vq還包括指派單元1006,該指派單元1006適于基于該比較向輸入目標矢量s指派類別(或者向類別指派矢量s),即,決定矢量屬于哪個類別。此外,vq還包括確定單元1008,確定單元1008適于基于向矢量s指派的類別為cb中的搜索確定適當起點。確定單元還可適于例如基于接收到的輸入目標矢量的數目和計算復雜度約束來確定cb中的搜索空間的大小。
此外,vq可包括搜索單元1010,搜索單元1010適于在cb中執行搜索,該搜索開始于所確定的起點并搜索所確定的搜索空間。搜索應導致指向與輸入目標矢量s最匹配的碼矢量的一個或多個cb索引。vq還可以包括提供單元1012,提供單元1012適于向另一實體提供所述索引,以例如用于變換編解碼(或由變換編解碼使用)。
示例性布置
圖12示意性地示出了適于例如在變換音頻解碼器中使用的布置1200的實施例,這也可以是公開圖5中示出的vq的實施例的備選方式。在此,布置1200包括例如具有dsp(數字信號處理器)的處理單元1206。處理單元1206可以是執行本文中描述的過程的不同步驟的單個單元或多個單元。布置1200還可以包括用于接收信號(例如,輸入目標矢量以及例如比特速率和/或復雜度約束的指示符)的輸入單元1202;以及還包括用于輸出信號(例如,最佳匹配碼矢量的cb索引)的輸出單元1204。可在該布置的硬件中將輸入單元1202和輸出單元1204布置為一體。
此外,布置1200包括至少一個非易失性存儲器形式的計算機程序產品1208,例如,eeprom、閃存或者硬驅。計算機程序產品1208包括計算機程序1210,計算機程序1200包括代碼裝置,當在布置1200中的處理單元1206中運行時,該代碼裝置使得布置執行之前結合圖9a-c描述的過程的動作。
因此,在所述示例性實施例中,布置1200的計算機程序1210中的代碼裝置可包括用于將輸入目標矢量與cb的類別質心進行比較的比較模塊1210a。計算機程序可以包括用于向輸入目標矢量指派類別的指派模塊1210b。計算機程序1210還可以包括確定單元1210c,用于為cb中的搜索確定起點;以及還用于基于輸入參數來確定搜索空間或區域。計算機程序1210還可以包括用于根據上述方式搜索cb的搜索單元1210d。此外,計算機程序1210可以包括用于提供索引的提供模塊1210e,該索引從搜索向其他實體輸出。
計算機程序1210是計算機程序模塊結構的計算機程序代碼的形式。模塊1210a-e可實質上執行圖9a-c中的任意圖中示出的流程的動作,以模擬圖10中示出的vq1001的至少一部分。換言之,當在處理單元1206上運行不同模塊1210a-c時,其至少對應于圖10中的單元1004-1012。
雖然將以上結合圖12公開的實施例中的代碼裝置作為計算機程序模塊(當在處理單元上運行時,使得布置和/或變換音頻編碼器執行以上結合上述的圖來描述的動作)來實現,在備選實施例中,至少一個代碼裝置可至少部分地實現為硬件電路。
雖然已經參考特定的示例實施例對所建議的技術進行了描述,該描述一般性地僅意在示出該構思,并且不應被視為對本文中描述的技術的范圍進行限制。可以根據需要、需求或偏好,以不同的方式組合以上示例性實施例的不同特征。
上述解決方案可用于任何應用了vq的地方,例如,在例如移動終端、平板設備、計算機、智能電話等的設備中的編解碼器中。
應該理解,交互單元或模塊的選擇以及該單元的命名僅是用于示例的目的,可以通過多種備選方式來配置適于執行上述方法中的任何方法的節點,以能夠執行所建議的過程動作。
可以通過使用硬件(例如,能夠執行存儲在計算機可讀介質上的編碼指令形式的軟件的電路硬件和/或硬件)來提供包括功能塊的各種單元的功能,包括但不限于被標記或描述為“功能單元”、“處理器”或“控制器”的功能塊。因此,這種功能和所示出的功能塊要被理解為是硬件實現的和/或計算機實現的,并因此是機器實現的。
在硬件實現方面,功能塊可包括或包含(沒有限制)數字信號處理器(dsp)硬件、精簡指令集處理器、硬件(例如,數字或模擬)電路(包括但不限于專用集成電路(asic))、以及能夠執行這些功能的狀態機(在適合的情況下)。
簡寫
sq標量量化
vq矢量量化
cb碼本
wmops加權的每秒百萬次操作
mdct修改的離散余弦變換