專利名稱:用于解碼比特流的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種編碼和解碼關(guān)鍵字?jǐn)?shù)據(jù)(key data)的方法和裝置,具體地說(shuō),涉及一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法,該裝置和方法能夠通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行差分脈碼調(diào)制(DPCM)產(chǎn)生差分?jǐn)?shù)據(jù)以及通過(guò)執(zhí)行預(yù)先確定的操作縮小要編碼的差分?jǐn)?shù)據(jù)的范圍,來(lái)增加編碼關(guān)鍵字?jǐn)?shù)據(jù)的效率,還涉及解碼所編碼的關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。
背景技術(shù):
三維(3D)表示已經(jīng)廣泛用于計(jì)算機(jī)系統(tǒng)中的三維電子游戲或者虛擬現(xiàn)實(shí)環(huán)境。虛擬現(xiàn)實(shí)模擬語(yǔ)言(VRML)用來(lái)表示三維動(dòng)畫。
用于場(chǎng)景(BIFS)的VRML和MPEG-4二進(jìn)制格式提供一種以關(guān)鍵字成幀(keyframing)為基礎(chǔ)的生動(dòng)的表示方法。在該動(dòng)畫表示方法中,預(yù)定的關(guān)鍵字幀安排在任意時(shí)間軸上,并且關(guān)鍵字幀(key frame)之間的動(dòng)畫數(shù)據(jù)通過(guò)線性插值填充。該關(guān)鍵字幀由內(nèi)插器(interpolator)節(jié)點(diǎn)定義,并且每個(gè)內(nèi)插器結(jié)點(diǎn)由預(yù)定的范圍以內(nèi)的一浮點(diǎn)數(shù)代表,例如,從-∞到+∞變動(dòng)。每個(gè)內(nèi)插器結(jié)點(diǎn)構(gòu)成由關(guān)鍵字?jǐn)?shù)據(jù)組成的每個(gè)域,關(guān)鍵字?jǐn)?shù)據(jù)表示某一關(guān)鍵字幀在該時(shí)間軸上的位置,并且關(guān)鍵字值數(shù)據(jù)表示相應(yīng)于該關(guān)鍵字?jǐn)?shù)據(jù)在該關(guān)鍵字?jǐn)?shù)據(jù)上的特征以及運(yùn)動(dòng)信息。
為了通過(guò)使用分段線性插值的關(guān)鍵字成幀與實(shí)物運(yùn)動(dòng)一樣自然流暢地表示活動(dòng)性,必須通過(guò)每個(gè)內(nèi)插器結(jié)點(diǎn)提供大量關(guān)鍵字幀信息,就計(jì)算費(fèi)用和效率而言該事實(shí)產(chǎn)生嚴(yán)重的問(wèn)題。結(jié)果,關(guān)鍵字成幀用于一種脫機(jī)環(huán)境,需要大容量的存儲(chǔ)器存儲(chǔ)大量三維動(dòng)畫數(shù)據(jù)。另外,當(dāng)用于在線環(huán)境時(shí),關(guān)鍵字幀也不僅要求這樣的大容量存儲(chǔ)器還要求高速數(shù)據(jù)傳輸線路,用于每次以高速傳送大量數(shù)據(jù)以便從一服務(wù)器向一終端傳送三維動(dòng)畫信息。在該情況下,因?yàn)樵跀?shù)據(jù)傳輸期間發(fā)生誤差的可能性增加,數(shù)據(jù)的可靠性降低。因此,要求一種用于壓縮和解碼數(shù)據(jù)以便減少內(nèi)插器結(jié)點(diǎn)數(shù)據(jù)量的有效方法。
MPEG-4 BIFS提供用于編碼動(dòng)畫數(shù)據(jù)的兩種不同的方法。一種是用于編碼動(dòng)畫數(shù)據(jù)的BIFS-Q,另一是用于編碼數(shù)據(jù)之間的差值的差分脈碼調(diào)制(DPCM)。DPCM也叫做預(yù)測(cè)MF編碼(PMFC)。BIFS-Q僅使用量化,因此不被認(rèn)為有效。PMFC被認(rèn)為比BIFS-Q更有效,因?yàn)樵赑MFC中,在執(zhí)行DPCM之后執(zhí)行熵編碼以便取消冗余數(shù)據(jù)。用于關(guān)鍵字?jǐn)?shù)據(jù)的PMFC編碼器和PMFC解碼器圖示在圖1中。如上所述,在編碼動(dòng)畫數(shù)據(jù)時(shí),PMFC不太有效,因?yàn)樗鼉H在熵編碼以前執(zhí)行DPCM,而沒有考慮到關(guān)鍵字的特征和關(guān)鍵字之間的相關(guān)性。
參考圖1,輸入的關(guān)鍵字?jǐn)?shù)據(jù)105被輸入到編碼器100之內(nèi)。量化器110接收輸入的關(guān)鍵字?jǐn)?shù)據(jù)105,并且將其量化為整數(shù)。DPCM處理器115接收所量化的關(guān)鍵字?jǐn)?shù)據(jù)并且產(chǎn)生差分?jǐn)?shù)據(jù)。熵編碼器120接收該差分?jǐn)?shù)據(jù),根據(jù)發(fā)生符號(hào)的概率消除存在于比特(bits)之間的冗余,并且產(chǎn)生壓縮的比特流125。由圖1中所示的編碼器100產(chǎn)生的比特流125輸入到解碼器150的熵解碼器155中并進(jìn)行熵解碼(entropy-decode)。熵解碼差分?jǐn)?shù)據(jù)作為量化的差分?jǐn)?shù)據(jù)輸入到反向DPCM處理器160中,并且反向量化器165對(duì)從反向DPCM處理器160輸入的量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行反向量化,并輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
然而,編碼器100僅在熵編碼之前執(zhí)行DPCM而不考慮鍵的特征,因此它很難實(shí)現(xiàn)顯示高壓縮比率的有效編碼。
發(fā)明內(nèi)容
為解決上述等問(wèn)題,本發(fā)明的第一方面提供一種用于編碼數(shù)據(jù)的裝置和方法,當(dāng)消除關(guān)鍵字?jǐn)?shù)據(jù)的比特之間的冗余時(shí),用于能夠考慮關(guān)鍵字?jǐn)?shù)據(jù)的特征以高效率壓縮動(dòng)畫的關(guān)鍵字?jǐn)?shù)據(jù)。
本發(fā)明的第二方面是提供一種用于解碼比特流的裝置和方法,該比特流由上面描述的編碼數(shù)據(jù)的裝置和方法編碼。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上的關(guān)鍵字幀位置的信息。用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的該裝置包括線性關(guān)鍵字編碼器,用于在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中識(shí)別在其中關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域,并編碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域;浮點(diǎn)數(shù)換算器,用于轉(zhuǎn)換表示從線性關(guān)鍵字編碼器輸入的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的二進(jìn)制數(shù)和表示從量化誤差最小化器輸入的最大和最小值為十進(jìn)制數(shù);量化器,用于接收除線性關(guān)鍵字(key)區(qū)域外的、輸入的關(guān)鍵字?jǐn)?shù)據(jù),并且以預(yù)定的量化比特量化它們;熵編碼器,用于通過(guò)對(duì)所量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行預(yù)定的操作,熵編碼它們;以及關(guān)鍵字頭編碼器,用于從線性關(guān)鍵字編碼器中接收線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目,從浮點(diǎn)數(shù)換算器中接收線性關(guān)鍵字區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù),并且編碼全部輸入作為一關(guān)鍵字頭。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的DPCM的差分?jǐn)?shù)據(jù)的編碼的比特流并執(zhí)行DND操作的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該裝置包括熵解碼器,用于熵解碼輸入的比特流;反向上移位操作器,如果解碼的差分?jǐn)?shù)據(jù)已經(jīng)過(guò)上移位操作編碼,則通過(guò)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作恢復(fù)解碼的差分?jǐn)?shù)據(jù)為已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù),并且輸出結(jié)果,否則分流該解碼的差分?jǐn)?shù)據(jù);以及反向DND操作器,用于對(duì)從反向上移位操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行與從比特流讀出的DND的階同樣多次的反向DND操作。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作來(lái)解碼所編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行用于減少差分?jǐn)?shù)據(jù)范圍的移位操作(shifting operation)、折疊操作和預(yù)定的周期數(shù)的DND操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,或者對(duì)熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向折疊處理器,用于根據(jù)DND的階,或者對(duì)從反向DND操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行反向折疊操作以便該差分?jǐn)?shù)據(jù)能夠被分成正數(shù)和負(fù)數(shù)或者分流該差分?jǐn)?shù)據(jù);反向移位器,通過(guò)添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器或者反向折疊處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過(guò)該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行移位操作、預(yù)定周期數(shù)的DND操作以及關(guān)于量化結(jié)果和預(yù)定周期數(shù)的DPCM的移位操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,或者對(duì)熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向移位器,通過(guò)添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過(guò)該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行移位操作、折疊操作和預(yù)定周期(cycle)數(shù)的DND操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階(order),或者對(duì)熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向折疊處理器,用于根據(jù)DND的階,或者對(duì)從反向DND操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行反向折疊操作以便該差分?jǐn)?shù)據(jù)能夠被分成正數(shù)和負(fù)數(shù)或者分流(bypass)該差分?jǐn)?shù)據(jù);反向移位器,通過(guò)添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器或者反向折疊處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過(guò)該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù);浮點(diǎn)數(shù)逆換算器,用于從比特流中提取表示線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的十進(jìn)制數(shù)和表示用在反向量化器中的最大和最小值的十進(jìn)制數(shù),將這些十進(jìn)制數(shù)換算為二進(jìn)制數(shù),并且輸出二進(jìn)制數(shù);和線性關(guān)鍵字解碼器,用于使用線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)解碼線性關(guān)鍵字?jǐn)?shù)據(jù),該關(guān)鍵字?jǐn)?shù)據(jù)是從浮點(diǎn)數(shù)逆換算器輸入的,該線性關(guān)鍵字解碼器還用于添加解碼的結(jié)果到從反向量化器輸出的關(guān)鍵字?jǐn)?shù)據(jù)中。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的裝置,該數(shù)據(jù)流由關(guān)鍵字?jǐn)?shù)據(jù)編碼而來(lái),該關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息。用于解碼比特流的裝置包括關(guān)鍵字頭解碼器,用于解碼來(lái)自所輸入的比特流的編碼關(guān)鍵字?jǐn)?shù)據(jù)解碼需要的關(guān)鍵字頭信息;熵解碼器,用于熵解碼比特流并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);浮點(diǎn)數(shù)逆換算器,用于從關(guān)鍵字頭解碼器中接收表示線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的十進(jìn)制數(shù)和表示用于反向地量化該量化的關(guān)鍵字?jǐn)?shù)據(jù)的最大和最小值的十進(jìn)制數(shù),轉(zhuǎn)換這些十進(jìn)制數(shù)為二進(jìn)制數(shù),并輸出二進(jìn)制數(shù);反向量化器,用于使用最大和最小值反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù),并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù);以及線性關(guān)鍵字解碼器,用于使用線性關(guān)鍵字區(qū)域首尾關(guān)鍵字?jǐn)?shù)據(jù)解碼線性關(guān)鍵字?jǐn)?shù)據(jù),該關(guān)鍵字?jǐn)?shù)據(jù)從浮點(diǎn)數(shù)逆換算器輸入,線性關(guān)鍵字解碼器還用于添加解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)到從反向量化器輸出的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼并且解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該裝置包括編碼器,包括以預(yù)定的量化比特量化輸入的關(guān)鍵字?jǐn)?shù)據(jù)的量化器;產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)的DPCM處理器;范圍縮小器,用于通過(guò)對(duì)該差分?jǐn)?shù)據(jù)執(zhí)行預(yù)定的操作縮小差分?jǐn)?shù)據(jù)的范圍;熵編碼器,用于通過(guò)編碼從范圍縮小器輸入的差分?jǐn)?shù)據(jù)產(chǎn)生一比特流;以及解碼器,包括熵解碼器,用于熵解碼輸入的比特流并且輸出所解碼的差分?jǐn)?shù)據(jù);范圍擴(kuò)大器,用于通過(guò)對(duì)差分?jǐn)?shù)據(jù)執(zhí)行預(yù)定的操作擴(kuò)大熵解碼的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)從范圍擴(kuò)大器輸入的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀位置的信息。該方法包括執(zhí)行線性關(guān)鍵字編碼,其中關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域確設(shè)置為要編碼的關(guān)鍵字?jǐn)?shù)據(jù)中然后被編碼;執(zhí)行浮點(diǎn)數(shù)換算以便將表示該線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的二進(jìn)制數(shù)變?yōu)槭M(jìn)制數(shù);以預(yù)定的量化比特量化除線性關(guān)鍵字區(qū)域外被編碼的全部關(guān)鍵字?jǐn)?shù)據(jù);熵編碼量化的關(guān)鍵字?jǐn)?shù)據(jù)并對(duì)其執(zhí)行一預(yù)定的操作;并且執(zhí)行關(guān)鍵字頭編碼,在其中,線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目和線性關(guān)鍵字區(qū)域轉(zhuǎn)換的首尾關(guān)鍵字?jǐn)?shù)據(jù)作為關(guān)鍵字頭被編碼。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼一關(guān)鍵字?jǐn)?shù)據(jù)DPCM的差分?jǐn)?shù)據(jù)編碼比特流的方法,執(zhí)行一DND操作,其中關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息。該方法包括熵解碼一被解碼的比特流;對(duì)熵解碼差分?jǐn)?shù)據(jù)執(zhí)行一反上移位操作,在其中,如果該熵解碼差分?jǐn)?shù)據(jù)已經(jīng)通過(guò)一上移位操作編碼,則對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一種移位向下操作以便將它們恢復(fù)為已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù);以及如果該熵解碼差分?jǐn)?shù)據(jù)已經(jīng)通過(guò)上移位操作從比特流讀出的DND的階一樣多的次數(shù),則對(duì)已經(jīng)通過(guò)移位向下操作的差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作,如果它們沒有通過(guò)與DND階一樣多次數(shù)的上移位操作,則對(duì)熵解碼差分?jǐn)?shù)據(jù)執(zhí)行該反向DND操作。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流然后在基于圖形動(dòng)畫的關(guān)鍵字幀中執(zhí)行移位操作、折疊操作和對(duì)量化結(jié)果的預(yù)定周期數(shù)的DND操作和該預(yù)定周期數(shù)的DPCM中之一的方法,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼一種比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作;(c)在已經(jīng)通過(guò)反向DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行一反向折疊操作以便將它們分成負(fù)數(shù)和正數(shù);(d)執(zhí)行一反向移位操作,其中已經(jīng)通過(guò)反向折疊操作的該差分?jǐn)?shù)據(jù)的范圍通過(guò)給它們添加預(yù)定的模而改變;(e)執(zhí)行一反向DPCM處理以便已經(jīng)通過(guò)該反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);以及(f)通過(guò)反向地量化該量化的關(guān)鍵字?jǐn)?shù)據(jù)產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù)。在這里,如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作,在步驟(a)之后立即執(zhí)行步驟(c),如果DND的階表明熵解碼的差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作也沒有通過(guò)折疊操作,在步驟(a)之后立即執(zhí)行步驟(d)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流然后執(zhí)行移位操作、預(yù)定周期數(shù)的DND操作和在量化和DPCM預(yù)定周期數(shù)的結(jié)果上的上移位操作操作中的至少之一的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼該比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND處理;(c)在已經(jīng)通過(guò)反向DND操作的差分?jǐn)?shù)據(jù)上通過(guò)添加預(yù)定的模給該差分?jǐn)?shù)據(jù)執(zhí)行一反向移位操作,以便變化它們的范圍;(d)執(zhí)行一反向DPCM處理以便已經(jīng)通過(guò)反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);以及(e)反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù)以便產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù)。在這里,如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作,在步驟(a)之后立即執(zhí)行步驟(c)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的方法,該比特流通過(guò)執(zhí)行量化和在關(guān)鍵字?jǐn)?shù)據(jù)上預(yù)定周期數(shù)的DPCM而編碼,然后在執(zhí)行移位操作、折疊操作和一在量化結(jié)果和DPCM預(yù)定周期數(shù)上的預(yù)定周期數(shù)DND操作其中之一,其中關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時(shí)間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼一種比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND處理;(c)對(duì)已經(jīng)通過(guò)反向DND處理的差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊處理以便將它們分成負(fù)數(shù)和正數(shù);(d)執(zhí)行一反向移位操作,其中已經(jīng)通過(guò)反向折疊操作的該差分?jǐn)?shù)據(jù)的范圍通過(guò)給它們添加預(yù)定的模而改變;(e)執(zhí)行一反向DPCM處理以便已經(jīng)通過(guò)該反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);(f)執(zhí)行浮點(diǎn)數(shù)逆轉(zhuǎn)換,其中表示用于反向地量化從比特流處獲得量化的關(guān)鍵字?jǐn)?shù)據(jù)的最大和最小值的十進(jìn)制數(shù)和表示線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的十進(jìn)制數(shù)變?yōu)槎M(jìn)制數(shù);(g)使用最大和最小值反向地量化該量化的關(guān)鍵字?jǐn)?shù)據(jù)并由此產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù);(h)執(zhí)行線性關(guān)鍵字解碼,其中線性關(guān)鍵字?jǐn)?shù)據(jù)使用線性關(guān)鍵字區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)解碼并且解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)被添加到反向地量化的關(guān)鍵字?jǐn)?shù)據(jù)。在這里,如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作,在步驟(a)之后立即執(zhí)行步驟(c),如果DND的階表明熵解碼的差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作也沒有通過(guò)折疊操作,在步驟(a)之后立即執(zhí)行步驟(d)。
為了實(shí)現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的方法,其中,要編碼的關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息。該方法包括執(zhí)行關(guān)鍵字頭解碼以便從該比特流解碼解碼所編碼的關(guān)鍵字?jǐn)?shù)據(jù)所需要的關(guān)鍵字頭信息;熵解碼該比特流并且產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);執(zhí)行浮點(diǎn)數(shù)逆轉(zhuǎn)換以便表示線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的十進(jìn)制數(shù)和表示用于反向地量化該量化的關(guān)鍵字?jǐn)?shù)據(jù)的最大和最小值變?yōu)槎M(jìn)制數(shù);反向地使用最大和最小值量化所量化的關(guān)鍵字?jǐn)?shù)據(jù)并由此產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù);以及執(zhí)行線性關(guān)鍵字解碼以便使用線性關(guān)鍵字區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)解碼關(guān)鍵字?jǐn)?shù)據(jù)并且將解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)被添加到該反向地量化的關(guān)鍵字?jǐn)?shù)據(jù)。
在本發(fā)明中,為了很好地利用關(guān)鍵字?jǐn)?shù)據(jù)的特征,首先在編碼關(guān)鍵字?jǐn)?shù)據(jù)期間計(jì)算關(guān)鍵字?jǐn)?shù)據(jù)的分散度(degree of dispersion)。如上所述,關(guān)鍵字?jǐn)?shù)據(jù)表示時(shí)間軸上的關(guān)鍵字幀的位置,并由此關(guān)鍵字?jǐn)?shù)據(jù)值按照順序從表示第一關(guān)鍵字幀的關(guān)鍵字?jǐn)?shù)據(jù)到表示最后關(guān)鍵字幀的階單調(diào)地增加。相應(yīng)地,由第一DPCM操作獲得的差分?jǐn)?shù)據(jù)應(yīng)該具有正值,如果對(duì)差分?jǐn)?shù)據(jù)執(zhí)行的第二DPCM操作,第二DPCM操作的結(jié)果應(yīng)該具有或者正值或者負(fù)值。
通常,關(guān)鍵字?jǐn)?shù)據(jù)中最大和最小值之間的差值越小,存在的冗余值越多,存在的冗余值越多,熵編碼器具有越高的壓縮率。相應(yīng)地,在本發(fā)明中,熵編碼在關(guān)鍵字?jǐn)?shù)據(jù)范圍縮小之后執(zhí)行。DPCM的階和DND的階可以通過(guò)一最小分散度獲得,并且DPCM和DND的每個(gè)周期的結(jié)果用來(lái)縮小關(guān)鍵字?jǐn)?shù)據(jù)的范圍。當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)的密集度降低時(shí),關(guān)鍵字?jǐn)?shù)據(jù)的冗余增加。
本發(fā)明的上述和其他方面和優(yōu)點(diǎn),參考附圖通過(guò)詳細(xì)描寫最佳實(shí)施例將要變成更明顯,其中圖1是一傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器和關(guān)鍵字?jǐn)?shù)據(jù)解碼器的方框圖;圖2A是按照本發(fā)明一最佳實(shí)施例的編碼器的方框圖;圖2B是圖2A中所示的反復(fù)分開(divide-and-divide,DND)處理器的方框圖;圖2C到2G是按照本發(fā)明的編碼器例子的方框圖;圖3A和3B是按照本發(fā)明最佳實(shí)施例的一用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖;圖4A和4B是按照本發(fā)明最佳實(shí)施例的浮點(diǎn)數(shù)轉(zhuǎn)化過(guò)程的流程圖;圖5是按照本發(fā)明最佳實(shí)施例的量化處理的一流程圖;圖6是按照本發(fā)明最佳實(shí)施例DPCM處理的一流程圖;圖7是按照本發(fā)明的最佳實(shí)施例DND操作處理的一流程圖;圖8是按照本發(fā)明最佳實(shí)施例的說(shuō)明熵編碼的一圖表;圖9A到9J是表示按照本發(fā)明的最佳實(shí)施例已經(jīng)通過(guò)不同操作的關(guān)鍵字?jǐn)?shù)據(jù)的圖表;圖10A和10B是說(shuō)明使用關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)編碼動(dòng)畫數(shù)據(jù)的處理的圖表;圖11A是按照本發(fā)明最佳實(shí)施例的一關(guān)鍵字?jǐn)?shù)據(jù)解碼器的方框圖;
圖11B-11E是按照本發(fā)明的關(guān)鍵字?jǐn)?shù)據(jù)解碼器的例子的方框圖;圖12是按照本發(fā)明一最佳實(shí)施例用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖;圖13是按照本發(fā)明最佳實(shí)施例反向DND操作處理的一流程圖;圖14A到14E是顯示解碼需要的比特流語(yǔ)法和變量的例子的圖表;以及圖15A到15C是顯示實(shí)現(xiàn)程序代碼的例子的圖表,其中列舉了解碼關(guān)鍵字?jǐn)?shù)據(jù)需要的操作。
具體實(shí)施例方式
圖2A是按照本發(fā)明一最佳實(shí)施例的編碼器的一方框圖。
按照本發(fā)明最佳實(shí)施例的一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法將要參考圖3A和3B進(jìn)行描述。圖3A和3B是用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖。參考圖3A和3B,如果關(guān)鍵字?jǐn)?shù)據(jù)被輸入一編碼器,則關(guān)于例如關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目和每個(gè)關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)字的數(shù)目的消息將被輸入關(guān)鍵字頭編碼器270,并且被解碼。線性關(guān)鍵字編碼器200在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中搜索存在于某些時(shí)間區(qū)間上關(guān)鍵字幀的區(qū)域,關(guān)鍵字?jǐn)?shù)據(jù)具有相同差值,并且該關(guān)鍵字?jǐn)?shù)據(jù)線性地變化,搜索到的線性區(qū)域首先在步驟S3000編碼。
著名的3D應(yīng)用軟件,例如3Dmax Maya,在具體區(qū)域中基于動(dòng)畫使用具有預(yù)定時(shí)間隙的鍵產(chǎn)生關(guān)鍵字幀。在該情況下,有可能容易地使用線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)以及存在于它們之間的關(guān)鍵字幀的數(shù)目,來(lái)編碼關(guān)鍵字?jǐn)?shù)據(jù)。相應(yīng)地,線性預(yù)測(cè)對(duì)在某一區(qū)域中使用內(nèi)插器編碼關(guān)鍵字非常有用。
下列等式用于線性預(yù)測(cè)。
t(i)=tE-tSE-S+tS(0≤i≤E-S,S<E)---(1)]]>在這里ts表示部分線性的區(qū)域開始的關(guān)鍵字的數(shù)據(jù),tE表示部分線性的區(qū)域結(jié)束的關(guān)鍵字的數(shù)據(jù),S表示ts的索引,E表示tE的索引。從第S個(gè)關(guān)鍵字?jǐn)?shù)據(jù)到第E個(gè)關(guān)鍵字?jǐn)?shù)據(jù)之間的具體區(qū)域中的實(shí)數(shù)關(guān)鍵字?jǐn)?shù)據(jù)之間的誤差和線性地預(yù)示下列方程式(1)的關(guān)鍵字?jǐn)?shù)據(jù)可以使用下列等式計(jì)算。
ei=t(i)-ti+S=tE-tsE-Si+ts-ti+s---(2)]]>如果使用等式(2)所計(jì)算的誤差中的最大值不大于一預(yù)定的臨界值,則tj可以被認(rèn)為在區(qū)域[ts,tE]中互線性或者在某一誤差范圍里面。極限誤差值ti是否與具體區(qū)域互線性由下列等式(3)確定。
Ep=MAXi=0,···(E-S)|ei|=MAXi=0,···(E-S)|tE-tSE-Si+tS-ti+S|---(3)]]>如果Ep≤12nBits+1]]>與區(qū)域[ts、tE]互線性。在這里,nBits表示用于編碼的比特的數(shù)目。
如果線性關(guān)鍵字編碼器200搜索部分地線性區(qū)域,則首尾部分線性的關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的該首尾關(guān)鍵字?jǐn)?shù)據(jù)輸出到該浮點(diǎn)數(shù)換算器205。包括在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域內(nèi)的關(guān)鍵字的數(shù)目輸出到關(guān)鍵字頭編碼器270并且被編碼。它有可能使用線性編碼顯著地減少編碼的數(shù)據(jù)的數(shù)值。
開始關(guān)鍵字?jǐn)?shù)據(jù)和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)使用后面描述的浮點(diǎn)數(shù)換算編碼。為了編碼開始關(guān)鍵字?jǐn)?shù)據(jù)和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù),該浮點(diǎn)數(shù)換算器205轉(zhuǎn)換表示為二進(jìn)制的關(guān)鍵字?jǐn)?shù)據(jù)成十進(jìn)制數(shù)據(jù)。
計(jì)算機(jī)存儲(chǔ)該浮點(diǎn)數(shù)為32位二進(jìn)制數(shù)。如果表示為二進(jìn)制的浮點(diǎn)數(shù)是給定的,則該浮點(diǎn)數(shù)換算器205轉(zhuǎn)換該浮點(diǎn)數(shù)成十進(jìn)制的尾數(shù)和指數(shù),并且該過(guò)程通過(guò)下列等式表示。
例如,浮點(diǎn)數(shù)12.34可以通過(guò)計(jì)算機(jī)變?yōu)槎M(jìn)制數(shù),如下列所示的。
010001010111000010100011100000101 2 31符號(hào)2二進(jìn)制的尾數(shù)3二進(jìn)制的指數(shù)該二進(jìn)制數(shù)可以變?yōu)橄铝蟹匠淌?4)的十進(jìn)位數(shù),如下列所示。
0123421 2 31符號(hào)2十進(jìn)制的尾數(shù)3十進(jìn)制的指數(shù)為了在比特流中包含十進(jìn)制的尾數(shù)和指數(shù),必須計(jì)算要求用于表示尾數(shù)和指數(shù)的比特的數(shù)目。該指數(shù)具有-38和38之間的值,因此可以使用7比特表示它及其符號(hào)。要求用于表示尾數(shù)的比特的數(shù)目依賴于數(shù)字的數(shù)目。該尾數(shù)的值和要求用于表示該尾數(shù)的比特?cái)?shù)在下列圖表中所示。
表1
那些已經(jīng)搜索并且使用上述的過(guò)程轉(zhuǎn)換的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)按照?qǐng)D4A和4B中所示的編碼過(guò)程編碼,然后輸出到關(guān)鍵字頭編碼器270,并且保存在該比特流中。
圖4A和4B表明浮點(diǎn)數(shù)換算器205編碼兩個(gè)輸入浮點(diǎn)數(shù)。浮點(diǎn)數(shù)換算器205編碼浮點(diǎn)數(shù)的方法將要參考圖4A和4B進(jìn)行描述。
浮點(diǎn)數(shù)換算器205接收原始的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位Kd、開始關(guān)鍵字?jǐn)?shù)據(jù)S和結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)E,并且在步驟S3040以下列方程式(4)轉(zhuǎn)換它們。
浮點(diǎn)數(shù)換算器205首先編碼S。具體地說(shuō),浮點(diǎn)數(shù)換算器205檢查S的數(shù)位是否不同于Kd。如果S的數(shù)位不同于Kd,則在步驟S3042獲得S的數(shù)位并且輸出到關(guān)鍵字頭編碼器270。浮點(diǎn)數(shù)換算器205使用函數(shù)Digit( )獲得S的數(shù)位。
如果S的數(shù)位大于7,則在步驟3043使用預(yù)定的位數(shù)(在本發(fā)明中,遵循IEEE標(biāo)準(zhǔn)754的浮點(diǎn)數(shù)方式使用下列32比特)將S輸出到關(guān)鍵字頭編碼器270,以便S的數(shù)位可以被包括在該比特流中。
如果S的數(shù)位不是0并且小于7,則在步驟3044中,浮點(diǎn)數(shù)換算器205輸出S的符號(hào)給關(guān)鍵字頭編碼器270。編碼S尾數(shù)絕對(duì)值要求的比特?cái)?shù)使用圖表1獲得。接下來(lái),在步驟3045,S尾數(shù)的絕對(duì)值使用圖表1獲得的比特?cái)?shù)輸出到關(guān)鍵字頭編碼器270。在步驟S3046,浮點(diǎn)數(shù)換算器205計(jì)算S的指數(shù),輸出S的符號(hào)給關(guān)鍵字頭編碼器270,并且作為預(yù)定的位數(shù),例如,6比特,輸出該指數(shù)給關(guān)鍵字頭編碼器270。這樣的關(guān)鍵字?jǐn)?shù)據(jù)轉(zhuǎn)換使顯著地減少包括在比特流內(nèi)的比特?cái)?shù)成為可能。
如果S的數(shù)位是0,則開始關(guān)鍵字?jǐn)?shù)據(jù)的編碼結(jié)束,并且該方法轉(zhuǎn)到轉(zhuǎn)換結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)E的步驟,原因是當(dāng)S的數(shù)位是0時(shí),相應(yīng)的浮點(diǎn)數(shù)也是不要求編碼的0。
在轉(zhuǎn)換并編碼開始關(guān)鍵字?jǐn)?shù)據(jù)S之后,浮點(diǎn)數(shù)換算器205轉(zhuǎn)換結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)E。E的轉(zhuǎn)換幾乎與S的轉(zhuǎn)換相同。具體地說(shuō),在步驟S3047,檢查E的指數(shù)是否與S的指數(shù)相同。如果E的指數(shù)與S的指數(shù)相同,則只有指出E的指數(shù)與S的指數(shù)相同的標(biāo)志位輸出到關(guān)鍵字頭編碼器270。在步驟S3048,如果E的指數(shù)與S的指數(shù)不相同,則E的指數(shù)像標(biāo)志位一樣以與已經(jīng)輸出到關(guān)鍵字頭編碼器270的S指數(shù)同樣的方式輸出到關(guān)鍵字頭編碼器270。
不屬于線性區(qū)域的輸入的關(guān)鍵字?jǐn)?shù)據(jù)中的關(guān)鍵字?jǐn)?shù)據(jù)輸入到量化器210并按照預(yù)定的量化比特長(zhǎng)度,即nKeyQBit,進(jìn)行量化。
然而,在使用解碼器解碼量化的關(guān)鍵字?jǐn)?shù)據(jù)的情況下,由于原始的關(guān)鍵字?jǐn)?shù)據(jù)之間的誤差以及量化的關(guān)鍵字?jǐn)?shù)據(jù)不可能完整地恢復(fù)原始的關(guān)鍵字?jǐn)?shù)據(jù)。因此,本發(fā)明的量化器210獲得輸入的關(guān)鍵字?jǐn)?shù)據(jù)中的最大值和最小值,并使用最大值和最小值量化輸入的關(guān)鍵字?jǐn)?shù)據(jù)。另外,本發(fā)明包含一量化誤差最小化器215以便原始的關(guān)鍵字?jǐn)?shù)據(jù)之間的誤差和它們的量化的關(guān)鍵字?jǐn)?shù)據(jù)可以使用輸入的關(guān)鍵字?jǐn)?shù)據(jù)中的最大值和最小值進(jìn)行最小化。
在步驟S3100,量化誤差最小化器215預(yù)先使用一用于控制量化范圍的方法量化或者反向地量化該輸入的關(guān)鍵字?jǐn)?shù)據(jù)以便量化誤差可以最小化。
具體地說(shuō),如果用于量化的混合最大值由Max表示,用于量化的被控制的最小值由Min代表,輸入值由Xi代表,用于量化的比特?cái)?shù)由nQuantBit代表,則量化的輸入值 反向地量化值 和誤差ei利用下列等式獲得。
X~i=floor(Xi-MinMax-Min*(2nQuantBit-1)+0.5)---(5)]]>X^i=X~i*(Max-Min)2nQuantBit-1+Min]]>ei=Xi-X^i]]>有兩個(gè)用于減少誤差的和Σei的方法。一是通過(guò)連續(xù)地控制Min直到誤差的和最小的方法。另一方法如下。
首先,假定Xi=(i+n)Δx+εi,其中Xi表示一輸入的關(guān)鍵字?jǐn)?shù)據(jù)序列,Δx表示一輸入數(shù)據(jù)基本步長(zhǎng),n是一任意整數(shù),εi表示零均值隨機(jī)噪聲。
接下來(lái),當(dāng)di≡Xi-Xi-1=Δx+(εi-εi-1),Δ′x=E[di]并且Min=Max-Δ′x*(2nQuantBit-1)。
Min可以使最小化一量化誤差成為可能,Max輸入到量化器210并且用于關(guān)鍵字?jǐn)?shù)據(jù)的量化。量化器210接收最大和最小值Max和Min,Min可以最小化量化誤差并且在步驟S3200中按照下列方程式(6)量化關(guān)鍵字?jǐn)?shù)據(jù)fKeyi。
nQKeyi=floor(fKeyi-fKeyMinfKeyMax-fKeyMin(2nKeyQBit-1)+0.5)---(6)]]>這里,i表示一量化的關(guān)鍵字?jǐn)?shù)據(jù)的索引,nQKeyi表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的整數(shù)陣列,fKeyi表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的浮點(diǎn)數(shù)陣列,fKeyMax表示從量化誤差最小化器(minimizer)215輸入的最大值,fKeyMin表示從量化誤差最小化器215輸入的最小值,以及nKeyQBit表示量化比特大小。在等式(6)中,函數(shù)floor(v)是輸出一不大于某一浮點(diǎn)值v的最大整數(shù)的函數(shù)。
本發(fā)明的量化器210可以不使用這樣的算法來(lái)減少量化誤差,在這樣情況下僅僅利用輸入的關(guān)鍵字?jǐn)?shù)據(jù)中的最大和最小值fKeyMax和fKeyMin執(zhí)行量化。
本發(fā)明的量化過(guò)程將參考圖5更完全地描述。
量化器210在步驟S3210接收關(guān)鍵字?jǐn)?shù)據(jù)并且在步驟3220中檢測(cè)最大和最小值MAX和MIN是否從量化誤差最小化器215輸入。
如果輸入MAX和MIN,量化器210在步驟3230分別設(shè)置最大和最小值fKeyMax和fKeyMin作為MAX和MIN量化,并且輸出最近設(shè)置的最大和最小值fKeyMax和fKeyMin給浮點(diǎn)數(shù)換算器205。最大和最小值fKeyMax和fKeyMin通過(guò)上述的浮點(diǎn)數(shù)轉(zhuǎn)化過(guò)程轉(zhuǎn)換并編碼,并且輸出到關(guān)鍵字頭編碼器270以便它們可以被包括在一用于解碼的關(guān)鍵字頭中。
如果沒有值從量化誤差最小化器215輸入,則量化器210在步驟S3240分別設(shè)置第一關(guān)鍵字?jǐn)?shù)據(jù)fKey0和最終密鑰數(shù)據(jù)fKeyN-1作為最小值fKeyMin和最大值fKeyMax。
接下來(lái),在步驟S3250量化器210中檢查最大值fKeyMax是否小于1但是大于0以及最小值fKeyMin是否大于0。如果最大值fKeyMax不小于1或非大于0,則最大和最小值fKeyMax和fKeyMin輸出到浮點(diǎn)數(shù)換算器205,并且通過(guò)上述的浮點(diǎn)數(shù)換算轉(zhuǎn)換并編碼。接下來(lái),在步驟S3260已經(jīng)轉(zhuǎn)換并編碼的最大和最小值fKeyMax和fKeyMin被包括在關(guān)鍵字頭中以便它們可被用于解碼。
另一方面,如果最大值fKeyMax小于1并且最小值fKeyMin大于0,則在步驟S3270檢查表示最大和最小值fKeyMax和fKeyMin是否將包括在用于解碼的關(guān)鍵字頭內(nèi)的標(biāo)志。如果該標(biāo)志建立以便最大和最小值fKeyMax和fKeyMin可以被包括在該關(guān)鍵字頭中,則執(zhí)行步驟S3260以便將最大和最小值fKeyMax和fKeyMin輸出到該關(guān)鍵字頭編碼器270。如果該標(biāo)志沒有建立,則量化器210不許最大和最小值fKeyMax和fKeyMin包括在該關(guān)鍵字頭中。
在最大和最小值fKeyMax和fKeyMin沒有包括在該關(guān)鍵字頭內(nèi)的情況下,建議關(guān)鍵字?jǐn)?shù)據(jù)編碼器和關(guān)鍵字?jǐn)?shù)據(jù)解碼器分別執(zhí)行編碼和解碼,分別設(shè)置最大和最小值fKeyMax和fKeyMin在1和0上。在這種情況下,在步驟S3280中,分量化器210別設(shè)置最大和最小值fKeyMax和fKeyMin在1和0上。最大和最小值fkeymax和fKeyMin對(duì)關(guān)鍵字?jǐn)?shù)據(jù)解碼器來(lái)說(shuō)是已知的,以便它們不需要被包括在該關(guān)鍵字頭中。
量化器210通過(guò)替代那些已經(jīng)通過(guò)上述的過(guò)程建立的最大和最小值fKeyMax和fKeyMin,量化該輸入的關(guān)鍵字?jǐn)?shù)據(jù)成等式(6),并且在步驟S3290輸出量化的關(guān)鍵字?jǐn)?shù)據(jù)給DPCM處理器220。
DPCM處理器220接收量化的關(guān)鍵字?jǐn)?shù)據(jù),并且對(duì)量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行預(yù)定的次數(shù)的DPCM。接下來(lái),DPCM處理器220輸出DPCM的階和在每個(gè)DPCM周期中的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)給關(guān)鍵字頭編碼器270,其中通過(guò)DPCM的階可以獲得在分散度中的最小值和。在步驟S3300,DPCM處理器220輸出由DPCM產(chǎn)生的差分?jǐn)?shù)據(jù)給移位器230。
參考圖6,在步驟S3310,DPCM處理器220對(duì)輸入的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行預(yù)定的次數(shù),并且存儲(chǔ)DPCM的周期數(shù)作為DPCM的階。在本發(fā)明一最佳實(shí)施例中,DPCM可以執(zhí)行三個(gè)次。
這以后,在步驟S3320,DPCM處理器220計(jì)算DPCM每個(gè)周期的結(jié)果的分散度,該分散度可以由密集度、標(biāo)準(zhǔn)偏差或者四分位偏差表示,并且在本發(fā)明的最佳實(shí)施例中,可以使用四分位偏差。
接下來(lái),DPCM處理器220選擇一DPCM周期,其中在分散度中可以獲得一最小值,并且輸出選擇的DPCM的階的結(jié)果給該移位器230。在步驟S3330選擇的DPCM的周期、每個(gè)DPCM周期的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)及DPCM需要的其他信息單元輸出到關(guān)鍵字頭編碼器270。然而,在本發(fā)明的一最佳實(shí)施例中,如果鍵數(shù)目小于5,則DPCM只執(zhí)行一次。例如,DPCM的第一周期按下列方程式(7)執(zhí)行。
Δi=nQKeyi+1-nQKeyi…(7)這里i表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的索引,nQKeyi表示整數(shù)陣列,Δi表示差分?jǐn)?shù)據(jù)。在步驟S3340,DPCM處理器220計(jì)算要求編碼選擇的DPCM周期的比特?cái)?shù)和已經(jīng)由DPCM在預(yù)定的存儲(chǔ)器(nQStep_DPCM)中產(chǎn)生的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)。編碼所需要的比特?cái)?shù)的計(jì)算可以隨后在被編碼的選擇關(guān)鍵字?jǐn)?shù)據(jù)隨后的步驟中同時(shí)執(zhí)行,該事實(shí)對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是明顯的。
移位器230選擇一差分?jǐn)?shù)據(jù)(在下文中,稱為一模),用于具有從DPCM處理器220輸入的差分?jǐn)?shù)據(jù)之中的最高頻率。則在步驟S3400移位器230從全部差分?jǐn)?shù)據(jù)減去該模以便大多數(shù)被編碼的數(shù)據(jù)安排0,并且編碼所需要的比特?cái)?shù)可以減少。
執(zhí)行這樣的移位操作從全部量化的關(guān)鍵字?jǐn)?shù)據(jù)減去模,由下列等式表示。
shift(nQKeyi)=nQKeyi-nKeyShift…(8)這里,i表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的索引,nQKeyi表示整數(shù)陣列,nKeyShift表示一模值。作為移位操作的結(jié)果,具有最高頻率的差分?jǐn)?shù)據(jù)變成0以便編碼所需要的比特?cái)?shù)可以顯著地減少。
已經(jīng)通過(guò)移位操作的關(guān)鍵字?jǐn)?shù)據(jù)輸出到一折疊處理器240和DND處理器250,并且模值nKeyShift輸出到關(guān)鍵字頭編碼器270以便被包括在該關(guān)鍵字頭中。
在步驟S3500,折疊處理器240對(duì)移位器230的輸出執(zhí)行一折疊操作,并且輸出折疊操作的結(jié)果給DND處理器250。
折疊操作通過(guò)集中它們?cè)谡龜?shù)或者負(fù)數(shù)區(qū)域中,來(lái)縮小廣泛的分散于正數(shù)區(qū)域和負(fù)數(shù)區(qū)域的差分?jǐn)?shù)據(jù)的范圍。在本實(shí)施例中,折疊操作按照下列方程式(9)執(zhí)行以便集中差分?jǐn)?shù)據(jù)在該正數(shù)區(qū)域中。
fold(nQKeyi)=2·nQKeyi(if nQKeyi≥0)…(9)=2|nQKeyi|-1(if nQKeyi<0)這里,i表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的索引,nQKeyi表示整數(shù)陣列。作為折疊操作的結(jié)果,正差分?jǐn)?shù)據(jù)變?yōu)榕紨?shù),負(fù)差分?jǐn)?shù)據(jù)變?yōu)槠鏀?shù)。
折疊處理器240計(jì)算編碼已經(jīng)通過(guò)折疊操作的差分?jǐn)?shù)據(jù)所需要的比特?cái)?shù),并且存儲(chǔ)它在預(yù)定的存儲(chǔ)器nQStep_fold中。在這步驟中,編碼所需要的比特?cái)?shù)的計(jì)算可以在選擇被熵編碼的差分?jǐn)?shù)據(jù)的隨后的步驟中執(zhí)行,該事實(shí)對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)是明顯的。在折疊處理器240中由折疊操作產(chǎn)生的數(shù)據(jù)輸出到DND處理器250。
為了提高熵編碼的效率,DND處理器250在關(guān)鍵字?jǐn)?shù)據(jù)的輸入的差分?jǐn)?shù)據(jù)上執(zhí)行預(yù)定次數(shù),因此縮小在S3600中差分?jǐn)?shù)據(jù)的范圍。
參考圖2B,DND處理器250包含對(duì)差分?jǐn)?shù)據(jù)執(zhí)行DND操作的DND操作器252;第一差分?jǐn)?shù)據(jù)選擇器254,用于以用于編碼的比特?cái)?shù)為基礎(chǔ)選擇熵編碼的差分?jǐn)?shù)據(jù);移位向上操作器256,用于在已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行上移位操作;以及第二差分?jǐn)?shù)據(jù)選擇器258,用于從已經(jīng)僅僅通過(guò)DND操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)上移位操作的差分?jǐn)?shù)據(jù)之間選出具有一較低分散度的差分?jǐn)?shù)據(jù),并且輸出所選擇的差分?jǐn)?shù)據(jù)到熵編碼器260。
在DND操作器252中執(zhí)行的DND操作將要在下文中描述。
當(dāng)已經(jīng)通過(guò)折疊處理器240中的折疊操作的差分?jǐn)?shù)據(jù)輸入到DND操作器252時(shí),它們分成兩個(gè)組,具有比另一組差分?jǐn)?shù)據(jù)范圍大的一組差分?jǐn)?shù)據(jù)由一分開函數(shù)移到正數(shù)區(qū)域。該分開函數(shù)由下列等式定義。
divide(nQKeyj,nKeyMax)---(10)]]>=nQKeyj-(nKeyMax+1)(if nQKeyj>nKeyMax2)]]>=nQKeyj(if nQKeyj≤nKeyMax2)]]>這里,j表示輸入的差分?jǐn)?shù)據(jù)的索引,nQKeyj表示整數(shù)陣列,nKeyMax表示已經(jīng)通過(guò)折疊操作的差分?jǐn)?shù)據(jù)中的最大值。尤其,在大多數(shù)差分?jǐn)?shù)據(jù)密集地沿著由全部差分?jǐn)?shù)據(jù)占據(jù)的全部區(qū)域邊界提供的情況下,利用該分開操作有可能顯著地縮小在所有差分?jǐn)?shù)據(jù)中全部的區(qū)域。
在分開操作之后,在編碼所需要的比特長(zhǎng)度被用作該分散度的度量以便可以選擇在用于編碼的比特長(zhǎng)度中的最小值的情況下,計(jì)算該分散度。
在DND操作之后,進(jìn)一步執(zhí)行不同類型的DND操作,即,上分操作或者下分操作。上分操作或者下分操作是否將要進(jìn)一步執(zhí)行將由差分?jǐn)?shù)據(jù)的正范圍長(zhǎng)度和差分?jǐn)?shù)據(jù)的負(fù)范圍長(zhǎng)度確定。
如果具有正值的差分?jǐn)?shù)據(jù)的范圍大于具有負(fù)值的差分?jǐn)?shù)據(jù)的范圍,則由下列等式定義的下分操作被執(zhí)行。
divide-down(nQKeyj,nKeyMax)---(11)]]>
=-2(nKeyMax-nQKeyj+1)+1(if nQKeyj>nKeyMax2>]]>=nQKeyj(if0≤nQKeyj≤nKeyMax2)]]>=2·nQKeyj(if nQKeyj<0)]]>另一方面,如果具有正值的差分?jǐn)?shù)據(jù)的范圍大于具有負(fù)值的差分?jǐn)?shù)據(jù)的范圍,由下列等式定義的上分操作被執(zhí)行。
divide-up(nQKeyj,nKeyMin)---(12)]]>=nQKeyj(nQKeyj≥0)]]>=2·nQKeyj(nKeyMin2≤nQKeyj≤0)]]>=2(nKeyMin-nQKeyj-1)+1(nQKeyj<nKeyMin2)]]>等式(11)和(12)中,j表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的索引,nQKeyj表示整數(shù)陣列,nKeyMax表示nQKeyj的最大值,nKeyMin表示nQKeyj的最小值。
DND操作器252的操作將要參考圖7在下文中進(jìn)行描述。
當(dāng)輸入的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)從該折疊處理器240輸入時(shí),DND操作器252在步驟S3610輸入的差分?jǐn)?shù)據(jù)中的獲得最大值nKeyMax和最小值nKeyMin。然后,DND操作器252在步驟S3620比較nKeyMin和nKeyMax的絕對(duì)值。如果nKeyMax不小于nKeyMin的絕對(duì)值,在則步驟S3622種,DND操作器252在DND操作的當(dāng)前周期中設(shè)置nKeyMax作為一最大值。
在步驟S3624,DND操作器252檢測(cè)DND操作的階是否是1,換言之,DND操作的階是否為1,如果是,DND操作器252在步驟S3630中對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一分開操作,替代等式(10)中的最大值nKeyMax。
此后,在步驟S3640,DND操作器252利用函數(shù)getQBit( )測(cè)量編碼該差分?jǐn)?shù)據(jù)范圍需要的比特長(zhǎng)度,該差分?jǐn)?shù)據(jù)范圍已經(jīng)利用分開操作縮小了。如果在步驟S3650,DND操作的階是1,則將編碼所需要的比特長(zhǎng)度存儲(chǔ)為一表示用于編碼的比特最小長(zhǎng)度的值nQBitDND,并且在步驟S3655中將DND操作的階數(shù)增加1。
接下來(lái),DND處理器252再次通過(guò)S3622執(zhí)行步驟S3610。在步驟S3624,如果DND操作的階不是1,則DND操作器252在步驟S3634執(zhí)行下分操作替代等式(11)中的最大值nKeyMax。在步驟S3640,DND操作器252計(jì)算編碼已經(jīng)通過(guò)下分操作的差分?jǐn)?shù)據(jù)所需要的比特?cái)?shù)。如果該數(shù)小于在上一DND操作周期中所存儲(chǔ)的最小值nQBitDND,則在步驟S3658它替換在DND操作之后編碼所需要的比特的最小長(zhǎng)度。
在步驟S3620,如果最小值nKeyMin的絕對(duì)值大于最大值nKeyMax的絕對(duì)值,則將DND操作的當(dāng)前周期中的最大值作為一最小值在步驟S3623更新,然后在步驟S3628執(zhí)行一上分操作,替代等式(12)中的用于nKeyMin的最小值。此后,在步驟S3640,DND操作器252計(jì)算用于編碼已經(jīng)通過(guò)上分操作的差分?jǐn)?shù)據(jù)的比特?cái)?shù)。在步驟S3652,如果計(jì)算的結(jié)果小于已經(jīng)保存在上一DND操作周期中的nQBitDND,則在步驟S3658中它替換在DND操作之后編碼所需要的比特的最小數(shù)nQBitDND。
DND處理器252執(zhí)行預(yù)定次數(shù)的DND操作,并且DND操作的性能數(shù)目可以變化。例如,在當(dāng)前實(shí)施例中,DND操作執(zhí)行7次。DND操作器252輸出nQBitDND和相應(yīng)于nQBitDND的差分?jǐn)?shù)據(jù)給第一差分?jǐn)?shù)據(jù)選擇器254。DND操作器252輸出產(chǎn)生相應(yīng)的差分?jǐn)?shù)據(jù)的DND階給關(guān)鍵字頭編碼器270,并且允許將它們包括在該比特流中。
第一差分?jǐn)?shù)據(jù)選擇器254接收已經(jīng)通過(guò)移位操作的差分?jǐn)?shù)據(jù),已經(jīng)通過(guò)該折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù),并且確定三個(gè)中將要被熵編碼的差分?jǐn)?shù)據(jù)。
參考圖3A和3B,如果在步驟S3700,在DND操作之后編碼所需要的比特最小數(shù)nQBitDND不小于在DPCM操作之后編碼的比特長(zhǎng)度nQStep-DPCM,則在步驟S3710,第一差分?jǐn)?shù)據(jù)選擇器254選擇DPCM的結(jié)果并且對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一移位操作。接下來(lái),第一差分?jǐn)?shù)據(jù)選擇器254輸出移位操作的結(jié)果給該熵編碼器260,并且允許它們?cè)诓襟ES3710被熵編碼。在該情況下,DND操作的階設(shè)置為-1,被輸出到關(guān)鍵字頭編碼器270,并且被包括在該關(guān)鍵字頭中。
然而,如果在步驟S3720,結(jié)果是nQBitDND小于nQStep-DPCM,并且不小于用于在折疊操作之后編碼的比特長(zhǎng)度,則在步驟S3730,第一差分?jǐn)?shù)據(jù)選擇器254輸出已經(jīng)通過(guò)該折疊操作的差分?jǐn)?shù)據(jù)給熵編碼器260,并且允許將它們熵編碼,而在這樣情況下DND操作的階設(shè)置在0上,被輸出到該關(guān)鍵字頭編碼器270,并由此被包括在該關(guān)鍵字頭中。
如果在DND操作之后用于編碼差分?jǐn)?shù)據(jù)比特?cái)?shù)最小,則在步驟S3740,第一差分?jǐn)?shù)據(jù)選擇器254輸出已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)到上移位操作器256,然后該上移位操作器256計(jì)算從第一差分?jǐn)?shù)據(jù)選擇器254輸入的差分?jǐn)?shù)據(jù)的第一分散度。接下來(lái),在步驟S3800上移位操作器256對(duì)已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)執(zhí)行由下列等式定義的上移位操作,并且在步驟S3810計(jì)算上移位操作結(jié)果的第二分散度。
shift-up(nQKeyj,nKeyMax)…(13)=nQKeyj(if nQKeyj≥0)=nKeyMax-nQKeyj(if nQKeyj<0)這里,j表示量化的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)的索引,nQKeyj表示整數(shù)陣列,并且nKeyMax表示差分?jǐn)?shù)據(jù)中的最大值。
當(dāng)已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)上移位操作的差分?jǐn)?shù)據(jù)被輸入時(shí),在步驟S3900第二差分?jǐn)?shù)據(jù)選擇器258比較第一分散度和第二分散度。如果第二分散度小于第一分散度,第二差分?jǐn)?shù)據(jù)選擇器258輸出已經(jīng)通過(guò)上移位操作的差分?jǐn)?shù)據(jù)給該熵編碼器260,并且允許它們?cè)诓襟ES3910被熵編碼。第二差分?jǐn)?shù)據(jù)選擇器258輸出用于DND操作的最大和最小值,用于上移位操作的最大值nKeyMax給該關(guān)鍵字頭編碼器270,并且允許將它們包括在該關(guān)鍵字頭中。
然而,如果第一分散度小于第二分散度,第二差分?jǐn)?shù)據(jù)選擇器258輸出已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)給該熵編碼器260,并且允許它們?cè)诓襟ES3920被熵編碼。然后,第二差分?jǐn)?shù)據(jù)選擇器258僅輸出用于DND操作的最大和最小值nKeyMax和nKeyMin給該關(guān)鍵字頭編碼器270。在本發(fā)明的一最佳實(shí)施例中,標(biāo)準(zhǔn)偏差可以用作第一和第二分散度的度量。
熵編碼器260對(duì)根據(jù)差分?jǐn)?shù)據(jù)的特征的差分?jǐn)?shù)據(jù)執(zhí)行兩個(gè)不同函數(shù)。例如,已經(jīng)通過(guò)DPCM操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)兼?zhèn)湔拓?fù)的值的分開操作的差分?jǐn)?shù)據(jù),因此執(zhí)行編碼每個(gè)差分?jǐn)?shù)據(jù)的符號(hào)以及差分?jǐn)?shù)據(jù)自身的過(guò)程是必要的。另一方面,因?yàn)橐呀?jīng)通過(guò)折疊操作的差分?jǐn)?shù)據(jù)僅具有正值,因此執(zhí)行僅編碼差分?jǐn)?shù)據(jù)的過(guò)程。
在本發(fā)明的一最佳實(shí)施例中,函數(shù)encodeSignedAAC用于編碼該差分?jǐn)?shù)據(jù)和它們的符號(hào),而函數(shù)encodeUnsignedAAC用于僅僅編碼差分?jǐn)?shù)據(jù)。
圖8是函數(shù)encodeSignedAAC例子的一圖表。參考圖8,當(dāng)輸入值是74并且用于編碼該輸入值的比特?cái)?shù)是8時(shí),它的符號(hào)是0,與二進(jìn)制數(shù)1001010相同。符號(hào)和全部位平面用下列方式編碼
第一步二進(jìn)制數(shù)按照從它的最高有效位(MSB)到它的最低位(LSB)的次序在每個(gè)位平面上編碼;第二步檢測(cè)當(dāng)前被編碼的比特是否是0;第三步如果當(dāng)前被編碼的比特不是0,該二進(jìn)制數(shù)的符號(hào)接下來(lái)被編碼;第四步二進(jìn)制數(shù)的剩余比特被編碼。
函數(shù)encodeUnsignedAAC利用關(guān)于該值的范圍編碼不具有符號(hào)的值作為一自適應(yīng)的算術(shù)編碼比特流。該函數(shù)與函數(shù)encodeSignedAAC除了存在一符號(hào)范圍幾乎相同。
圖9A到9J是顯示按照本發(fā)明的一最佳實(shí)施例已經(jīng)經(jīng)受操作的關(guān)鍵字?jǐn)?shù)據(jù)的圖表。在圖9A到9J中,X軸表示每個(gè)關(guān)鍵字?jǐn)?shù)據(jù)的索引,Y軸表示關(guān)鍵字?jǐn)?shù)據(jù)的值。
圖9A是一顯示輸入到本發(fā)明的編碼器中的原始的關(guān)鍵字?jǐn)?shù)據(jù)的圖表。圖9A中所示的關(guān)鍵字?jǐn)?shù)據(jù)輸出到量化器210,然后利用9量化比特量化以便獲得圖9B中所示的量化的關(guān)鍵字?jǐn)?shù)據(jù)。如果DPCM在圖9B中所示的量化的關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行,則獲得圖9C中所示的差分?jǐn)?shù)據(jù)。
接下來(lái),量化的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)利用一大約7的模值移位,以便獲得圖9D中所示的差分?jǐn)?shù)據(jù)。此后,如果在移位的差分?jǐn)?shù)據(jù)上執(zhí)行一折疊操作,可以獲得如圖9E中所示的僅僅具有正值的數(shù)據(jù)。
對(duì)圖9E中所示的折疊數(shù)據(jù)執(zhí)行DND操作的結(jié)果示出在圖9F到9H中。具體地說(shuō),對(duì)折疊數(shù)據(jù)執(zhí)行一分開操作的結(jié)果在圖9F中所示。如圖9F中所示,正關(guān)鍵字?jǐn)?shù)據(jù)值從0到28變動(dòng),負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值從-29到0變動(dòng),其中負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值的范圍大于正關(guān)鍵字?jǐn)?shù)據(jù)值的范圍。相應(yīng)地,用于要求在圖9F中所示的數(shù)據(jù)上執(zhí)行一上分操作,并且該上分操作的結(jié)果在圖9G中所示。
作為上分操作的結(jié)果,負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值的范圍顯著地縮小以致它遠(yuǎn)小于正關(guān)鍵字?jǐn)?shù)據(jù)值的范圍。在隨后的DND操作的周期中,在上分操作的結(jié)果上執(zhí)行下分操作。圖9H是顯示對(duì)圖9G中所示的差分?jǐn)?shù)據(jù)執(zhí)行下分操作的結(jié)果的圖表。對(duì)圖9H中所示的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行上移位操作的結(jié)果示出在圖9I中。
如圖9A到9G中所示,關(guān)鍵字?jǐn)?shù)據(jù)和差分?jǐn)?shù)據(jù)的范圍逐漸地減小。然而,如圖9H和9I中所示,差分?jǐn)?shù)據(jù)的范圍在上移位操作之后和以前相比顯著的增加,表明該差分?jǐn)?shù)據(jù)已經(jīng)通過(guò)圖9H中所示的下分操作是如圖9J中所示最后編碼的數(shù)據(jù)。
在關(guān)鍵字頭編碼器270中編碼的信息和保存在關(guān)鍵字頭的信息將要在下文中描述。
當(dāng)輸入要編碼的關(guān)鍵字?jǐn)?shù)據(jù)時(shí),關(guān)鍵字頭編碼器270編碼關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位和被編碼的鍵數(shù)目。接下來(lái),關(guān)鍵字頭編碼器270接收有關(guān)是否存在在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域上的信息,該信息已經(jīng)通過(guò)在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中線性關(guān)鍵字編碼,接收在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中來(lái)自線性關(guān)鍵字編碼器200的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目,以及接收已經(jīng)通過(guò)來(lái)自浮點(diǎn)數(shù)換算器205的浮點(diǎn)數(shù)換算的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)。
在浮點(diǎn)數(shù)換算器205接收可以導(dǎo)致最小值量化誤差的最大和最小值并且轉(zhuǎn)換它們成為浮點(diǎn)數(shù)的情況下,轉(zhuǎn)換的最大和最小值從浮點(diǎn)數(shù)換算器205輸入到關(guān)鍵字頭編碼器270中,以便它們能被再次使用于反向量化。另外,量化比特的長(zhǎng)度也輸入關(guān)鍵字頭編碼器270,并且被包括在該關(guān)鍵字頭中。
關(guān)鍵字頭編碼器270接收DPCM的階以及來(lái)自DPCM處理器220的DPCM每個(gè)周期中的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù),并且接收已經(jīng)用于來(lái)自移位器230的移位操作的一模值。另外,關(guān)鍵字頭編碼器270從DND處理器250得到的關(guān)于上移位操作是否已經(jīng)執(zhí)行的信息,通過(guò)DND的階差分?jǐn)?shù)據(jù)的分散度可以被最小化,并且最大和最小化在DND操作的每個(gè)周期中的值。
最后,關(guān)鍵字頭編碼器270從熵編碼器260接收用于編碼的比特?cái)?shù),并且作為一關(guān)鍵字頭編碼它。
按照本發(fā)明的最佳實(shí)施例,關(guān)鍵字?jǐn)?shù)據(jù)編碼器的一例子已經(jīng)在上面描述了。很明顯,對(duì)于本領(lǐng)域的普通技術(shù)人員,本發(fā)明可以概括在不同方式中。在下文中,按照本發(fā)明的其它最佳實(shí)施例的能夠增加編碼關(guān)鍵字?jǐn)?shù)據(jù)效率的關(guān)鍵字?jǐn)?shù)據(jù)編碼器的其它例子將要參考圖2C到2G更充分地描述。在圖2A到2G中,相同標(biāo)號(hào)數(shù)字表示相同元件。
參考圖2C,按照本發(fā)明的另一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器包含一量化器210、一DPCM處理器220、一移位器230、一折疊處理器240、一DND處理器250以及一熵編碼器260。
輸入到關(guān)鍵字?jǐn)?shù)據(jù)編碼器中的關(guān)鍵字?jǐn)?shù)據(jù)首先輸入到量化器210中,然后量化成預(yù)定的量化比特。量化的關(guān)鍵字?jǐn)?shù)據(jù)輸入到DPCM處理器220中。然后,DPCM處理器220執(zhí)行關(guān)于量化的關(guān)鍵字?jǐn)?shù)據(jù)的DPCM操作,并且輸出DPCM操作的結(jié)果即差分?jǐn)?shù)據(jù)到該移位器230。移位器230獲得一具有差分?jǐn)?shù)據(jù)中最高頻率的差分?jǐn)?shù)據(jù)(一模)并且執(zhí)行從每個(gè)差分?jǐn)?shù)據(jù)中減去該模的移位操作。接下來(lái),移位器230輸出移位操作的結(jié)果到該折疊處理器240。該折疊處理器240轉(zhuǎn)換從移位器230輸入的差分?jǐn)?shù)據(jù)到正或者負(fù)數(shù)區(qū)域中,并且輸出該轉(zhuǎn)換的結(jié)果到DND處理器250。DND處理器250對(duì)從折疊處理器240輸入的差分?jǐn)?shù)據(jù)執(zhí)行DND操作。接下來(lái),DND處理器250從已經(jīng)通過(guò)移位操作的差分?jǐn)?shù)據(jù)、已經(jīng)通過(guò)折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)中選出可以最小化用于編碼的比特?cái)?shù)的差分?jǐn)?shù)據(jù),并且輸出所選擇的差分?jǐn)?shù)據(jù)到熵編碼器260,以便關(guān)鍵字?jǐn)?shù)據(jù)可以是編碼。這里,DND處理器250不必對(duì)已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)執(zhí)行上移位操作,并且該關(guān)鍵字?jǐn)?shù)據(jù)編碼器顯示一比傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器高得多的編碼效率。
參考圖2D,按照本發(fā)明另一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器包含一量化器210、一DPCM處理器220、一移位器230、一折疊處理器240、一DND處理器250以及一熵編碼器260。
關(guān)鍵字?jǐn)?shù)據(jù)首先輸入到量化器210中,并利用預(yù)定的量化比特量化。量化的關(guān)鍵字?jǐn)?shù)據(jù)輸入到DPCM處理器220中。然后,DPCM處理器220對(duì)量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行一DPCM操作,并且輸出DPCM操作的結(jié)果即差分?jǐn)?shù)據(jù)到該移位器230。移位器230獲得一差分?jǐn)?shù)據(jù)中具有最高頻率的差分?jǐn)?shù)據(jù)(一模)并且執(zhí)行從每個(gè)差分?jǐn)?shù)據(jù)中減去該模的移位操作。接下來(lái),移位器230輸出移位操作的結(jié)果到DND處理器250。DND處理器250在從移位器230輸入的移位的差分?jǐn)?shù)據(jù)上執(zhí)行DND操作。接下來(lái),DND處理器250算出在已經(jīng)通過(guò)移位操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)之間編碼需要的少量比特?cái)?shù)的差分?jǐn)?shù)據(jù)。如果已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)變?yōu)榫哂芯幋a需要的小數(shù)量,DND處理器250在其上執(zhí)行上移位操作。接下來(lái),DND處理器250從已經(jīng)通過(guò)上移位操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)中選出來(lái)具有編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)。則DND處理器250輸出所選擇的差分?jǐn)?shù)據(jù)到該熵編碼器260。熵編碼器在從DND處理器250輸入的差分?jǐn)?shù)據(jù)上執(zhí)行熵編碼,由此產(chǎn)生一比特流。在當(dāng)前實(shí)施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器顯示比傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器更高的編碼效率即使它不執(zhí)行一折疊操作。
參考圖2E,當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)輸入時(shí),按照本發(fā)明另一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器編碼差分?jǐn)?shù)據(jù)并且輸出它們。
關(guān)鍵字?jǐn)?shù)據(jù)編碼器包含一移位器230、一折疊處理器240、一DND處理器250、以及一熵編碼器260。
具有輸入的差分?jǐn)?shù)據(jù)中最高頻率的差分?jǐn)?shù)據(jù)從移位器230中的輸入的差分?jǐn)?shù)據(jù)中減去,并且減的結(jié)果輸出到折疊處理器240。折疊處理器240轉(zhuǎn)換從折疊處理器240輸出的差分?jǐn)?shù)據(jù)成為正數(shù)或者負(fù)數(shù)區(qū)域并且輸出轉(zhuǎn)換的結(jié)果到DND處理器250。DND處理器250在從折疊處理器240輸入的差分?jǐn)?shù)據(jù)上執(zhí)行DND操作,并且算出可以最小化在已經(jīng)通過(guò)該移位操作的差分?jǐn)?shù)據(jù)、已經(jīng)通過(guò)折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)中編碼所需要的比特?cái)?shù)的差分?jǐn)?shù)據(jù)。如果已經(jīng)通過(guò)移位操作或者折疊操作的差分?jǐn)?shù)據(jù)認(rèn)為能夠最小化編碼所需要的比特?cái)?shù),DND處理器250輸出它們到熵編碼器260以便關(guān)鍵字?jǐn)?shù)據(jù)可以被編碼。另一方面,在已經(jīng)通過(guò)DND操作的差分?jǐn)?shù)據(jù)選擇的情況下,DND處理器250對(duì)差分?jǐn)?shù)據(jù)執(zhí)行上移位操作。接下來(lái),DND處理器250從已經(jīng)通過(guò)DND操作和已經(jīng)通過(guò)上移位操作的差分?jǐn)?shù)據(jù)中選出來(lái)具有編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)。接下來(lái),所選擇的差分?jǐn)?shù)據(jù)輸出到熵編碼器260。熵編碼器260編碼DND操作250的輸出,因此產(chǎn)生一比特流。在當(dāng)前實(shí)施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器也顯示一傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器更高的編碼效率。
圖2F是按照本發(fā)明另一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器的方框圖。參考圖2F,關(guān)鍵字?jǐn)?shù)據(jù)編碼器包含DND操作器252、上移位操作器256、一差分?jǐn)?shù)據(jù)選擇器258b、和一熵編碼器260。
DND操作器在輸入其中的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)上執(zhí)行上面描述的DND操作,并且輸出DND的差分?jǐn)?shù)據(jù)到上移位操作器256和差分?jǐn)?shù)據(jù)選擇器258b。上移位操作器256在從DND操作器252輸入的差分?jǐn)?shù)據(jù)上執(zhí)行一上面描述的上移位操作,然后輸出上移位操作的結(jié)果到該差分?jǐn)?shù)據(jù)選擇器258b。差分?jǐn)?shù)據(jù)選擇器258b比較編碼從DND操作器252輸入的DND的差分?jǐn)?shù)據(jù)所需要的比特?cái)?shù)和編碼從上移位操作器256輸入的差分?jǐn)?shù)據(jù)所需要的比特?cái)?shù)并且輸出編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)到該熵編碼器260以便使關(guān)鍵字?jǐn)?shù)據(jù)比特流輸出。在當(dāng)前實(shí)施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器也顯示一比傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器更高的編碼效率。
在圖2G中,顯示按照本發(fā)明另一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器,通過(guò)確設(shè)置為輸入的差分?jǐn)?shù)據(jù)中的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域增加編碼關(guān)鍵字?jǐn)?shù)據(jù)的效率。關(guān)鍵字?jǐn)?shù)據(jù)編碼器包含線性關(guān)鍵字編碼器200、浮點(diǎn)數(shù)換算器205、量化器210、熵編碼器280和關(guān)鍵字頭編碼器270。
當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)輸入到圖2G中所示的關(guān)鍵字?jǐn)?shù)據(jù)編碼器中時(shí),線性關(guān)鍵字編碼器200在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中搜索關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域,即,線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域,并且輸出線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的該首尾關(guān)鍵字?jǐn)?shù)據(jù)到浮點(diǎn)數(shù)換算器205。輸入的關(guān)鍵字?jǐn)?shù)據(jù)除線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域外輸入到量化器210。輸入到量化器210中的關(guān)鍵字?jǐn)?shù)據(jù)利用預(yù)定的量化比特量化,并且輸出到該熵編碼器280。熵編碼器280通過(guò)執(zhí)行預(yù)定的操作在它們上編碼從量化器210輸入的量化的關(guān)鍵字?jǐn)?shù)據(jù),并由此作為比特流輸出該操作的結(jié)果。
浮點(diǎn)數(shù)換算器205轉(zhuǎn)換線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的由二進(jìn)制數(shù)表示的首尾關(guān)鍵字?jǐn)?shù)據(jù)成為十進(jìn)制并且輸出轉(zhuǎn)換的結(jié)果到該關(guān)鍵字頭編碼器270,以便它們可以被包括在該比特流中。在當(dāng)前實(shí)施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器可以進(jìn)一步包含一量化誤差最小化器215。
利用關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)編碼動(dòng)畫數(shù)據(jù)的過(guò)程參考圖10A和10B將要更充分地描述。
關(guān)鍵字值動(dòng)畫路徑中,關(guān)鍵字值編碼器搜索表示幾乎與關(guān)鍵字值的動(dòng)畫路徑相同的一組點(diǎn),而在這樣情況下可以縮小大量關(guān)鍵字值并且其余通過(guò)鍵選擇標(biāo)志表示。例如,假定給定關(guān)鍵字值表示圖10A中所示的一曲線并且選擇四個(gè)點(diǎn),鍵選擇標(biāo)志具有如圖10B中所示的一些值。這樣的鍵選擇標(biāo)志通過(guò)熵編碼器260編碼以便只有相應(yīng)于鍵選擇標(biāo)志的關(guān)鍵字值數(shù)據(jù)被編碼。
SDL程序代碼的一例子和已經(jīng)用于上述的編碼過(guò)程的變量將要參考圖14A到14E更充分地描述。
類(class)關(guān)鍵字頭的程序代碼示出在圖14A中。首先描述用于程序代碼的變量。
關(guān)鍵字頭數(shù)據(jù)是解碼關(guān)鍵字?jǐn)?shù)據(jù)所需要的信息單元。關(guān)鍵字頭的主要信息包含關(guān)鍵字的數(shù)目、量化比特、內(nèi)部關(guān)鍵字(intra key)數(shù)據(jù)、DND頭和解碼所需要的比特?cái)?shù)。nKeyQBit表示用于反向量化的量化比特,用于恢復(fù)浮點(diǎn)數(shù)關(guān)鍵字值,nNumKeyCodingBit表示代表關(guān)鍵字?jǐn)?shù)據(jù)數(shù)目的nNumberOfKey的比特量,而nKeyDigit表示原始關(guān)鍵字?jǐn)?shù)據(jù)的有效數(shù)字的最大數(shù),并且用于舍入所解碼的值。在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域上的信息包括在該關(guān)鍵字頭中的情況下,標(biāo)志blsLinearKeySubRegion設(shè)置為1,在這樣情況下,包括在關(guān)鍵字的整個(gè)范圍內(nèi)部的預(yù)定子區(qū)域內(nèi)的一些關(guān)鍵字可以利用跟隨標(biāo)志blsLinearKeySubRegion的解碼的標(biāo)題信息進(jìn)行計(jì)算。BRangeFlag代表關(guān)鍵字?jǐn)?shù)據(jù)的范圍是否在0和1之間。如果關(guān)鍵字?jǐn)?shù)據(jù)不在0到1之間,則從類KeyMinMax解碼最小值和最大值。最大和最小值中的每個(gè)可以被分成尾數(shù)和指數(shù)。nBitSize表示bQIntraKey的比特大小,nKeyShift表示nKeyMax原始的比特大小。nQIntraKey表示首先量化的內(nèi)部數(shù)據(jù)的大小,與表示nQIntraKey符號(hào)的nQIntraKeySign聯(lián)合,并被用作恢復(fù)其它量化的關(guān)鍵字?jǐn)?shù)據(jù)的基礎(chǔ)。在用于內(nèi)插器壓縮的符號(hào)比特之中,0表示正值,1表示負(fù)值。nKDPCMOrder與從DPCM的階減去1的結(jié)果相同。DPCM的階在1到3之間變動(dòng),并且與內(nèi)部數(shù)據(jù)的數(shù)目相同。
nkeyShift與符號(hào)位nKeyShiftSign一起是代表關(guān)鍵字?jǐn)?shù)據(jù)解碼器中的移位總量的整數(shù)。當(dāng)bShiftFlag設(shè)置為1時(shí),解碼nKeyShift和nKeyShiftSign。nDNDOrder是DND的階。DND將在隨后按照本發(fā)明一最佳實(shí)施例的關(guān)鍵字?jǐn)?shù)據(jù)解碼器詳細(xì)描述。如果nDNDOrder是7,則解碼bNoDND。布爾值nDNDOrder表示反向DND是否被執(zhí)行的信息。nKeyMax和nKeyMin分別表示用在DND操作的相鄰周期中的最大和最小值。nKeyCodingBit是用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的比特。bSignedAACFlag顯示該解碼方法將要用于AAC解碼。If bSignedAACFlag是0,執(zhí)行unsignedAAC解碼,否則執(zhí)行signedAAC解碼。bKeyInvertDownFlag是表示nKeyInvertDown是否要使用的信息的布爾值。nKeyInvertDown是一整數(shù),并且基于該整數(shù)轉(zhuǎn)換量化的關(guān)鍵字?jǐn)?shù)據(jù),以便量化的關(guān)鍵字?jǐn)?shù)據(jù)變?yōu)椴淮笥?1的自然(native)值。如果nKeyInvertDown是-1,則不執(zhí)行下移位操作。
圖14B是顯示類LinearKey的程序代碼的圖表。在圖14B中,nNumLinearKeyCodingBit是表示編碼預(yù)定數(shù)目的關(guān)鍵字所需要的比特?cái)?shù),其中預(yù)定數(shù)目的關(guān)鍵字可以線性預(yù)測(cè)。
圖14C是顯示類KeySelectionFlag的程序代碼的圖表。在圖14C中,keyFlag是一布爾陣列,表示第i個(gè)關(guān)鍵字值是否已經(jīng)解碼的信息。nNumOfKeyValue是表示要解碼的關(guān)鍵字值的數(shù)目的整數(shù)。
圖14D是顯示類KeyMinMax程序代碼的圖表。在圖14D中,bMinKeyDigitSame表示在所有關(guān)鍵字中最高有效位的數(shù)目是否與這些關(guān)鍵字中的最大值的最高有效位數(shù)目相同。nMinKeyDigit表示這些關(guān)鍵字中的最大值最高位比特的數(shù)目。nMinKeyMantissaSign表示nMinKeyMantissa的符號(hào)。NMinKeyMantissa表示這些關(guān)鍵字中的最小值的尾數(shù)。
nMinKeyExponentSign指的是nMinKeyExponent的符號(hào)。nMinKeyExponent表示這些關(guān)鍵字中的最小值的指數(shù)。
fKeyMin表示這些關(guān)鍵字中的最小值。nMaxKeyDigitSame表示全部關(guān)鍵字的最高有效位的數(shù)目nKeyDigit是否與這些關(guān)鍵字中的最大值的最高有效位的數(shù)目相同。nMaxKeyDigit表示這些關(guān)鍵字中的最大值的最高有效位數(shù)目。nMaxKeyMantissaSign表示nMaxKeyMantissa的符號(hào)。nMaxKeyMantissa表示這些關(guān)鍵字中的最大值的尾數(shù)。
bSameExponent表示這些關(guān)鍵字中的最大值的指數(shù)是否與nMinKeyExponent相同。nMaxKeyExponentSign表示nMaxKeyExponent的符號(hào)。nMaxKeyExponent表示這些關(guān)鍵字中的最大值的指數(shù)。fKeyMax表示這些關(guān)鍵字中的最大值。
圖14E是顯示類Key程序代碼的圖表。在圖14E中,nQKey表示從比特流解碼的量化的關(guān)鍵字?jǐn)?shù)據(jù)陣列。KeyContext表示用于讀出nQKey大小的某一范圍。KeySignContext表示用于讀出nQKey符號(hào)的一范圍。
decodeUnsignedAAC是用于利用一給定范圍執(zhí)行無(wú)符號(hào)的解碼的函數(shù),將要在下文中更充分地描述,而decodeSignedAAC是一利用另一給定范圍執(zhí)行符號(hào)解碼的函數(shù),將在隨后進(jìn)行描述。
在下文中,將要參考圖11和12描述按照本發(fā)明的一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。
圖11A是按照本發(fā)明的一最佳實(shí)施例的解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置。用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的該裝置接收一編碼的比特流,并且通過(guò)解碼將其重建成關(guān)鍵字?jǐn)?shù)據(jù)。
用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括關(guān)鍵字頭解碼器370和關(guān)鍵字?jǐn)?shù)據(jù)解碼器。該關(guān)鍵字?jǐn)?shù)據(jù)解碼器包含熵解碼器360、反向DND處理器350、反向折疊處理器340、反向移位器330、反向DPCM處理器320、反向量化器310、線性關(guān)鍵字解碼器300和浮點(diǎn)數(shù)逆換算器305。
圖12是按照本發(fā)明的一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖。參考圖11A和12,由關(guān)鍵字?jǐn)?shù)據(jù)壓縮成的比特流被輸入到關(guān)鍵字頭解碼器370和熵解碼器360中。
在步驟S4000,關(guān)鍵字頭解碼器370解碼解碼每步所需要的信息單元,并且將他們提供到它們的相應(yīng)的解碼步驟。由關(guān)鍵字頭解碼器370解碼的信息將隨每個(gè)解碼步驟進(jìn)行描述。
熵解碼器360從關(guān)鍵字頭解碼器370接收解碼的差分?jǐn)?shù)據(jù)的數(shù)目和已經(jīng)用于編碼的比特?cái)?shù),即,用于解碼的比特?cái)?shù),并且在步驟S4100,解碼輸入的比特流。差分?jǐn)?shù)據(jù)的數(shù)目等于從關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目減去通過(guò)執(zhí)行DPCM獲得的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目的結(jié)果。
熵解碼器360以包括在該比特流內(nèi)預(yù)定的信息為基礎(chǔ)確定被解碼的差分?jǐn)?shù)據(jù)是否具有負(fù)值或者正值,例如,在當(dāng)前實(shí)施例中的bSignedAACFlag。如果編碼的差分?jǐn)?shù)據(jù)具有負(fù)值,則熵解碼器360利用函數(shù)decodeSignedAAC( )解碼它們。另一方面,如果編碼差分?jǐn)?shù)據(jù)只具有正值,則熵解碼器360利用函數(shù)decodeUnsignedAAC( )解碼它們。此后,解碼的差分?jǐn)?shù)據(jù)被傳輸?shù)椒聪駾ND處理器350。
隨后描述按照本發(fā)明的一最佳實(shí)施例的、用于實(shí)現(xiàn)這樣的用于解碼比特流的函數(shù)的程序代碼的例子。
反向DND處理器350從解碼器370接收DND的階和DND每個(gè)周期中的最大值nKeyMax。
如果DND的階是-1,這意味著被解碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)通過(guò)DPCM操作而不是經(jīng)歷DND的移位操作進(jìn)行了熵解碼,并且該方法直接轉(zhuǎn)移到執(zhí)行反向移位操作的步驟上。如果DND的階是0,這意味著被解碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)經(jīng)歷一折疊操作而不是經(jīng)歷DND進(jìn)行了熵解碼,因此該方法直接轉(zhuǎn)移到執(zhí)行反向折疊操作的步驟上。
反向DND處理器350確定被解碼的編碼差分?jǐn)?shù)據(jù)是否已經(jīng)通過(guò)上移位操作在步驟S4170被編碼。在本發(fā)明的一最佳實(shí)施例中,通過(guò)檢查包括在一比特流內(nèi)的nKeyInvertDown是否大于0來(lái)確定被解碼的編碼差分?jǐn)?shù)據(jù)是否已經(jīng)經(jīng)歷上移位操作進(jìn)行了編碼。
如果解碼的編碼差分?jǐn)?shù)據(jù)沒有經(jīng)過(guò)上移位操作,該方法轉(zhuǎn)移到執(zhí)行反向DND的步驟上。另一方面,如果被解碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)過(guò)上移位操作,則在步驟S4200,將通過(guò)執(zhí)行上移位操作從正數(shù)區(qū)域轉(zhuǎn)移到一負(fù)數(shù)區(qū)域的差分?jǐn)?shù)據(jù)移回到該負(fù)數(shù)區(qū)域。在本發(fā)明的一最佳實(shí)施例中,已經(jīng)過(guò)上移位操作的差分?jǐn)?shù)據(jù)通過(guò)執(zhí)行一下移位操作(向下倒置(invert-down)操作)進(jìn)行恢復(fù),該操作由下列等式表示。
invert-down(v) …(14)=v (if v≤nKeyInvertDown)=nKeyInvertDown-v(if v>nKeyInvertDown)這里,nKeyInvertDown具有與用于上移位操作的最大值nKeyMax一樣的值。作為下移位操作的結(jié)果,具有基于nKeyInvertDown的值的差分?jǐn)?shù)據(jù)變?yōu)?1以下的負(fù)值。
根據(jù)DND的每個(gè)周期中的最大值有選擇地對(duì)已經(jīng)過(guò)下移位操作的差分?jǐn)?shù)據(jù)執(zhí)行反下分操作或者上分操作。
參考圖13,反向DND處理器350執(zhí)行與在編碼期間已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)同樣多次的反向DND操作。換句話說(shuō),反向DND處理器350設(shè)置一等于DND的階的反向DND的階的初始值。接下來(lái),每當(dāng)反向DND處理器350執(zhí)行一反向DND操作,反向DND處理器350就從反向DND的階的初始值中減去1,并且反向DND處理器350保持執(zhí)行反向DND操作直到反向DND的階變成1。在步驟S4310,反向DND處理器350在DND每個(gè)周期中搜索nKeyMax并且檢查每個(gè)nKeyMax是否不小于0。
如果nKeyMax小于0,這意味著上分操作已經(jīng)在編碼過(guò)程中執(zhí)行了,并由此在步驟S4320,反向DND處理器350通過(guò)執(zhí)行一上分操作擴(kuò)展被解碼的差分?jǐn)?shù)據(jù)的范圍到負(fù)數(shù)區(qū)域。在本發(fā)明的一最佳實(shí)施例中,可以使用由等式(15)定義的反上分操作。
inverse-divide-up(v)---(15)]]>=v(if v≥0)]]>=(nKeyMaxi-1)-v-12(if v<0,vmod2≠0)]]>=v2(if v<0,vmod2≠0)]]>然而,如果nKeyMax不小于0,則反向DND處理器350檢測(cè)反向DND的階是否是1。如果反向DND的階不是1,這意味著在編碼過(guò)程中已經(jīng)對(duì)被解碼的差分?jǐn)?shù)據(jù)執(zhí)行了下分操作,并由此在步驟S4340,反向DND處理器350通過(guò)執(zhí)行一反下分操作擴(kuò)展差分?jǐn)?shù)據(jù)的范圍到一正數(shù)區(qū)域。
inverse-divide-down(v)---(16)]]>=v(if v≥0)]]>=(nKeyMaxi+1)+v-12(if v<0,vmod2≠0)]]>=v2(if v<0,vmod2=0)]]>如果nKeyMax不小于0,并且反向DND的階是1,則在步驟S4350,反向DND處理器350在執(zhí)行一反向分開操作之后結(jié)束整個(gè)反向DND操作。在本發(fā)明的一最佳實(shí)施例中,可以使用根據(jù)方程式(17)定義的反向分開操作。
inverse-divide(v) …(17)=v (if v≥0)=v+(nKeyMax0+1)(if v<0)已經(jīng)過(guò)反向DND操作的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)輸入到反向折疊處理器340中,并且在步驟S4400,反向折疊處理器340對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊操作,以便曾經(jīng)是僅用在正數(shù)區(qū)域中的差分?jǐn)?shù)據(jù)被分成正值和負(fù)值。在本發(fā)明的一最佳實(shí)施例中,可以使用根據(jù)方程式(18)定義的一反向折疊操作。
inverse-fold(v)=(v+1)2(if vmod2≠0)---(18)]]>=v2(if vmod2=0)]]>=0(if v=0)]]>已經(jīng)過(guò)反向折疊操作的差分?jǐn)?shù)據(jù)輸出到該反向移位器330,該反向移位器330添加一已經(jīng)被用于編碼過(guò)程并且從關(guān)鍵字頭解碼器370輸入的模nKeyShift到該從反向折疊處理器340輸入的差分?jǐn)?shù)據(jù),在步驟S4500。這操作通過(guò)下列等式表示。
inverse-shift(v)=v+nKeyShift…(19)在步驟S4600,反向DPCM處理器320利用從關(guān)鍵字頭編碼器370輸入的DPCM的階,恢復(fù)從反向移位器330輸入的差分?jǐn)?shù)據(jù)成為量化的關(guān)鍵字?jǐn)?shù)據(jù)。反向移位器330執(zhí)行與下列方程式(20)DPCM的階同樣多次的反向DPCM操作。
v(i+1)=v(i)+delta(i)…(20)這里,i表示差分?jǐn)?shù)據(jù)和關(guān)鍵字?jǐn)?shù)據(jù)的索引,v表示整數(shù)陣列,delta(i)表示差分?jǐn)?shù)據(jù)。
已經(jīng)過(guò)反向DPCM操作的量化的關(guān)鍵字?jǐn)?shù)據(jù)輸入到反向量化器310中。然后,反向量化器310從關(guān)鍵字頭解碼器370接收關(guān)于量化比特的大小nKeyQBit和用于反向量化的最大和最小值是否通過(guò)浮點(diǎn)數(shù)換算器205編碼的信息,并且在步驟S4700,利用下列等式轉(zhuǎn)換量化的關(guān)鍵字?jǐn)?shù)據(jù)成為反向地量化的關(guān)鍵字?jǐn)?shù)據(jù)。
inverse-quantize(v)=fKeyMin+v2nKeQBit-1×(fKeyMax-fKeyMin)---(21)]]>如果用于量化的最大和最小值在編碼關(guān)鍵字?jǐn)?shù)據(jù)過(guò)程中沒有通過(guò)浮點(diǎn)數(shù)換算器205轉(zhuǎn)換,則等式(21)中所示的fKeyMin和fKeyMax分別設(shè)置為0和1。然而,如果用于量化的最大和最小值已經(jīng)通過(guò)浮點(diǎn)數(shù)換算器205轉(zhuǎn)換,則通過(guò)該浮點(diǎn)數(shù)逆換算器305反向地轉(zhuǎn)換的最大和最小值分別被用作反向量化的最大和最小值。
隨后描述實(shí)現(xiàn)針對(duì)反向量化的反向DND操作的程序代碼的例子。
從反向量化器310輸出的解碼的關(guān)鍵字?jǐn)?shù)據(jù)被添加到在線性關(guān)鍵字解碼器300中解碼的關(guān)鍵字?jǐn)?shù)據(jù),因此構(gòu)造解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
在下文中,將描述一線性關(guān)鍵字譯碼過(guò)程。
關(guān)鍵字頭解碼器370從一比特流解碼關(guān)鍵字頭信息。如果線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域上的信息存在于該比特流中,則關(guān)鍵字頭解碼器370輸出解碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字所需要的信息到浮點(diǎn)數(shù)換算器305,并且輸出作為線性關(guān)鍵字編碼的關(guān)鍵字?jǐn)?shù)目到該線性關(guān)鍵字解碼器300。
浮點(diǎn)數(shù)逆換算器305反向地轉(zhuǎn)換通過(guò)十進(jìn)制數(shù)表示的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字成為二進(jìn)制數(shù),并且輸出二進(jìn)制數(shù)到線性關(guān)鍵字解碼器300。
假定兩個(gè)被解碼的浮點(diǎn)數(shù)被認(rèn)為是fKeyMin和fKeyMax,則解碼fKeyMin的過(guò)程如下。
關(guān)鍵字頭解碼器370從比特流讀出fKeyMin數(shù)位。如果fKeyMin的數(shù)位是0,fKeyMin設(shè)置0,并且為了解碼fKeyMax,從該比特流的數(shù)位中讀出fKeyMax。如果fKeyMax的數(shù)位(digit number)不小于8,這意味著fKeyMax已經(jīng)按照IEEE標(biāo)準(zhǔn)754編碼。因此,浮點(diǎn)數(shù)fKeyMax在它的32比特讀出之后被解碼。
然而,如果fKeyMax數(shù)位在1和7之間,則關(guān)鍵字頭解碼器370從該比特流讀出一符號(hào)位。在本發(fā)明的一最佳實(shí)施例中,如果該符號(hào)位是1,則將MinKeyMantissaSign設(shè)置為-1。另一方面,如果該符號(hào)位是0,則將MinKeyMantissaSign設(shè)置為1。此后,解碼所需要的比特?cái)?shù)參考圖表1獲得,圖表1顯示尾數(shù)的數(shù)位和編碼所需要的比特?cái)?shù)之間的關(guān)系。接下來(lái),與編碼所需要的比特?cái)?shù)同樣多的比特流的比特被讀出,并且保存在nMinKeyMantissa中。然后,比特流的下一位被讀出,并且以與尾數(shù)的符號(hào)保存在MinKeyMantissaSign中同樣的方式,將其保存在MinKeyExponentSign。相應(yīng)于指數(shù)值的該比特流的隨后6比特被讀出,并且保存在nMinKeyExponent中。
浮點(diǎn)數(shù)逆換算器305通過(guò)替代從關(guān)鍵字頭解碼器370輸入的值成為等式(22)來(lái)恢復(fù)fKeyMax。
fKeyMin=MinKeyMantissaSign*nMinKeyMantissa10MinKeyExponentSign*nMinKeyExponent---(22)]]>恢復(fù)fKeyMax的過(guò)程與恢復(fù)fKeyMin的過(guò)程相同。具體地說(shuō),在從該比特流讀出fKeyMax的指數(shù)以前,它確定是否與fKeyMin的指數(shù)一樣的值被用作fKeyMax的指數(shù)。如果沒有將與fKeyMin的指數(shù)一樣的值用作fKeyMin的指數(shù),則以從比特流讀出的fKeyMin的指數(shù)同樣的方法,從該比特流讀出fKeyMax的指數(shù)。
線性關(guān)鍵字解碼器300從浮點(diǎn)數(shù)逆換算器305接收線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字,并且按照下列方程式(23)解碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域。
Keyi=fKeyMin+(fKeyMax-fKeyMin)*i(nNumberOfLinearKey-1)---(23)]]>(i=0,…,nNumberOfLinearKey-1)這里,fKeyMin和fKeyMax分別表示線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的該首尾關(guān)鍵字?jǐn)?shù)據(jù)。
使用上述的方法,將在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中解碼的關(guān)鍵字?jǐn)?shù)據(jù)添加到從反向量化器310輸出的關(guān)鍵字?jǐn)?shù)據(jù)上,然后將添加后的結(jié)果作為最終的關(guān)鍵字?jǐn)?shù)據(jù)輸出。
已經(jīng)在上面描述了按照本發(fā)明一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置的一例子。很明顯,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),本發(fā)明可以以不同方式實(shí)現(xiàn)。在下文中,將參考圖11B到11E描述用于解碼關(guān)鍵字?jǐn)?shù)據(jù)本裝置的不同實(shí)施例。圖11A到11E中相同標(biāo)號(hào)數(shù)字表示相同元件。
參考圖11B,用于按照本發(fā)明另一最佳實(shí)施例的、解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括熵解碼器360、反向DND操作器352、反向折疊處理器340、反向移位器330、反向DPCM處理器320和反向量化器310。
當(dāng)由關(guān)鍵字?jǐn)?shù)據(jù)編碼成的比特流輸入到用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置中時(shí),熵解碼器360熵解碼輸入的比特流,并且輸出熵解碼的結(jié)果,即,解碼的差分?jǐn)?shù)據(jù)到反向DND操作器352。反向DND操作器352確定輸入的差分?jǐn)?shù)據(jù)是否已經(jīng)過(guò)基于關(guān)于該輸入的差分?jǐn)?shù)據(jù)的DND的階的DND操作。如果差分?jǐn)?shù)據(jù)已經(jīng)過(guò)DND操作,則反向DND操作器352對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,并且輸出反向DND操作的結(jié)果。如果差分?jǐn)?shù)據(jù)沒有經(jīng)過(guò)DND操作,則反向DND操作器352將其分流。
反向折疊處理器340檢測(cè)從反向DND操作器352輸入的差分?jǐn)?shù)據(jù)是否已經(jīng)經(jīng)過(guò)了使用DND的階的折疊操作,如果該差分?jǐn)?shù)據(jù)已經(jīng)過(guò)折疊操作,則對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊操作。如果該差分?jǐn)?shù)據(jù)沒有經(jīng)過(guò)折疊操作,則該反向DND操作器352將它們分流到該反向移位器330。
反向移位器330對(duì)從反向折疊處理器340輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反向移位操作,并且輸出反向移位操作的結(jié)果到反向DPCM處理器320。反向DPCM處理器320轉(zhuǎn)換從反向移位器330輸入的差分?jǐn)?shù)據(jù)到量化的關(guān)鍵字?jǐn)?shù)據(jù)中,并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù)到反向量化器310。反向量化器310反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
參考圖11C,按照本發(fā)明另一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括熵解碼器360、反向DND處理器350、反向移位器330、反向DPCM處理器320和反向量化器310。
當(dāng)由關(guān)鍵字?jǐn)?shù)據(jù)編碼而成的比特流輸入到用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置中時(shí),熵解碼器360熵解碼輸入的比特流,并且輸出所解碼的差分?jǐn)?shù)據(jù)到反向DND處理器350。反向DND處理器350檢測(cè)從熵解碼器360輸入的差分?jǐn)?shù)據(jù)在編碼關(guān)鍵字?jǐn)?shù)據(jù)的過(guò)程中是否已經(jīng)過(guò)上移位操作。如果輸入的差分?jǐn)?shù)據(jù)已經(jīng)過(guò)上移位操作,則反向DND處理器350在該差分?jǐn)?shù)據(jù)上順序地執(zhí)行一下移位操作和一反向DND操作,并且輸出反向DND操作的結(jié)果。如果該輸入的差分?jǐn)?shù)據(jù)沒有經(jīng)過(guò)上移位操作,則反向DND處理器350對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,并且輸出反向DND操作的結(jié)果到該反向移位器330。
反向移位器330對(duì)從反向DND處理器350輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反向移位操作,并且輸出反向移位操作的結(jié)果到反向DPCM處理器320。反向DPCM處理器320轉(zhuǎn)換從反向移位器330輸入的差分?jǐn)?shù)據(jù)成量化的關(guān)鍵字?jǐn)?shù)據(jù),并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù)到反向量化器310。反向量化器310反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù),并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
參考圖11D,按照本發(fā)明另一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括熵解碼器360、反向上移位操作器356和反向DND操作器352。
所輸入的比特流在熵解碼器360中解碼,在差分?jǐn)?shù)據(jù)中轉(zhuǎn)換并且輸入到反向上移位操作器356中。該反向上移位操作器356對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作,并且輸出下移位操作的結(jié)果到反向DND操作器352。反向DND操作器352對(duì)從上移位操作器356輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)。解碼的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)可以使用一通用的解碼器輸出。
參考圖11E,按照本發(fā)明另一最佳實(shí)施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置解碼一比特流,該比特流已經(jīng)在用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置中使用線性關(guān)鍵字編碼器中進(jìn)行了編碼。用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括熵解碼器380、關(guān)鍵字頭解碼器370、反向量化器310和浮點(diǎn)數(shù)逆換算器305。
所輸入的比特流輸入到熵解碼器380和關(guān)鍵字頭解碼器370中。熵解碼器380熵解碼相應(yīng)于關(guān)鍵字?jǐn)?shù)據(jù)的一部分比特流,在其上執(zhí)行預(yù)定的操作,并且輸出預(yù)定操作的結(jié)果到反向量化器310。關(guān)鍵字頭解碼器370解碼相應(yīng)于關(guān)鍵字頭的另一部分比特流,并且輸出包括在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域內(nèi)的關(guān)鍵字?jǐn)?shù)據(jù)數(shù)目到一線性關(guān)鍵字解碼器。另外,關(guān)鍵字頭解碼器370輸出線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)上的信息到該浮點(diǎn)數(shù)逆換算器305。
反向量化器310反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù),并且輸出反向量化的結(jié)果。線性關(guān)鍵字解碼器使用線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的該首尾關(guān)鍵字?jǐn)?shù)據(jù)解碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域,該首尾關(guān)鍵字?jǐn)?shù)據(jù)是從該浮點(diǎn)數(shù)逆換算器305輸入的。接下來(lái),線性關(guān)鍵字解碼器添加解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)到從反向量化器310輸出的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
下文將參考圖15A到15C描述實(shí)現(xiàn)用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的操作的程序代碼的例子。
圖15A圖解的是實(shí)現(xiàn)函數(shù)decodeSignedAAC( )的程序代碼的例子,該函數(shù)用于借助有關(guān)于值和它們的符號(hào)的范圍(context),解碼沒有來(lái)自已經(jīng)過(guò)自適應(yīng)的算術(shù)編碼的比特流的符號(hào)的值。
圖15B是一說(shuō)明程序代碼例子的圖表,該程序代碼實(shí)現(xiàn)函數(shù)decodeUnsignedAAC( ),該函數(shù)借助于有關(guān)于值和它們的符號(hào)的范圍(context),編碼不具有來(lái)自已經(jīng)過(guò)自適應(yīng)的算術(shù)編碼的比特流的標(biāo)志的值。在圖15B中,qf_decode( )表示用于讀出來(lái)自比特流的一位的函數(shù)。
圖15C是說(shuō)明程序代碼一例子的圖表,該程序代碼實(shí)現(xiàn)上面已經(jīng)描述的、針對(duì)反向量化的反向DND操作。
本發(fā)明可以作為記錄在計(jì)算機(jī)可讀記錄介質(zhì)上的計(jì)算機(jī)可讀代碼實(shí)現(xiàn)。這里,計(jì)算機(jī)可讀記錄媒體包含可以通過(guò)計(jì)算機(jī)系統(tǒng)閱讀的任何種類的記錄媒體。例如,計(jì)算機(jī)可讀記錄媒體包含ROM、RAM、CD-ROM、磁帶、軟盤、光數(shù)據(jù)存儲(chǔ)器、載波(經(jīng)過(guò)國(guó)際互聯(lián)網(wǎng)絡(luò)傳輸?shù)?。計(jì)算機(jī)可讀記錄媒體可以分散到基于網(wǎng)絡(luò)連接的計(jì)算機(jī)系統(tǒng),并且計(jì)算機(jī)可以以分散的方式訪問(wèn)該記錄媒體。
不同于用于編碼解碼關(guān)鍵字?jǐn)?shù)據(jù)的傳統(tǒng)裝置,按照本發(fā)明用于編碼解碼關(guān)鍵字?jǐn)?shù)據(jù)的方法和裝置可以通過(guò)執(zhí)行移位操作、折疊操作、針對(duì)通過(guò)執(zhí)行DPCM操作獲得的差分?jǐn)?shù)據(jù)的DND操作,顯著地提高編碼關(guān)鍵字?jǐn)?shù)據(jù)的效率,并且編碼可以最小化編碼所需要的比特?cái)?shù)的操作中至少之一的結(jié)果。因此,按照本發(fā)明,可以顯著地減少用于存儲(chǔ)三維動(dòng)畫的空間并且以高速傳輸動(dòng)畫數(shù)據(jù)。
雖然本發(fā)明是參考其最佳實(shí)施例進(jìn)行具體顯示和描述的,但本領(lǐng)域的技術(shù)人員可以理解,可以在其中作出形式和細(xì)節(jié)上的不同變化,只要它們不背離附屬的權(quán)利要求書所限定的發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的DPCM的差分?jǐn)?shù)據(jù)的編碼的比特流并執(zhí)行DND操作的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該裝置包括熵解碼器,用于熵解碼輸入的比特流;反向上移位操作器,如果解碼的差分?jǐn)?shù)據(jù)已經(jīng)過(guò)上移位操作編碼,則通過(guò)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作恢復(fù)解碼的差分?jǐn)?shù)據(jù)為已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù),并且輸出結(jié)果,否則分流該解碼的差分?jǐn)?shù)據(jù);以及反向DND操作器,用于對(duì)從反向上移位操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行與從比特流讀出的DND的階同樣多次的反向DND操作。
2.如權(quán)利要求1的裝置,其中,在下移位操作中,如果從比特流讀出的熵解碼差分?jǐn)?shù)據(jù)大于已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)中的最大值,則從最大值中減去每個(gè)熵解碼差分?jǐn)?shù)據(jù)。
3.如權(quán)利要求1的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值小于預(yù)定基準(zhǔn)值,則反向DND操作器執(zhí)行與DND的階同樣多次的反向DND操作并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行反上分操作,以便擴(kuò)展它們的范圍,以及反上分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)奇數(shù)值,則從差分?jǐn)?shù)據(jù)中的最大值nKeyMax中減去一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)偶數(shù)值,則它們除以第一常數(shù)。
4.如權(quán)利要求1的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值不小于預(yù)定的第一基準(zhǔn)值并且反向DND操作的當(dāng)前階不等于1,則反向DND操作器執(zhí)行與DND的階同樣多次的反向DND操作并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行反下分操作,以便擴(kuò)展它們的范圍,以及反下分操作特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)小于預(yù)定的第二基準(zhǔn)值,則一第一常數(shù)和第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果將添加給反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于第二基準(zhǔn)值的偶數(shù)值,則它們除以第一常數(shù)。
5.如權(quán)利要求1的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定的第一基準(zhǔn)值并且反向DND操作的當(dāng)前階等于DND的階,則反向DND操作器執(zhí)行與DND的階同樣多次的反向DND操作并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行反下分操作,以便擴(kuò)展它們的范圍,以及反向分開操作特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)小于一第二基準(zhǔn)值,則將它們添加到nKeyMax和一預(yù)定常數(shù)。
6.一種裝置,它通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行一量化操作和預(yù)定周期數(shù)的DPCM操作,然后執(zhí)行用于可以縮小差分?jǐn)?shù)據(jù)的范圍的移位操作、折疊操作和預(yù)定周期數(shù)的DND操作其中至少之一來(lái)解碼編碼的比特流,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該裝置包括熵解碼器,用于熵解碼所輸入的比特流并且輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,對(duì)熵解碼的差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作,或者將它們分流;反向折疊處理器,用于根據(jù)DND的階對(duì)從反向DND操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行反向折疊操作以便該差分?jǐn)?shù)據(jù)能夠被分成正數(shù)和負(fù)數(shù),或者分流該差分?jǐn)?shù)據(jù);反向移位器,用于通過(guò)添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器或者反向折疊處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)過(guò)反向移位操作的差分?jǐn)?shù)據(jù),并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù),并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
7.如權(quán)利要求6的裝置,其中,如果輸入的差分?jǐn)?shù)據(jù)是偶數(shù),則反向折疊處理器用一第一常數(shù)除輸入的差分?jǐn)?shù)據(jù),如果輸入的差分?jǐn)?shù)據(jù)是奇數(shù),則用第一常數(shù)的相反數(shù)除添加一第二常數(shù)到輸入的差分?jǐn)?shù)據(jù)的結(jié)果。
8.如權(quán)利要求6的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值小于預(yù)定基準(zhǔn)值,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,并對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行反上分操作以便擴(kuò)展它們的范圍,和反上分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)奇數(shù)值,則從差分?jǐn)?shù)據(jù)中的最大值nKeyMax中減去一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)偶數(shù)值,則將它們除以第一常數(shù)。
9.如權(quán)利要求6的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定的第一基準(zhǔn)值,并且反向DND操作的當(dāng)前階不等于1,則反向DND操作器執(zhí)行與DND的階同樣多次的反向DND操作,并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反下分操作以便擴(kuò)展它們的范圍,和反下分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于一第二基準(zhǔn)值的奇數(shù)值,則添加一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果到nKeyMax,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于第二基準(zhǔn)值的偶數(shù)值,則將它們除以第一常數(shù)。
10.如權(quán)利要求6的裝置,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定的第一基準(zhǔn)值,并且反向DND操作的當(dāng)前階等于1,則反向DND操作器執(zhí)行與DND的階同樣多次的反向DND操作,并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反下分操作以便擴(kuò)展它們的范圍,和反向分開操作特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)小于第二基準(zhǔn)值,則將它們添加到nKeyMax和預(yù)定常數(shù)。
11.一種用于解碼一比特流的裝置,其中,比特流通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化和預(yù)定周期數(shù)的DPCM,然后執(zhí)行移位操作、預(yù)定周期數(shù)的DND操作、對(duì)量化結(jié)果的上移位操作和預(yù)定周期數(shù)的DPCM其中至少之一進(jìn)行編碼,其中關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該裝置包括熵解碼器,用于熵解碼所輸入的比特流并且輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,對(duì)熵解碼的差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作,或者將它們分流;反向移位器,用于通過(guò)添加預(yù)定模到輸入的差分?jǐn)?shù)據(jù)改變從反向DND處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)過(guò)反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,反向地量化恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
12.一種用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的DPCM的差分?jǐn)?shù)據(jù)的編碼的比特流的方法,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,執(zhí)行DND操作,該方法包括熵解碼被解碼的比特流;對(duì)熵解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向上移位操作,其中如果熵解碼的差分?jǐn)?shù)據(jù)已經(jīng)過(guò)上移位操作編碼,則對(duì)差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作以便將它們恢復(fù)為已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù);以及如果熵解碼的差分?jǐn)?shù)據(jù)已經(jīng)過(guò)與從比特流讀出的DND的階同樣多次的上移位操作,則對(duì)已經(jīng)過(guò)下移位操作的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,如果它們沒有經(jīng)過(guò)與DND的階同樣多次的上移位操作,則對(duì)熵解碼的差分?jǐn)?shù)據(jù)執(zhí)行該反向DND操作。
13.如權(quán)利要求12的方法,其中,在下移位操作中,如果從比特流讀出的熵解碼差分?jǐn)?shù)據(jù)大于已經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)中的最大值,則從最大值中減去每個(gè)熵解碼差分?jǐn)?shù)據(jù)。
14.如權(quán)利要求12的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax小于預(yù)定基準(zhǔn)值,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,并且對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反上分操作以便擴(kuò)展它們的范圍,以及反上分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)奇數(shù)值,則從差分?jǐn)?shù)據(jù)中的最大值nKeyMax中減去由一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)偶數(shù)值,則將它們除以第一常數(shù)。
15.如權(quán)利要求12的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定基準(zhǔn)值,并且反向DND操作的當(dāng)前階不等于1,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反下分操作以便擴(kuò)展它們的范圍,以及反下分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于一第二基準(zhǔn)值的奇數(shù)值,則將由一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果添加到nKeyMax,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于第二基準(zhǔn)值的偶數(shù)值,則將它們除以第一常數(shù)。
16.如權(quán)利要求12的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定基準(zhǔn)值并且反向DND操作的當(dāng)前階等于1,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反上分操作以便擴(kuò)展它們的范圍,以及反向分開操作特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)小于一第二基準(zhǔn)值,則將它們添加到nKeyMax和一預(yù)定常數(shù)。
17.一種用于解碼比特流的方法,該比特流通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化和預(yù)定周期數(shù)的DPCM操作,并通過(guò)在基于圖形動(dòng)畫的關(guān)鍵字幀中,執(zhí)行移位操作、折疊操作和對(duì)量化結(jié)果的預(yù)定周期數(shù)的DND操作和該預(yù)定周期數(shù)的DPCM中至少之一來(lái)編碼,其中該關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該方法包括(a)熵解碼比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作;(c)對(duì)已經(jīng)過(guò)反向DND操作的差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊操作以便將它們分成負(fù)數(shù)和正數(shù);(d)執(zhí)行一反向移位操作,其中已經(jīng)過(guò)反向折疊操作的差分?jǐn)?shù)據(jù)的范圍通過(guò)給它們添加預(yù)定的模來(lái)變化;(e)執(zhí)行一反向DPCM過(guò)程以便已經(jīng)反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);以及(f)通過(guò)反向地量化所量化的的關(guān)鍵字?jǐn)?shù)據(jù)產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù),其中如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作,在步驟(a)之后立即執(zhí)行步驟(c),如果DND的階表明熵解碼的差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作也沒有通過(guò)折疊操作,則在步驟(a)之后立即執(zhí)行步驟(d)。
18.如權(quán)利要求17的方法,其中,在折疊操作中,如果輸入的差分?jǐn)?shù)據(jù)是偶數(shù),則將它們除以一第一常數(shù),如果它們是奇數(shù),則加一第二常數(shù)到輸入的差分?jǐn)?shù)據(jù)的結(jié)果除以第一常數(shù)的相反數(shù)。
19.如權(quán)利要求17的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax小于預(yù)定基準(zhǔn)值,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反上分操作以便擴(kuò)展它們的范圍,以及反上分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)奇數(shù)值,則從差分?jǐn)?shù)據(jù)中的最大值nKeyMax中減去由一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有負(fù)偶數(shù)值,則將它們除以第一常數(shù)。
20.如權(quán)利要求17的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定基準(zhǔn)值并且反向DND操作的當(dāng)前階不等于1,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反下分操作以便擴(kuò)展它們的范圍,以及反下分操作的特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于一第二基準(zhǔn)值的奇數(shù)值,則將由一第一常數(shù)和一第二常數(shù)除該差分?jǐn)?shù)據(jù)的結(jié)果添加到nKeyMax,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)具有小于第二基準(zhǔn)值的偶數(shù)值,則將它們除以第一常數(shù)。
21.如權(quán)利要求17的方法,其中,如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)中的最大值nKeyMax不小于預(yù)定基準(zhǔn)值并且反向DND操作的當(dāng)前階等于1,則在被執(zhí)行與DND的階次數(shù)一樣多的反向DND操作中,對(duì)輸入的差分?jǐn)?shù)據(jù)執(zhí)行一反上分操作以便擴(kuò)展它們的范圍,以及反向分開操作特征為如果反向DND操作的當(dāng)前周期中的差分?jǐn)?shù)據(jù)小于第二基準(zhǔn)值,則將它們添加到nKeyMax和一預(yù)定常數(shù)。
22.一種用于解碼比特流的方法,該比特流通過(guò)對(duì)關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化和預(yù)定周期數(shù)的DPCM操作,然后執(zhí)行移位操作、預(yù)定周期數(shù)的DND操作、關(guān)于量化結(jié)果的上移位操作以及該預(yù)定周期數(shù)的DPCM中的至少之一來(lái)編碼,其中該關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時(shí)間軸上的位置的信息,該方法包括(a)熵解碼該比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對(duì)解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND處理;(c)對(duì)已經(jīng)通過(guò)反向DND操作的差分?jǐn)?shù)據(jù)通過(guò)添加預(yù)定的模給該差分?jǐn)?shù)據(jù)執(zhí)行一反向移位操作,以便變化它們的范圍;(d)執(zhí)行一反向DPCM處理以便已經(jīng)通過(guò)反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);以及(e)反向地量化所量化的關(guān)鍵字?jǐn)?shù)據(jù)以便產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù),其中如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過(guò)DND操作,在步驟(a)之后立即執(zhí)行步驟(c)。
全文摘要
提供一種用于編碼和解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括線性關(guān)鍵字編碼器,在關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域中識(shí)別輸入的關(guān)鍵字?jǐn)?shù)據(jù)并且編碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域;浮點(diǎn)數(shù)換算器,轉(zhuǎn)換從線性關(guān)鍵字編碼器輸入的表示該線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)的二進(jìn)制數(shù)和從量化誤差最小化器輸入的表示最大和最小值的二進(jìn)制數(shù)為十進(jìn)制數(shù);量化器,接收除線性關(guān)鍵字區(qū)域外的輸入的關(guān)鍵字?jǐn)?shù)據(jù),并且利用預(yù)定量化比特量化它們;熵編碼器,熵編碼對(duì)差分?jǐn)?shù)據(jù)執(zhí)行預(yù)定操作的量化的關(guān)鍵字?jǐn)?shù)據(jù);和關(guān)鍵字頭編碼器,接收線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)數(shù)目和線性關(guān)鍵字區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù),并且編碼全部輸入作為關(guān)鍵字頭。
文檔編號(hào)G06T9/00GK1878312SQ200610094359
公開日2006年12月13日 申請(qǐng)日期2002年11月27日 優(yōu)先權(quán)日2001年11月27日
發(fā)明者李信俊, 鄭錫潤(rùn), 張義善, 禹相玉, 韓萬(wàn)鎮(zhèn), 金道均, 張敬子 申請(qǐng)人:三星電子株式會(huì)社