在于將目 標移動至N維空間中的所有的正"象限"(還可以被表示為四分之一畫或超八分之一畫), 并淚.第二優(yōu)化在于使用LL·-范數(shù)投影作為針對y(n)的起始近似。針對PVQ(IK)的K的 Ll·--范數(shù)表示PVQ矢量y(η)中的所有元素的絕對和必須為L如同目標形狀矢量X(η)中的 所有元素的絕對和。
[0056] 第三優(yōu)化在于,封對為了達到L1-范數(shù)Κ(其將用于后續(xù)的索引化步驟中)而針對 矢量y(η)的每個候選改變,迭代地更新Qpvq商項coir和energyγ,而不是在整個矢量空 間N上重復計算(下文的)等式4。
[0057] 以上三·個主要優(yōu)化步驟是可以普遍存在于之前的PVQ-實施(諸如CELT和 IETF-Opus)中,并且部分地存在于G. 718中的猶化,然而為了完整地描述本方案和實施例, 在下文簡要地概括這些步驟。
[0058] 高效PVQ矢量形狀搜索
[0059] 可以在圖12中看出應用本文提出的PVQ形狀搜索的實施例的音頻編碼和解碼系 統(tǒng)的概視圖??梢栽诶鐖D5中看出遵循精細(形狀)搜索流程的椎體投影的總體形狀搜 索。在圖6中示出了形狀搜索的精細搜索部分的另一實施例。PVQ形狀搜索可以包括椎體 投影和精細搜索。當不應用椎體投影時,形狀搜索僅包括精細搜索。因此Z精細搜索"和 "形狀搜索"有時可以在本文中互換使用^因為精細搜索是形狀搜索的一部分,并且當不存 在初始粗賂搜索時,通??椎體投影執(zhí)行形狀搜索與執(zhí)彳丁精細搜系是等同的。換g,精細禝 索有時可以是或者構成形狀搜索,并且當應用椎體投影時,精細搜索是形狀搜索的一部分。
[0060] PVQ-捭索介紹
[0061] PVQ(N,K)搜索處理的目標在于找到最佳標度和歸一化的輸出矢量xq(n)。xjn) 被定義為:
[0062]
L0063] 其中,y=yN,K是在Ν維趙椎體的表面上的點,并且yΝ,κ的Li范數(shù)是Κ?換目之, yN,κ是根據(jù)下式選擇的大小為Ν(還被表示為維度Ν)的整數(shù)形狀代碼矢量:
[0064] I/:::u
J
[0065] 也就是說,矢量\是單位能量歸一化整數(shù)子矢量yκ。最佳的y矢量是最小化目 標矢量x(n)和標度歸一化的量化輸出矢量xq之間的均方形狀誤差的矢量。這哥以通過最 小化下面的搜索失真來實現(xiàn):
[0066]
[0067] 或者等同地,通過對分子和分母進行平方來最大化商QPve:
[0068]
[0069] 其中,co_r_r_if.l|X和y之間的相關性。在利用Ll·-范數(shù)K搜索最優(yōu)PVQ矢量形狀 y(η)時',根據(jù)下式在N維空間中的所有正"象限"中進行Qpvq變量的迭代更新:
[0070] corriy (k,η) -corrxy (k-i) +1 ·x(n) (等式 5)
[0071] energyy(k,n) -energyy (k~l)+2 ·?!(k-i,η)+Γ(等式 6)
[0072] 其中,corr'xy (k-1)表示至今為止通過布置先前k-1個單位脈沖而達到的相關 性;energyy(k-1)表示至今為止通過布置先前k-Ι個單位脈沖而達到的累加的能量,并且 y(k-l,η)表示來自k-Ι個單位脈沖的先前布置的y在位置η處的幅度。為了進一步加速 循環(huán)內(nèi)迭代處理,能量項energyy(k)的標度下降2,從而移除內(nèi)循環(huán)中的一次乘法。
[0073]
[0074] 其中,enloop^k,η)是優(yōu)選使用的能量變量,并且在最內(nèi)側的單位脈沖搜索循環(huán) 內(nèi)累加,因為其迭代更新要求比energy(k,η)少一次的乘法。
[0075]
[0076] 逋過使η叢0到Ν-1速瑁釆迗代地史新針對弟k個早位脈沖的最佳位置nhest:
[0077] nbest^n,ifQPyQ(k,n) >QPVQ(k,nbes.)(等式 9)
[0078] 為了避免高成本的劃分(對于定點算法而言尤其重要),使用至今為止保存的最 佳均方相關性分子bestCorrSq和保存的最佳能量分母bestEn的交叉相乘來拽行Qpvg最大 化更新決定,其可以表達為:
[0079]
)
[0080] Qpvq(1η)的迭代最大化可以基于到第K個椎體表面之下的點的整數(shù)投影,利?目 標L1范數(shù)Κ中的單位脈沖的保障下沖,而蓯布置的單位脈沖的零數(shù)目或者從自適應降低成 本的單位脈沖的預先布置數(shù)目開始。
[0081] PVQ#索準備分析
[0082] 由于PVQ整數(shù)矢量yN,K的結構化性質(zhì)(其中,所有可能的帶符號組合被允許并且 可以對所有帶符號組合進行編碼只要產(chǎn)生的矢量依附于K個單位脈沖的L1范數(shù),那么就 在所有的正第一"象限"中執(zhí)行搜索(在"象限"上加引號的原因在于僅在N= 2時才存在 真象限,而N在這里可以大于2)。此外,發(fā)明人認識到,為了達到針對有限精度實施的盡可 能高的精確度,輸入信號x(n)的最大絕對值以被預分析以在未來羯于內(nèi)循環(huán)相 關性累加處理的設置。
[0083」x£ibs(η)二丨X(η)i,forη二 0,,· ,N-1 (等式 11)
[0084] xabsBax=max(xabsxabsNj)(等式 12)
[0085] MM忠能量呈.拯_艇能量:£矢量尥處通
[0086] 在輸入目標矢量(等式3中的X或等式0中的t)是全零矢量和/或矢量增益 (例如,等式〇中的G)極低的情況卜%π丨以繞過PVQ搜索,并且可以通過將K個單位脈沖 的一半分配給第一位置
1將剩余的單位脈沖分配給最后位置&|>__1]= y[N-1] + (K-y[0])),來確定性地創(chuàng)建有效PVQ矢量y。
[0087] 在一個實施例中^術語"極低能量目標"和"極低矢量增益"低至零在下文公開 的示例性ANSIC-代碼中所示,其中,相應的代碼為:
[0088] IF(L-xsum二二 0 丨 |neg-gain二二 0)
[0089] {/*zeroinputorzerogaincase*/
[0090] 然而,還可能小于或等于epsilon或EPS,其中,EPS是高于零的最低值并被視為 值得以選擇的精度來表示。例如,在帶符號的16比特字中的精度Q15中,子矢量增益變得 小于或等于EPS1/2IS= 1/32768 (例如,矢量增益小于或等于0. 000030517578125),并且 在針對目標矢量x(n)的帶符號的16比特字中的精度Q12的情況下極低"值變?yōu)镋PS= (1/2;2),例如小于或等于0. 000244140625的sum(abs(X(η)))。在具有16比特字的定點DSP 架構的一個實施例中,無符號整數(shù)格式可以采用從0到65546的任意整數(shù),而帶符號整數(shù)可 以采用-32768到+32767的值。使用無符號分數(shù)格式,565536個等級在0和中均勻分 布,而在帶符號分數(shù)格式實施例中,所述等級將等間隔地布置在4和+1之間。
[0091] 通過應用與零矢重和低增益值相關的該哥選步驟,PVQ搜索復雜度降低,并且索引 化復雜度在編碼器索引化和解碼器解索引化之間分布/共享3卩,不會為了搜索零目標矢 量或極低目標矢量(其無論如何都會降低到零)而"浪費"處理。
[0092] 可詵PVQ預#索投影
[0093] 如果脈沖密度比K/N針對每個系數(shù)(例如修改的離散余弦變換系數(shù))大于0. 5單 位脈沖,則進行到K-1子椎體的低成本投影,并將其用作針對y的開始點。另一方面,如果 脈沖密度比針對每個系數(shù)小于0. 5單位脈沖,則迭代PVQ搜索將從0預布置的單位餘;沖開 始。與將單位脈沖內(nèi)循環(huán)搜索重復Κ-1次相比,在DSP周期中到"Κ-1"的低成本投影通常消 耗的計算量較小。然而J氏成本投影的缺點在于其將產(chǎn)生由于Ν維地板函數(shù)應周而導致的 非精確結果。使用地板函數(shù)產(chǎn)生的低成本投影的L1-范數(shù)通常可以是''K-i"到大概"Κ-5" 之間的任意值,即,在投影之后的結果需要被精細搜索以達到K的目標范數(shù)。
[0094] 低成本投影被執(zhí)行為:
[0095]
[0096]
[0097] 如果沒有進行投影,則幵始點是全零y(n)矢量。DSP周期中的投影的DSP成本在 絕對和)+25 (劃分)+2N(乘法和地板)周期附近。
[0098] 在準備用于達到第K個椎體表面的精細搜索中,針對開始點的單位脈沖的累加數(shù) 目pulset(li、累加相關性corrxy(pulsetnt)和累加能量energyjpulsew)被計算為:
[0099]
[0100]
[0101]
[0102] enioopy(pulsetot) = energyy (pulsetnt)/2(等式18)
[0103] PVQ精細揭^
[0104] 本文中公開的方案涉及PVQ精細搜索(如上所述,其構成或者是PVQ形狀搜索的 一部分)。在以上章節(jié)中描述的內(nèi)容主耍是現(xiàn)有技術的PVQ,除了最前面的確定xabsMX& 外,將在下文對其進行進一步的描述。維度N的最終的整數(shù)形狀矢量y(η)必須依辭于K脈 沖的Li范數(shù)。假設精細搜索被配置為從椎體中的較低點(即,在第Κ個椎體之下)幵始, 并且迭代地到達N維第[(個超椎體的表面。精細搜索中的K值的范_通常可以從1到512 個單位脈沖。
[0105]為了將搜索和PVQ索引化的復雜度保持在合理的水平,發(fā)明人己經(jīng)實現(xiàn)了:可以 將搜索分割為兩個主要分支,其中,當已知在下一個內(nèi)搜索循環(huán)迭代期間內(nèi)循環(huán)能量代表 將保持在帶符號或無符號的16比特字中時使周一個分支,并且當在下一個內(nèi)搜索循環(huán)迭 代期間內(nèi)循環(huán)能量可能超過16比特字的動態(tài)范圍時使用另一個分支。
[0106] 針對少量的單位脈沖的固定精度精細捭索
[0107] 當最終的K低于或等于閾值%= 127個單位脈沖時,energyy(K)的動態(tài)變化 將始終保持在Μ比特內(nèi),并且en]_oopy(K)的i:移一位的動態(tài)變化將始終保持在15比特 內(nèi)。這允許使用帶符號16比特字來表示k=K的所有精細綠沖搜索內(nèi)循環(huán)迭代內(nèi)的每個 enloopy(K)。換言之,當K< 127時,將不需要超過16比特的字比特長度來表示任意精細 脈沖搜索內(nèi)循環(huán)迭代中的energyy(K)或enloopy(K)。
[0108] 在高效DSP乘法可用的情況下,對于無符號的16比特變量的MultiplyAdd(乘加) 和MuUip:lyS_ubtract(乘減)運算符,閾值可以增加到tp= 255,隨后enloopy(K)將始終 保持在無符號的16比特字內(nèi)。這里,在一個實施例中,MultiplyAdd是用于將表示音頻或 視頻信號的數(shù)據(jù)值乘以濾波器或變換值并將乘積累加以得到結果的乘加指令或等同運算。 MultiplySubtract運算與MultiplyAdd運算相同,只是加法被減法替代。
[0109] 在準備下一個單位脈沖添加時,使羯如下的先前計算的最大絕對輸入值xabs^:
[0110] 式 1_9)
[0111] 來預分析帶符號的32比特字中的下一個循環(huán)的累加循環(huán)內(nèi)相關值C〇rrxy的接近 最優(yōu)最入可能的上移。
[0112] 在等式19中計算的上移表示"最壞的情況^并且覆蓋可以在下一個內(nèi)循環(huán)中進 行的最大可能的上移,并且從而確保即使在最壞的情況場景中,在內(nèi)循環(huán)迭代期間與相關 性相關的最Μ要的/[目息不被去失或者外移。
[0113] 可以使用MultiplyAdd和范數(shù)指令(歸一化)來在大多數(shù)DSP架構中將最壞情 況的預內(nèi)循環(huán)動態(tài)分析執(zhí)行2--3個周期^并且與維度N無關^分析始終是相同的。在ITU-T G. 191 虛擬 16/32 比特DSP中,等式 19 的運算變?yōu)椋?corr_upshift=norm_l(L_mac(>L_ corrxy,1,xa.bsjirax)); "其具有2周期的成本·
[0114] 應注意的是,這里的normJ_⑴對應于"31-cei:Klog2 (X)) ",并且可以被迭代地 表示為31-cei.l(l〇g2 (X)),其中,ceil(X)是所謂的天花板函數(shù),將實數(shù)映射到最小的后續(xù) 整數(shù)。更精確地說,:eeiling(^)==Μ是不小于X的最小整數(shù)。對于c〇rrupshift,在括號里的 具有上橫線的項始終是正數(shù)。備選地,可以使用地板函數(shù)來計算COTTupshih:
[0115]
[one] 其中,tloor(x) = |.x_|是不大于X的最大整數(shù)。
[0117] 本文建議的用于接近最優(yōu)形狀搜索相關標度的方法的另一個優(yōu)點在于,提出的方 法不需耍預歸一化的目標矢量X,這將節(jié)省在開始形狀搜索之前的一些附加復雜度。
[0118] 為了使迭代等式10更新盡可能高效,通過以下方法,即使當corrx:y(k,n)z包括比 適合16比特字的更多的信息時,corrjk,η)2分子也可以用16比特帶符號的字來表示。
[0119] (等式 20)
[0120]
[0121]
[0122]
[0123] 其41,函數(shù)"Round16"通過湊整提取帶符號的32比特變量中的前丨6個比特。當使 用丨)SP優(yōu)化乘法(M_uUip:lyAdd、Multip:iySubtnct函數(shù))時,該接近最優(yōu)上移(等式1.0) 和平方相關性的16比特表示bestC〇:rrSq]6的使用通過僅利用用于執(zhí)行等式21測試的9周 期和三個變量更新來實現(xiàn)極快的內(nèi)循環(huán)搜索。
[0124]現(xiàn)在在采用等式等式20,等式6和等式21的同時,通過在矢量y中的η=(),..., Ν--4個可能位置上進行迭代來確定矢量y中的下一個單位脈沖的位置。
[0125] 當確定了針對(目前為止在矢量y中獲得的)單位脈沖的最佳位置%^時,更新 累加相關性corrxy(k)、累加循環(huán)內(nèi)能量enloop^k)和累加單位脈沖的數(shù)目pulset。,。_果 存在需要添加的其它單位脈沖,即,當pulset.:,t<K時,利用用于添加下一個單位脈沖的新 的接近最優(yōu)corrupshiit分析(等式19)來開始新的內(nèi)循環(huán)。
[0126] 總體上,該建議的方法針對添加到