專利名稱:Mpeg-7樣品的二進制格式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到為一種XML狀模式樣品的描述元素編碼的編碼方法,該模式限定了描述元素的分層結(jié)構(gòu),所述分層結(jié)構(gòu)包括分層等級,母描述元素,和子描述元素,需要編碼的所述描述元素包括一定內(nèi)容。
本發(fā)明還涉及到對包括一定內(nèi)容和一個識別信息序列的斷片解碼的解碼方法。
還涉及到用來實現(xiàn)所述編碼方法地一種編碼器,實現(xiàn)所述解碼方法的一種解碼器,以及包括這種編碼器和/或這種解碼器的一種傳輸系統(tǒng)。
本發(fā)明進一步涉及到在這種編碼或解碼方法中使用的一種表,以及用這種編碼方法產(chǎn)生的一種信號傳送編碼描述元素。
本發(fā)明可以用于XML狀模式的XML狀模式樣品。特別適用于MPEG-7文件。
XML是W3C(2000年10月6日注冊的擴展Markup 1.0語言)的一種建議。XML-模式也是W3C國際協(xié)議的建議。XML-模式限定了描述元素(在W3C建議中被稱為元素或?qū)傩?的分層結(jié)構(gòu)。XML-模式的一個樣品是由按照上述XML-模式規(guī)定編制的描述元素構(gòu)成的。
本發(fā)明的目的是提供一種編碼和解碼方法,用于發(fā)送和存儲作為XML狀模式樣品的一個XML狀文件的一或多個描述元素。
按照本發(fā)明,由引言一段所述的一種編碼方法的特征是包括
-采用由上述模式獲得的至少一個表,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-從母描述元素到子描述元素掃描所述樣品的一個分層存儲器模型,直至找到要編碼的描述元素,并且提取掃描的各描述元素的識別信息,
-將要編碼的所述描述元素編碼成一個斷片,它包括所述內(nèi)容和提取的識別信息序列。
如果該模式中限定的一個描述元素有可能多次出現(xiàn),用于所述描述元素的所述的表就進一步包括一個出現(xiàn)信息,用來表示在一個樣品中有可能多次出現(xiàn)所述的描述元素,如果在掃描過程中掃描到一次出現(xiàn)具有給定的次序,就用所述次序來標定相應提取的識別信息。
按照本發(fā)明,由引言一段所述的一種解碼方法的特征是包括
-采用由上述XML狀模式獲得的至少一個表,所述模式限定了描述元素的分層結(jié)構(gòu),其中包括分層等級,母描述元素,和子描述元素,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-用所述識別信息掃描所述序列識別信息,
-在每一步在上述表中檢索與當前識別信息相聯(lián)系的描述元素,如果還沒有被納入上述分層存儲器模型,就將上述描述元素添加到所述模式的一個樣品的分層存儲器模型中,
-將上述內(nèi)容添加到與上述序列的最后識別信息相聯(lián)系的所述分層存儲器模型的描述元素中。
如果該模式中限定的一個描述元素有可能多次出現(xiàn),用于所述描述元素的所述的表就進一步包括一個出現(xiàn)信息,用來表示在一個樣品中有可能多次出現(xiàn)所述的描述元素,如果上述序列包括一個標定的識別信息,就將上述標定翻譯成有關(guān)描述元素的一個出現(xiàn)次序,如果尚未被納入上述分層存儲器模型,就將低級次序的同一描述元素添加到該模型中。
按照本發(fā)明,每個描述元素由數(shù)據(jù)流中一個獨立的斷片來代表,確保隨機存取元素和屬性,考慮到未來速度的提高還具有高級的靈活性。這種斷片方案還考慮了MPEG-7固有的靈活和擴展特點,用模式來計算與給定的描述元素相聯(lián)系的識別信息序列。該斷片方案可以用建議的二進制格式實現(xiàn)以下特性
-隨機存取樣品元素和屬性。
-無序增量和定標變換。
-緊湊性僅僅對具有原始內(nèi)容的元素和屬性編碼。
-容易與樣品更新協(xié)議結(jié)合。
-便于二進制MPEG-7描述的語法分析和局部演示。
本發(fā)明的其它優(yōu)點是用該模式的中間模型來實現(xiàn)的。實際上,由模式直接而明確地產(chǎn)生的表能夠在服務(wù)器和用戶之間以這些樣品的二進制編碼和解碼專用的形式共享關(guān)于可能有效樣品的公共知識。這種公共知識集中了諸如元素和屬性的結(jié)構(gòu),類型和標記名稱等信息,不需要傳送給用戶,只用于對樣品進行有效的模式識別編碼。這樣做還能用二進制格式對MPEG-7內(nèi)部或外部所限定的未來模式實現(xiàn)有足夠擴展性的支持。
從以下的具體描述中可以更容易理解本發(fā)明進一步的特征和優(yōu)點,附圖具體表示了本發(fā)明的一個最佳實施例,在附圖中
圖1的示意圖表示本發(fā)明的一種傳輸系統(tǒng),
圖2的示意圖描述了本發(fā)明的編碼方法的步驟,
圖3的示意圖描述了本發(fā)明的解碼方法的步驟,
圖4是按照本發(fā)明用信號體現(xiàn)的一個斷片,
圖5是一種樣品簡潔鍵的二進制編碼的例子,
圖6是描述元素值的二進制編碼的一個例子。
以下要參照XML模式的XML樣品來解釋本發(fā)明。這種說明不是限制,本發(fā)明可以應用于同類Markup語言中撰寫的任何樣品和模式。
XML狀模式所限定的描述元素(XML術(shù)語中的元素或?qū)傩?的分層結(jié)構(gòu)包括母描述元素和子描述元素。XML狀模式的一個樣品是一個XML狀文件,它包括按上述XML狀模式的限定構(gòu)筑而成的描述元素。樣品中的某些描述元素有一定內(nèi)容。其它僅僅是結(jié)構(gòu)包裝。
如圖1所示,按照本發(fā)明的傳輸系統(tǒng)包括位于發(fā)送一側(cè)的編碼器BiM-C和位于接收一側(cè)的解碼器BiM-D。編碼器BiM-C和解碼器BiM-D都有接入一個XML-模式XML-S(這種XML-模式可在本地使用或者下載)的入口。
它們還具有接入至少一個由XML-模式直接并明確地產(chǎn)生的被叫做Element Declaration Table的表EDT的入口。Element DeclarationTable主要用來容納相對于給定模式定義有效的任何樣品編碼和解碼所需的全部信息。每次產(chǎn)生一個Element Declaration Table,并且可以用于參照有關(guān)模式的一個樣品進行編碼和解碼。它不一定要傳送給用戶。
編碼器掃描一個樣品XML-C(按照W3C規(guī)范《Document ObjectModel,level 1 specification,versionl.0,October 1,1998》或者是該樣品的任何其它分層存儲器模型規(guī)定的一個DOM模型)的分層存儲器模型DM-C,并且用Element Declaration Table中包含的信息來產(chǎn)生一或多個二進制斷片BiM-F,每個二進制斷片與樣品的一個描述元素相聯(lián)系。
按照本發(fā)明,將具有原始類內(nèi)容(例如是內(nèi)置類,簡單類,自身具有二進制模型的描述符)的描述元素編碼成由一系列識別信息(也被稱為樣品結(jié)構(gòu)鍵)和一個內(nèi)容值組成的獨立斷片。XML層次中僅作為包裝(也就是沒有內(nèi)容值)的描述元素不用發(fā)送,但是在解碼器一側(cè)可供Element Declaration Table參考。
二進制斷片BiM-F通過傳輸網(wǎng)絡(luò)NET發(fā)送并且由解碼器BiM-D接收。解碼器要用Element Declaration Table提取
-所有母結(jié)構(gòu)描述元素,
-描述元素特性(元素或?qū)傩?,
-描述元素名稱,
-描述元素類型,以便為內(nèi)容值解碼。
解碼器BiM-D按照分層存儲器模型DM-D更新。然后由更新的分層存儲器模型產(chǎn)生一個XML樣品XML-D。
可以將Element Declaration Table視為可能有效的樣品的一種詳盡的定義,通過建立元素和屬性說明結(jié)構(gòu)從模式中唯一和明確地產(chǎn)生。實際上,XML模式主要給出了兩類信息一方面利用(有名或無名的)綜合類型定義和元素說明來規(guī)定所有可能的元素和屬性在XML樣品層次中的位置。另一方面要通過內(nèi)置的數(shù)據(jù)類型和簡單類型定義給出其數(shù)值的類型。對于在模式中有規(guī)定并且能夠在樣品中找到的每一個元素或?qū)傩?,Element Declaration Table收集它的名稱(例如是一個元素的標記名),類型,特性(元素或?qū)傩?以及明確規(guī)定其在分層XML結(jié)構(gòu)中的位置的一個鍵(被稱為表結(jié)構(gòu)鍵)。一方面由模式定義了如何將一個樣品視為有效和互用性用途,而Element Declaration Table說明了從結(jié)構(gòu)上如何將一個樣品用于編碼。
在表結(jié)構(gòu)鍵中給出了基本的Element Declaration Table及其在編碼和解碼程序中的使用,用來唯一地識別
-所發(fā)送的描述元素的類型和名稱。
-它在XML樣品層次中的位置。
這一結(jié)構(gòu)鍵的語法是帶點的注釋,在其中用點表示層次等級,而各級上的數(shù)字是通過從模式擴展所有元素和屬性說明而獲得的。注釋的后一位數(shù)字是僅用來在其層次等級中識別一個描述元素的識別信息。前面的數(shù)字是用來從其母描述元素中提取子描述元素的指針信息。
如果在該模式中定義的一個描述元素有可能多次出現(xiàn),就在帶點注釋的結(jié)尾加上一個出現(xiàn)信息(在描述中隨后用括弧表示出現(xiàn)信息)。
產(chǎn)生Element Declaration Table的過程相當于瀏覽該模式中的所有描述元素,以便提供對應著一種給定模式的最大樣品(顯示所有可能的元素和屬性的那一個樣品)的分層存儲器模型。盡管如此,這一“最大”樣品和MPEG-7內(nèi)部通用的模式定義自嵌入結(jié)構(gòu)一樣是無限的。因而就需要獲取Element Declaration Table中的自有容量。對于自有描述元素而言,這樣做符合規(guī)定,它在樹形結(jié)構(gòu)中的祖先的表結(jié)構(gòu)鍵具有同樣的綜合類型。因此,這種元素在Element DeclarationTable中不用進一步擴展。祖先的表結(jié)構(gòu)鍵被成為自有容量鍵。它還被用于從它的母描述元素中提取子描述元素。
指針信息和自有容量鍵都是用于從它的母描述元素中提取子描述元素的結(jié)構(gòu)信息。如果母描述元素是自有描述元素,它的子描述元素就是與上述母描述元素的自有容量鍵相同的指針信息。如果母描述元素不是自有描述元素,它的子描述元素就是與上述母表結(jié)構(gòu)鍵相同的指針信息。
Element Declaration Table能夠說明該模式中所有可能樣品的唯一和明確的編號。以下給出了模式和對應的Element DeclarationTable的例子。
例1
模式1
<complexType name=”complexType1”> ?。約equence> <element name=”Element1”type=”type1”/> <element name=”Element2”type=”type2”minOccurs=”0”maxOccurs=”unbounded”/> ?。糴lement name=”Element3”> <complexType> <sequence> <element name=”Element4”type=”type4”minOccurs=”0” maxOccurs=”1”/> <element name=”Element1”type=”typel”/> ?。?sequence> </complexType> ?。?element> </sequence> <attriibute name=”Attributel”type=”type4”/> ?。?complexType> ?。糴lement name=”GlobalElement”type=”complexTypel”/>
為所有模式元素說明建立的Element Declaration Table在其他信息之外會包含以下的元素名稱及其相應的表結(jié)構(gòu)鍵
表1
名稱 表結(jié)構(gòu)鍵 (...)
共用元素 0
元素1 0.0
元素2 0.1[]
元素3 0.2
元素4 0.2.0
元素1 0.2.1
屬性1 0.3
帶下劃線的數(shù)字是識別信息。
例2
模式2
?。糲omplexType name=”complexType1”> <sequence> <element name=”Element1”type=”complexType2”/> ?。糴lement name=”Element2”type”type2”minOccurs=”0”maxOccurs=”unbounded”/> <element name=”Element3”type=”type3”/> ?。?sequence> ?。糰ttribute name=”Attribute1”type=”type4”/> </complexType> ?。糲omplexType name=”complexType2”> ?。約equence> ?。糴lement name=”Element4”type=”type4”/> <element name=”Element1”type=”complexType2”/> ?。?sequence> ?。?complexType> ?。糴lement name=”GlobalElement””type=”complexType1”/>
Element Declaration Table在其他信息之外還包含諸如名稱和鍵以及有關(guān)的自有容量場等信息
表2
名稱 表結(jié)構(gòu)鍵 自有容量鍵(...)
共用元素 0
元素1 0.0<-------------
元素4 0.0.0
元素1 0.0.10.0
元素2 0.1 []
元素3 0.2
屬性1 0.3
表結(jié)構(gòu)鍵中帶下劃線的數(shù)字是識別信息。表結(jié)構(gòu)鍵和自有容量鍵中沒有下劃線的數(shù)字用來從它的母描述元素中提取子描述元素的結(jié)構(gòu)信息。
注意到元素2表結(jié)構(gòu)鍵中的括號表示存在多次出現(xiàn)的元素。另外,在編號時認為元素2和元素4是可選元素。還應該注意到元素1在表中出現(xiàn)了兩次,因為它可以在樹結(jié)構(gòu)內(nèi)部用不同的位置來表示。
例3
模式
<?xml version="1.0"encoding="UTF-8"7> <schema xmlnsxsd="http//www.w3.org/1999/XML Schema"> ?。糲omplexType name="MediaTimeType"content="elementOnly"> ?。約equence> <element name="Start"> <simpleType base="integer"/> </element> <element name="Stop"> <simpleType base="integer"/> </element> ?。?sequence> <attribute name="timeunit"type="string"use="required"/> ?。?complexType> ?。糲omplexType name="VideoSegmentType"content="elementOnly"> <sequence> <element name="keyFrame"minOccurs="1" maxOccurs="unbounded"> <simpleType base="string"/> </element> <element name="Annotation"type="string"minOccurs="0" maxOccurs="1"/> <element name="MediaTime"type="MediaTimeType" minOccurs="0"maxOccurs="1"/> <element name="VideoSegment"type="VideoSegmentType" minOccurs="0"maxOccurs="unbounded"/> </sequence> <attribute name="id" use="required"> <simpleType base="string"/> </attribute> ?。?cormplexType> ?。糴lement name="VideoSegment"type="VideoSegmentType"/> ?。?schema>
表3
名稱 表結(jié)構(gòu)鍵自有容量鍵 (...)
Start 0.2.0
Stop0.2.1
Timeunit0.2.2
VideoSegment0.3[] 0
Id 0.4
表結(jié)構(gòu)鍵中帶下劃線的數(shù)字是識別信息。表結(jié)構(gòu)鍵和自有容量鍵中沒有下劃線的數(shù)字用來從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息。
以下要參照圖2說明對一種模式的一個樣品的描述元素進行編碼的方法。按照圖2,為了對一種模式XML-S的一個樣品XML-C的描述元素DE進行編碼,從母到子描述元素掃描樣品XML-C的分層存儲器模型DM-C,直至達到需要編碼的描述元素DE(步2-1)。在各層次等級上,從與模式XML-S有關(guān)的表EDT中提取與被掃描的描述元素Di有關(guān)的識別信息IDi(步2-2)。將描述元素DE的樣品結(jié)構(gòu)鍵K(DE)構(gòu)筑成提取的識別信息IDi的一個序列(步2-3)。最終通過在提取的識別信息序列中添加描述元素DE的內(nèi)容C(DE)構(gòu)筑成斷片BiM-F(DE)(步2-4)。將斷片變換成用于傳輸?shù)亩M制格式。
以下要參照上述的例3給出這一編碼過程的一個例子。
以下的陣列1給出了例3中所述模式的樣品的一個例子。左側(cè)是在陣列中對應的線所定義的那個元素的樣品結(jié)構(gòu)鍵。右側(cè)是在陣列中對應的線所定義的那個屬性的樣品結(jié)構(gòu)鍵。這些樣品結(jié)構(gòu)鍵是用上述編碼方法獲得的。
以下為了說明要一步一步地解釋出現(xiàn)在陣列1的黑體字中的描述元素<MediaTime timeunit=“PTIN30F”>的編碼。
步1-1從母描述元素到子描述元素掃描樣品的分層存儲器模型,直至找到要編碼的描述元素(也就是元素“MediaTime”的屬性“timeUnit”);掃描的描述元素是
VideoSegment
VideoSegment(第一次出現(xiàn)的VideoSegment產(chǎn)物)
VideoSegment(第二次出現(xiàn)的VideoSegment產(chǎn)物)
MediaTime
步1-2從表3中提取對應的識別信息(如果有用還包括標定)
VideoSegment.....................................0
VideoSegment(第一次出現(xiàn)的VideoSegment產(chǎn)物).......3
VideoSegment(第二次出現(xiàn)的VideoSegment產(chǎn)物)....3[1]
MediaTime................................2
TimeUnit.................................2
步2構(gòu)筑提取的識別信息序列0.3
.3[1].2.2。這一序列是與編碼的描述元素有關(guān)的樣品結(jié)構(gòu)鍵。
可以用同樣方式獲得陣列1中給出的其它樣品結(jié)構(gòu)鍵。
也可以將樣品結(jié)構(gòu)鍵看作是表結(jié)構(gòu)鍵的一個示例。實際上可以標出多次出現(xiàn)的元素(產(chǎn)生的樣品結(jié)構(gòu)鍵例如是0.3
,0.3[1],...)并且建立自有容量環(huán)(產(chǎn)生的樣品結(jié)構(gòu)鍵例如是不出現(xiàn)在表中但是可以從表中計算的0.3
.0.3[1].2.2)。樣品結(jié)構(gòu)鍵在樣品二進制斷片中的編碼是一個描述元素標識符。
以下要參照圖3說明一個斷片的解碼方法。按照圖3,本發(fā)明的解碼方法包括
-步3-1在表中找出與接收的識別信息序列有關(guān)的描述元素,
-步3-2按照(在表中找到的)所述描述元素的原始類型對接收的內(nèi)容解碼,
-部3-3添加上述元素連同其內(nèi)容來更新分層存儲器模型;如果錯過了就添加其母描述元素;在多次出現(xiàn)的情況下,如果錯過了就添加下一列的同一描述元素。
陣列1
在逐個識別信息地實際掃描接收的序列時,采用以下算法來更新樣品的分層存儲器模型
算法(1)
步4-1
當前標記=序列中的第一識別信息
當前節(jié)點=分層存儲器模型的根
步4-2
前一描述元素=對應著當前節(jié)點的描述元素
當前描述元素=以當前標記作為識別信息的前一描述元素的產(chǎn)物
步4-3當前節(jié)點是否具有對應著當前描述元素的子節(jié)點?
步4-4如果當前節(jié)點具有對應著當前描述元素的子節(jié)點,就進到步4-8
步4-5如果當前節(jié)點不具有對應著當前描述元素的子節(jié)點,就產(chǎn)生這樣一個子節(jié)點,
步4-6在多次出現(xiàn)的情況下,如果還沒有,就產(chǎn)生下一列的兄弟節(jié)點,
步4-7如果當前標記=接收序列中最后一個識別信息,就將內(nèi)容添加到步4-5產(chǎn)生的節(jié)點中,并且進到步4-8
步4-8
當前標記=下一識別信息
當前節(jié)點=子節(jié)點
進到步4-2。
例如在步4-2可以用C-狀代碼中給出的以下算法來提取當前描述元素
算法(2)
用instance_key表示從接收序列中的第一識別信息到接收序列中的當前識別信息的標記序列。
用edt_key代表從表中找到的對應的表結(jié)構(gòu)鍵
用prefix(key)代表表中實際存在的鍵的最大前綴(n個第一標記)。
用suffix(key)代表鍵的最后標記,因此,key=prefix(key)+suffix(key)。
用self_cont(key)代表自有容量鍵。
{instance_key=self_cont(prefix(instance_key))+suffix(key)};
edt_key=instance_key;
將算法(2)逐步用于上述例2中的序列0.0.1.1.0就得到
instance_key=0.0.1.1.0
prefix(instance_key)=0.0.1
instance_key=self_cont(prefix(instance_key))+suffix(instance_key)=0.0+1.0=0.0.1.0
prefix(instance_key)=0.0.1
instance_key=self_cont(prefix(instance_key)) +suffix(instance_key)=0.0+0=0.0.0
最終得到
edt_key=0.0.0
它的意思是當前描述元素是元素4。
在非自有層次的情況下.表結(jié)構(gòu)鍵和樣品結(jié)構(gòu)鍵之間的鏡像是直接的。實際上可以直接去掉從樣品結(jié)構(gòu)鍵中找到的標定而提取到對應的表結(jié)構(gòu)鍵。在上述的例1中,由樣品結(jié)構(gòu)鍵0.1[5]代表的描述元素是出現(xiàn)在一個共用元素中的第五元素2。
在本發(fā)明的最佳實施例中,表結(jié)構(gòu)鍵和樣品結(jié)構(gòu)鍵如下文所述是緊湊的。實驗表明對結(jié)構(gòu)鍵的這種壓縮對鍵的大小有明顯的好處,而對功能性沒有絲毫影響。
得到的鍵被稱為簡潔鍵(用縮寫CSK表示)。在簡單的情況下(沒有自有容量),CSK就是結(jié)構(gòu)鍵Element Declaration Table記錄號。
首先需要通過為Element Declaration Table記錄編號在EDT場的當前目錄中添加一個鍵。應用于上述例2就會得到
Table2bis
名稱 簡潔鍵 表結(jié)構(gòu)鍵 自有容量鍵
共用元素0 0
元素1 1 0.0
元素4 2 0.0.0
元素1 3 0.0.1 0.0
元素2 4 0.1[]
元素3 5 0.2
屬性1 6 0.3
一般情況(有自有容量結(jié)構(gòu))下根據(jù)樣品結(jié)構(gòu)鍵用算法(3)計算CSK
算法(3)
用instance_key表示一個給定描述元素的樣品結(jié)構(gòu)鍵。
用cs_key代表對應的簡潔結(jié)構(gòu)鍵。
用prefix(key)代表EDT中實際存在的鍵的最大前綴(n個第一標記)。
用suffix(key)代表鍵的最后標記,因此,key=prefix(key)+suffix(key)。
用self_cont(key)代表自有容量鍵。
用compact_form(key)代表key在EDT中對應的緊湊形式。
如果(prefix(instance_key)?。絠nstance_key)
{cs_key=cs_key+compact_form(prefix(instace_key));
instance_key=self_cont(prefix(instace_key))+suffix(instance_key);}
cs_key=cs_key+compact_form(prefix(instace_key));
例如要計算對應著以下結(jié)構(gòu)鍵0.0.1.1.0的CSK
逐步采用上述算法就能得到
instace_key=0.0.1.1.0
prefix(instace_key)=0.0.1
cs_key=3
instace_key=self_cont(prefix(instace_key))+suffix(instance_key)=0.0+1.0=0.0.1.0
prefix(instace_key)=0.0.1
cs_key=3.3
instace_key=self_cont(prefix(instace_key))+suffix(instance_key)=0.0+0=0.0.0
最終得到
cs_key=3.3.2
在以上例子中,為了便于表達,所采用的元素不是多次出現(xiàn)的元素。然而應該注意到(各個樣品CSK的)樣品結(jié)構(gòu)鍵的每一個標記也是可以標定的(各自含若干下標)。
簡潔結(jié)構(gòu)鍵的唯一目的是為了縮小數(shù)據(jù)流的大小。因此,解碼器在上述解碼階段之前首先要將樣品簡潔結(jié)構(gòu)鍵解碼成它的擴展形式(樣品結(jié)構(gòu)鍵)。以下給出的算法4可以對應著一個樣品結(jié)構(gòu)鍵恢復其樣品結(jié)構(gòu)鍵
算法4
用resultNCKey代表compact_key的擴展形式(該算法的結(jié)果)。
用compact_key代表一個給定描述元素的樣品簡潔結(jié)構(gòu)鍵。
用current_key代表樣品簡潔結(jié)構(gòu)鍵compact_key的標記。
用compact_key[i]代表compact_key的第i個標記。
用size(compact_key)代表compact_key的標記數(shù)量。
用diffCode(key1,key2)代表除去key1和key2的公共前綴獲得的子鍵
用NCKey(CKey)代表compact_key CKey的擴展形式。
用self_cont(key)代表key的自有容量鍵。首先除去compact_key的所有標定,并且將它們放回compact_key原型的結(jié)尾
current_key=compact_key
resultNCKey=NCKey(current_key)
對于(i=1;i<size(compact_key);I++)
{previous_key=current_key;
current_key=compact_key[I];
resultNCKey+=“.”+diffCode(NCkey(current_key),
self_cont(previous_key));
例如要產(chǎn)生對應著以下CSK 3.3.2的樣品結(jié)構(gòu)鍵
逐步執(zhí)行上述算法得到
compact_key=3.3.2
current_key=3
resultNCKey=0.0.1(查詢EDT)
(i=1)
previous_key=3
current_key=3
self_cont(previous_key)=0.0
NCKey(current_Key)=0.0.1
diffCode(0.0.1,0.0)=“1”
resultNCKey=resultNCKey+“.”+“1”=>resultNCKey=0.0.1.1
(I=2)
previous_key=3
current_key=2
self_cont(previous_key)=0.0
NCKey(current_Key)=0.0.0
diffCode(0.0.0,0.0)=“0”
resultNCKey=resultNCKey+“.”+“0”=>resultNCKey=0.0.1.1.0
結(jié)束
3.3.2就是樣品結(jié)構(gòu)鍵0.0.1.1.0的緊湊形式
以下要說明二進制語法的一個例子。斷片是一個具有字頭的文件的組成部分。文件的字頭中至少包含該模式(MPEG-定義的ID或是M6142中建議的URL)的一個標識符。
如圖4所示,每個斷片是由一個樣品簡潔結(jié)構(gòu)鍵K(DEi)(或樣品結(jié)構(gòu)鍵)和一個描述元素值C(DEi)(也被稱為內(nèi)容)組成的。樣品結(jié)構(gòu)鍵的基本形式如下
key[ind][ind](...)[ind].Key[ind][ind](...)[ind].(...),其中將各組Key[ind][ind](...)[ind]稱為標記。一個樣品結(jié)構(gòu)鍵的標記最多包括一個標定。樣品簡潔結(jié)構(gòu)鍵的標記可以包括若干標定。所有鍵和標定都是用可變數(shù)量的字節(jié)按整數(shù)值編碼的。這樣就能用一組可變的字節(jié)為整個結(jié)構(gòu)鍵編碼,每個字節(jié)由具有以下語義的2個最高有效位來控制
圖4還說明了為描述元素值編碼的基本格式。按照圖4,在二進制文件或數(shù)據(jù)流中添加一個數(shù)據(jù)值D(DEi)之前,對數(shù)據(jù)塊中字節(jié)S(DEi)的大小進行編碼。這有助于將需要解碼的數(shù)據(jù)大小告知解碼器,并且為便于隨機進入數(shù)據(jù)和快速數(shù)據(jù)流分析提供保障。由于某些原始數(shù)據(jù)類型依賴于大量的字節(jié)(例如是開放文本注解或電影腳本),建議用可變數(shù)量的字節(jié)為數(shù)據(jù)大小編碼。
然后用一字節(jié)對長度進行缺省編碼,將最高有效位解釋如下
圖5給出了對簡潔鍵《0.1[70][1]》進行二進制編碼的一個例子。為簡潔鍵《0.1[70][1]》編碼需要五個字節(jié)。每個字節(jié)開頭是兩個控制位。六個低有效位被用做數(shù)值編碼。第一字節(jié)的控制位是“00”(新等級)。它的數(shù)值位“000000”是序列(‘0’)的第一識別信息的二進制模型。第二字節(jié)的控制位是“10”(‘標定’)。它的數(shù)值位“00001”是序列(‘1’)的第二識別信息的二進制模型。第一標定‘70’的二進制模型‘1000110’包含六位以上。編碼是在兩個字節(jié)上完成的第三和第四字節(jié)。第三字節(jié)的控制位是‘01’(連續(xù))。它的數(shù)值位是“000110”(需要編碼的標定的低有效位)。第四字節(jié)的控制位是‘10’(標定)。它的數(shù)值位是“000001”(需要編碼的標定的最高有效位)。最后,第五字節(jié)的控制位是‘11’(結(jié)束)。它的數(shù)值位是“000001”(需要編碼的標定的二進制值)。
圖6給出了數(shù)據(jù)大小575的二進制編碼的一個例子(二進制1000111111)。第一字節(jié)是由長度值的7個低有效位加上用來指定需要另一個字節(jié)的一個控制位組成的。第二字節(jié)包含剩下的位,以‘end’作為控制位。
如上所述,建議的編碼方案的一個主要優(yōu)點是僅僅對包含原始類型數(shù)值的屬性和元素進行編碼,忽略那些僅作為結(jié)構(gòu)包裝的元素(例如是合成類型)。這樣就能在解碼器一側(cè)用Element Declaration Table推斷出它的結(jié)構(gòu)。
例
考慮以下(從核心實驗測試組中找到)的樣品斷片
<GenericDS> ?。糓ediaInformation> <MediaProfile> ?。糓ediaInstance> <InstanceLocator> <MediaURL>imgs/img00587_add3.jpg</MediaURL> </InstanceLocator> ?。?MediaInstance> </MediaProfile> ?。?MediaInformation> </GenericDS>
在這種情況下,僅僅用一個結(jié)構(gòu)鍵(作為一個信息串)對MediaURL進行編碼,解碼器就能根據(jù)Element Declaration Table重組整個結(jié)構(gòu)。不用發(fā)送其它包裝元素。
在一般情況下,所有原始類型的元素(也就是按保證交互操作性的標準方式使用的二進制模型)都應該編碼。
這種原始類型的例子是內(nèi)置式(例如是字符串,浮點,...)XML-模式,還有MPEG-7標準基本類型(例如有unisignedIntl,unisignedInt2,...,MediaTime,Matrix,...)。原始類型還包括擴展類型,它在以下情況下可能包括合成類型
-不需要隨機訪問合成類型結(jié)構(gòu)內(nèi)部的嵌入元素。
-已經(jīng)有有效的二進制模型。
按照MPEG-7所定義的視頻和音頻組的標識符在一定程度上可以滿足這些限制。實際上已經(jīng)定義了一種簡潔的二進制模型可供使用。另外,(在大多數(shù)時間)不需要訪問(位視為整體的)標識符的各個部分。
在(內(nèi)容壓縮意義上的)效率會隨著(按最佳方式編碼的)原始類型數(shù)量的增加而增加,但是建議的復雜解碼器能夠包括對所有標準原始類型的解碼方法。
以下的陣列2是在陣列1中已經(jīng)被使用的一個樣品的簡潔結(jié)構(gòu)鍵的例子。與描述元素<MediaTime timeUnot=‘PTIN30F’>有關(guān)的簡潔樣品結(jié)構(gòu)鍵是7
.7[1].6。這一簡潔結(jié)構(gòu)鍵的二進制模型是‘10-000111 00-000000 10-000111 00-000001 11-000110’。內(nèi)容長度編碼是在1字節(jié)0-0000111上。而數(shù)值PT1N30F是用常規(guī)的字符編碼由字符串變換而來的。
陣列權(quán)利要求
1.一種為XML狀模式樣品的描述元素編碼的編碼方法,該模式限定了描述元素的分層結(jié)構(gòu),所述分層結(jié)構(gòu)包括分層等級,母描述元素,和子描述元素,需要編碼的所述描述元素包括一定內(nèi)容,其特征是包括
-采用由上述模式獲得的至少一個表,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-從母描述元素到子描述元素掃描所述樣品的一個分層存儲器模型,直至找到要編碼的描述元素,并且提取掃描的各描述元素的識別信息,
-將要編碼的所述描述元素編碼成一個斷片,它包括所述內(nèi)容和提取的識別信息序列。
2.按照權(quán)利要求1的編碼方法,其特征是,如果該模式中限定的一個描述元素有可能多次出現(xiàn),用于所述描述元素的所述的表就進一步包括一個出現(xiàn)信息,用來表示在一個樣品中有可能多次出現(xiàn)所述的描述元素,如果在編碼過程中掃描到一種出現(xiàn)具有給定的次序,就用上述次序標定相應提取的識別信息。
3.一種對包括一定內(nèi)容和一個識別信息序列的斷片解碼的解碼方法,其特征是包括
-采用由上述XML狀模式獲得的至少一個表,所述模式限定了描述元素的分層結(jié)構(gòu),其中包括分層等級,母描述元素,和子描述元素,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-用識別信息掃描所述序列識別信息,
-在每一步在上述表中檢索與當前識別信息相聯(lián)系的描述元素,如果還沒有被納入上述分層存儲器模型,就將上述描述元素添加到所述模式的一個樣品的分層存儲器模型中,
-將上述內(nèi)容添加到與上述序列的最后識別信息相聯(lián)系的所述分層存儲器模型的描述元素中。
4.按照權(quán)利要求3的解碼方法,其特征是,如果該模式中限定的一個描述元素有可能多次出現(xiàn),用于所述描述元素的所述的表就進一步包括一個出現(xiàn)信息,用來表示在一個樣品中有可能多次出現(xiàn)所述的描述元素,如果上述序列包括一個標定的識別信息,就將上述標定翻譯成有關(guān)描述元素的一個出現(xiàn)次序,如果尚未被納入上述分層存儲器模型,就將低級次序的同一描述元素添加到該模型中。
5.一種為XML狀模式樣品的描述元素編碼的編碼器,該模式限定了描述元素的分層結(jié)構(gòu),所述分層結(jié)構(gòu)包括分層等級,母描述元素,和子描述元素,需要編碼的所述描述元素包括一定內(nèi)容,其特征是包括
-用于存儲由上述模式獲得的至少一個表的存儲器,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-計算裝置,用來從母描述元素到子描述元素掃描所述的樣品,直至找到要編碼的描述元素,并且提取掃描的各描述元素的識別信息,并且將要編碼的所述描述元素編碼成一個斷片,它包括所述內(nèi)容和提取的識別信息序列。
6.一種對包括一定內(nèi)容和一個識別信息序列的斷片解碼的解碼器,其特征是包括
-用于存儲由一個XML狀模式獲得的至少一個表,所述模式限定了描述元素的分層結(jié)構(gòu),其中包括分層等級,母描述元素,和子描述元素,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,
-計算裝置,被用于
用識別信息掃描所述序列識別信息,在每一步在上述表中檢索與當前識別信息相聯(lián)系的描述元素,如果還沒有被納入上述分層存儲器模型,就將上述描述元素添加到所述模式的一個樣品的分層存儲器模型中,
將上述內(nèi)容添加到與上述序列的最后識別信息相聯(lián)系的所述分層存儲器模型的描述元素中。
7.一種包括權(quán)利要求5所述的編碼器的傳輸系統(tǒng)。
8.一種包括權(quán)利要求6所述的解碼器的傳輸系統(tǒng)。
9.一種在包括一個編碼器和/或一個解碼器的傳輸網(wǎng)絡(luò)上傳輸?shù)男盘?,編碼器和解碼器具有用來存儲從一種XML狀模式獲取的至少一個表的存儲器,上述XML狀模式限定了描述元素的分層結(jié)構(gòu),所述分層結(jié)構(gòu)包括分層等級,母描述元素,和子描述元素,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,所述信號體現(xiàn)了代表一個描述元素內(nèi)容的被稱為編碼描述元素的至少一個斷片,以及在上述表中與上述編碼描述元素及其母描述元素相聯(lián)系的一個識別信息序列。
10.一種在一編碼器和/或一解碼器中使用的表,編碼器為一種XML狀模式的樣品編碼,解碼器用于更新一種XML狀模式樣品的分層存儲器模型,上述分層XML狀模式限定了描述元素的分層結(jié)構(gòu),所述分層結(jié)構(gòu)包括分層等級,母描述元素,和子描述元素,其特征在于它是由所述XML狀模式獲得的,并且包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息。
全文摘要
本發(fā)明提出了可以用于發(fā)送和存儲作為一種XML狀模式樣品的XML狀文件的描述元素的編碼和解碼方法。該方法包括采用由上述模式獲得的至少一個表,所述的表中包含僅用于識別分層等級中的各個描述元素的識別信息,以及用于從它的母描述元素中提取任何子描述元素的結(jié)構(gòu)信息,從母描述元素到子描述元素掃描所述樣品的一個分層存儲器模型,直至找到要編碼的描述元素,并且提取掃描的各描述元素的識別信息,將要編碼的所述描述元素編碼成一個斷片,它包括所述內(nèi)容和提取的識別信息序列。用途XML;XML-模式;MPEG-7。
文檔編號H04N7/24GK1401188SQ01805029
公開日2003年3月5日 申請日期2001年10月10日 優(yōu)先權(quán)日2000年10月17日
發(fā)明者B·莫里, N·桑蒂尼, F·拉法格 申請人:皇家菲利浦電子有限公司