欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于編碼和解碼比特流和并列內(nèi)插器的裝置和方法

文檔序號:6559726閱讀:131來源:國知局
專利名稱:用于編碼和解碼比特流和并列內(nèi)插器的裝置和方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種編碼和解碼關(guān)鍵字?jǐn)?shù)據(jù)(key data)的方法和裝置,具體地說,涉及一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法,該裝置和方法能夠通過對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行差分脈碼調(diào)制(DPCM)產(chǎn)生差分?jǐn)?shù)據(jù)以及通過執(zhí)行預(yù)先確定的操作縮小要編碼的差分?jǐn)?shù)據(jù)的范圍,來增加編碼關(guān)鍵字?jǐn)?shù)據(jù)的效率,還涉及解碼所編碼的關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。
背景技術(shù)
三維(3D)表示已經(jīng)廣泛用于計算機(jī)系統(tǒng)中的三維電子游戲或者虛擬現(xiàn)實環(huán)境。虛擬現(xiàn)實模擬語言(VRML)用來表示三維動畫。
用于場景(BIFS)的VRML和MPEG-4二進(jìn)制格式提供一種以關(guān)鍵字成幀(keyframing)為基礎(chǔ)的生動的表示方法。在該動畫表示方法中,預(yù)定的關(guān)鍵字幀安排在任意時間軸上,并且關(guān)鍵字幀(key frame)之間的動畫數(shù)據(jù)通過線性插值填充。該關(guān)鍵字幀由內(nèi)插器(interpolator)節(jié)點定義,并且每個內(nèi)插器結(jié)點由預(yù)定的范圍以內(nèi)的一浮點數(shù)代表,例如,從-∞到+∞變動。每個內(nèi)插器結(jié)點構(gòu)成由關(guān)鍵字?jǐn)?shù)據(jù)組成的每個域,關(guān)鍵字?jǐn)?shù)據(jù)表示某一關(guān)鍵字幀在該時間軸上的位置,并且關(guān)鍵字值數(shù)據(jù)表示相應(yīng)于該關(guān)鍵字?jǐn)?shù)據(jù)在該關(guān)鍵字?jǐn)?shù)據(jù)上的特征以及運動信息。
為了通過使用分段線性插值的關(guān)鍵字成幀與實物運動一樣自然流暢地表示活動性,必須通過每個內(nèi)插器結(jié)點提供大量關(guān)鍵字幀信息,就計算費用和效率而言該事實產(chǎn)生嚴(yán)重的問題。結(jié)果,關(guān)鍵字成幀用于一種脫機(jī)環(huán)境,需要大容量的存儲器存儲大量三維動畫數(shù)據(jù)。另外,當(dāng)用于在線環(huán)境時,關(guān)鍵字幀也不僅要求這樣的大容量存儲器還要求高速數(shù)據(jù)傳輸線路,用于每次以高速傳送大量數(shù)據(jù)以便從一服務(wù)器向一終端傳送三維動畫信息。在該情況下,因為在數(shù)據(jù)傳輸期間發(fā)生誤差的可能性增加,數(shù)據(jù)的可靠性降低。因此,要求一種用于壓縮和解碼數(shù)據(jù)以便減少內(nèi)插器結(jié)點數(shù)據(jù)量的有效方法。
MPEG-4BIFS提供用于編碼動畫數(shù)據(jù)的兩種不同的方法。一種是用于編碼動畫數(shù)據(jù)的BIFS-Q,另一是用于編碼數(shù)據(jù)之間的差值的差分脈碼調(diào)制(DPCM)。DPCM也叫做預(yù)測MF編碼(PMFC)。BIFS-Q僅使用量化,因此不被認(rèn)為有效。PMFC被認(rèn)為比BIFS-Q更有效,因為在PMFC中,在執(zhí)行DPCM之后執(zhí)行熵編碼以便取消冗余數(shù)據(jù)。用于關(guān)鍵字?jǐn)?shù)據(jù)的PMFC編碼器和PMFC解碼器圖示在圖1中。如上所述,在編碼動畫數(shù)據(jù)時,PMFC不太有效,因為它僅在熵編碼以前執(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ā)生符號的概率消除存在于比特(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對從反向DPCM處理器160輸入的量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行反向量化,并輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
然而,編碼器100僅在熵編碼之前執(zhí)行DPCM而不考慮鍵的特征,因此它很難實現(xiàn)顯示高壓縮比率的有效編碼。

發(fā)明內(nèi)容
為解決上述等問題,本發(fā)明的第一方面提供一種用于編碼數(shù)據(jù)的裝置和方法,當(dāng)消除關(guān)鍵字?jǐn)?shù)據(jù)的比特之間的冗余時,用于能夠考慮關(guān)鍵字?jǐn)?shù)據(jù)的特征以高效率壓縮動畫的關(guān)鍵字?jǐn)?shù)據(jù)。
本發(fā)明的第二方面是提供一種用于解碼比特流的裝置和方法,該比特流由上面描述的編碼數(shù)據(jù)的裝置和方法編碼。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上的關(guān)鍵字幀位置的信息。用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的該裝置包括線性關(guān)鍵字編碼器,用于在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中識別在其中關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域,并編碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域;浮點數(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ā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ù)目,從浮點數(shù)換算器中接收線性關(guān)鍵字區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù),并且編碼全部輸入作為一關(guān)鍵字頭。
為了實現(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)鍵字幀在時間軸上的位置的信息,該裝置包括熵解碼器,用于熵解碼輸入的比特流;反向上移位操作器,如果解碼的差分?jǐn)?shù)據(jù)已經(jīng)過上移位操作編碼,則通過對解碼的差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作恢復(fù)解碼的差分?jǐn)?shù)據(jù)為已經(jīng)過DND操作的差分?jǐn)?shù)據(jù),并且輸出結(jié)果,否則分流該解碼的差分?jǐn)?shù)據(jù);以及反向DND操作器,用于對從反向上移位操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行與從比特流讀出的DND的階同樣多次的反向DND操作。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于通過對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作來解碼所編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行用于減少差分?jǐn)?shù)據(jù)范圍的移位操作(shifting operation)、折疊操作和預(yù)定的周期數(shù)的DND操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,或者對熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向折疊處理器,用于根據(jù)DND的階,或者對從反向DND操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行反向折疊操作以便該差分?jǐn)?shù)據(jù)能夠被分成正數(shù)和負(fù)數(shù)或者分流該差分?jǐn)?shù)據(jù);反向移位器,通過添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器或者反向折疊處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行移位操作、預(yù)定周期數(shù)的DND操作以及關(guān)于量化結(jié)果和預(yù)定周期數(shù)的DPCM的移位操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階,或者對熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向移位器,通過添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);以及反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀的位置的信息,然后執(zhí)行移位操作、折疊操作和預(yù)定周期(cycle)數(shù)的DND操作其中至少之一。用于解碼所編碼的比特流的裝置包括熵解碼器,用于熵解碼所輸入的比特流和輸出所解碼的差分?jǐn)?shù)據(jù);反向DND操作器,用于根據(jù)從比特流讀出的DND的階(order),或者對熵解碼差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作或者將它們分流;反向折疊處理器,用于根據(jù)DND的階,或者對從反向DND操作器輸入的差分?jǐn)?shù)據(jù)執(zhí)行反向折疊操作以便該差分?jǐn)?shù)據(jù)能夠被分成正數(shù)和負(fù)數(shù)或者分流(bypass)該差分?jǐn)?shù)據(jù);反向移位器,通過添加預(yù)定模到該差分?jǐn)?shù)據(jù)改變從反向DND操作器或者反向折疊處理器輸入的差分?jǐn)?shù)據(jù)的范圍;反向DPCM處理器,用于恢復(fù)已經(jīng)通過該反向移位操作的差分?jǐn)?shù)據(jù)并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);反向量化器,用于反向地量化所恢復(fù)的量化的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù);浮點數(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ù)是從浮點數(shù)逆換算器輸入的,該線性關(guān)鍵字解碼器還用于添加解碼的結(jié)果到從反向量化器輸出的關(guān)鍵字?jǐn)?shù)據(jù)中。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的裝置,該數(shù)據(jù)流由關(guān)鍵字?jǐn)?shù)據(jù)編碼而來,該關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀的位置的信息。用于解碼比特流的裝置包括關(guān)鍵字頭解碼器,用于解碼來自所輸入的比特流的編碼關(guān)鍵字?jǐn)?shù)據(jù)解碼需要的關(guān)鍵字頭信息;熵解碼器,用于熵解碼比特流并且輸出量化的關(guān)鍵字?jǐn)?shù)據(jù);浮點數(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ù)從浮點數(shù)逆換算器輸入,線性關(guān)鍵字解碼器還用于添加解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)到從反向量化器輸出的關(guān)鍵字?jǐn)?shù)據(jù)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼并且解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時間軸上的位置的信息,該裝置包括編碼器,包括以預(yù)定的量化比特量化輸入的關(guān)鍵字?jǐn)?shù)據(jù)的量化器;產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)的DPCM處理器;范圍縮小器,用于通過對該差分?jǐn)?shù)據(jù)執(zhí)行預(yù)定的操作縮小差分?jǐn)?shù)據(jù)的范圍;熵編碼器,用于通過編碼從范圍縮小器輸入的差分?jǐn)?shù)據(jù)產(chǎn)生一比特流;以及解碼器,包括熵解碼器,用于熵解碼輸入的比特流并且輸出所解碼的差分?jǐn)?shù)據(jù);范圍擴(kuò)大器,用于通過對差分?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ù)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀位置的信息。該方法包括執(zhí)行線性關(guān)鍵字編碼,其中關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域確設(shè)置為要編碼的關(guān)鍵字?jǐn)?shù)據(jù)中然后被編碼;執(zhí)行浮點數(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ù)并對其執(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)鍵字頭被編碼。
為了實現(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)鍵字幀在時間軸上的位置的信息。該方法包括熵解碼一被解碼的比特流;對熵解碼差分?jǐn)?shù)據(jù)執(zhí)行一反上移位操作,在其中,如果該熵解碼差分?jǐn)?shù)據(jù)已經(jīng)通過一上移位操作編碼,則對差分?jǐn)?shù)據(jù)執(zhí)行一種移位向下操作以便將它們恢復(fù)為已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù);以及如果該熵解碼差分?jǐn)?shù)據(jù)已經(jīng)通過上移位操作從比特流讀出的DND的階一樣多的次數(shù),則對已經(jīng)通過移位向下操作的差分?jǐn)?shù)據(jù)執(zhí)行反向DND操作,如果它們沒有通過與DND階一樣多次數(shù)的上移位操作,則對熵解碼差分?jǐn)?shù)據(jù)執(zhí)行該反向DND操作。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化操作和預(yù)定周期數(shù)的DPCM操作而編碼的比特流然后在基于圖形動畫的關(guān)鍵字幀中執(zhí)行移位操作、折疊操作和對量化結(jié)果的預(yù)定周期數(shù)的DND操作和該預(yù)定周期數(shù)的DPCM中之一的方法,其中,關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于時間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼一種比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作;(c)在已經(jīng)通過反向DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行一反向折疊操作以便將它們分成負(fù)數(shù)和正數(shù);(d)執(zhí)行一反向移位操作,其中已經(jīng)通過反向折疊操作的該差分?jǐn)?shù)據(jù)的范圍通過給它們添加預(yù)定的模而改變;(e)執(zhí)行一反向DPCM處理以便已經(jīng)通過該反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);以及(f)通過反向地量化該量化的關(guān)鍵字?jǐn)?shù)據(jù)產(chǎn)生解碼的關(guān)鍵字?jǐn)?shù)據(jù)。在這里,如果從比特流讀出的DND的階表明熵解碼差分?jǐn)?shù)據(jù)沒有通過DND操作,在步驟(a)之后立即執(zhí)行步驟(c),如果DND的階表明熵解碼的差分?jǐn)?shù)據(jù)沒有通過DND操作也沒有通過折疊操作,在步驟(a)之后立即執(zhí)行步驟(d)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼通過對關(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)于時間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼該比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND處理;(c)在已經(jīng)通過反向DND操作的差分?jǐn)?shù)據(jù)上通過添加預(yù)定的模給該差分?jǐn)?shù)據(jù)執(zhí)行一反向移位操作,以便變化它們的范圍;(d)執(zhí)行一反向DPCM處理以便已經(jīng)通過反向移位操作的差分?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ù)沒有通過DND操作,在步驟(a)之后立即執(zhí)行步驟(c)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的方法,該比特流通過執(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)于時間軸上關(guān)鍵字幀的位置的信息。該方法包括(a)熵解碼一種比特流并由此產(chǎn)生解碼的差分?jǐn)?shù)據(jù);(b)對解碼的差分?jǐn)?shù)據(jù)執(zhí)行一反向DND處理;(c)對已經(jīng)通過反向DND處理的差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊處理以便將它們分成負(fù)數(shù)和正數(shù);(d)執(zhí)行一反向移位操作,其中已經(jīng)通過反向折疊操作的該差分?jǐn)?shù)據(jù)的范圍通過給它們添加預(yù)定的模而改變;(e)執(zhí)行一反向DPCM處理以便已經(jīng)通過該反向移位操作的差分?jǐn)?shù)據(jù)被恢復(fù)并由此產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);(f)執(zhí)行浮點數(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ù)沒有通過DND操作,在步驟(a)之后立即執(zhí)行步驟(c),如果DND的階表明熵解碼的差分?jǐn)?shù)據(jù)沒有通過DND操作也沒有通過折疊操作,在步驟(a)之后立即執(zhí)行步驟(d)。
為了實現(xiàn)本發(fā)明的上述和其他方面,提供一種用于解碼比特流的方法,其中,要編碼的關(guān)鍵字?jǐn)?shù)據(jù)是關(guān)于關(guān)鍵字幀在時間軸上的位置的信息。該方法包括執(zhí)行關(guān)鍵字頭解碼以便從該比特流解碼解碼所編碼的關(guān)鍵字?jǐn)?shù)據(jù)所需要的關(guān)鍵字頭信息;熵解碼該比特流并且產(chǎn)生所量化的關(guān)鍵字?jǐn)?shù)據(jù);執(zhí)行浮點數(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ù)期間計算關(guān)鍵字?jǐn)?shù)據(jù)的分散度(degree of dispersion)。如上所述,關(guān)鍵字?jǐn)?shù)據(jù)表示時間軸上的關(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)該具有正值,如果對差分?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的階可以通過一最小分散度獲得,并且DPCM和DND的每個周期的結(jié)果用來縮小關(guān)鍵字?jǐn)?shù)據(jù)的范圍。當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)的密集度降低時,關(guān)鍵字?jǐn)?shù)據(jù)的冗余增加。


本發(fā)明的上述和其他方面和優(yōu)點,參考附圖通過詳細(xì)描寫最佳實施例將要變成更明顯,其中圖1是一傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器和關(guān)鍵字?jǐn)?shù)據(jù)解碼器的方框圖;圖2A是按照本發(fā)明一最佳實施例的編碼器的方框圖;圖2B是圖2A中所示的反復(fù)分開(divide-and-divide,DND)處理器的方框圖;圖2C到2G是按照本發(fā)明的編碼器例子的方框圖;圖3A和3B是按照本發(fā)明最佳實施例的一用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖;圖4A和4B是按照本發(fā)明最佳實施例的浮點數(shù)轉(zhuǎn)化過程的流程圖;圖5是按照本發(fā)明最佳實施例的量化處理的一流程圖;圖6是按照本發(fā)明最佳實施例DPCM處理的一流程圖;圖7是按照本發(fā)明的最佳實施例DND操作處理的一流程圖;圖8是按照本發(fā)明最佳實施例的說明熵編碼的一圖表;圖9A到9J是表示按照本發(fā)明的最佳實施例已經(jīng)通過不同操作的關(guān)鍵字?jǐn)?shù)據(jù)的圖表;圖10A和10B是說明使用關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)編碼動畫數(shù)據(jù)的處理的圖表;圖11A是按照本發(fā)明最佳實施例的一關(guān)鍵字?jǐn)?shù)據(jù)解碼器的方框圖;
圖11B 11E是按照本發(fā)明的關(guān)鍵字?jǐn)?shù)據(jù)解碼器的例子的方框圖;圖12是按照本發(fā)明一最佳實施例用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖;圖13是按照本發(fā)明最佳實施例反向DND操作處理的一流程圖;圖14A到14E是顯示解碼需要的比特流語法和變量的例子的圖表;以及圖15A到15C是顯示實現(xiàn)程序代碼的例子的圖表,其中列舉了解碼關(guān)鍵字?jǐn)?shù)據(jù)需要的操作。
具體實施例方式
圖2A是按照本發(fā)明一最佳實施例的編碼器的一方框圖。
按照本發(fā)明最佳實施例的一種用于編碼關(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ù)目和每個關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)字的數(shù)目的消息將被輸入關(guān)鍵字頭編碼器270,并且被解碼。線性關(guān)鍵字編碼器200在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中搜索存在于某些時間區(qū)間上關(guān)鍵字幀的區(qū)域,關(guān)鍵字?jǐn)?shù)據(jù)具有相同差值,并且該關(guān)鍵字?jǐn)?shù)據(jù)線性地變化,搜索到的線性區(qū)域首先在步驟S3000編碼。
著名的3D應(yīng)用軟件,例如3Dmax Maya,在具體區(qū)域中基于動畫使用具有預(yù)定時間隙的鍵產(chǎn)生關(guān)鍵字幀。在該情況下,有可能容易地使用線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)以及存在于它們之間的關(guān)鍵字幀的數(shù)目,來編碼關(guān)鍵字?jǐn)?shù)據(jù)。相應(yīng)地,線性預(yù)測對在某一區(qū)域中使用內(nèi)插器編碼關(guān)鍵字非常有用。
下列等式用于線性預(yù)測。
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個關(guān)鍵字?jǐn)?shù)據(jù)到第E個關(guān)鍵字?jǐn)?shù)據(jù)之間的具體區(qū)域中的實數(shù)關(guān)鍵字?jǐn)?shù)據(jù)之間的誤差和線性地預(yù)示下列方程式(1)的關(guān)鍵字?jǐn)?shù)據(jù)可以使用下列等式計算。
ei=t(i)-ti+S=tE-tsE-Si+ts-ti+s---(2)]]>如果使用等式(2)所計算的誤差中的最大值不大于一預(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ù)輸出到該浮點數(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ù)使用后面描述的浮點數(shù)換算編碼。為了編碼開始關(guān)鍵字?jǐn)?shù)據(jù)和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù),該浮點數(shù)換算器205轉(zhuǎn)換表示為二進(jìn)制的關(guān)鍵字?jǐn)?shù)據(jù)成十進(jìn)制數(shù)據(jù)。
計算機(jī)存儲該浮點數(shù)為32位二進(jìn)制數(shù)。如果表示為二進(jìn)制的浮點數(shù)是給定的,則該浮點數(shù)換算器205轉(zhuǎn)換該浮點數(shù)成十進(jìn)制的尾數(shù)和指數(shù),并且該過程通過下列等式表示。
例如,浮點數(shù)12.34可以通過計算機(jī)變?yōu)槎M(jìn)制數(shù),如下列所示的。
010001010111000010100011100000101 2 31符號2二進(jìn)制的尾數(shù)3二進(jìn)制的指數(shù)該二進(jìn)制數(shù)可以變?yōu)橄铝蟹匠淌?4)的十進(jìn)位數(shù),如下列所示。
0123421 231符號2十進(jìn)制的尾數(shù)3十進(jìn)制的指數(shù)為了在比特流中包含十進(jìn)制的尾數(shù)和指數(shù),必須計算要求用于表示尾數(shù)和指數(shù)的比特的數(shù)目。該指數(shù)具有-38和38之間的值,因此可以使用7比特表示它及其符號。要求用于表示尾數(shù)的比特的數(shù)目依賴于數(shù)字的數(shù)目。該尾數(shù)的值和要求用于表示該尾數(shù)的比特數(shù)在下列圖表中所示。
表1

那些已經(jīng)搜索并且使用上述的過程轉(zhuǎn)換的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)按照圖4A和4B中所示的編碼過程編碼,然后輸出到關(guān)鍵字頭編碼器270,并且保存在該比特流中。
圖4A和4B表明浮點數(shù)換算器205編碼兩個輸入浮點數(shù)。浮點數(shù)換算器205編碼浮點數(shù)的方法將要參考圖4A和4B進(jì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)換它們。
浮點數(shù)換算器205首先編碼S。具體地說,浮點數(shù)換算器205檢查S的數(shù)位是否不同于Kd。如果S的數(shù)位不同于Kd,則在步驟S3042獲得S的數(shù)位并且輸出到關(guān)鍵字頭編碼器270。浮點數(shù)換算器205使用函數(shù)Digit( )獲得S的數(shù)位。
如果S的數(shù)位大于7,則在步驟3043使用預(yù)定的位數(shù)(在本發(fā)明中,遵循IEEE標(biāo)準(zhǔn)754的浮點數(shù)方式使用下列32比特)將S輸出到關(guān)鍵字頭編碼器270,以便S的數(shù)位可以被包括在該比特流中。
如果S的數(shù)位不是0并且小于7,則在步驟3044中,浮點數(shù)換算器205輸出S的符號給關(guān)鍵字頭編碼器270。編碼S尾數(shù)絕對值要求的比特數(shù)使用圖表1獲得。接下來,在步驟3045,S尾數(shù)的絕對值使用圖表1獲得的比特數(shù)輸出到關(guān)鍵字頭編碼器270。在步驟S3046,浮點數(shù)換算器205計算S的指數(shù),輸出S的符號給關(guān)鍵字頭編碼器270,并且作為預(yù)定的位數(shù),例如,6比特,輸出該指數(shù)給關(guān)鍵字頭編碼器270。這樣的關(guān)鍵字?jǐn)?shù)據(jù)轉(zhuǎn)換使顯著地減少包括在比特流內(nè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時,相應(yīng)的浮點數(shù)也是不要求編碼的0。
在轉(zhuǎn)換并編碼開始關(guān)鍵字?jǐn)?shù)據(jù)S之后,浮點數(shù)換算器205轉(zhuǎn)換結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)E。E的轉(zhuǎn)換幾乎與S的轉(zhuǎn)換相同。具體地說,在步驟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ù)定的量化比特長度,即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ù)以便量化誤差可以最小化。
具體地說,如果用于量化的混合最大值由Max表示,用于量化的被控制的最小值由Min代表,輸入值由Xi代表,用于量化的比特數(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]]>有兩個用于減少誤差的和∑ei的方法。一是通過連續(xù)地控制Min直到誤差的和最小的方法。另一方法如下。
首先,假定Xi=(i+n)Δx+εi,其中Xi表示一輸入的關(guān)鍵字?jǐn)?shù)據(jù)序列,Δx表示一輸入數(shù)據(jù)基本步長,n是一任意整數(shù),εi表示零均值隨機(jī)噪聲。
接下來,當(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ù)的浮點數(shù)陣列,fKeyMax表示從量化誤差最小化器(minimizer)215輸入的最大值,fKeyMin表示從量化誤差最小化器215輸入的最小值,以及nKeyQBit表示量化比特大小。在等式(6)中,函數(shù)floor(v)是輸出一不大于某一浮點值v的最大整數(shù)的函數(shù)。
本發(fā)明的量化器210可以不使用這樣的算法來減少量化誤差,在這樣情況下僅僅利用輸入的關(guān)鍵字?jǐn)?shù)據(jù)中的最大和最小值fKeyMax和fKeyMin執(zhí)行量化。
本發(fā)明的量化過程將參考圖5更完全地描述。
量化器210在步驟S3210接收關(guān)鍵字?jǐn)?shù)據(jù)并且在步驟3220中檢測最大和最小值MAX和MIN是否從量化誤差最小化器215輸入。
如果輸入MAX和MIN,量化器210在步驟3230分別設(shè)置最大和最小值fKeyMax和fKeyMin作為MAX和MIN量化,并且輸出最近設(shè)置的最大和最小值fKeyMax和fKeyMin給浮點數(shù)換算器205。最大和最小值fKeyMax和fKeyMin通過上述的浮點數(shù)轉(zhuǎn)化過程轉(zhuǎn)換并編碼,并且輸出到關(guān)鍵字頭編碼器270以便它們可以被包括在一用于解碼的關(guān)鍵字頭中。
如果沒有值從量化誤差最小化器215輸入,則量化器210在步驟S3240分別設(shè)置第一關(guān)鍵字?jǐn)?shù)據(jù)fKey0和最終密鑰數(shù)據(jù)fKeyN-1作為最小值fKeyMin和最大值fKeyMax。
接下來,在步驟S3250量化器210中檢查最大值fKeyMax是否小于1但是大于0以及最小值fKeyMin是否大于0。如果最大值fKeyMax不小于1或非大于0,則最大和最小值fKeyMax和fKeyMin輸出到浮點數(shù)換算器205,并且通過上述的浮點數(shù)換算轉(zhuǎn)換并編碼。接下來,在步驟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對關(guān)鍵字?jǐn)?shù)據(jù)解碼器來說是已知的,以便它們不需要被包括在該關(guān)鍵字頭中。
量化器210通過替代那些已經(jīng)通過上述的過程建立的最大和最小值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ù),并且對量化的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行預(yù)定的次數(shù)的DPCM。接下來,DPCM處理器220輸出DPCM的階和在每個DPCM周期中的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)給關(guān)鍵字頭編碼器270,其中通過DPCM的階可以獲得在分散度中的最小值和。在步驟S3300,DPCM處理器220輸出由DPCM產(chǎn)生的差分?jǐn)?shù)據(jù)給移位器230。
參考圖6,在步驟S3310,DPCM處理器220對輸入的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行預(yù)定的次數(shù),并且存儲DPCM的周期數(shù)作為DPCM的階。在本發(fā)明一最佳實施例中,DPCM可以執(zhí)行三個次。
這以后,在步驟S3320,DPCM處理器220計算DPCM每個周期的結(jié)果的分散度,該分散度可以由密集度、標(biāo)準(zhǔn)偏差或者四分位偏差表示,并且在本發(fā)明的最佳實施例中,可以使用四分位偏差。
接下來,DPCM處理器220選擇一DPCM周期,其中在分散度中可以獲得一最小值,并且輸出選擇的DPCM的階的結(jié)果給該移位器230。在步驟S3330選擇的DPCM的周期、每個DPCM周期的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)及DPCM需要的其他信息單元輸出到關(guān)鍵字頭編碼器270。然而,在本發(fā)明的一最佳實施例中,如果鍵數(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計算要求編碼選擇的DPCM周期的比特數(shù)和已經(jīng)由DPCM在預(yù)定的存儲器(nQStep_DPCM)中產(chǎn)生的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)。編碼所需要的比特數(shù)的計算可以隨后在被編碼的選擇關(guān)鍵字?jǐn)?shù)據(jù)隨后的步驟中同時執(zhí)行,該事實對本領(lǐng)域的技術(shù)人員來說是明顯的。
移位器230選擇一差分?jǐn)?shù)據(jù)(在下文中,稱為一模),用于具有從DPCM處理器220輸入的差分?jǐn)?shù)據(jù)之中的最高頻率。則在步驟S3400移位器230從全部差分?jǐn)?shù)據(jù)減去該模以便大多數(shù)被編碼的數(shù)據(jù)安排0,并且編碼所需要的比特數(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以便編碼所需要的比特數(shù)可以顯著地減少。
已經(jīng)通過移位操作的關(guān)鍵字?jǐn)?shù)據(jù)輸出到一折疊處理器240和DND處理器250,并且模值nKeyShift輸出到關(guān)鍵字頭編碼器270以便被包括在該關(guān)鍵字頭中。
在步驟S3500,折疊處理器240對移位器230的輸出執(zhí)行一折疊操作,并且輸出折疊操作的結(jié)果給DND處理器250。
折疊操作通過集中它們在正數(shù)或者負(fù)數(shù)區(qū)域中,來縮小廣泛的分散于正數(shù)區(qū)域和負(fù)數(shù)區(qū)域的差分?jǐn)?shù)據(jù)的范圍。在本實施例中,折疊操作按照下列方程式(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īng)通過折疊操作的差分?jǐn)?shù)據(jù)所需要的比特數(shù),并且存儲它在預(yù)定的存儲器nQStep_fold中。在這步驟中,編碼所需要的比特數(shù)的計算可以在選擇被熵編碼的差分?jǐn)?shù)據(jù)的隨后的步驟中執(zhí)行,該事實對于本領(lǐng)域技術(shù)人員來說是明顯的。在折疊處理器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包含對差分?jǐn)?shù)據(jù)執(zhí)行DND操作的DND操作器252;第一差分?jǐn)?shù)據(jù)選擇器254,用于以用于編碼的比特數(shù)為基礎(chǔ)選擇熵編碼的差分?jǐn)?shù)據(jù);移位向上操作器256,用于在已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行上移位操作;以及第二差分?jǐn)?shù)據(jù)選擇器258,用于從已經(jīng)僅僅通過DND操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過上移位操作的差分?jǐn)?shù)據(jù)之間選出具有一較低分散度的差分?jǐn)?shù)據(jù),并且輸出所選擇的差分?jǐn)?shù)據(jù)到熵編碼器260。
在DND操作器252中執(zhí)行的DND操作將要在下文中描述。
當(dāng)已經(jīng)通過折疊處理器240中的折疊操作的差分?jǐn)?shù)據(jù)輸入到DND操作器252時,它們分成兩個組,具有比另一組差分?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)通過折疊操作的差分?jǐn)?shù)據(jù)中的最大值。尤其,在大多數(shù)差分?jǐn)?shù)據(jù)密集地沿著由全部差分?jǐn)?shù)據(jù)占據(jù)的全部區(qū)域邊界提供的情況下,利用該分開操作有可能顯著地縮小在所有差分?jǐn)?shù)據(jù)中全部的區(qū)域。
在分開操作之后,在編碼所需要的比特長度被用作該分散度的度量以便可以選擇在用于編碼的比特長度中的最小值的情況下,計算該分散度。
在DND操作之后,進(jìn)一步執(zhí)行不同類型的DND操作,即,上分操作或者下分操作。上分操作或者下分操作是否將要進(jìn)一步執(zhí)行將由差分?jǐn)?shù)據(jù)的正范圍長度和差分?jǐn)?shù)據(jù)的負(fù)范圍長度確定。
如果具有正值的差分?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輸入時,DND操作器252在步驟S3610輸入的差分?jǐn)?shù)據(jù)中的獲得最大值nKeyMax和最小值nKeyMin。然后,DND操作器252在步驟S3620比較nKeyMin和nKeyMax的絕對值。如果nKeyMax不小于nKeyMin的絕對值,在則步驟S3622種,DND操作器252在DND操作的當(dāng)前周期中設(shè)置nKeyMax作為一最大值。
在步驟S3624,DND操作器252檢測DND操作的階是否是1,換言之,DND操作的階是否為1,如果是,DND操作器252在步驟S3630中對輸入的差分?jǐn)?shù)據(jù)執(zhí)行一分開操作,替代等式(10)中的最大值nKeyMax。
此后,在步驟S3640,DND操作器252利用函數(shù)getQBit( )測量編碼該差分?jǐn)?shù)據(jù)范圍需要的比特長度,該差分?jǐn)?shù)據(jù)范圍已經(jīng)利用分開操作縮小了。如果在步驟S3650,DND操作的階是1,則將編碼所需要的比特長度存儲為一表示用于編碼的比特最小長度的值nQBitDND,并且在步驟S3655中將DND操作的階數(shù)增加1。
接下來,DND處理器252再次通過S3622執(zhí)行步驟S3610。在步驟S3624,如果DND操作的階不是1,則DND操作器252在步驟S3634執(zhí)行下分操作替代等式(11)中的最大值nKeyMax。在步驟S3640,DND操作器252計算編碼已經(jīng)通過下分操作的差分?jǐn)?shù)據(jù)所需要的比特數(shù)。如果該數(shù)小于在上一DND操作周期中所存儲的最小值nQBitDND,則在步驟S3658它替換在DND操作之后編碼所需要的比特的最小長度。
在步驟S3620,如果最小值nKeyMin的絕對值大于最大值nKeyMax的絕對值,則將DND操作的當(dāng)前周期中的最大值作為一最小值在步驟S3623更新,然后在步驟S3628執(zhí)行一上分操作,替代等式(12)中的用于nKeyMin的最小值。此后,在步驟S3640,DND操作器252計算用于編碼已經(jīng)通過上分操作的差分?jǐn)?shù)據(jù)的比特數(shù)。在步驟S3652,如果計算的結(jié)果小于已經(jīng)保存在上一DND操作周期中的nQBitDND,則在步驟S3658中它替換在DND操作之后編碼所需要的比特的最小數(shù)nQBitDND。
DND處理器252執(zhí)行預(yù)定次數(shù)的DND操作,并且DND操作的性能數(shù)目可以變化。例如,在當(dāng)前實施例中,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)通過移位操作的差分?jǐn)?shù)據(jù),已經(jīng)通過該折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù),并且確定三個中將要被熵編碼的差分?jǐn)?shù)據(jù)。
參考圖3A和3B,如果在步驟S3700,在DND操作之后編碼所需要的比特最小數(shù)nQBitDND不小于在DPCM操作之后編碼的比特長度nQStep-DPCM,則在步驟S3710,第一差分?jǐn)?shù)據(jù)選擇器254選擇DPCM的結(jié)果并且對差分?jǐn)?shù)據(jù)執(zhí)行一移位操作。接下來,第一差分?jǐn)?shù)據(jù)選擇器254輸出移位操作的結(jié)果給該熵編碼器260,并且允許它們在步驟S3710被熵編碼。在該情況下,DND操作的階設(shè)置為-1,被輸出到關(guān)鍵字頭編碼器270,并且被包括在該關(guān)鍵字頭中。
然而,如果在步驟S3720,結(jié)果是nQBitDND小于nQStep-DPCM,并且不小于用于在折疊操作之后編碼的比特長度,則在步驟S3730,第一差分?jǐn)?shù)據(jù)選擇器254輸出已經(jīng)通過該折疊操作的差分?jǐn)?shù)據(jù)給熵編碼器260,并且允許將它們熵編碼,而在這樣情況下DND操作的階設(shè)置在0上,被輸出到該關(guān)鍵字頭編碼器270,并由此被包括在該關(guān)鍵字頭中。
如果在DND操作之后用于編碼差分?jǐn)?shù)據(jù)比特數(shù)最小,則在步驟S3740,第一差分?jǐn)?shù)據(jù)選擇器254輸出已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)到上移位操作器256,然后該上移位操作器256計算從第一差分?jǐn)?shù)據(jù)選擇器254輸入的差分?jǐn)?shù)據(jù)的第一分散度。接下來,在步驟S3800上移位操作器256對已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)執(zhí)行由下列等式定義的上移位操作,并且在步驟S3810計算上移位操作結(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)通過DND操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過上移位操作的差分?jǐn)?shù)據(jù)被輸入時,在步驟S3900第二差分?jǐn)?shù)據(jù)選擇器258比較第一分散度和第二分散度。如果第二分散度小于第一分散度,第二差分?jǐn)?shù)據(jù)選擇器258輸出已經(jīng)通過上移位操作的差分?jǐn)?shù)據(jù)給該熵編碼器260,并且允許它們在步驟S3910被熵編碼。第二差分?jǐn)?shù)據(jù)選擇器258輸出用于DND操作的最大和最小值,用于上移位操作的最大值nKeyMax給該關(guān)鍵字頭編碼器270,并且允許將它們包括在該關(guān)鍵字頭中。
然而,如果第一分散度小于第二分散度,第二差分?jǐn)?shù)據(jù)選擇器258輸出已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)給該熵編碼器260,并且允許它們在步驟S3920被熵編碼。然后,第二差分?jǐn)?shù)據(jù)選擇器258僅輸出用于DND操作的最大和最小值nKeyMax和nKeyMin給該關(guān)鍵字頭編碼器270。在本發(fā)明的一最佳實施例中,標(biāo)準(zhǔn)偏差可以用作第一和第二分散度的度量。
熵編碼器260對根據(jù)差分?jǐn)?shù)據(jù)的特征的差分?jǐn)?shù)據(jù)執(zhí)行兩個不同函數(shù)。例如,已經(jīng)通過DPCM操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過兼?zhèn)湔拓?fù)的值的分開操作的差分?jǐn)?shù)據(jù),因此執(zhí)行編碼每個差分?jǐn)?shù)據(jù)的符號以及差分?jǐn)?shù)據(jù)自身的過程是必要的。另一方面,因為已經(jīng)通過折疊操作的差分?jǐn)?shù)據(jù)僅具有正值,因此執(zhí)行僅編碼差分?jǐn)?shù)據(jù)的過程。
在本發(fā)明的一最佳實施例中,函數(shù)encodeSignedAAC用于編碼該差分?jǐn)?shù)據(jù)和它們的符號,而函數(shù)encodeUnsignedAAC用于僅僅編碼差分?jǐn)?shù)據(jù)。
圖8是函數(shù)encodeSignedAAC例子的一圖表。參考圖8,當(dāng)輸入值是74并且用于編碼該輸入值的比特數(shù)是8時,它的符號是0,與二進(jìn)制數(shù)1001010相同。符號和全部位平面用下列方式編碼
第一步二進(jìn)制數(shù)按照從它的最高有效位(MSB)到它的最低位(LSB)的次序在每個位平面上編碼;第二步檢測當(dāng)前被編碼的比特是否是0;第三步如果當(dāng)前被編碼的比特不是0,該二進(jìn)制數(shù)的符號接下來被編碼;第四步二進(jìn)制數(shù)的剩余比特被編碼。
函數(shù)encodeUnsignedAAC利用關(guān)于該值的范圍編碼不具有符號的值作為一自適應(yīng)的算術(shù)編碼比特流。該函數(shù)與函數(shù)encodeSignedAAC除了存在一符號范圍幾乎相同。
圖9A到9J是顯示按照本發(fā)明的一最佳實施例已經(jīng)經(jīng)受操作的關(guān)鍵字?jǐn)?shù)據(jù)的圖表。在圖9A到9J中,X軸表示每個關(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ù)。
接下來,量化的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)利用一大約7的模值移位,以便獲得圖9D中所示的差分?jǐn)?shù)據(jù)。此后,如果在移位的差分?jǐn)?shù)據(jù)上執(zhí)行一折疊操作,可以獲得如圖9E中所示的僅僅具有正值的數(shù)據(jù)。
對圖9E中所示的折疊數(shù)據(jù)執(zhí)行DND操作的結(jié)果示出在圖9F到9H中。具體地說,對折疊數(shù)據(jù)執(zhí)行一分開操作的結(jié)果在圖9F中所示。如圖9F中所示,正關(guān)鍵字?jǐn)?shù)據(jù)值從0到28變動,負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值從-29到0變動,其中負(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是顯示對圖9G中所示的差分?jǐn)?shù)據(jù)執(zhí)行下分操作的結(jié)果的圖表。對圖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)通過圖9H中所示的下分操作是如圖9J中所示最后編碼的數(shù)據(jù)。
在關(guān)鍵字頭編碼器270中編碼的信息和保存在關(guān)鍵字頭的信息將要在下文中描述。
當(dāng)輸入要編碼的關(guān)鍵字?jǐn)?shù)據(jù)時,關(guān)鍵字頭編碼器270編碼關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位和被編碼的鍵數(shù)目。接下來,關(guān)鍵字頭編碼器270接收有關(guān)是否存在在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域上的信息,該信息已經(jīng)通過在輸入的關(guān)鍵字?jǐn)?shù)據(jù)中線性關(guān)鍵字編碼,接收在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中來自線性關(guān)鍵字編碼器200的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目,以及接收已經(jīng)通過來自浮點數(shù)換算器205的浮點數(shù)換算的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字?jǐn)?shù)據(jù)。
在浮點數(shù)換算器205接收可以導(dǎo)致最小值量化誤差的最大和最小值并且轉(zhuǎn)換它們成為浮點數(shù)的情況下,轉(zhuǎn)換的最大和最小值從浮點數(shù)換算器205輸入到關(guān)鍵字頭編碼器270中,以便它們能被再次使用于反向量化。另外,量化比特的長度也輸入關(guān)鍵字頭編碼器270,并且被包括在該關(guān)鍵字頭中。
關(guān)鍵字頭編碼器270接收DPCM的階以及來自DPCM處理器220的DPCM每個周期中的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù),并且接收已經(jīng)用于來自移位器230的移位操作的一模值。另外,關(guān)鍵字頭編碼器270從DND處理器250得到的關(guān)于上移位操作是否已經(jīng)執(zhí)行的信息,通過DND的階差分?jǐn)?shù)據(jù)的分散度可以被最小化,并且最大和最小化在DND操作的每個周期中的值。
最后,關(guān)鍵字頭編碼器270從熵編碼器260接收用于編碼的比特數(shù),并且作為一關(guān)鍵字頭編碼它。
按照本發(fā)明的最佳實施例,關(guān)鍵字?jǐn)?shù)據(jù)編碼器的一例子已經(jīng)在上面描述了。很明顯,對于本領(lǐng)域的普通技術(shù)人員,本發(fā)明可以概括在不同方式中。在下文中,按照本發(fā)明的其它最佳實施例的能夠增加編碼關(guān)鍵字?jǐn)?shù)據(jù)效率的關(guān)鍵字?jǐn)?shù)據(jù)編碼器的其它例子將要參考圖2C到2G更充分地描述。在圖2A到2G中,相同標(biāo)號數(shù)字表示相同元件。
參考圖2C,按照本發(fā)明的另一最佳實施例的關(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í)行從每個差分?jǐn)?shù)據(jù)中減去該模的移位操作。接下來,移位器230輸出移位操作的結(jié)果到該折疊處理器240。該折疊處理器240轉(zhuǎn)換從移位器230輸入的差分?jǐn)?shù)據(jù)到正或者負(fù)數(shù)區(qū)域中,并且輸出該轉(zhuǎn)換的結(jié)果到DND處理器250。DND處理器250對從折疊處理器240輸入的差分?jǐn)?shù)據(jù)執(zhí)行DND操作。接下來,DND處理器250從已經(jīng)通過移位操作的差分?jǐn)?shù)據(jù)、已經(jīng)通過折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)中選出可以最小化用于編碼的比特數(shù)的差分?jǐn)?shù)據(jù),并且輸出所選擇的差分?jǐn)?shù)據(jù)到熵編碼器260,以便關(guān)鍵字?jǐn)?shù)據(jù)可以是編碼。這里,DND處理器250不必對已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)執(zhí)行上移位操作,并且該關(guān)鍵字?jǐn)?shù)據(jù)編碼器顯示一比傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器高得多的編碼效率。
參考圖2D,按照本發(fā)明另一最佳實施例的關(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對量化的關(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í)行從每個差分?jǐn)?shù)據(jù)中減去該模的移位操作。接下來,移位器230輸出移位操作的結(jié)果到DND處理器250。DND處理器250在從移位器230輸入的移位的差分?jǐn)?shù)據(jù)上執(zhí)行DND操作。接下來,DND處理器250算出在已經(jīng)通過移位操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)之間編碼需要的少量比特數(shù)的差分?jǐn)?shù)據(jù)。如果已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)變?yōu)榫哂芯幋a需要的小數(shù)量,DND處理器250在其上執(zhí)行上移位操作。接下來,DND處理器250從已經(jīng)通過上移位操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)中選出來具有編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)。則DND處理器250輸出所選擇的差分?jǐn)?shù)據(jù)到該熵編碼器260。熵編碼器在從DND處理器250輸入的差分?jǐn)?shù)據(jù)上執(zhí)行熵編碼,由此產(chǎn)生一比特流。在當(dāng)前實施例中的關(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ù)輸入時,按照本發(fā)明另一最佳實施例的關(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)通過該移位操作的差分?jǐn)?shù)據(jù)、已經(jīng)通過折疊操作的差分?jǐn)?shù)據(jù)和已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)中編碼所需要的比特數(shù)的差分?jǐn)?shù)據(jù)。如果已經(jīng)通過移位操作或者折疊操作的差分?jǐn)?shù)據(jù)認(rèn)為能夠最小化編碼所需要的比特數(shù),DND處理器250輸出它們到熵編碼器260以便關(guān)鍵字?jǐn)?shù)據(jù)可以被編碼。另一方面,在已經(jīng)通過DND操作的差分?jǐn)?shù)據(jù)選擇的情況下,DND處理器250對差分?jǐn)?shù)據(jù)執(zhí)行上移位操作。接下來,DND處理器250從已經(jīng)通過DND操作和已經(jīng)通過上移位操作的差分?jǐn)?shù)據(jù)中選出來具有編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)。接下來,所選擇的差分?jǐn)?shù)據(jù)輸出到熵編碼器260。熵編碼器260編碼DND操作250的輸出,因此產(chǎn)生一比特流。在當(dāng)前實施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器也顯示一傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器更高的編碼效率。
圖2F是按照本發(fā)明另一最佳實施例的關(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ù)所需要的比特數(shù)和編碼從上移位操作器256輸入的差分?jǐn)?shù)據(jù)所需要的比特數(shù)并且輸出編碼需要的小數(shù)量比特的差分?jǐn)?shù)據(jù)到該熵編碼器260以便使關(guān)鍵字?jǐn)?shù)據(jù)比特流輸出。在當(dāng)前實施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器也顯示一比傳統(tǒng)的關(guān)鍵字?jǐn)?shù)據(jù)編碼器更高的編碼效率。
在圖2G中,顯示按照本發(fā)明另一最佳實施例的關(guān)鍵字?jǐn)?shù)據(jù)編碼器,通過確設(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、浮點數(shù)換算器205、量化器210、熵編碼器280和關(guān)鍵字頭編碼器270。
當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)輸入到圖2G中所示的關(guān)鍵字?jǐn)?shù)據(jù)編碼器中時,線性關(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ù)到浮點數(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通過執(zhí)行預(yù)定的操作在它們上編碼從量化器210輸入的量化的關(guān)鍵字?jǐn)?shù)據(jù),并由此作為比特流輸出該操作的結(jié)果。
浮點數(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)前實施例中的關(guān)鍵字?jǐn)?shù)據(jù)編碼器可以進(jìn)一步包含一量化誤差最小化器215。
利用關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)編碼動畫數(shù)據(jù)的過程參考圖10A和10B將要更充分地描述。
關(guān)鍵字值動畫路徑中,關(guān)鍵字值編碼器搜索表示幾乎與關(guān)鍵字值的動畫路徑相同的一組點,而在這樣情況下可以縮小大量關(guān)鍵字值并且其余通過鍵選擇標(biāo)志表示。例如,假定給定關(guān)鍵字值表示圖10A中所示的一曲線并且選擇四個點,鍵選擇標(biāo)志具有如圖10B中所示的一些值。這樣的鍵選擇標(biāo)志通過熵編碼器260編碼以便只有相應(yīng)于鍵選擇標(biāo)志的關(guān)鍵字值數(shù)據(jù)被編碼。
SDL程序代碼的一例子和已經(jīng)用于上述的編碼過程的變量將要參考圖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頭和解碼所需要的比特數(shù)。nKeyQBit表示用于反向量化的量化比特,用于恢復(fù)浮點數(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)鍵字的整個范圍內(nèi)部的預(yù)定子區(qū)域內(nèi)的一些關(guān)鍵字可以利用跟隨標(biāo)志blsLinearKeySubRegion的解碼的標(biāo)題信息進(jìn)行計算。BRangeFlag代表關(guān)鍵字?jǐn)?shù)據(jù)的范圍是否在0和1之間。如果關(guān)鍵字?jǐn)?shù)據(jù)不在0到1之間,則從類KeyMinMax解碼最小值和最大值。最大和最小值中的每個可以被分成尾數(shù)和指數(shù)。nBitSize表示bQIntraKey的比特大小,nKeyShift表示nKeyMax原始的比特大小。nQIntraKey表示首先量化的內(nèi)部數(shù)據(jù)的大小,與表示nQIntraKey符號的nQIntraKeySign聯(lián)合,并被用作恢復(fù)其它量化的關(guān)鍵字?jǐn)?shù)據(jù)的基礎(chǔ)。在用于內(nèi)插器壓縮的符號比特之中,0表示正值,1表示負(fù)值。nKDPCMOrder與從DPCM的階減去1的結(jié)果相同。DPCM的階在1到3之間變動,并且與內(nèi)部數(shù)據(jù)的數(shù)目相同。
nkeyShift與符號位nKeyShiftSign一起是代表關(guān)鍵字?jǐn)?shù)據(jù)解碼器中的移位總量的整數(shù)。當(dāng)bShiftFlag設(shè)置為1時,解碼nKeyShift和nKeyShiftSign。nDNDOrder是DND的階。DND將在隨后按照本發(fā)明一最佳實施例的關(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)鍵字所需要的比特數(shù),其中預(yù)定數(shù)目的關(guān)鍵字可以線性預(yù)測。
圖14C是顯示類KeySelectionFlag的程序代碼的圖表。在圖14C中,keyFlag是一布爾陣列,表示第i個關(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的符號。NMinKeyMantissa表示這些關(guān)鍵字中的最小值的尾數(shù)。
nMinKeyExponentSign指的是nMinKeyExponent的符號。nMinKeyExponent表示這些關(guān)鍵字中的最小值的指數(shù)。
fKeyMin表示這些關(guān)鍵字中的最小值。nMaxKeyDigitSame表示全部關(guān)鍵字的最高有效位的數(shù)目nKeyDigit是否與這些關(guān)鍵字中的最大值的最高有效位的數(shù)目相同。nMaxKeyDigit表示這些關(guān)鍵字中的最大值的最高有效位數(shù)目。nMaxKeyMantissaSign表示nMaxKeyMantissa的符號。nMaxKeyMantissa表示這些關(guān)鍵字中的最大值的尾數(shù)。
bSameExponent表示這些關(guān)鍵字中的最大值的指數(shù)是否與nMinKeyExponent相同。nMaxKeyExponentSign表示nMaxKeyExponent的符號。nMaxKeyExponent表示這些關(guān)鍵字中的最大值的指數(shù)。fKeyMax表示這些關(guān)鍵字中的最大值。
圖14E是顯示類Key程序代碼的圖表。在圖14E中,nQKey表示從比特流解碼的量化的關(guān)鍵字?jǐn)?shù)據(jù)陣列。KeyContext表示用于讀出nQKey大小的某一范圍。KeySignContext表示用于讀出nQKey符號的一范圍。
decodeUnsignedAAC是用于利用一給定范圍執(zhí)行無符號的解碼的函數(shù),將要在下文中更充分地描述,而decodeSignedAAC是一利用另一給定范圍執(zhí)行符號解碼的函數(shù),將在隨后進(jìn)行描述。
在下文中,將要參考圖11和12描述按照本發(fā)明的一最佳實施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。
圖11A是按照本發(fā)明的一最佳實施例的解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置。用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的該裝置接收一編碼的比特流,并且通過解碼將其重建成關(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和浮點數(shù)逆換算器305。
圖12是按照本發(fā)明的一最佳實施例的、用于解碼關(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解碼的信息將隨每個解碼步驟進(jìn)行描述。
熵解碼器360從關(guān)鍵字頭解碼器370接收解碼的差分?jǐn)?shù)據(jù)的數(shù)目和已經(jīng)用于編碼的比特數(shù),即,用于解碼的比特數(shù),并且在步驟S4100,解碼輸入的比特流。差分?jǐn)?shù)據(jù)的數(shù)目等于從關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目減去通過執(zhí)行DPCM獲得的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)目的結(jié)果。
熵解碼器360以包括在該比特流內(nèi)預(yù)定的信息為基礎(chǔ)確定被解碼的差分?jǐn)?shù)據(jù)是否具有負(fù)值或者正值,例如,在當(dāng)前實施例中的bSignedAACFlag。如果編碼的差分?jǐn)?shù)據(jù)具有負(fù)值,則熵解碼器360利用函數(shù)decodeSignedAAC( )解碼它們。另一方面,如果編碼差分?jǐn)?shù)據(jù)只具有正值,則熵解碼器360利用函數(shù)decodeUnsignedAAC( )解碼它們。此后,解碼的差分?jǐn)?shù)據(jù)被傳輸?shù)椒聪駾ND處理器350。
隨后描述按照本發(fā)明的一最佳實施例的、用于實現(xiàn)這樣的用于解碼比特流的函數(shù)的程序代碼的例子。
反向DND處理器350從解碼器370接收DND的階和DND每個周期中的最大值nKeyMax。
如果DND的階是-1,這意味著被解碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)通過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)通過上移位操作在步驟S4170被編碼。在本發(fā)明的一最佳實施例中,通過檢查包括在一比特流內(nèi)的nKeyInvertDown是否大于0來確定被解碼的編碼差分?jǐn)?shù)據(jù)是否已經(jīng)經(jīng)歷上移位操作進(jìn)行了編碼。
如果解碼的編碼差分?jǐn)?shù)據(jù)沒有經(jīng)過上移位操作,該方法轉(zhuǎn)移到執(zhí)行反向DND的步驟上。另一方面,如果被解碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)過上移位操作,則在步驟S4200,將通過執(zhí)行上移位操作從正數(shù)區(qū)域轉(zhuǎn)移到一負(fù)數(shù)區(qū)域的差分?jǐn)?shù)據(jù)移回到該負(fù)數(shù)區(qū)域。在本發(fā)明的一最佳實施例中,已經(jīng)過上移位操作的差分?jǐn)?shù)據(jù)通過執(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的每個周期中的最大值有選擇地對已經(jīng)過下移位操作的差分?jǐn)?shù)據(jù)執(zhí)行反下分操作或者上分操作。
參考圖13,反向DND處理器350執(zhí)行與在編碼期間已經(jīng)過DND操作的差分?jǐn)?shù)據(jù)同樣多次的反向DND操作。換句話說,反向DND處理器350設(shè)置一等于DND的階的反向DND的階的初始值。接下來,每當(dāng)反向DND處理器350執(zhí)行一反向DND操作,反向DND處理器350就從反向DND的階的初始值中減去1,并且反向DND處理器350保持執(zhí)行反向DND操作直到反向DND的階變成1。在步驟S4310,反向DND處理器350在DND每個周期中搜索nKeyMax并且檢查每個nKeyMax是否不小于0。
如果nKeyMax小于0,這意味著上分操作已經(jīng)在編碼過程中執(zhí)行了,并由此在步驟S4320,反向DND處理器350通過執(zhí)行一上分操作擴(kuò)展被解碼的差分?jǐn)?shù)據(jù)的范圍到負(fù)數(shù)區(qū)域。在本發(fā)明的一最佳實施例中,可以使用由等式(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檢測反向DND的階是否是1。如果反向DND的階不是1,這意味著在編碼過程中已經(jīng)對被解碼的差分?jǐn)?shù)據(jù)執(zhí)行了下分操作,并由此在步驟S4340,反向DND處理器350通過執(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é)束整個反向DND操作。在本發(fā)明的一最佳實施例中,可以使用根據(jù)方程式(17)定義的反向分開操作。
inverse-divide(v) …(17)=v (if v≥0)=v+(nKeyMax0+1) (if v<0)已經(jīng)過反向DND操作的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)輸入到反向折疊處理器340中,并且在步驟S4400,反向折疊處理器340對差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊操作,以便曾經(jīng)是僅用在正數(shù)區(qū)域中的差分?jǐn)?shù)據(jù)被分成正值和負(fù)值。在本發(fā)明的一最佳實施例中,可以使用根據(jù)方程式(18)定義的一反向折疊操作。
inverse-fold(v)=(v+1)2(if vmod2≠0)---(18)]]>=v2(if vmod2=0)]]>=0(if v=0)]]>已經(jīng)過反向折疊操作的差分?jǐn)?shù)據(jù)輸出到該反向移位器330,該反向移位器330添加一已經(jīng)被用于編碼過程并且從關(guān)鍵字頭解碼器370輸入的模nKeyShift到該從反向折疊處理器340輸入的差分?jǐn)?shù)據(jù),在步驟S4500。這操作通過下列等式表示。
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)過反向DPCM操作的量化的關(guān)鍵字?jǐn)?shù)據(jù)輸入到反向量化器310中。然后,反向量化器310從關(guān)鍵字頭解碼器370接收關(guān)于量化比特的大小nKeyQBit和用于反向量化的最大和最小值是否通過浮點數(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ù)過程中沒有通過浮點數(shù)換算器205轉(zhuǎn)換,則等式(21)中所示的fKeyMin和fKeyMax分別設(shè)置為0和1。然而,如果用于量化的最大和最小值已經(jīng)通過浮點數(shù)換算器205轉(zhuǎn)換,則通過該浮點數(shù)逆換算器305反向地轉(zhuǎn)換的最大和最小值分別被用作反向量化的最大和最小值。
隨后描述實現(xiàn)針對反向量化的反向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ān)鍵字頭解碼器370從一比特流解碼關(guān)鍵字頭信息。如果線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域上的信息存在于該比特流中,則關(guān)鍵字頭解碼器370輸出解碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字所需要的信息到浮點數(shù)換算器305,并且輸出作為線性關(guān)鍵字編碼的關(guān)鍵字?jǐn)?shù)目到該線性關(guān)鍵字解碼器300。
浮點數(shù)逆換算器305反向地轉(zhuǎn)換通過十進(jìn)制數(shù)表示的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的首尾關(guān)鍵字成為二進(jìn)制數(shù),并且輸出二進(jìn)制數(shù)到線性關(guān)鍵字解碼器300。
假定兩個被解碼的浮點數(shù)被認(rèn)為是fKeyMin和fKeyMax,則解碼fKeyMin的過程如下。
關(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編碼。因此,浮點數(shù)fKeyMax在它的32比特讀出之后被解碼。
然而,如果fKeyMax數(shù)位在1和7之間,則關(guān)鍵字頭解碼器370從該比特流讀出一符號位。在本發(fā)明的一最佳實施例中,如果該符號位是1,則將MinKeyMantissaSign設(shè)置為-1。另一方面,如果該符號位是0,則將MinKeyMantissaSign設(shè)置為1。此后,解碼所需要的比特數(shù)參考圖表1獲得,圖表1顯示尾數(shù)的數(shù)位和編碼所需要的比特數(shù)之間的關(guān)系。接下來,與編碼所需要的比特數(shù)同樣多的比特流的比特被讀出,并且保存在nMinKeyMantissa中。然后,比特流的下一位被讀出,并且以與尾數(shù)的符號保存在MinKeyMantissaSign中同樣的方式,將其保存在MinKeyExponentSign。相應(yīng)于指數(shù)值的該比特流的隨后6比特被讀出,并且保存在nMinKeyExponent中。
浮點數(shù)逆換算器305通過替代從關(guān)鍵字頭解碼器370輸入的值成為等式(22)來恢復(fù)fKeyMax。
fKeyMin=MinKeyMantissaSign*nMinKeyMantissa10MinKeyExponentSign*nMinKeyExponent---(22)]]>恢復(fù)fKeyMax的過程與恢復(fù)fKeyMin的過程相同。具體地說,在從該比特流讀出fKeyMax的指數(shù)以前,它確定是否與fKeyMin的指數(shù)一樣的值被用作fKeyMax的指數(shù)。如果沒有將與fKeyMin的指數(shù)一樣的值用作fKeyMin的指數(shù),則以從比特流讀出的fKeyMin的指數(shù)同樣的方法,從該比特流讀出fKeyMax的指數(shù)。
線性關(guān)鍵字解碼器300從浮點數(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ā)明一最佳實施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置的一例子。很明顯,對于本領(lǐng)域的普通技術(shù)人員來說,本發(fā)明可以以不同方式實現(xiàn)。在下文中,將參考圖11B到11E描述用于解碼關(guān)鍵字?jǐn)?shù)據(jù)本裝置的不同實施例。圖11A到11E中相同標(biāo)號數(shù)字表示相同元件。
參考圖11B,用于按照本發(fā)明另一最佳實施例的、解碼關(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ù)的裝置中時,熵解碼器360熵解碼輸入的比特流,并且輸出熵解碼的結(jié)果,即,解碼的差分?jǐn)?shù)據(jù)到反向DND操作器352。反向DND操作器352確定輸入的差分?jǐn)?shù)據(jù)是否已經(jīng)過基于關(guān)于該輸入的差分?jǐn)?shù)據(jù)的DND的階的DND操作。如果差分?jǐn)?shù)據(jù)已經(jīng)過DND操作,則反向DND操作器352對差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,并且輸出反向DND操作的結(jié)果。如果差分?jǐn)?shù)據(jù)沒有經(jīng)過DND操作,則反向DND操作器352將其分流。
反向折疊處理器340檢測從反向DND操作器352輸入的差分?jǐn)?shù)據(jù)是否已經(jīng)經(jīng)過了使用DND的階的折疊操作,如果該差分?jǐn)?shù)據(jù)已經(jīng)過折疊操作,則對差分?jǐn)?shù)據(jù)執(zhí)行一反向折疊操作。如果該差分?jǐn)?shù)據(jù)沒有經(jīng)過折疊操作,則該反向DND操作器352將它們分流到該反向移位器330。
反向移位器330對從反向折疊處理器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ā)明另一最佳實施例的、用于解碼關(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ù)的裝置中時,熵解碼器360熵解碼輸入的比特流,并且輸出所解碼的差分?jǐn)?shù)據(jù)到反向DND處理器350。反向DND處理器350檢測從熵解碼器360輸入的差分?jǐn)?shù)據(jù)在編碼關(guān)鍵字?jǐn)?shù)據(jù)的過程中是否已經(jīng)過上移位操作。如果輸入的差分?jǐn)?shù)據(jù)已經(jīng)過上移位操作,則反向DND處理器350在該差分?jǐn)?shù)據(jù)上順序地執(zhí)行一下移位操作和一反向DND操作,并且輸出反向DND操作的結(jié)果。如果該輸入的差分?jǐn)?shù)據(jù)沒有經(jīng)過上移位操作,則反向DND處理器350對差分?jǐn)?shù)據(jù)執(zhí)行一反向DND操作,并且輸出反向DND操作的結(jié)果到該反向移位器330。
反向移位器330對從反向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ā)明另一最佳實施例的、用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括熵解碼器360、反向上移位操作器356和反向DND操作器352。
所輸入的比特流在熵解碼器360中解碼,在差分?jǐn)?shù)據(jù)中轉(zhuǎn)換并且輸入到反向上移位操作器356中。該反向上移位操作器356對輸入的差分?jǐn)?shù)據(jù)執(zhí)行一下移位操作,并且輸出下移位操作的結(jié)果到反向DND操作器352。反向DND操作器352對從上移位操作器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ā)明另一最佳實施例的、用于解碼關(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和浮點數(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ù)上的信息到該浮點數(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ù)是從該浮點數(shù)逆換算器305輸入的。接下來,線性關(guān)鍵字解碼器添加解碼的線性關(guān)鍵字?jǐn)?shù)據(jù)到從反向量化器310輸出的關(guān)鍵字?jǐn)?shù)據(jù)并且輸出所解碼的關(guān)鍵字?jǐn)?shù)據(jù)。
下文將參考圖15A到15C描述實現(xiàn)用于解碼關(guān)鍵字?jǐn)?shù)據(jù)的操作的程序代碼的例子。
圖15A圖解的是實現(xiàn)函數(shù)decodeSignedAAC( )的程序代碼的例子,該函數(shù)用于借助有關(guān)于值和它們的符號的范圍(context),解碼沒有來自已經(jīng)過自適應(yīng)的算術(shù)編碼的比特流的符號的值。
圖15B是一說明程序代碼例子的圖表,該程序代碼實現(xiàn)函數(shù)decodeUnsignedAAC( ),該函數(shù)借助于有關(guān)于值和它們的符號的范圍(context),編碼不具有來自已經(jīng)過自適應(yīng)的算術(shù)編碼的比特流的標(biāo)志的值。在圖15B中,qf_decode( )表示用于讀出來自比特流的一位的函數(shù)。
圖15C是說明程序代碼一例子的圖表,該程序代碼實現(xiàn)上面已經(jīng)描述的、針對反向量化的反向DND操作。
本發(fā)明可以作為記錄在計算機(jī)可讀記錄介質(zhì)上的計算機(jī)可讀代碼實現(xiàn)。這里,計算機(jī)可讀記錄媒體包含可以通過計算機(jī)系統(tǒng)閱讀的任何種類的記錄媒體。例如,計算機(jī)可讀記錄媒體包含ROM、RAM、CD-ROM、磁帶、軟盤、光數(shù)據(jù)存儲器、載波(經(jīng)過國際互聯(lián)網(wǎng)絡(luò)傳輸?shù)?。計算機(jī)可讀記錄媒體可以分散到基于網(wǎng)絡(luò)連接的計算機(jī)系統(tǒng),并且計算機(jī)可以以分散的方式訪問該記錄媒體。
不同于用于編碼解碼關(guān)鍵字?jǐn)?shù)據(jù)的傳統(tǒng)裝置,按照本發(fā)明用于編碼解碼關(guān)鍵字?jǐn)?shù)據(jù)的方法和裝置可以通過執(zhí)行移位操作、折疊操作、針對通過執(zhí)行DPCM操作獲得的差分?jǐn)?shù)據(jù)的DND操作,顯著地提高編碼關(guān)鍵字?jǐn)?shù)據(jù)的效率,并且編碼可以最小化編碼所需要的比特數(shù)的操作中至少之一的結(jié)果。因此,按照本發(fā)明,可以顯著地減少用于存儲三維動畫的空間并且以高速傳輸動畫數(shù)據(jù)。
雖然本發(fā)明是參考其最佳實施例進(jìn)行具體顯示和描述的,但本領(lǐng)域的技術(shù)人員可以理解,可以在其中作出形式和細(xì)節(jié)上的不同變化,只要它們不背離附屬的權(quán)利要求書所限定的發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于解碼比特流的方法,其中并列內(nèi)插器包括關(guān)鍵字?jǐn)?shù)據(jù)和包含關(guān)于該關(guān)鍵字?jǐn)?shù)據(jù)被編碼的信息的關(guān)鍵字頭,關(guān)鍵字?jǐn)?shù)據(jù)表示關(guān)鍵字幀在時間軸上的位置,所述方法包括(a)對關(guān)鍵字頭進(jìn)行解碼;以及(b)根據(jù)在(a)中執(zhí)行的解碼結(jié)果,對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼。
2.根據(jù)權(quán)利要求1所述的方法,其中,(b)包括通過執(zhí)行下述處理而對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼熵解碼、反向移位、反向差分脈碼調(diào)制DPCM、反向量化以及線性關(guān)鍵字合成。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述關(guān)鍵字頭包括量化比特量nKVQBit,表示用于量化關(guān)鍵字?jǐn)?shù)據(jù)的比特的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)量nNumberOfKey,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)數(shù)位量nKeyDigit,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位的數(shù)量;線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion,表示關(guān)鍵字?jǐn)?shù)據(jù)是否包括線性關(guān)鍵字區(qū)域;開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey,如果將線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion值設(shè)置為1,則該開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey被包括在關(guān)鍵字頭內(nèi),表示線性關(guān)鍵字區(qū)域從何處開始和結(jié)束;量化誤差調(diào)整標(biāo)志bRangeFlag,表示是否使用可以最小化量化誤差的方法來調(diào)整關(guān)鍵字?jǐn)?shù)據(jù)的最大值和最小值;關(guān)鍵字?jǐn)?shù)據(jù)的經(jīng)調(diào)整的最大值和最小值KeyMinMax,如果將量化誤差調(diào)整標(biāo)志bRangeFlag值設(shè)置為1,則該關(guān)鍵字?jǐn)?shù)據(jù)的經(jīng)調(diào)整的最大值和最小值KeyMinMax被包括在關(guān)鍵字頭內(nèi),使用該經(jīng)調(diào)整的最大值和最小值KeyMinMax來執(zhí)行反向量化;DPCM階nKDPCMOrder,表示已經(jīng)執(zhí)行了多少個DPCM迭代;參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey,用于確定是否執(zhí)行DPCM,其中,參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign,其中,關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;移位標(biāo)志bShiftFlag,表示是否基于DPCM獲得的所有關(guān)鍵字?jǐn)?shù)據(jù)中具有最高頻率的關(guān)鍵字?jǐn)?shù)據(jù)對所有關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行移位;移位值nKeyShift,表示所有關(guān)鍵字?jǐn)?shù)據(jù)將被移位的程度;移位值符號比特nKeyShiftSign,是移位值nKeyShift的符號比特;反復(fù)分開DND階nDNDOrder,表示已經(jīng)執(zhí)行多少個DND迭代用來調(diào)整DPCM結(jié)果的范圍;用于執(zhí)行DND的最大值和最小值中的至少一個nKeyMax,其中,最大值和最小值的數(shù)量對應(yīng)于DND階nDNDOrder;符號比特nKeyMaxSign,識別最大值和最小值中的至少一個nKeyMax,其中,符號比特nKeyMaxSign的數(shù)量對應(yīng)于DND階nDNDOrder;反向下標(biāo)志bKeyInvertDownFlag,表示是否對DND結(jié)果進(jìn)行反向下;反向下值nKeyInvertDown,表示DND結(jié)果要被反向下的程度;以及自適應(yīng)算法編碼AAC標(biāo)志bSignedAACFlag,表示是否已經(jīng)使用有符號AAC方法或無符號AAC方法來執(zhí)行熵編碼,其中,所述線性關(guān)鍵字區(qū)域是關(guān)鍵字?jǐn)?shù)據(jù)線性增加的區(qū)域。
4.根據(jù)權(quán)利要求3所述的方法,其中,(b)包括如果AAC標(biāo)志bSignedAACFlag表示已經(jīng)使用有符號AAC方法對編碼的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行了編碼,則通過執(zhí)行反向有符號AAC來對編碼的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行熵解碼,如果AAC標(biāo)志bSignedAACFlag表示已經(jīng)使用無符號AAC方法對編碼的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行了編碼,則執(zhí)行反向無符號AAC;如果DND階nDNDOrder值被設(shè)置為等于或大于1,則對熵解碼的結(jié)果執(zhí)行反向DND;如果DND階nDNDOrder被設(shè)置為-1之外的值,則對熵解碼的結(jié)果執(zhí)行反向折疊;如果DND階nDNDOrder被設(shè)置為-1之外的值,則將反向折疊的結(jié)果反向移位移位值nKeyShift,如果DND階nDNDOrder值被設(shè)置為-1,則將熵解碼的結(jié)果反向移位移位值nKeyShift;根據(jù)DPCM階nKDPCMOrder對反向移位的結(jié)果執(zhí)行反向DPCM;如果已經(jīng)調(diào)整了最大和最小關(guān)鍵字?jǐn)?shù)據(jù),則調(diào)整反向DPCM的結(jié)果,并根據(jù)量化比特尺寸nKeyQBit對調(diào)整結(jié)果執(zhí)行反向量化;以及如果所解碼的關(guān)鍵字頭包括線性關(guān)鍵字區(qū)域,則使用開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey對線性關(guān)鍵字區(qū)域的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼,并且對解碼結(jié)果和反向量化結(jié)果執(zhí)行線性關(guān)鍵字合成。
5.根據(jù)權(quán)利要求4所述的方法,其中,在執(zhí)行反向DND期間,如果DND階nDNDOrder值被設(shè)置為等于或大于1,且反向下值不為-1,則執(zhí)行作為在熵編碼期間執(zhí)行的上移位操作的反向操作的反向下操作,如果DND階nDNDOrder值被設(shè)置為等于或大于1,且反向下值為-1,則不執(zhí)行反向下操作,并且執(zhí)行反向DND包括執(zhí)行預(yù)定數(shù)量的次數(shù)的反向DND,所述預(yù)定數(shù)量的次數(shù)對應(yīng)于DND階nDNDOrder,其中,如果反向DND的當(dāng)前迭代不是反向DND的最后迭代,且至少一個nKeyMax是正值,則使用反向下分方法執(zhí)行反向DND的當(dāng)前迭代,如果反向DND的當(dāng)前迭代不是反向DND的最后迭代,且至少一個nKeyMax是負(fù)值,則使用反向上分方法執(zhí)行反向DND的當(dāng)前迭代,并且如果反向DND的當(dāng)前迭代是反向DND的最后迭代,則使用反向上分方法執(zhí)行反向DND的當(dāng)前迭代,而不管至少一個nKeyMax是正值還是負(fù)值。
6.一種用于對并列內(nèi)插器進(jìn)行編碼的方法,所述內(nèi)插器包括關(guān)鍵字?jǐn)?shù)據(jù)和包含關(guān)于該關(guān)鍵字?jǐn)?shù)據(jù)被編碼的信息的關(guān)鍵字頭,關(guān)鍵字?jǐn)?shù)據(jù)表示關(guān)鍵字幀在時間軸上的位置,所述方法包括(a)對關(guān)鍵字頭進(jìn)行編碼;以及(b)根據(jù)在(a)中執(zhí)行的編碼結(jié)果,對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行編碼。
7.根據(jù)權(quán)利要求6所述的方法,其中,(b)包括通過執(zhí)行下述處理而對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行編碼量化、差分脈碼調(diào)制DPCM以及熵編碼。
8.根據(jù)權(quán)利要求7所述的方法,其中,所述關(guān)鍵字頭包括量化比特量nKVQBit,表示用于量化關(guān)鍵字?jǐn)?shù)據(jù)的比特的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)量nNumberOfKey,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)數(shù)位量nKeyDigit,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位的數(shù)量;線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion,表示關(guān)鍵字?jǐn)?shù)據(jù)是否包括線性關(guān)鍵字區(qū)域;開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey,如果將線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion值設(shè)置為1,則該開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey被包括在關(guān)鍵字頭內(nèi),表示線性關(guān)鍵字區(qū)域從何處開始和結(jié)束;量化誤差調(diào)整標(biāo)志bRangeFlag,表示是否使用可以最小化量化誤差的方法來調(diào)整關(guān)鍵字?jǐn)?shù)據(jù)的最大值和最小值;關(guān)鍵字?jǐn)?shù)據(jù)的經(jīng)調(diào)整的最大值和最小值KeyMinMax,如果將量化誤差調(diào)整標(biāo)志bRangeFlag值設(shè)置為1,則該經(jīng)調(diào)整的最大值和最小值KeyMinMax被包括在關(guān)鍵字頭內(nèi),使用該經(jīng)調(diào)整的最大值和最小值KeyMinMax來執(zhí)行量化;DPCM階nKDPCMOrder,表示已經(jīng)執(zhí)行了多少個DPCM迭代;參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey,用于確定是否執(zhí)行DPCM,其中,參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign,其中,關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;移位標(biāo)志bShiftFlag,表示是否基于DPCM獲得的所有關(guān)鍵字?jǐn)?shù)據(jù)中具有最高頻率的關(guān)鍵字?jǐn)?shù)據(jù)對所有關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行移位;移位值nKeyShift,表示所有關(guān)鍵字?jǐn)?shù)據(jù)將被移位的程度;移位值符號比特nKeyShiftSign,是移位值nKeyShift的符號比特;反復(fù)分開DND階nDNDOrder,表示已經(jīng)執(zhí)行多少個DND迭代用來調(diào)整DPCM結(jié)果的范圍;用于執(zhí)行DND的最大值和最小值中的至少一個nKeyMax,其中,最大值和最小值的數(shù)量對應(yīng)于DND階nDNDOrder;符號比特nKeyMaxSign,識別最大值和最小值中的至少一個nKeyMax,其中,符號比特nKeyMaxSign的數(shù)量對應(yīng)于DND階nDNDOrder;反向下標(biāo)志bKeyInvertDownFlag,表示是否對DND結(jié)果進(jìn)行反向下;反向下值nKeyInvertDown,表示DND結(jié)果要被反向下的程度;以及自適應(yīng)算法編碼AAC標(biāo)志bSignedAACFlag,表示是否已經(jīng)使用有符號AAC方法或無符號AAC方法來執(zhí)行熵編碼,其中,所述線性關(guān)鍵字區(qū)域是關(guān)鍵字?jǐn)?shù)據(jù)線性增加的區(qū)域。
9.根據(jù)權(quán)利要求8所述的方法,其中,(b)包括根據(jù)量化比特尺寸nKeyQBit對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化;通過根據(jù)DPCM階nKDPCMOrder對量化結(jié)果執(zhí)行DPCM而生成差分?jǐn)?shù)據(jù);對差分?jǐn)?shù)據(jù)執(zhí)行DND,使得可以最小化差分?jǐn)?shù)據(jù)的最大值和最小值之間的差;以及對DND結(jié)果執(zhí)行熵編碼。
10.一種用于對比特流進(jìn)行解碼的裝置,其中,并列內(nèi)插器包括關(guān)鍵字?jǐn)?shù)據(jù)和包含關(guān)于該關(guān)鍵字?jǐn)?shù)據(jù)被編碼的信息的關(guān)鍵字頭,關(guān)鍵字?jǐn)?shù)據(jù)表示關(guān)鍵字幀在時間軸上的位置,所述裝置包括關(guān)鍵字頭解碼單元,對關(guān)鍵字頭進(jìn)行解碼;以及關(guān)鍵字解碼單元,根據(jù)關(guān)鍵字頭解碼單元執(zhí)行的解碼結(jié)果,對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼。
11.根據(jù)權(quán)利要求10所述的裝置,其中,關(guān)鍵字解碼單元通過執(zhí)行下述處理而對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼熵解碼、反向移位、反向差分脈碼調(diào)制DPCM、反向量化以及線性關(guān)鍵字合成。
12.根據(jù)權(quán)利要求11所述的方法,其中,所述關(guān)鍵字頭包括量化比特量nKVQBit,表示用于量化關(guān)鍵字?jǐn)?shù)據(jù)的比特的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)量nNumberOfKey,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)數(shù)位量nKeyDigit,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位的數(shù)量;線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion,表示關(guān)鍵字?jǐn)?shù)據(jù)是否包括線性關(guān)鍵字區(qū)域;開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey,如果將線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion值設(shè)置為1,則該開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey被包括在關(guān)鍵字頭內(nèi),表示線性關(guān)鍵字區(qū)域從何處開始和結(jié)束;量化誤差調(diào)整標(biāo)志bRangeFlag,表示是否使用可以最小化量化誤差的方法來調(diào)整關(guān)鍵字?jǐn)?shù)據(jù)的最大值和最小值;關(guān)鍵字?jǐn)?shù)據(jù)的經(jīng)調(diào)整的最大值和最小值KeyMinMax,如果將量化誤差調(diào)整標(biāo)志bRangeFlag值設(shè)置為1,則該經(jīng)調(diào)整的最大值和最小值KeyMinMax被包括在關(guān)鍵字頭內(nèi),使用該經(jīng)調(diào)整的最大值和最小值KeyMinMax來執(zhí)行反向量化;DPCM階nKDPCMOrder,表示已經(jīng)執(zhí)行了多少個DPCM迭代;參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey,用于確定是否執(zhí)行DPCM,其中,參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign,其中,關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;移位標(biāo)志bShiftFlag,表示是否基于DPCM獲得的所有關(guān)鍵字?jǐn)?shù)據(jù)中具有最高頻率的關(guān)鍵字?jǐn)?shù)據(jù)對所有關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行移位;移位值nKeyShift,表示所有關(guān)鍵字?jǐn)?shù)據(jù)將被移位的程度;移位值符號比特nKeyShiftSign,是移位值nKeyShift的符號比特;反復(fù)分開DND階nDNDOrder,表示已經(jīng)執(zhí)行多少個DND迭代用來調(diào)整DPCM結(jié)果的范圍;用于執(zhí)行DND的最大值和最小值中的至少一個nKeyMax,其中,最大值和最小值的數(shù)量對應(yīng)于DND階nDNDOrder;符號比特nKeyMaxSign,識別最大值和最小值中的至少一個nKeyMax,其中,符號比特nKeyMaxSign的數(shù)量對應(yīng)于DND階nDNDOrder;反向下標(biāo)志bKeyInvertDownFlag,表示是否對DND結(jié)果進(jìn)行反向下;反向下值nKeyInvertDown,表示DND結(jié)果要被反向下的程度;以及自適應(yīng)算法編碼AAC標(biāo)志bSignedAACFlag,表示是否已經(jīng)使用有符號AAC方法或無符號AAC方法來執(zhí)行熵編碼,其中,所述線性關(guān)鍵字區(qū)域是關(guān)鍵字?jǐn)?shù)據(jù)線性增加的區(qū)域。
13.根據(jù)權(quán)利要求12所述的裝置,其中,所述關(guān)鍵字解碼單元包括熵解碼單元,如果AAC標(biāo)志bSignedAACFlag表示已經(jīng)使用有符號AAC方法對編碼的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行了編碼,則通過執(zhí)行反向有符號AAC來對編碼的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行熵解碼,如果AAC標(biāo)志bSignedAACFlag表示已經(jīng)使用無符號AAC方法對編碼的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行了編碼,則執(zhí)行反向無符號AAC;反向DND單元,如果DND階nDNDOrder值被設(shè)置為等于或大于1,則對熵解碼單元執(zhí)行的熵解碼的結(jié)果執(zhí)行反向DND;反向折疊單元,如果DND階nDNDOrder被設(shè)置為-1之外的值,則對熵解碼單元執(zhí)行的熵解碼的結(jié)果執(zhí)行反向折疊;反向移位單元,如果DND階nDNDOrder被設(shè)置為-1之外的值,則將反向折疊單元執(zhí)行的反向折疊的結(jié)果反向移位移位值nKeyShift,如果DND階nDNDOrder值被設(shè)置為-1,則將熵解碼單元執(zhí)行的熵解碼的結(jié)果反向移位移位值nKeyShift;反向DPCM單元,根據(jù)DPCM階nKDPCMOrder對反向移位單元執(zhí)行的反向移位的結(jié)果執(zhí)行反向DPCM;反向量化單元,如果已經(jīng)調(diào)整了最大和最小關(guān)鍵字?jǐn)?shù)據(jù),則調(diào)整反向DPCM單元執(zhí)行的反向DPCM的結(jié)果,并根據(jù)量化比特尺寸nKeyQBit對調(diào)整結(jié)果執(zhí)行反向量化;以及線性關(guān)鍵字合成單元,如果所解碼的關(guān)鍵字頭包括線性關(guān)鍵字區(qū)域,則使用開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey對線性關(guān)鍵字區(qū)域的關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行解碼,并且對解碼結(jié)果和反向量化單元執(zhí)行的反向量化結(jié)果執(zhí)行線性關(guān)鍵字合成。
14.根據(jù)權(quán)利要求13所述的裝置,其中,如果DND階nDNDOrder值被設(shè)置為等于或大于1,且反向下值不為-1,則執(zhí)行作為在熵編碼期間執(zhí)行的上移位操作的反向操作的反向下操作,如果DND階nDNDOrder值被設(shè)置為等于或大于1,且反向下值為-1,則不執(zhí)行反向下操作,并且以與DND階nDNDOrder執(zhí)行反向DND對應(yīng)的預(yù)定數(shù)量的次數(shù)執(zhí)行反向DND,其中,如果反向DND的當(dāng)前迭代不是反向DND的最后迭代,且至少一個nKeyMax是正值,則使用反向下分方法執(zhí)行反向DND的當(dāng)前迭代,如果反向DND的當(dāng)前迭代不是反向DND的最后迭代,且至少一個nKeyMax是負(fù)值,則使用反向上分方法執(zhí)行反向DND的當(dāng)前迭代,并且如果反向DND的當(dāng)前迭代是反向DND的最后迭代,則使用反向上分方法執(zhí)行反向DND的當(dāng)前迭代,而不管至少一個nKeyMax是正值還是負(fù)值。
15.一種用于對并列內(nèi)插器進(jìn)行編碼的裝置,該并列內(nèi)插器包括關(guān)鍵字?jǐn)?shù)據(jù)和包含關(guān)于該關(guān)鍵字?jǐn)?shù)據(jù)被編碼的信息的關(guān)鍵字頭,關(guān)鍵字?jǐn)?shù)據(jù)表示關(guān)鍵字幀在時間軸上的位置,所述裝置包括關(guān)鍵字頭編碼單元,對關(guān)鍵字頭進(jìn)行編碼;以及關(guān)鍵字編碼單元,根據(jù)關(guān)鍵字頭編碼單元執(zhí)行的編碼結(jié)果,對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行編碼。
16.根據(jù)權(quán)利要求15所述的裝置,其中,所述關(guān)鍵字編碼單元通過執(zhí)行下述處理而對關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行編碼量化、差分脈碼調(diào)制DPCM以及熵編碼。
17.根據(jù)權(quán)利要求16所述的裝置,其中,所述關(guān)鍵字頭包括量化比特量nKVQBit,表示用于量化關(guān)鍵字?jǐn)?shù)據(jù)的比特的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)量nNumberOfKey,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量;關(guān)鍵字?jǐn)?shù)據(jù)數(shù)位量nKeyDigit,表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)位的數(shù)量;線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion,表示關(guān)鍵字?jǐn)?shù)據(jù)是否包括線性關(guān)鍵字區(qū)域;開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey,如果將線性關(guān)鍵字標(biāo)志blsLinearKeySubRegion值設(shè)置為1,則該開始/結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)IKey被包括在關(guān)鍵字頭內(nèi),表示線性關(guān)鍵字區(qū)域從何處開始和結(jié)束;量化誤差調(diào)整標(biāo)志bRangeFlag,表示是否使用可以最小化量化誤差的方法來調(diào)整關(guān)鍵字?jǐn)?shù)據(jù)的最大值和最小值;關(guān)鍵字?jǐn)?shù)據(jù)的經(jīng)調(diào)整的最大值和最小值KeyMinMax,如果將量化誤差調(diào)整標(biāo)志bRangeFlag值設(shè)置為1,則該經(jīng)調(diào)整的最大值和最小值KeyMinMax被包括在關(guān)鍵字頭內(nèi),使用該經(jīng)調(diào)整的最大值和最小值KeyMinMax來執(zhí)行量化;DPCM階nKDPCMOrder,表示已經(jīng)執(zhí)行了多少個DPCM迭代;參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey,用于確定是否執(zhí)行DPCM,其中,參考關(guān)鍵字?jǐn)?shù)據(jù)nQIntraKey的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign,其中,關(guān)鍵字?jǐn)?shù)據(jù)符號比特nQIntraKeySign的數(shù)量對應(yīng)于DPCM階nKDPCMOrder;移位標(biāo)志bShiftFlag,表示是否基于DPCM獲得的所有關(guān)鍵字?jǐn)?shù)據(jù)中具有最高頻率的關(guān)鍵字?jǐn)?shù)據(jù)對所有關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行移位;移位值nKeyShift,表示所有關(guān)鍵字?jǐn)?shù)據(jù)將被移位的程度;移位值符號比特nKeyShiftSign,是移位值nKeyShift的符號比特;反復(fù)分開DND階nDNDOrder,表示已經(jīng)執(zhí)行多少個DND迭代用來調(diào)整DPCM結(jié)果的范圍;用于執(zhí)行DND的最大值和最小值中的至少一個nKeyMax,其中,最大值和最小值的數(shù)量對應(yīng)于DND階nDNDOrder;符號比特nKeyMaxSign,識別最大值和最小值中的至少一個nKeyMax,其中,符號比特nKeyMaxSign的數(shù)量對應(yīng)于DND階nDNDOrder;反向下標(biāo)志bKeyInvertDownFlag,表示是否對DND結(jié)果進(jìn)行反向下;反向下值nKeyInvertDown,表示DND結(jié)果要被反向下的程度;以及自適應(yīng)算法編碼AAC標(biāo)志bSignedAACFlag,表示是否已經(jīng)使用有符號AAC方法或無符號AAC方法來執(zhí)行熵編碼,其中,所述線性關(guān)鍵字區(qū)域是關(guān)鍵字?jǐn)?shù)據(jù)線性增加的區(qū)域。
18.根據(jù)權(quán)利要求17所述的裝置,其中,所述關(guān)鍵字編碼單元包括量化單元,根據(jù)量化比特尺寸nKeyQBit對關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行量化;DPCM單元,通過根據(jù)DPCM階nKDPCMOrder對量化單元執(zhí)行的量化結(jié)果執(zhí)行DPCM而生成差分?jǐn)?shù)據(jù);DND單元,對差分?jǐn)?shù)據(jù)執(zhí)行DND,使得可以最小化差分?jǐn)?shù)據(jù)的最大值和最小值之間的差;以及熵編碼單元,對DND單元執(zhí)行的DND結(jié)果執(zhí)行熵編碼。
全文摘要
提供一種用于編碼和解碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置和方法。用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的裝置包括線性關(guān)鍵字編碼器,在關(guān)鍵字?jǐn)?shù)據(jù)線性地增加的區(qū)域中識別輸入的關(guān)鍵字?jǐn)?shù)據(jù)并且編碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域;浮點數(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ù)定量化比特量化它們;熵編碼器,熵編碼對差分?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)鍵字頭。
文檔編號G06T9/00GK1878311SQ200610094358
公開日2006年12月13日 申請日期2002年11月27日 優(yōu)先權(quán)日2001年11月27日
發(fā)明者李信俊, 鄭錫潤, 張義善, 禹相玉, 韓萬鎮(zhèn), 金道均, 張敬子 申請人:三星電子株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
论坛| 武鸣县| 桃江县| 米泉市| 南开区| 阜南县| 镇远县| 温州市| 外汇| 彰化市| 治县。| 西华县| 任丘市| 玛沁县| 什邡市| 桦南县| 方山县| 呼和浩特市| 忻州市| 禹城市| 兴义市| 奎屯市| 从江县| 峨眉山市| 汉源县| 新干县| 荆门市| 赤水市| 清河县| 萍乡市| 祁阳县| 辉县市| 内黄县| 威信县| 宁陵县| 库车县| 广东省| 金川县| 修武县| 左云县| 陕西省|