專利名稱:用于編碼元素的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理,尤其涉及用于編碼元素的方法和設(shè)備。
背景技術(shù):
目前,數(shù)據(jù)經(jīng)常以結(jié)構(gòu)化文檔的形式進(jìn)行存儲或傳輸,該結(jié)構(gòu)化文檔包括多種不 同類型的數(shù)據(jù)。結(jié)構(gòu)化文檔是一組元素,其中每個元素與一種類型和至少一個屬性關(guān)聯(lián), 并且元素之間通過層次化的關(guān)系相互關(guān)聯(lián)。結(jié)構(gòu)化文檔的典型例子是可擴(kuò)展標(biāo)記語言 (extensible markup language,XML)文檔。結(jié)構(gòu)化文檔包括用于隔離不同元素的標(biāo)記(也 稱作標(biāo)簽)。一個元素本身可以包括一些屬性和低級別元素。低級別元素也可以稱作子元 素。因此,結(jié)構(gòu)化文檔可表示為一棵樹或?qū)哟位Y(jié)構(gòu),每一個節(jié)點代表一個元素并且和處于 更高層次級別的節(jié)點相連。該處于更高層次的節(jié)點代表包含該處于低層次的元素的一個元 素。處于分支端點的節(jié)點代表包含數(shù)據(jù)的元素,并且該處于分支端點的節(jié)點已經(jīng)不能再被 劃分為子元素。在這里,處于分支端點的節(jié)點的數(shù)據(jù)也可以被認(rèn)識是對應(yīng)于某種類型的元 素的屬性值。在現(xiàn)有的多種用于編碼結(jié)構(gòu)化文檔的壓縮方法中,有一種壓縮方法為基于架構(gòu) (schema)的壓縮方法。用于定義結(jié)構(gòu)化文檔的架構(gòu)本身也是結(jié)構(gòu)化文檔。架構(gòu)的典型例子 是XML架構(gòu)。一般來說,XML架構(gòu)是一組用于定義XML實例的架構(gòu)組件(component)。架構(gòu) 組件本身也是元素,它是包含架構(gòu)的數(shù)據(jù)模型模板的構(gòu)件(building block)的通稱。在使 用基于架構(gòu)的壓縮方法壓縮結(jié)構(gòu)化文檔的一個實例的過程中,首先從架構(gòu)的定義中生成有 限狀態(tài)機(jī)(finite state automation,F(xiàn)SA),然后使用相應(yīng)的FSA來把架構(gòu)的一個實例或?qū)?例的部分轉(zhuǎn)化成比特流。一些架構(gòu)組件可能包含出現(xiàn)次數(shù)限制(occurrence constraint), 由minOccurs和maxOccur兩個屬性來定義。這種類型的架構(gòu)組件通常被稱作出現(xiàn)次數(shù)節(jié) 點(occurrence node)。下面是一個XML架構(gòu)的例子,在該XML架構(gòu)中包括一個maxOccur屬性設(shè)置為100 的出現(xiàn)次數(shù)節(jié)點。< ? xmlversion = “ 1. 0 “encoding ="IS0-8859-1" ? >〈schematargetNamespace =“urnthomsonSchemaExamp1e 〃xmlns= 〃 http://www.w3.org/2001/XMLSchema"xmlnss = 〃 urnthomsonSchemaExample 〃xmlns:xs = “ http://www.w3.org/2001/XMLSchema"xmlns:xsi = “ http://www. w3. org/2001/XMLSchema-instance“ >〈element name = " testSchema" ><complexType>〈choice maxOccurs = 〃 100〃 >[OOl4](element name一”el”type一”XSstring”/>[OOl5](element name一”e2”type一”XSstring”/>[OOl6](element name一”e3”type一”XSstring”/>[OOl7](element name一”e4”type一”XSstring”/>[OOl8](element name一”e5”type一”XSstring”/>[OOl 9]</choice)
</C。mp l eXType>
</element)
(/schema)
下面的例子示出了上述架構(gòu)的一個實例。
< xml veFsion一” 1.0”encoding一” 工SO一8859一l” >
<StestSChemaxmlnss’’ uFnthomsonSChemaEXample’’
xmlnsb一 ’’ uFnthomsonSchemaB ’’xmlnsa二’’uFnthomsonSchemaA’’
xmlnsC一’’uFnthomsonSchemaC’’
xmlnsxsi一’’http//www.w3.org/2001/XMLSchema—instance’’
XSischemaLocation 一” uFnthomsonSchemaExample./SChemaEXamDle.xsd” >
<e l>AAAA</e l>
<e1)BBBB(/el>
<e l>CCCC</e l>
<e 1)DDDD(/e l>
<e 1)gggg(/e l>
</stestSchema)
從上述例子中可以看出,元素el重復(fù)了5次,分別帶有不同的數(shù)據(jù)值。傳統(tǒng)的基于架構(gòu)的壓縮方法在生成的編碼數(shù)據(jù)流中包含了相同的元素el的結(jié)構(gòu)信息5次。這被視作冗余。發(fā)明內(nèi)容
本發(fā)明的一個方面提供了一種用于編碼一組元素的方法。其中,每一個元素包含對應(yīng)于一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值。該方法包括步驟選擇一個要進(jìn)行編碼的當(dāng)前元素;確定所述當(dāng)前元素是否和前一個經(jīng)過編碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu);如果不相同,對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)和所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼;以及如果相同,對所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼,并且提供一個用于指示所述當(dāng)前元素具有和所述前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型的指示值。
根據(jù)本發(fā)明的一個方面,它提供了一種用于解碼一個元素組的經(jīng)過編碼的數(shù)據(jù)的方法,其中,所述元素組中每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,包括步驟選擇要進(jìn)行解碼的當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù);以及如果基于所述經(jīng)過編碼的數(shù)據(jù)的一部分,確定所述當(dāng)前元素和前一個經(jīng)過解碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu)類型,則通過解 碼所述經(jīng)過編碼的數(shù)據(jù)來獲取至少一個屬性值以及通過使用所述前一個經(jīng)過解碼的元素 的數(shù)據(jù)結(jié)構(gòu)來獲取所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu),其中,所述經(jīng)過編碼的數(shù)據(jù)的一部分指示所 述當(dāng)前元素和前一個經(jīng)過解碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu)類型。根據(jù)本發(fā)明的一個方面,它提供一種用于攜帶當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù)的數(shù)據(jù) 結(jié)構(gòu),其中,所述當(dāng)前元素具有一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,包括屬性值域用 于攜帶所述當(dāng)前元素的至少一個屬性值的經(jīng)過編碼的數(shù)據(jù);以及指示域用于指示所述當(dāng)前 元素是否具有和前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型。根據(jù)本發(fā)明的一個方面,它提供了一種用于對一個元素組進(jìn)行編碼的編碼器,其 中,所述元素組的每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,包括輸入模塊 002),用于接收數(shù)據(jù);以及處理模塊003),用于確定要被編碼的當(dāng)前元素是否和前一個 經(jīng)過編碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu),響應(yīng)于確定步驟的否定判斷對所述當(dāng)前元素的數(shù)據(jù) 結(jié)構(gòu)和至少一個屬性值進(jìn)行編碼,和響應(yīng)于確定步驟的肯定判斷對所述當(dāng)前元素的至少一 個屬性值進(jìn)行編碼以及提供一個用于指示所述當(dāng)前元素具有和前一個經(jīng)過編碼的元素相 同的數(shù)據(jù)結(jié)構(gòu)類型的指示值。根據(jù)本發(fā)明的一個方面,它提供了一種用于對一個元素組的經(jīng)過編碼的數(shù)據(jù)進(jìn)行 解碼的解碼器,其中,所述元素組的每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性 值,包括輸入模塊(502),用于接收要被解碼的當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù);以及處理模 塊(503),用于基于所述經(jīng)過編碼的數(shù)據(jù)的一部分來確定所述當(dāng)前元素是否具有和前一個 經(jīng)過解碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型,其中所述經(jīng)過編碼的數(shù)據(jù)的一部分用于指示所述當(dāng) 前元素是否具有和前一個經(jīng)過解碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型;響應(yīng)于確定步驟的肯定判 斷,通過解碼所述經(jīng)過編碼的數(shù)據(jù)獲取至少一個屬性值以及通過使用所述前一個經(jīng)過解碼 的元素的數(shù)據(jù)結(jié)構(gòu)來獲取所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)。根據(jù)本發(fā)明的一個方面,減少了結(jié)構(gòu) 信息的編碼冗余。在閱讀了本發(fā)明的下述具體描述后,可以了解本發(fā)明的其他方面和優(yōu)點。
下面結(jié)合著附圖對本發(fā)明的實施例進(jìn)行描述。做為本申請一部分的附圖被用于協(xié) 助讀者對本發(fā)明的理解。本發(fā)明不應(yīng)局限于這些實施例。在附圖中圖1的圖根據(jù)本發(fā)明的實施例示出出現(xiàn)次數(shù)節(jié)點的狀態(tài)轉(zhuǎn)移。圖2的流程圖根據(jù)本發(fā)明的實施例示出編碼設(shè)備執(zhí)行的編碼方法。圖3的流程圖根據(jù)本發(fā)明的實施例示出解碼設(shè)備執(zhí)行的解碼方法。圖4的塊圖根據(jù)本發(fā)明的實施例示出了編碼設(shè)備。圖5的塊圖根據(jù)本發(fā)明的實施例示出了解碼設(shè)備。
具體實施例方式如下將結(jié)合附圖對本發(fā)明的實施例進(jìn)行描述。為了清楚和簡潔起見,一些現(xiàn)有技 術(shù)中的功能和配置可能會被省略。
下面的實施例在一個采用基于架構(gòu)的壓縮方法的數(shù)據(jù)處理環(huán)境中被闡述。例 如,在ISO網(wǎng)站上的關(guān)于IS0/IEC 15938-1 :2002/Amd 2 :2006信息技術(shù)-多媒體內(nèi)容 描述接口 -部分 1,系統(tǒng)的文檔(IS0/IEC 15938-1 :2002/Amd 2 :2006 Information Technology-Multimedia Content Description Interface-Parti, Systems)。該文檔定義 一個基于架構(gòu)的壓縮環(huán)境的各個方面。下面的實施例被放在這個環(huán)境下進(jìn)行描述,并且同 時指出需要對該環(huán)境做出的改變。但是應(yīng)當(dāng)理解,本發(fā)明并不應(yīng)局限于該描述的實施例。在基于架構(gòu)的壓縮方法中,F(xiàn)SA被用于編碼元素的結(jié)構(gòu)信息。在這里,實例的結(jié) 構(gòu)信息包括在一個結(jié)構(gòu)化文檔的實例中除了元素包含的數(shù)據(jù)值之外的元素組件的信息, 例如序列(sequence)、選項(choice)、特性(property)以及其他用于描述元素的結(jié)構(gòu)。 圖1示出了根據(jù)本發(fā)明實施例的出現(xiàn)次數(shù)節(jié)點的狀態(tài)轉(zhuǎn)移圖。FSA使用分路過渡(shunt transition)和循環(huán)過渡(loop transition)來對一個或多個元素或者元素組進(jìn)行編 碼。循環(huán)過渡包括循環(huán)開始過渡(loop start transition),循環(huán)結(jié)束過渡(loop end transition)和循環(huán)繼續(xù)過渡(loop continue transition)。進(jìn)一步地,增加了重復(fù)狀態(tài) (repeat state)和非重復(fù)狀態(tài)(unr印eat state),用于協(xié)助減少冗余的結(jié)構(gòu)信息。因為實施例是被放在由IS0/IEC 15938-1 :2002/Amd 2 :2006信息技術(shù)-多媒體 內(nèi)容描述接口 -部分1規(guī)定的框架中進(jìn)行描述,并且對該框架做了一些改變,下面將對狀態(tài) 和過渡(transition)做簡要的介紹。元素過渡(Element transition)當(dāng)通過的時候,它通知解碼器是哪一個元素被呈現(xiàn)。類型狀態(tài)(Type state)當(dāng)激活時,它對類型編碼器進(jìn)行觸發(fā)。循環(huán)過渡它被用于對一個或多個元素或元素組的解碼進(jìn)行建模。在本實施 例中,循環(huán)過渡包括循環(huán)開始過渡、循環(huán)結(jié)束過渡、循環(huán)繼續(xù)過渡、重復(fù)過渡(repeat transition)禾口非重復(fù)過渡(unrepeat transition)。循環(huán)開始過渡當(dāng)將要編碼的一些元素或元素組要出現(xiàn)多次的時候,它將被通過。循環(huán)繼續(xù)過渡當(dāng)還有至少一個需要被編碼的元素或元素組的時候,它將被通過。循環(huán)結(jié)束過渡當(dāng)沒有需要被編碼的元素或元素組的時候,它將被通過。編碼過渡(code transition)它與二進(jìn)制碼字和簽名相關(guān)聯(lián)。當(dāng)從二進(jìn)制描述 數(shù)據(jù)流中讀取相關(guān)聯(lián)的二進(jìn)制碼字的時候,將通過編碼過渡。二進(jìn)制碼字從它的簽名中獲 得。分路過渡它是一種特殊的編碼過渡。它的二進(jìn)制碼字的值永遠(yuǎn)等于0。簡單狀態(tài)(Simple state)它沒有具體的動作,只是被用于構(gòu)造狀態(tài)機(jī)。重復(fù)狀態(tài)當(dāng)元素和它前一個元素有相同的結(jié)構(gòu)信息的時候,它被通過。非重復(fù)狀態(tài)當(dāng)元素和它前一個元素相比有不同的結(jié)構(gòu)信息的時候,它被通過。當(dāng)對一個XML文件或者XML文件的部分片段進(jìn)行壓縮的時候,對元素逐個進(jìn)行分 析,并且對內(nèi)嵌元素的元素進(jìn)行遞歸。對于對出現(xiàn)次數(shù)元素的處理,它在如圖1所示的FSA 中進(jìn)行循環(huán)。經(jīng)過的過渡對應(yīng)的碼字(code)形成了編碼結(jié)果。從背景技術(shù)中的XML實例 的例子中可以看出元素el出現(xiàn)了 5次,并且分別帶有不同數(shù)據(jù)值。首先,狀態(tài)機(jī)通過編碼 過渡、循環(huán)過渡和元素過渡到達(dá)類型狀態(tài)。由于這是第一次元素el出現(xiàn),狀態(tài)機(jī)通過循環(huán) 繼續(xù)過渡直接到達(dá)簡單狀態(tài)。然后,在編碼第二元素el的過程中狀態(tài)機(jī)第二次到達(dá)狀態(tài)類型。此時,狀態(tài)機(jī)判斷第二個元素el的結(jié)構(gòu)信息是否和先前編碼的元素的結(jié)構(gòu)信息相同。 如果它們相同并且下一個元素依舊是el,那么狀態(tài)機(jī)將通過重復(fù)狀態(tài)到達(dá)簡單狀態(tài)。否則, 如果它們不相同,狀態(tài)機(jī)則通過非重復(fù)狀態(tài)。重復(fù)這個過程一直到所有的元素都被分析過。 最后,狀態(tài)機(jī)通過循環(huán)結(jié)束過渡到達(dá)結(jié)束狀態(tài)。編碼設(shè)備通過使用相應(yīng)的XML架構(gòu)來對XML實例進(jìn)行壓縮。圖2的流程圖根據(jù)本 發(fā)明的實施例示出了編碼器設(shè)備執(zhí)行的使用XML架構(gòu)的編碼方法。-在步驟201中,編碼設(shè)備基于XML架構(gòu)生成全部的FSA,該FSA被用于對XML文 件中的元素進(jìn)行編碼。-在步驟202中,編碼設(shè)備接受需要被編碼的和該XML架構(gòu)相關(guān)聯(lián)的XML文件。-在步驟203中,編碼設(shè)備從該XML文件中讀取一個元素做為當(dāng)前元素。-在步驟204中,編碼設(shè)備判斷當(dāng)前元素是否是文件結(jié)束(endof file, EOF)。如 果是EOF,那么編碼設(shè)備在步驟205中結(jié)束編碼過程。如果不是,則進(jìn)入步驟206。-在步驟206中,編碼設(shè)備通過使用相對應(yīng)的FSA對當(dāng)前元素的結(jié)構(gòu)信息進(jìn)行編碼 來生成經(jīng)過編碼的結(jié)構(gòu)信息。在這里,經(jīng)過編碼的結(jié)構(gòu)信息通常以二進(jìn)制的形式存在。此 外,當(dāng)前元素中包含的數(shù)據(jù)值可以在這一步驟中或者輸出最終經(jīng)過編碼的結(jié)構(gòu)信息之后的 步驟中被編碼,從而生成經(jīng)過編碼的數(shù)據(jù)值。經(jīng)過編碼的結(jié)構(gòu)信息和經(jīng)過編碼的數(shù)據(jù)值的 組合形成最終的經(jīng)過編碼的元素。為了減少結(jié)構(gòu)信息編碼的冗余,如下的步驟將主要關(guān)注 于對結(jié)構(gòu)信息進(jìn)行編碼的方面。-在步驟207中,編碼設(shè)備判斷當(dāng)前元素是否對應(yīng)于出現(xiàn)次數(shù)節(jié)點的一個子元素 (sub-element)以及上一個元素是否對應(yīng)于同樣的出現(xiàn)次數(shù)節(jié)點的一個子元素。如果不是, 則進(jìn)入步驟209 ;如果是,則進(jìn)入步驟208。因為該方法致力于減少出現(xiàn)次數(shù)節(jié)點編碼過程 中的冗余,該步驟致力于判斷當(dāng)前元素是否屬于相同的出現(xiàn)次數(shù)節(jié)點。因此,當(dāng)當(dāng)前元素和 上一個元素不屬于相同的出現(xiàn)次數(shù)節(jié)點的時候,就節(jié)省了下面的判斷步驟。-在步驟209中,編碼設(shè)備輸出當(dāng)前元素的經(jīng)過編碼的結(jié)構(gòu)信息。-在步驟208中,編碼設(shè)備判斷當(dāng)前元素的元素定義信息是否和上一個元素的元 素定義信息相同。如果不相同,則進(jìn)入步驟212 ;如果相同,則進(jìn)入步驟210。該步驟用于區(qū) 別對應(yīng)于相同出現(xiàn)次數(shù)節(jié)點的不同子元素的元素。有時候,該步驟是必要的。這是因為不 同元素的不同結(jié)構(gòu)信息可能對應(yīng)相同的經(jīng)過編碼的結(jié)構(gòu)信息。在這里,元素定義信息是在 架構(gòu)中用于定義元素的結(jié)構(gòu)的信息。從上述的XML架構(gòu)的例子可以看出元素el和元素e2 在XML架構(gòu)中的元素定義不同。當(dāng)編碼設(shè)備對上一個元素執(zhí)行步驟206的時候,與上一個 元素相關(guān)的信息,如元素定義信息、FSA和經(jīng)過編碼的結(jié)構(gòu)信息,被存儲在臨時的存儲設(shè)備 或易失性存儲設(shè)備中,如RAM。并且,在當(dāng)前元素被編碼后,對存儲設(shè)備進(jìn)行更新。-在步驟212中,編碼設(shè)備輸出用于指示不同的指示值(例如比特“0”)以及當(dāng)前 元素的經(jīng)過編碼的結(jié)構(gòu)信息。-在步驟210中,編碼設(shè)備確定當(dāng)前元素的經(jīng)過編碼的結(jié)構(gòu)信息是否和該XML文件 中它前面的元素的經(jīng)過編碼的結(jié)構(gòu)信息相同。該確定步驟是通過比較在步驟206中生成的 當(dāng)前元素的經(jīng)過編碼的結(jié)構(gòu)信息和前面元素的經(jīng)過編碼的結(jié)構(gòu)信息來完成的。如果相同, 則進(jìn)入步驟211 ;如果不相同,則進(jìn)入步驟212。-在步驟211中,編碼設(shè)備輸出用于指示相同的指示值(例如比特“1”)。在某種意義上,該指示值也可以被認(rèn)為是一個用于指示經(jīng)過編碼的結(jié)構(gòu)信息是否在最終輸出中存 在的標(biāo)記。根據(jù)本發(fā)明的一個方面,本領(lǐng)域的普通技術(shù)人員能夠認(rèn)識到步驟207用于判斷當(dāng) 前元素和前一個元素是否屬于同一個出現(xiàn)次數(shù)節(jié)點。步驟208和210用于判斷XML文件中 當(dāng)前元素的結(jié)構(gòu)信息是否和前一個元素的結(jié)構(gòu)信息相同,這是因為在有些情況下具有不同 結(jié)構(gòu)信息的不同的元素可能具有相同的二進(jìn)制的經(jīng)過編碼的結(jié)構(gòu)信息。此外,應(yīng)當(dāng)知曉,在 其他使用架構(gòu)來對結(jié)構(gòu)化文檔的實例進(jìn)行編碼的其他環(huán)境中,可以使用其他的方法來判斷 當(dāng)前元素和前一個元素的結(jié)構(gòu)信息是否相同。通過使用標(biāo)記來指示經(jīng)過編碼的結(jié)構(gòu)信息是 否存在,其減少具有相同結(jié)構(gòu)信息的經(jīng)過編碼的元素的的大小。從而節(jié)約了存儲空間,以及 在傳輸包括這些元素的XML文件時使用的帶寬。根據(jù)本發(fā)明實施例的一個變形,在步驟201中編碼設(shè)備不生成全部的FSA。代替 地,編碼設(shè)備在編碼一個元素之前僅僅生成對應(yīng)于該元素的FSA。再或者,全部的FSA預(yù)先 存儲在設(shè)備中,而不是在步驟201中生成。根據(jù)本發(fā)明實施例的一個變形,如果使用其他方法或手段能夠不使用經(jīng)過編碼的 結(jié)構(gòu)信息并且還能夠執(zhí)行步驟210的判斷步驟,那么步驟206不是必須一定在步驟207之 前執(zhí)行。但是,在輸出經(jīng)過編碼的結(jié)構(gòu)信息之前對元素的結(jié)構(gòu)信息進(jìn)行編碼。根據(jù)本發(fā)明實施例的一個變形,該方面不僅可以應(yīng)用在整個XML文件上,也可以 應(yīng)用在XML文件的片段(fragment)上。圖3的流程圖示出了根據(jù)本發(fā)明的實施例的解碼設(shè)備執(zhí)行的解碼方法。-在步驟301中,解碼設(shè)備基于相應(yīng)的XML架構(gòu)生成用于解碼結(jié)果編碼的元素的全 部的FSA。-在步驟302中,解碼設(shè)備獲取屬于出現(xiàn)次數(shù)節(jié)點的當(dāng)前的經(jīng)過編碼的元素。-在步驟303中,解碼設(shè)備基于經(jīng)過編碼的元素中包含的指示值來判斷當(dāng)前元素 的結(jié)構(gòu)信息是否和前一個元素的結(jié)構(gòu)信息相同。如果相同,則進(jìn)入步驟304 ;如果不同,則 進(jìn)入步驟305。做為一個示例,指示值為比特“1”時表面當(dāng)前元素的結(jié)構(gòu)信息和前一個元素 的結(jié)構(gòu)信息相同;比特“0”時表面不同。換句話來說,該指示值可以被視作用于指示經(jīng)過編 碼的信息是否存在于經(jīng)過編碼的元素之中的標(biāo)記。在這里,當(dāng)前一個元素被解碼設(shè)備解碼 的時候,與前一個元素相關(guān)的信息被暫時地存儲在緩存中或一個存儲設(shè)備中。并且,在解碼 設(shè)備對當(dāng)前元素解碼之后,緩存或存儲設(shè)備的內(nèi)容被更新。-在步驟304中,解碼設(shè)備輸出存儲的前一個元素的結(jié)構(gòu)信息。-在步驟305中,解碼設(shè)備基于相應(yīng)的FSA對經(jīng)過編碼的結(jié)構(gòu)信息進(jìn)行解碼,從而 生成當(dāng)前元素的結(jié)構(gòu)信息;并且輸出當(dāng)前元素的結(jié)構(gòu)信息。進(jìn)一步地,對于經(jīng)過編碼的數(shù)據(jù) 值進(jìn)行解碼的過程可以在對經(jīng)過編碼的結(jié)構(gòu)信息進(jìn)行解碼的過程之中或者過程之后進(jìn)行。根據(jù)本發(fā)明的實施例,提供用于在基于架構(gòu)的壓縮環(huán)境中攜帶經(jīng)過編碼的出現(xiàn)次 數(shù)節(jié)點類型的元素的數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)包括指示域,并且有可能包括結(jié)構(gòu)信息域和內(nèi) 容域,分別用于承載該元素的經(jīng)過編碼的結(jié)構(gòu)信息和經(jīng)過編碼的數(shù)據(jù)值。指示域用于指示 該元素的結(jié)構(gòu)信息是否和前一個元素的結(jié)構(gòu)信息相同。如果該元素的結(jié)構(gòu)信息和前一個元 素的結(jié)構(gòu)信息相同,則賦予指示域一個用于指示結(jié)構(gòu)信息相同并且結(jié)構(gòu)信息域不存在的數(shù) 值。相反地,如果不相同,則賦予指示域一個用于指示結(jié)構(gòu)信息不同并且結(jié)果信息域存在的數(shù)值。因此,該指示域也能夠用于指示結(jié)構(gòu)信息域是否存在。圖4的塊圖根據(jù)本發(fā)明的實施例描述了編碼設(shè)備。編碼設(shè)備400包括FSA模塊 401,輸入模塊402,處理模塊403,輸出模塊404和緩存模塊405。FSA模塊401用于基于XML 架構(gòu)向處理模塊403提供FSA。FSA的提供可以通過如下的方式響應(yīng)于處理模塊對FSA的 請求,F(xiàn)SA模塊401生成相應(yīng)的FSA ;或FSA模塊401首先基于XML架構(gòu)生成全部的FSA,在 存儲設(shè)備中存儲全部的FSA,然后響應(yīng)于對FSA的請求向處理模塊403提供FSA。輸入模塊 402用于接收數(shù)據(jù)。輸出模塊404用于輸出數(shù)據(jù)。緩存模塊405用于緩存數(shù)據(jù)。處理模塊 403用于從輸入模塊402接收一個要被編碼的元素做為當(dāng)前元素,并且基于緩存模塊405提 供的前一個元素的結(jié)構(gòu)信息判斷當(dāng)前元素的結(jié)構(gòu)信息是否和前一個元素的結(jié)構(gòu)信息相同。 如果相同,處理模塊403使用輸入模塊404輸出用于指示不存在經(jīng)過編碼的結(jié)構(gòu)信息的指 示值。如果不相同,處理模塊403使用輸入模塊404輸出用于指示存在經(jīng)過編碼的結(jié)構(gòu)信 息的指示值,并且處理模塊被進(jìn)一步用于基于從FSA模塊401接收的相應(yīng)的FSA對當(dāng)前元 素的結(jié)構(gòu)信息進(jìn)行編碼來生成當(dāng)前元素的經(jīng)過編碼的結(jié)構(gòu)信息。在這里,當(dāng)處理模塊403 對前一個元素進(jìn)行編碼的時候,與前一個元素相關(guān)的信息,如前一個元素的經(jīng)過編碼的結(jié) 構(gòu)信息,被存儲在緩存模塊405。并且,在當(dāng)前元素被編碼之后對緩存模塊405中存儲的信 息進(jìn)行更新。圖5的塊圖根據(jù)本發(fā)明的實施例描述了解碼設(shè)備。解碼設(shè)備500包括FSA模塊 501,輸入模塊502,處理模塊503,輸出模塊504和緩存模塊505。FSA模塊501用于基于 XML架構(gòu)為處理模塊503提供FSA。輸入模塊502用于接收數(shù)據(jù)。輸出模塊504用于輸出 數(shù)據(jù)。緩存模塊505用于緩存數(shù)據(jù)。解碼設(shè)備500的處理模塊503用于通過使用從FSA模 塊501接收的相應(yīng)的FSA基于從輸入模塊502接收的數(shù)據(jù)來生成元素的結(jié)構(gòu)信息。具體來 說,處理模塊503從輸入模塊502接收經(jīng)過編碼的元素做為當(dāng)前的經(jīng)過編碼的元素,并且基 于包含在經(jīng)過編碼的元素中的指示值判斷當(dāng)前元素的結(jié)構(gòu)信息是否和前一個元素的結(jié)構(gòu) 信息相同。如果相同,處理模塊503使用輸出模塊504輸出前一個元素的結(jié)構(gòu)信息。前一 個元素的結(jié)構(gòu)信息在對前一個元素的經(jīng)過編碼的結(jié)構(gòu)信息進(jìn)行解碼的時候被存儲在緩存 模塊505中。相反地,如果不相同,處理模塊503基于從FSA模塊501接收的相應(yīng)的FSA對 當(dāng)前元素的經(jīng)過編碼的結(jié)構(gòu)信息進(jìn)行解碼,并且使用輸出模塊504輸出當(dāng)前元素的結(jié)構(gòu)信 息。在這里,在處理模塊503對前一個元素進(jìn)行解碼的時候,與前一個元素相關(guān)的信息,如 前一個元素的結(jié)構(gòu)信息,被存儲在緩存模塊505中。并且,在對當(dāng)前的經(jīng)過編碼的元素解碼 之后,對緩存模塊505中的信息進(jìn)行更新。下面提供了實驗數(shù)據(jù)以及注釋。例子中的架構(gòu)及其XML實例被置于由IS0/IEC 15938-1 :2002/Amd 2 :2006信息技術(shù)-多媒體內(nèi)容描述接口 _部分1規(guī)定的框架中。0000 0100#元素個數(shù)000# 位置碼0#類型標(biāo)記0 0100#字符串的大小0100 0001 0100 0001 0100 0001 0100 0001# 字符串的值000# 位置碼0#類型標(biāo)記
0 01000100 0010 0100 0010 0100 0010 0100 0010# 字符串的值000# 位置碼0#類型標(biāo)記0 0100#字符串的大小0100 0011 0100 0011 0100 0011 0100 0011# 字符串的值000# 位置碼0#類型標(biāo)記0 0100#字符串的大小0100 0100 0100 0100 0100 0100 0100 0100# 字符串的值000# 位置碼0#類型標(biāo)記0 0100#字符串的大小0100 0101 0100 0101 0100 0101 0100 0101# 字符串的值000根據(jù)本發(fā)明的實施例的輸出如下所示0000 0100#元素個數(shù)000# 位置碼0#類型標(biāo)記0 0100#字符串的大小0100 0001 0100 0001 0100 0001 0100 0001# 字符串的值1#重復(fù)標(biāo)記0 0100#字符串的大小0100 0010 0100 0010 0100 0010 0100 0010# 字符串的值1#重復(fù)標(biāo)記0 0100#字符串的大小0100 0011 0100 0011 0100 0011 0100 0011# 字符串的值1#重復(fù)標(biāo)記0 0100#字符串的大小0100 0100 0100 0100 0100 0100 0100 0100# 字符串的值1#重復(fù)標(biāo)記0 0100#字符串的大小0100 0101 0100 0101 0100 0101 0100 0101# 字符串的值000從上述的實驗數(shù)據(jù)可以看出冗余的結(jié)構(gòu)信息減少了。本發(fā)明描述了幾個實施例。但是應(yīng)該了解到,還可以對已描述的實施例做各種修 改。例如,不同實施例中的元素能夠被結(jié)合、補充、修改或者移除,從而生成不同的實施例。 此外,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解可以使用其他結(jié)構(gòu)或者步驟來代替說明書公開的結(jié) 構(gòu)或步驟,并且新的實施例能夠以基本相同的方式,實現(xiàn)基本相同的功能,并且具備基本相同的有益效果。
權(quán)利要求
1.一種用于編碼一個元素組的方法,其中所述元素組中的每一個元素包括一種類型的 數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括步驟選擇一個要進(jìn)行編碼的當(dāng)前元素;確定所述當(dāng)前元素是否和前一個經(jīng)過編碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu);如果不相同, 對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)和所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼;以及如果相同,對所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼,并且提供一個用于指示所述 當(dāng)前元素具有和所述前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型的指示值。
2.如權(quán)利要求1所述的方法,其特征在于,在所述元素組中,所述當(dāng)前元素緊鄰所述前 一個經(jīng)過編碼的元素。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述當(dāng)前元素和所述前一個經(jīng)過編碼的 元素都是出險次數(shù)節(jié)點類型,并且編碼步驟使用架構(gòu)。
4.如權(quán)利要求1到3任一權(quán)利要求所述的方法,其特征在于,所述方法進(jìn)一步包括 如果不相同,提供另一個指示值,用于指示所述當(dāng)前元素具有和所述前一個經(jīng)過編碼的元素不同的數(shù)據(jù)結(jié)構(gòu)類型。
5.如權(quán)利要求3所述的方法,其特征在于使用所述架構(gòu)進(jìn)行編碼的步驟進(jìn)一步包括 從所述架構(gòu)中獲取對應(yīng)于所述當(dāng)前元素的編碼工具,以用于對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼O01);以及基于所述編碼工具對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼(206)。
6.如權(quán)利要求1到5任一權(quán)利要求所述的方法,其特征在于所述元素組來自與所述架 構(gòu)相關(guān)的文件或片段。
7.一種用于解碼一個元素組的經(jīng)過編碼的數(shù)據(jù)的方法,其中,所述元素組中每一個元 素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括步驟選擇要進(jìn)行解碼的當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù);以及如果基于所述經(jīng)過編碼的數(shù)據(jù)的一部分,確定所述當(dāng)前元素和前一個經(jīng)過解碼的元素 具有相同的數(shù)據(jù)結(jié)構(gòu)類型,則通過解碼所述經(jīng)過編碼的數(shù)據(jù)來獲取至少一個屬性值以及通 過使用所述前一個經(jīng)過解碼的元素的數(shù)據(jù)結(jié)構(gòu)來獲取所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu),其中,所 述經(jīng)過編碼的數(shù)據(jù)的一部分指示所述當(dāng)前元素和前一個經(jīng)過解碼的元素具有相同的數(shù)據(jù) 結(jié)構(gòu)類型。
8.如權(quán)利要求7所述的方法,其特征在于,進(jìn)一步包括如果確定所述當(dāng)前元素和所述前一個經(jīng)過解碼的元素相比具有不同的數(shù)據(jù)結(jié)構(gòu)類型, 通過對所述當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù)進(jìn)行解碼從而獲取所述當(dāng)前元素的至少一個屬性 值和數(shù)據(jù)結(jié)構(gòu)。
9.一種用于攜帶當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),其中,所述當(dāng)前元素具有一 種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括屬性值域用于攜帶所述當(dāng)前元素的至少一個屬性值的經(jīng)過編碼的數(shù)據(jù);以及 指示域用于指示所述當(dāng)前元素是否具有和前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型。
10.一種用于對一個元素組進(jìn)行編碼的編碼器,其中,所述元素組的每一個元素包括一 種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括輸入模塊002),用于接收數(shù)據(jù);以及處理模塊G03),用于確定要被編碼的當(dāng)前元素是否和前一個經(jīng)過編碼的元素具有相 同的數(shù)據(jù)結(jié)構(gòu),響應(yīng)于確定步驟的否定判斷對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值 進(jìn)行編碼,和響應(yīng)于確定步驟的肯定判斷對所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼以及 提供一個用于指示所述當(dāng)前元素具有和前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型的指 示值。
11.如權(quán)利要求10所述的編碼器,其特征在于,所述當(dāng)前元素和所述前一個經(jīng)過編碼 的元素都是出現(xiàn)次數(shù)節(jié)點類型,以及所述處理模塊(40 使用架構(gòu)來對數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼。
12.如權(quán)利要求11所述的編碼器,其特征在于,所述編碼器進(jìn)一步包括編碼工具模塊G01),用于從所述架構(gòu)中獲取用于對元素的數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼的工具; 以及所述對數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼的步驟進(jìn)一步包括所述處理模塊(40 進(jìn)一步用于基于由所述編碼工具模塊(401)提供的與所述當(dāng)前元 素對應(yīng)的工具來對當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼。
13.一種用于對一個元素組的經(jīng)過編碼的數(shù)據(jù)進(jìn)行解碼的解碼器,其中,所述元素組的 每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括輸入模塊(502),用于接收要被解碼的當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù);以及處理模塊(503),用于基于所述經(jīng)過編碼的數(shù)據(jù)的一部分來確定所述當(dāng)前元素是否具 有和前一個經(jīng)過解碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型,其中所述經(jīng)過編碼的數(shù)據(jù)的一部分用于 指示所述當(dāng)前元素是否具有和前一個經(jīng)過解碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型;響應(yīng)于確定步 驟的肯定判斷,通過解碼所述經(jīng)過編碼的數(shù)據(jù)獲取至少一個屬性值以及通過使用所述前一 個經(jīng)過解碼的元素的數(shù)據(jù)結(jié)構(gòu)來獲取所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)。
14.如權(quán)利要求13所述的解碼器,其特征在于,響應(yīng)于確定步驟的否定判斷,所述處理 模塊(50 通過對所述當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù)進(jìn)行解碼獲取所述當(dāng)前元素的數(shù)據(jù)結(jié) 構(gòu)和至少一個屬性值。
15.一種用于對一個元素組進(jìn)行編碼的存儲介質(zhì),其中所述元素組的每一個元素包括 一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括用于如下功能的指令選擇一個要進(jìn)行編碼的當(dāng)前元素;確定所述當(dāng)前元素是否和前一個經(jīng)過編碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu);如果不相同, 對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)和所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼;以及如果相同,對所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼,并且提供一個用于指示所述 當(dāng)前元素具有和所述前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型的指示值。
16.一種用于對一個元素組的經(jīng)過編碼的數(shù)據(jù)進(jìn)行解碼的存儲介質(zhì),其中所述元素組 的每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,其特征在于,包括用于如下功 能的指令選擇要進(jìn)行解碼的當(dāng)前元素的經(jīng)過編碼的數(shù)據(jù);以及如果基于所述經(jīng)過編碼的數(shù)據(jù)的一部分,確定所述當(dāng)前元素和前一個經(jīng)過解碼的元素 具有相同的數(shù)據(jù)結(jié)構(gòu)類型,則通過解碼所述經(jīng)過編碼的數(shù)據(jù)來獲取至少一個屬性值以及通 過使用所述前一個經(jīng)過解碼的元素的數(shù)據(jù)結(jié)構(gòu)來獲取所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu),其中,所述經(jīng)過編碼的數(shù)據(jù)的一部分指示所述當(dāng)前元素和前一個經(jīng)過解碼的元素具有相同的數(shù)據(jù) 結(jié)構(gòu)類型。
全文摘要
本發(fā)明提供了一種用于編碼一個元素組的方法,其中所述元素組中的每一個元素包括一種類型的數(shù)據(jù)結(jié)構(gòu)和至少一個屬性值,包括步驟選擇一個要進(jìn)行編碼的當(dāng)前元素;確定所述當(dāng)前元素是否和前一個經(jīng)過編碼的元素具有相同的數(shù)據(jù)結(jié)構(gòu);如果不相同,對所述當(dāng)前元素的數(shù)據(jù)結(jié)構(gòu)和所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼;以及,如果相同,對所述當(dāng)前元素的至少一個屬性值進(jìn)行編碼,并且提供一個用于指示所述當(dāng)前元素具有和所述前一個經(jīng)過編碼的元素相同的數(shù)據(jù)結(jié)構(gòu)類型的指示值。該方法被用于減少結(jié)構(gòu)信息的編碼冗余。
文檔編號H03M7/30GK102119384SQ200980131070
公開日2011年7月6日 申請日期2009年9月4日 優(yōu)先權(quán)日2008年9月8日
發(fā)明者周光華, 宋文娟, 陳仁雷, 馬小駿 申請人:湯姆遜許可公司