專利名稱:用于解析多層次數(shù)據(jù)流的方法、系統(tǒng)和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地說,涉及用于解析多層次數(shù)據(jù) 流的方法、系統(tǒng)和裝置。
背景技術(shù):
在對(duì)多層次數(shù)據(jù)流進(jìn)行解碼時(shí),首先需要對(duì)該數(shù)據(jù)流進(jìn)行解析,然
后才能對(duì)解析后的數(shù)據(jù)進(jìn)行解碼。典型的多層次數(shù)據(jù)流例如H.264視頻 數(shù)據(jù)流,其中視頻數(shù)據(jù)流分為如下幾個(gè)層次數(shù)據(jù)流由數(shù)據(jù)幀組成,數(shù) 據(jù)幀由數(shù)據(jù)片組成,而數(shù)據(jù)片由數(shù)據(jù)宏塊組成。在對(duì)H.264 ^f見頻數(shù)據(jù)流 進(jìn)行解碼時(shí),各數(shù)據(jù)幀需要最終被解析成數(shù)據(jù)宏塊才能進(jìn)行后續(xù)的解碼 工作。在某些應(yīng)用中,例如在移動(dòng)終端上,處理器的處理能力有限,單 個(gè)的主處理單元(PPU, Primary Processing Unit)無法實(shí)現(xiàn)對(duì)高比特率 數(shù)據(jù)流的實(shí)時(shí)解析。在這種情況下,可以考慮用多個(gè)協(xié)處理單元(SPU, Synergistic Processing Unit)并行地進(jìn)行解析工作。
一種簡(jiǎn)單的想法是基于幀進(jìn)行并行解析;也就是說,PPU將不同的 幀分配給不同的SPU作解析。但是, 一般來說數(shù)據(jù)流中前后幀數(shù)據(jù)在解 碼時(shí)存在一定的依賴關(guān)系,即后一幀的解碼需要以前一幀為基礎(chǔ);同時(shí) 由于幀與幀之間的差別,對(duì)不同幀進(jìn)行解析所需的時(shí)間也不同。在后幀 的解析已經(jīng)由一個(gè)SPU完成而前幀的解析尚未由另一個(gè)SPU完成的情 況下,由于無法對(duì)前幀進(jìn)行解碼,導(dǎo)致無法對(duì)后幀進(jìn)行解碼。這一方面 降低了解碼效率,另一方面由于需要對(duì)后幀的已解析數(shù)據(jù)進(jìn)行緩存,從 而增加了存儲(chǔ)要求。此外,在SPU的存儲(chǔ)量不足以存儲(chǔ)整個(gè)數(shù)據(jù)幀的情 況下,需要PPU將一幀數(shù)據(jù)分成若干份發(fā)送給SPU,當(dāng)SPU的數(shù)目很 大時(shí),PPU和SPU之間的數(shù)據(jù)調(diào)度和傳輸會(huì)變得相當(dāng)復(fù)雜。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了用于解析多層次數(shù)據(jù)流的方法、系統(tǒng)和裝 置。所述多層次數(shù)據(jù)流中,數(shù)據(jù)幀包括多個(gè)數(shù)據(jù)片,數(shù)據(jù)片包括多個(gè)數(shù) 據(jù)宏塊。
根據(jù)本發(fā)明所提供的技術(shù)方案,調(diào)度器分配并初始化預(yù)解析器和深
度解析器,分配并初始化共享存儲(chǔ)區(qū);
預(yù)解析器將所述數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并將預(yù)解析結(jié)果放入所述 共享存儲(chǔ)區(qū);和
深度解析器從共享存儲(chǔ)區(qū)中逐個(gè)取走所述數(shù)據(jù)片,并將該數(shù)據(jù)片深 度解析為所述數(shù)據(jù)宏塊。
本發(fā)明的技術(shù)方案在同一數(shù)據(jù)幀中的數(shù)據(jù)片這一水平進(jìn)行并行處 理。從數(shù)據(jù)幀的水平來看,總是滿足先完成對(duì)前幀的解析再開始對(duì)后幀 的解析,因此不會(huì)出現(xiàn)后幀已經(jīng)解析完成而前幀尚未解析完成的情況。 存儲(chǔ)量方面,只要求緩存一幀的數(shù)據(jù),相比基于幀的并行處理大大減少。 SPU的存儲(chǔ)容量通常足以存儲(chǔ)一個(gè)數(shù)據(jù)片,因此調(diào)度器和解析器之間, 以及預(yù)解析器和深度解析器之間的數(shù)據(jù)調(diào)度和傳輸非常簡(jiǎn)單。
才艮據(jù)本發(fā)明進(jìn)一步的優(yōu)選實(shí)施例,解析器的數(shù)目可以變化。 一種情 況是,所述調(diào)度器可以在開始對(duì)一個(gè)數(shù)據(jù)幀進(jìn)行解析時(shí),調(diào)整解析器的 數(shù)目;調(diào)度器還可以在對(duì)一個(gè)數(shù)據(jù)幀進(jìn)行解析的過程中動(dòng)態(tài)地增加或減 少解析器的數(shù)目。
另一種情況是,解析器的總數(shù)不變,但是所述預(yù)解析器可以從預(yù)解 析模式和深度解析模式之間切換;預(yù)解析器從預(yù)解析模式切換到深度解 析模式,相當(dāng)于增加了深度解析器的數(shù)目。特別地,預(yù)解析器可以在完 成預(yù)解析之后,從預(yù)解析模式切換到深度解析模式。進(jìn)一步,預(yù)解析器 可以根據(jù)共享存儲(chǔ)區(qū)中的數(shù)據(jù)量,從預(yù)解析模式切換到深度解析模式以 避免共享存儲(chǔ)區(qū)溢出,或者從深度解析模式切換到預(yù)解析模式以避免深 度解析器閑置。
由于解析器的數(shù)目可以變化,因此可以在保證解析速度的前提下, 提高解析器的使用效率。
圖1是根據(jù)本發(fā)明實(shí)施例的用于解析多層次數(shù)據(jù)流的系統(tǒng)的框圖。
圖2是根據(jù)本發(fā)明實(shí)施例的共享存儲(chǔ)區(qū)的示意圖。
圖3是根據(jù)本發(fā)明實(shí)施例的用于解析多層次數(shù)據(jù)流的方法的整體流程圖。
圖4是根據(jù)本發(fā)明實(shí)施例的對(duì)數(shù)據(jù)片進(jìn)行深度解析的詳細(xì)流程圖。 圖5是根據(jù)本發(fā)明實(shí)施例的解析多層次數(shù)據(jù)流的示例。
具體實(shí)施例方式
以下參照
本發(fā)明提供的解析多層次數(shù)據(jù)流的方法、系統(tǒng)和 裝置的具體實(shí)施方式
。需要說明的是,在本申請(qǐng)文件中,采用了數(shù)據(jù)幀、 數(shù)據(jù)片和數(shù)據(jù)宏塊等名詞,但是可以理解,這些名詞僅僅是對(duì)有包容關(guān) 系的多個(gè)數(shù)據(jù)層次的稱謂。在本發(fā)明應(yīng)用于不同的多層次數(shù)據(jù)流時(shí),可 能會(huì)有不同的稱謂。
圖1是根據(jù)本發(fā)明實(shí)施例的用于解析多層次數(shù)據(jù)流的系統(tǒng)的框圖。
如圖l所示,根據(jù)本發(fā)明實(shí)施例的用于解析多層次數(shù)據(jù)流的系統(tǒng)包 括調(diào)度器、預(yù)解析器、深度解析器和共享存儲(chǔ)區(qū)。其中預(yù)解析器和深 度解析器可以統(tǒng)稱為解析器。位于主內(nèi)存中的共享存儲(chǔ)區(qū)包括輔助信息 存儲(chǔ)區(qū)和存儲(chǔ)隊(duì)列。
調(diào)度器通常位于PPU上,其用于分配并初始化參與解析工作的預(yù)解 析器和深度解析器,并且分配并初始化共享存儲(chǔ)區(qū)。解析器被映射到SPU 上。
調(diào)度器以幀為基礎(chǔ)對(duì)解析器的數(shù)目進(jìn)行調(diào)度,即在每幀開始的時(shí) 候,根據(jù)前一相同類型幀解析所用時(shí)間、前一相同類型幀解析所用的解 析器數(shù)目以及實(shí)時(shí)解析時(shí)間來確定解析器的數(shù)目。具體而言,如果調(diào)度 器發(fā)現(xiàn)解析上一相同類型幀所需的時(shí)間大于實(shí)時(shí)解析時(shí)間,則調(diào)度器可 以在對(duì)當(dāng)前幀解析時(shí)增加解析器的數(shù)目;相反,如果調(diào)度器發(fā)現(xiàn)解析上 一相同類型幀所需的時(shí)間小于實(shí)時(shí)解析時(shí)間,則調(diào)度器可以在對(duì)當(dāng)前幀 解析時(shí)增加解析器的數(shù)目。實(shí)時(shí)解析時(shí)間表示為了達(dá)到實(shí)時(shí)解析整個(gè)視頻流,為解析某一類型的幀所設(shè)定的基準(zhǔn)時(shí)間,其可以是一個(gè)值,也可
以是一個(gè)區(qū)間。不同類型的幀的實(shí)時(shí)解析時(shí)間可能不相同,例如在H.264 中,I幀的實(shí)時(shí)解析時(shí)間通常大于P幀,而P幀的實(shí)時(shí)解析時(shí)間通常大 于B幀。當(dāng)然,如果多層次數(shù)據(jù)流中的數(shù)據(jù)幀都具有相同的類型,那么 上述前一相同類型幀就是前一幀,且實(shí)時(shí)解析時(shí)間對(duì)于所有數(shù)據(jù)幀都是 一樣的。調(diào)度器可以包括一個(gè)準(zhǔn)動(dòng)態(tài)調(diào)度模塊來完成以上基于幀的調(diào) 度。
進(jìn)一步,調(diào)度器可以在對(duì)當(dāng)前幀的解析過程中,動(dòng)態(tài)地增加或者減 少解析器的數(shù)目。作為一個(gè)例子,PPU可以在解析過程中定期地計(jì)算當(dāng) 前幀的解析進(jìn)度,例如當(dāng)前幀中已經(jīng)解析出的數(shù)據(jù)宏塊數(shù)占當(dāng)前幀總數(shù) 據(jù)宏塊數(shù)的比值,并且計(jì)算當(dāng)前幀已經(jīng)消耗的解析時(shí)間與實(shí)時(shí)解析時(shí)間 的比值,如果前一比值大于后一比值,說明進(jìn)度超前,則減少解析器的 數(shù)目,反之說明進(jìn)度落后,則增加解析器的數(shù)目。這種定期計(jì)算和調(diào)度 可以按照規(guī)定的頻率進(jìn)行;也可以由某類事件觸發(fā),比如在每次解析器 向數(shù)據(jù)隊(duì)列放入數(shù)據(jù)或每次解析器從存儲(chǔ)隊(duì)列取走數(shù)據(jù)時(shí)。當(dāng)然還可以 采用其他的動(dòng)態(tài)調(diào)度算法。這種動(dòng)態(tài)調(diào)度可以提高解析器的利用效率, 但是需要更大的計(jì)算開銷。調(diào)度器可以包括一個(gè)動(dòng)態(tài)調(diào)度模塊來完成以 上動(dòng)態(tài)調(diào)度。
當(dāng)然,如果不考慮解析器的利用效率,PPU可以只在對(duì)多層次數(shù)據(jù) 流開始解析的時(shí)候進(jìn)行解析器的分配和初始化工作,其設(shè)定的解析器數(shù) 目在對(duì)整個(gè)視頻流進(jìn)行解析的過程中都保持不變,這樣就可以節(jié)省調(diào)度 所需的計(jì)算開銷。
在解析器中,至少一個(gè)解析器被初始化為可以在預(yù)解析模式和深度 解析模式之間切換并且在一幀數(shù)據(jù)開始的時(shí)候處于預(yù)解析模式,該解析 器稱為預(yù)解析器。換句話說,預(yù)解析器包括預(yù)解析模塊和深度解析模塊 以及模式切換控制模塊。其余的解析器被初始化為深度解析器。
預(yù)解析器將數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并且將數(shù)據(jù)片按順序放入存儲(chǔ) 隊(duì)列中。深度解析器從存儲(chǔ)隊(duì)列的隊(duì)列頭取走一個(gè)數(shù)據(jù)片,對(duì)該數(shù)據(jù)片 進(jìn)行深度解析以便形成數(shù)據(jù)宏塊,將所生成的數(shù)據(jù)宏塊發(fā)送給PPU進(jìn)行
9后續(xù)處理,然后讀取下一個(gè)數(shù)據(jù)片。在一幀數(shù)據(jù)中的所有數(shù)據(jù)片^皮放入 存儲(chǔ)隊(duì)列后,模式切換控制模塊將預(yù)解析器從預(yù)解析模式切換到深度解 析模式,即停止預(yù)解析模塊并啟動(dòng)深度解析模塊。
實(shí)踐中,在存儲(chǔ)隊(duì)列的容量不足以同時(shí)存儲(chǔ)數(shù)據(jù)幀中的所有數(shù)據(jù)片 的情況下,可能出現(xiàn)這樣的情況,即預(yù)解析器向隊(duì)列中放入數(shù)據(jù)片的速 度與深度解析器從隊(duì)列中取走數(shù)據(jù)片的速度不匹配。如果前者大于后者
超過一定時(shí)間,會(huì)出現(xiàn)隊(duì)列溢出的情況;反之,如果前者小于后者超過 一定時(shí)間,會(huì)出現(xiàn)深度解析器閑置的情況。為了解決這一問題,模式切 換控制模塊進(jìn)一步監(jiān)測(cè)存儲(chǔ)隊(duì)列中的數(shù)據(jù)量,在存儲(chǔ)隊(duì)列中的數(shù)據(jù)量超 過第一閾值時(shí),將預(yù)解析器從預(yù)解析模式切換到深度解析器模式,即停 止預(yù)解析模塊并啟動(dòng)深度解析模塊,按照深度解析器的工作方式進(jìn)行工 作;當(dāng)存儲(chǔ)隊(duì)列中的數(shù)據(jù)量低于第二閾值時(shí),將預(yù)解析器從深度解析模 式切換到預(yù)解析模式,即停止深度解析模塊并啟動(dòng)預(yù)解析模塊,繼續(xù)從 數(shù)據(jù)幀中解析出數(shù)據(jù)片放入存儲(chǔ)隊(duì)列中。這里,所述閾值可以是絕對(duì)的 數(shù)據(jù)量,也可以是存儲(chǔ)隊(duì)列中的現(xiàn)有數(shù)據(jù)片的數(shù)據(jù)量占整個(gè)存儲(chǔ)隊(duì)列的 百分比。第一閾值可以等于第二閾值;當(dāng)然,第一閾值大于第二閾值可 以避免頻繁的切才奐。
需要說明的是,模式切換控制模塊和深度解析模塊并非預(yù)解析器的 必要模塊,因?yàn)樵诮馕銎髻Y源充足的情況下,不需要從預(yù)解析模式切換 到深度解析模式。
存儲(chǔ)隊(duì)列用于存放由預(yù)解析器得到的數(shù)據(jù)片,根據(jù)隊(duì)列的定義,數(shù) 據(jù)片在存儲(chǔ)隊(duì)列中是先入先出(FIFO)的,即預(yù)解析器得到的數(shù)據(jù)片從 隊(duì)列尾進(jìn)入隊(duì)列,而深度解析器從隊(duì)列頭取走數(shù)據(jù)片。輔助信息存儲(chǔ)區(qū) 存放若干輔助信息。共享存儲(chǔ)區(qū)的一個(gè)例子如圖2所示,其詳細(xì)內(nèi)容將 在下文中詳細(xì)描述。
圖3是根據(jù)本發(fā)明實(shí)施例的用于解析多層次數(shù)據(jù)流的方法的整體流 程圖。
在步驟301,在一幀數(shù)據(jù)開始的時(shí)候,調(diào)度器分配并初始化參與當(dāng) 前幀解析工作的解析器,以及分配并初始化存儲(chǔ)隊(duì)列。如上所述,解析器的數(shù)目可以是在 一 幀開始的時(shí)候,根據(jù)前 一 相同類型幀解析所用時(shí) 間、前一相同類型幀解析所用的解析器數(shù)目以及實(shí)時(shí)解析時(shí)間來確定
的。當(dāng)然,解析器的數(shù)目也可以是在解析過程中動(dòng)態(tài)地調(diào)整的;解析器 的數(shù)目還可以是在對(duì)整個(gè)多層次數(shù)據(jù)流的解析過程開始的時(shí)候設(shè)定并 在整個(gè)解析過程中保持不變。
解析器中的至少一個(gè)被初始化為可以在預(yù)解析模式和深度解析模 式之間切換的預(yù)解析器,并且在對(duì)一幀數(shù)據(jù)開始解析的時(shí)候處于預(yù)解析 模式。其他解析器被初始化為深度解析器。
PPU還分配并初始化共享存儲(chǔ)區(qū)。特別地,PPU初始化共享存儲(chǔ)區(qū) 中的輔助信息,具體的初始化方法將在下面詳細(xì)說明。
在步驟302,預(yù)解析器從一幀數(shù)據(jù)的頭部開始,將一幀數(shù)據(jù)解析為 數(shù)據(jù)片并放入存儲(chǔ)隊(duì)列中,即圖2所示存儲(chǔ)隊(duì)列中的數(shù)據(jù)片1、數(shù)據(jù)片 2等。前面說到,輔助信息存儲(chǔ)區(qū)中存放若干輔助信息。所述輔助信息 例如包括當(dāng)前幀的標(biāo)識(shí)(FRAMENUMBER)、當(dāng)前幀中數(shù)據(jù)片的總數(shù) (MAX SLICE)等??梢杂蒔PU或預(yù)解析器設(shè)置FRAMENUMBER。 對(duì)于MAX SLICE而言,如果幀結(jié)構(gòu)定義數(shù)據(jù)幀的頭部記載該幀的數(shù)據(jù) 片個(gè)數(shù),則PPU或預(yù)解析器直接將MAX SLICE初始化為該頭部記載的 內(nèi)容;如果幀結(jié)構(gòu)定義數(shù)據(jù)幀的頭部記載由比特?cái)?shù)表示的長(zhǎng)度信息,則 PPU或預(yù)解析器將MAX SLICE初始化為零,然后由預(yù)解析器在每次解 析出一個(gè)數(shù)據(jù)片時(shí)將MAX SLICE力口l。也就是說,根據(jù)幀結(jié)構(gòu)定義的 不同,MAX SLICE可能是在對(duì)一幀數(shù)據(jù)的解析過程中保持不變的,也 可能是隨著解析過程的進(jìn)行而逐漸增加的。
在步驟303,在存儲(chǔ)隊(duì)列的容量不足以同時(shí)存儲(chǔ)數(shù)據(jù)幀中的所有數(shù) 據(jù)片的情況下,預(yù)解析器根據(jù)存儲(chǔ)隊(duì)列中的數(shù)據(jù)量判斷是否暫時(shí)切換從 預(yù)解析模式切換到深度解析模式,以及從深度解析模式切換回預(yù)解析模 式。這一步是可以省略的。
在步驟304,預(yù)解析器判斷預(yù)解析是否結(jié)束,即判斷是否已經(jīng)解析 出一幀數(shù)據(jù)的全部數(shù)據(jù)片。如果是,則從預(yù)解析模式切換到深度解析模 式,然后作為深度解析器運(yùn)行。預(yù)解析器例如可以根據(jù)數(shù)據(jù)幀頭部記載
ii的數(shù)據(jù)片個(gè)數(shù)或數(shù)據(jù)幀比特?cái)?shù)來判斷是否已經(jīng)解析出 一幀數(shù)據(jù)的全部 數(shù)據(jù)片。
在步驟305,判斷對(duì)整個(gè)數(shù)據(jù)幀的解析是否已經(jīng)完成,如果已經(jīng)完 成,則進(jìn)入步驟307,即通知PPU從緩存中取走全部數(shù)據(jù)宏塊,對(duì)當(dāng)前 幀的解析結(jié)束;如果尚未完成,則進(jìn)入步驟306。
在步驟306,深度解析器或者切換到深度解析模式的預(yù)解析器從存 儲(chǔ)隊(duì)列取走一個(gè)數(shù)據(jù)片,并且對(duì)該數(shù)據(jù)片進(jìn)行深度解析。深度解析得到 的數(shù)據(jù)宏塊放入由PPU指定的緩存。
下面以深度解析器為例,參照?qǐng)D4詳細(xì)說明在步驟305和步驟306 中的操作。切換到深度解析模式的預(yù)解析器就步驟305和步驟306而言 與深度解析器相同。
在步驟3051,深度解析器從輔助信息存儲(chǔ)區(qū)讀取FRAME NUMBER、 MAX SLICE 、 LAST FETCHED SLICE 、 CUMULATIVE MB 和SLICE DATA OFFSET等輔助信息。其中FRAME NUMBER、 MAX SLICE是由預(yù)解析器設(shè)置的。其他輔助信息是由深度解析器在完成一個(gè) 數(shù)據(jù)片的深度解析后設(shè)置的。其中,LAST FETCHED SLICE表示當(dāng)前 幀中已經(jīng)被深度解析過的數(shù)據(jù)片個(gè)數(shù),其在步驟301中被初始化為零; CUMULATIVE MB表示當(dāng)前幀中已經(jīng)得到的數(shù)據(jù)宏塊個(gè)數(shù),其在步驟 301中被初始化為零;SLICE DATA OFFSET表示存儲(chǔ)隊(duì)列的隊(duì)列頭的位 置,其在步驟301中被初始化為存儲(chǔ)隊(duì)列的起點(diǎn)。
在步驟3052,深度存儲(chǔ)器判斷以下條件是否成立CUMULATIVE MB等于MAX MB,且LAST FETCHED SLICE等于MAX SLICE。如 果成立,則進(jìn)入步驟307;如果不成立,則進(jìn)入步驟3061。其中MAX MB 是由幀格式定義的當(dāng)前幀的最大宏塊數(shù)目。
在步驟3061,深度存儲(chǔ)器根據(jù)SLICE DATA OFFSET的值,從存儲(chǔ) 隊(duì)列取出一個(gè)數(shù)據(jù)片,并且對(duì)該數(shù)據(jù)片進(jìn)行深度解析。
在步驟3062,深度存儲(chǔ)器修改LAST FETCHED SLICE 、 CUMULATIVE MB和SLICE DATA OFFSET。其中,將LAST FETCHED SLICE力卩1,將CUMULATIVE MB加上對(duì)當(dāng)前數(shù)據(jù)片進(jìn)行深度解析所得到的數(shù)據(jù)宏塊數(shù),將SLICE DATA OFFSET設(shè)置為存儲(chǔ)隊(duì)列中下一個(gè) 數(shù)據(jù)片所在的位置。除了 CUMULATIVE MB以外,其他兩個(gè)輔助信息 也可以在對(duì)當(dāng)前數(shù)據(jù)片進(jìn)行深度解析之前修改,即在步驟3061之前修改。
最后結(jié)合圖5說明使用兩個(gè)解析器來對(duì)數(shù)據(jù)幀0進(jìn)行解析的例子, 其中橫軸表示時(shí)間。當(dāng)然,可以理解,本發(fā)明不限于僅有兩個(gè)解析器的 情況。為了方便描述,在LAST FETCHED SLICE、 CUMULATIVE MB 和SLICE DATA OFFSET這三個(gè)輔助信息中,只描述LAST FETCHED SLICE和CUMULATIVE MB這兩個(gè)輔助信息的變化;并且LAST FETCHED SLICE由深度解析器在進(jìn)行深度解析之前修改,而 CUMULATIVE MB由深度解析器在進(jìn)行深度解析之后修改。此外,假 設(shè)當(dāng)前幀有12個(gè)數(shù)據(jù)片。
預(yù)解析器為SPU0,其將FRAME NUMBER設(shè)置為0。在本例中, 假設(shè)數(shù)據(jù)幀的頭部沒有記載數(shù)據(jù)幀中的數(shù)據(jù)片個(gè)數(shù),因此SPUO將MAX SLICE初始化為0。按照步驟302,在從數(shù)據(jù)幀中解析出第一個(gè)數(shù)據(jù)片 slice 1后,SPUO將MAX SLICE設(shè)置為1 。
在時(shí)間點(diǎn)A,深度解析器SPU1開始對(duì)slice 1進(jìn)行深度解析,此時(shí), 深度解析器SPU1將LAST FETCHED SLICE從其初始值0修改為1。 CUMULATIVE MB為其初始值0。
在時(shí)間點(diǎn)B,深度解析器SPU1完成對(duì)slicel的深度解析,SPU1修 改CUMULATIVE MB為60。其中60表示從slicel中深度解析出60個(gè) 數(shù)據(jù)宏塊。同樣在時(shí)間點(diǎn)B,深度解析器SPU1開始對(duì)第二個(gè)數(shù)據(jù)片slice2 進(jìn)行深度解析,將LAST FETCHED SLICE修改為2。此外,在時(shí)間點(diǎn)A 和時(shí)間點(diǎn)B之間,預(yù)解析器SPUO預(yù)解析出了數(shù)據(jù)片slice2-slice6,因此 在時(shí)間點(diǎn)B, MAX SLICE的耳又值為6。
在時(shí)間點(diǎn)C,深度解析器SPU1尚未完成對(duì)slice2的深度解析,因 此CUMULATIVE MB依然為60。此外,在時(shí)間點(diǎn)B和時(shí)間點(diǎn)C之間, 預(yù)解析器SPU0預(yù)解析出了數(shù)據(jù)片slice7-slice12,因此在時(shí)間點(diǎn)C,MAX SLICE的取值為12。根據(jù)假設(shè),當(dāng)前幀總共有12個(gè)數(shù)據(jù)片,因此按照步驟302, SPUO切換到深度解析模式,開始對(duì)第三個(gè)數(shù)據(jù)片slice3進(jìn)行 深度解析,同時(shí)將LAST FETCHED SLICE修改為3 。
在時(shí)間點(diǎn)D,深度解析器SPU1完成對(duì)slice2的深度解析,將 CUMULATIVE MB修改為120,即從slice2中也深度解析出60個(gè)數(shù)據(jù) 宏塊。同樣在時(shí)間點(diǎn)D,深度解析器SPU1開始對(duì)第四個(gè)數(shù)據(jù)片slice4 進(jìn)行深度解析,將LAST FETCHED SLICE修改為4。從時(shí)間點(diǎn)D開始, 由于預(yù)解析已經(jīng)完成,因此MAX SLICE的取值保持為12。
此后,深度解析器SPU1和處于深度解析模式的SPUO對(duì)剩余的數(shù) 據(jù)片進(jìn)行深度解析。并且檢查CUMULATIVE MB是否達(dá)到幀格式所規(guī) 定的當(dāng)前幀的最大宏塊數(shù)目8160。
在時(shí)間點(diǎn)J,深度解析器SPU1發(fā)現(xiàn)CUMULATIVE MB是否達(dá)到幀 格式所規(guī)定的當(dāng)前幀的最大宏塊數(shù)目8160,由此判斷對(duì)當(dāng)前幀的解析已 經(jīng)完成,從而通知PPU進(jìn)行后續(xù)的處理。
雖然已經(jīng)圖示和描述了本發(fā)明的若干示例性實(shí)施例,不過本領(lǐng)域技 術(shù)人員可以理解的是,在不偏離本發(fā)明原則和精神的前提下,可以對(duì)這 些實(shí)施例進(jìn)行改變,本發(fā)明的范圍由權(quán)利要求書及其等價(jià)變換所限定。
1權(quán)利要求
1、一種用于解析多層次數(shù)據(jù)流的方法,在所述多層次數(shù)據(jù)流中,數(shù)據(jù)幀包括多個(gè)數(shù)據(jù)片,數(shù)據(jù)片包括多個(gè)數(shù)據(jù)宏塊,其特征在于,在對(duì)各數(shù)據(jù)幀進(jìn)行解析的過程中,該方法包括調(diào)度器分配并初始化預(yù)解析器和深度解析器,分配并初始化共享存儲(chǔ)區(qū);預(yù)解析器將當(dāng)前數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并將預(yù)解析結(jié)果放入所述共享存儲(chǔ)區(qū);和深度解析器從共享存儲(chǔ)區(qū)中逐個(gè)取走所述數(shù)據(jù)片,并將所取走的數(shù)據(jù)片深度解析為數(shù)據(jù)宏塊。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述調(diào)度器分配并 初始化預(yù)解析器和深度解析器包括調(diào)度器在開始對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行解析時(shí),確定解析器的數(shù)目;和 調(diào)度器根據(jù)所確定的數(shù)目分配并初始化預(yù)解析器和深度解析器。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述確定解析器的 數(shù)目包括如果解析上一數(shù)據(jù)幀所需的時(shí)間多于基準(zhǔn)時(shí)間,則增加用于當(dāng)前數(shù) 據(jù)幀的解析器的數(shù)目;如果解析上一數(shù)據(jù)幀所需的時(shí)間少于基準(zhǔn)時(shí)間, 則減少用于當(dāng)前數(shù)據(jù)幀的解析器的數(shù)目。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述多層次數(shù)據(jù)流 中的數(shù)據(jù)幀具有不同的類型,所述解析上一數(shù)據(jù)幀所需的時(shí)間為解析上 一相同類型數(shù)據(jù)幀所需的時(shí)間,所述基準(zhǔn)時(shí)間為與該類型對(duì)應(yīng)的基準(zhǔn)時(shí) 間。
5、 才艮據(jù)權(quán)利要求1至4中任意一項(xiàng)所述的方法,其特征在于,該 方法進(jìn)一步包括在對(duì)數(shù)據(jù)幀進(jìn)行解析的過程中動(dòng)態(tài)地增加或減少解析器的數(shù)目。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述在對(duì)各數(shù)據(jù)幀 進(jìn)行解析的過程中動(dòng)態(tài)地增加或減少解析器的數(shù)目包括計(jì)算對(duì)當(dāng)前數(shù)據(jù)幀的解析進(jìn)度,在進(jìn)度落后時(shí)增加解析器的數(shù)目,在進(jìn)度超前時(shí)減少解析器的數(shù)目。
7、 根據(jù)權(quán)利要求1至6中任意一項(xiàng)所述的方法,其特征在于,該 方法進(jìn)一步包括預(yù)解析器在已經(jīng)得到所述數(shù)據(jù)幀中所有數(shù)據(jù)片時(shí),從預(yù)解析^t式切 換到深度解析模式。
8、 根據(jù)權(quán)利要求1至7中任意一項(xiàng)所述的方法,其特征在于,該 方法進(jìn)一步包括預(yù)解析器根據(jù)所述共享存儲(chǔ)區(qū)中的數(shù)據(jù)量在預(yù)解析模式和深度解 析模式之間切換。
9、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述預(yù)解析器根據(jù)所述共享存儲(chǔ)區(qū)中的數(shù)據(jù)量在預(yù)解析模式和深度解析模式之間切換包 括在共享存儲(chǔ)區(qū)中的數(shù)據(jù)量超過第一閾值時(shí),預(yù)解析器從預(yù)解析模式切換到深度解析器模式;當(dāng)共享存儲(chǔ)區(qū)中的數(shù)據(jù)量低于第二閾值時(shí),預(yù) 解析器從深度解析模式切換到預(yù)解析模式。
10、 一種用于解析多層次數(shù)據(jù)流的方法,在所述多層次數(shù)據(jù)流中, 數(shù)據(jù)幀包括多個(gè)數(shù)據(jù)片,數(shù)據(jù)片包括多個(gè)數(shù)據(jù)宏塊,其特征在于,預(yù)解 析器將當(dāng)前數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并在已經(jīng)得到所述當(dāng)前數(shù)據(jù)幀中所 有數(shù)據(jù)片時(shí),從預(yù)解析模式切換到深度解析模式。
11、 根據(jù)權(quán)利要求10所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)解析器將預(yù)解析結(jié)果放入共享存儲(chǔ)區(qū),并根據(jù)所述共享存儲(chǔ)區(qū)中的數(shù) 據(jù)量在預(yù)解析模式和深度解析模式之間切換。
12、 根據(jù)權(quán)利要求11所述的方法,其特征在于,所述預(yù)解析器根據(jù) 所述共享存儲(chǔ)區(qū)中的數(shù)據(jù)量在預(yù)解析模式和深度解析模式之間切換包 括在共享存儲(chǔ)區(qū)中的數(shù)據(jù)量超過第一閾值時(shí),預(yù)解析器從預(yù)解析模式 切換到深度解析器模式;當(dāng)共享存儲(chǔ)區(qū)中的數(shù)據(jù)量低于第二闊值時(shí),預(yù) 解析器從深度解析模式切換到預(yù)解析模式。
13、 一種用于解析多層次數(shù)據(jù)流的系統(tǒng),在所述多層次lt據(jù)流中,數(shù)據(jù)幀包括多個(gè)數(shù)據(jù)片,數(shù)據(jù)片包括多個(gè)數(shù)據(jù)宏塊,其特征在于,該系統(tǒng)包括調(diào)度器,用于分配并初始化解析器,分配并初始化共享存儲(chǔ)區(qū),所 述解析器包括預(yù)解析器和深度解析器;預(yù)解析器,包括預(yù)解析模塊,用于將所述數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片, 并將預(yù)解析結(jié)果;^丈入所述共享存儲(chǔ)區(qū);深度解析器,用于從共享存儲(chǔ)區(qū)中逐個(gè)取走所述數(shù)據(jù)片,并將該數(shù) 據(jù)片深度解析為數(shù)據(jù)宏塊;和共享存儲(chǔ)區(qū),用于存放所述預(yù)解析器所得到的所述數(shù)據(jù)片。
14、 根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述調(diào)度器包括 準(zhǔn)動(dòng)態(tài)調(diào)度模塊,用于在開始對(duì)各數(shù)據(jù)幀進(jìn)行解析的時(shí)候確定解析器的 數(shù)目,并根據(jù)所確定的數(shù)目分配并初始化預(yù)解析器和深度解析器。
15、 根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述準(zhǔn)調(diào)度模塊 比較解析上一數(shù)據(jù)幀所需的時(shí)間和基準(zhǔn)時(shí)間,如果解析上一數(shù)據(jù)幀所需 的時(shí)間多于基準(zhǔn)時(shí)間,則增加用于當(dāng)前數(shù)據(jù)幀的解析器的數(shù)目;如果解 析上一數(shù)據(jù)幀所需的時(shí)間少于基準(zhǔn)時(shí)間,則減少用于當(dāng)前數(shù)據(jù)幀的解析 器的l丈目。
16、 根據(jù)權(quán)利要求13至15中任意一項(xiàng)所述的系統(tǒng),其特征在于, 所述調(diào)度器包括動(dòng)態(tài)調(diào)度模塊,用于在對(duì)各數(shù)據(jù)幀進(jìn)行解析的過程中動(dòng) 態(tài)地增加或減少解析器的數(shù)目。
17、 根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述動(dòng)態(tài)調(diào)度模 塊計(jì)算對(duì)當(dāng)前數(shù)據(jù)幀的解析進(jìn)度,在進(jìn)度落后時(shí)增加解析器的數(shù)目,在 進(jìn)度超前時(shí)減少解析器的數(shù)目。
18、 根據(jù)權(quán)利要求13至17中任意一項(xiàng)所述的系統(tǒng),其特征在于, 所述預(yù)解析器進(jìn)一步包括深度解析模塊,用于從共享存儲(chǔ)區(qū)中取走所述數(shù)據(jù)片,并將該數(shù)據(jù) 片預(yù)解析為所述數(shù)據(jù)宏塊;和模式切換控制模塊,用于在所述預(yù)解析器已經(jīng)得到所述數(shù)據(jù)幀中所 有數(shù)據(jù)片時(shí),停止所述預(yù)解析模塊并啟動(dòng)所述深度解析模塊。
19、 根據(jù)權(quán)利要求13至18中任意一項(xiàng)所述的系統(tǒng),其特征在于, 所述預(yù)解析器進(jìn)一步包括深度解析模塊,用于從共享存儲(chǔ)區(qū)中取走所述數(shù)據(jù)片,并將該數(shù)據(jù) 片預(yù)解析為所述數(shù)據(jù)宏塊;和模式切換控制模塊,用于根據(jù)所述共享存儲(chǔ)區(qū)中的數(shù)據(jù)量,停止所 述預(yù)解析和所述深度解析模塊中的一個(gè)并啟動(dòng)另一個(gè)。
20、 根據(jù)權(quán)利要求19所述的系統(tǒng),所述模式切換控制模塊在共享 存儲(chǔ)區(qū)中的數(shù)據(jù)量超過第一閾值時(shí),停止所述預(yù)解析模塊并啟動(dòng)所述深 度解析器模塊,在共享存儲(chǔ)區(qū)中的數(shù)據(jù)量低于第二閾值時(shí),停止所述深 度解析模塊并啟動(dòng)所述預(yù)解析模塊。
21、 一種用于解析多層次數(shù)據(jù)流的預(yù)解析器,在所述多層次數(shù)據(jù)流 中,數(shù)據(jù)幀包括多個(gè)數(shù)據(jù)片,數(shù)據(jù)片包括多個(gè)數(shù)據(jù)宏塊,其特征在于, 該預(yù)解析器包 括預(yù)解析模塊,用于將所述數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并將預(yù)解析結(jié)果 放入所述共享存儲(chǔ)區(qū);深度解析模塊,用于從共享存儲(chǔ)區(qū)中取走所述數(shù)據(jù)片,并將該數(shù)據(jù) 片預(yù)解析為所述數(shù)據(jù)宏塊;和模式切換控制模塊,用于在所述預(yù)解析器已經(jīng)得到所述數(shù)據(jù)幀中所 有數(shù)據(jù)片時(shí),停止所述預(yù)解析模塊并啟動(dòng)所述深度解析模塊。
22、 根據(jù)權(quán)利要求21所述的預(yù)解析器,其特征在于,所述模式切 換控制模塊進(jìn)一步用于根據(jù)所述共享存儲(chǔ)區(qū)中的數(shù)據(jù)量,停止所述預(yù)解 析和所述深度解析模塊中的一個(gè)并啟動(dòng)另一個(gè)。
23、 根據(jù)權(quán)利要求22所述的預(yù)解析器,其特征在于,所述模式切 換控制模塊在共享存儲(chǔ)區(qū)中的數(shù)據(jù)量超過第一閾值時(shí),停止所述預(yù)解析 模塊并啟動(dòng)所述深度解析器模塊,在共享存儲(chǔ)區(qū)中的數(shù)據(jù)量低于第二閾 值時(shí),停止所述深度解析模塊并啟動(dòng)所述預(yù)解析模塊。
全文摘要
本發(fā)明提供了用于解析多層次數(shù)據(jù)流的方法、系統(tǒng)和裝置。根據(jù)本發(fā)明的技術(shù)方案,調(diào)度器分配并初始化預(yù)解析器和深度解析器,分配并初始化共享存儲(chǔ)區(qū);預(yù)解析器將多層次數(shù)據(jù)流中的數(shù)據(jù)幀預(yù)解析為數(shù)據(jù)片,并將預(yù)解析結(jié)果放入所述共享存儲(chǔ)區(qū);深度解析器,從共享存儲(chǔ)區(qū)中逐個(gè)取走所述數(shù)據(jù)片,并將該數(shù)據(jù)片深度解析為數(shù)據(jù)宏塊。這樣就不會(huì)出現(xiàn)后幀已經(jīng)解析完成而前幀尚未解析完成的情況。同時(shí),在存儲(chǔ)量和數(shù)據(jù)傳輸?shù)膹?fù)雜度方面也得到了優(yōu)化。此外解析器的數(shù)目可以變化,從而可以在保證解析速度的前提下提高解析器的利用效率。
文檔編號(hào)H04N7/26GK101621686SQ200810131789
公開日2010年1月6日 申請(qǐng)日期2008年6月30日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者星 劉, 晟 徐, 李獲鼎, 楊雨?yáng)|, 昱 袁, 凌 邵, 蓉 閻 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司