亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

疊接數(shù)字視頻流的裝置和方法

文檔序號(hào):7504740閱讀:177來源:國知局
專利名稱:疊接數(shù)字視頻流的裝置和方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及多媒體數(shù)據(jù)流的處理,尤其涉及用于把數(shù)字編碼的多媒體數(shù)據(jù)流疊接在一起的裝置和方法。
借助于技術(shù)的發(fā)展和以前的標(biāo)準(zhǔn)化成果,正在快速地出現(xiàn)多媒體產(chǎn)生、處理和輸出系統(tǒng)。例如,改進(jìn)的處理與存儲(chǔ)、傳輸、編碼/譯碼和其它技術(shù)正在幫助實(shí)現(xiàn)從模擬向數(shù)字廣播(即數(shù)字化的并通常經(jīng)過數(shù)字處理的多媒體數(shù)據(jù)流的電視、電纜、衛(wèi)星和其它的分配)的轉(zhuǎn)變。早期的標(biāo)準(zhǔn)化還規(guī)定彼此的可協(xié)作性,因而提供了更為廉價(jià)的更容易得到的系統(tǒng)和元件。在這種轉(zhuǎn)變的預(yù)期的優(yōu)點(diǎn)當(dāng)中,包括用戶可以訪問更多的更高質(zhì)量的節(jié)目,并且工商業(yè)可以得到大量的高質(zhì)量的分配介質(zhì)。
用于對(duì)包括音頻、視頻、其它多媒體和非多媒體信息的數(shù)據(jù)流進(jìn)行編碼和譯碼的標(biāo)準(zhǔn)包括國際上采用的MPEG-1(ISO/IEC11172-n)和由活動(dòng)圖像專家組采納的MPEG-2(ISO/IEC13818-n)標(biāo)準(zhǔn)(MPEG-2根據(jù)MPEG-1擴(kuò)充而來,用于高質(zhì)量廣播的視頻應(yīng)用和其它應(yīng)用)。在其它的特點(diǎn)當(dāng)中,例如MPEG-1和MPEG-2編碼/譯碼規(guī)范(下文統(tǒng)稱為“MPEG規(guī)范”)規(guī)定了基本上獨(dú)立于硬件/軟件系統(tǒng)實(shí)施的一系列的數(shù)據(jù)流格式、定時(shí)、同步以及裝置容量參數(shù)。換句話說,MPEG規(guī)范規(guī)定了特定的協(xié)議和能力,同時(shí)允許基本上不受限制的系統(tǒng)(考慮到不斷發(fā)展)用于執(zhí)行規(guī)定的協(xié)議和能力。
MPEG規(guī)范和其它的編碼/譯碼標(biāo)準(zhǔn)也已經(jīng)被擴(kuò)展從而適用于其它正在出現(xiàn)的技術(shù)。例如,音頻擴(kuò)展標(biāo)準(zhǔn)(ISO/IEC13818-7)對(duì)MPEG-2增加了AC-3音頻模式。在MPEG規(guī)范內(nèi)的其它擴(kuò)展也作為國際標(biāo)準(zhǔn)被討論、介紹與/或采用了,用于處理、促進(jìn)與/或擴(kuò)展數(shù)據(jù)編碼、譯碼、傳輸和有關(guān)的發(fā)送的應(yīng)用。MPEG規(guī)范全文在此列為參考。
遺憾的是,雖然MPEG為實(shí)現(xiàn)上述目的提供了一個(gè)不斷發(fā)展的公共平臺(tái),但是從近期的發(fā)展看來,MPEG和相關(guān)的規(guī)范至少部分地需要修訂。盡管修訂與擴(kuò)充,但它們必然還不能滿足某些預(yù)想不到的應(yīng)用和其它偶然發(fā)生的情況。例如MPEG-2沒有預(yù)料到完全數(shù)字編碼的數(shù)據(jù)流疊接(“連接”)支持的不斷發(fā)展的要求。一般地說,數(shù)字編碼的數(shù)據(jù)流疊接涉及在現(xiàn)有的數(shù)據(jù)流中選擇的一點(diǎn)附加一個(gè)新的數(shù)據(jù)流,借以代替疊接點(diǎn)的現(xiàn)有的數(shù)據(jù)流。關(guān)于廣播媒體,疊接可被一般地看作是一種從當(dāng)前廣播的數(shù)據(jù)流向一個(gè)新的數(shù)據(jù)流的轉(zhuǎn)換。例如,在其它的應(yīng)用當(dāng)中,可能需要在正在進(jìn)行的電影廣播中插入單獨(dú)編碼的商業(yè)信息(需要在商業(yè)信息的開始處疊接,并在商業(yè)信息的結(jié)束處再和電影疊接)。
把數(shù)字編碼的數(shù)據(jù)流疊接到一起時(shí)所涉及的困難通過比較把模擬的數(shù)據(jù)流或者甚至非編碼的數(shù)字?jǐn)?shù)據(jù)流疊接在一起的簡單的任務(wù)可能更容易理解。例如非編碼的數(shù)據(jù)流一般用同一個(gè)指令顯示,且由接收機(jī)進(jìn)行發(fā)送、接收和緩沖。此外,非編碼的數(shù)據(jù)流的每個(gè)單獨(dú)表示的數(shù)據(jù)部分或“幀”如果不相同的話一般含有相同的數(shù)據(jù)量。因此,把兩個(gè)模擬數(shù)據(jù)流或兩個(gè)非編碼的數(shù)字?jǐn)?shù)據(jù)流疊接在一起主要涉及以容易確定的幀邊界從一個(gè)流源轉(zhuǎn)換為第二個(gè)流源。用于完成這種疊接的系統(tǒng)和方法在本領(lǐng)域中也是熟知的。
相反,數(shù)字編碼的數(shù)據(jù)流的幀一般由譯碼器利用和它們被顯示時(shí)不同的指令接收。事實(shí)上,不同的編碼器一般產(chǎn)生具有非常不同的幀特性和信息特性的數(shù)據(jù)流。此外,編碼的主要目的是壓縮數(shù)據(jù)流,使得數(shù)據(jù)流需要較少的傳輸帶寬和較少的存儲(chǔ)空間,還有許多其它的優(yōu)點(diǎn)。因而,MPEG-2編碼的視頻數(shù)據(jù)流只限于含有用于獨(dú)立地再現(xiàn)相應(yīng)的圖像的完整的數(shù)據(jù)的若干幀(通常被稱為“I”幀);而其它的幀,通常被稱為被預(yù)測(cè)的幀(“P幀”)和雙向幀(“B幀”),則含有較少的數(shù)量不同的參考數(shù)據(jù),用于通過和先前譯碼的幀進(jìn)行比較再現(xiàn)視頻圖像。此外,每個(gè)數(shù)據(jù)流必須被這樣編碼,使得在譯碼期間譯碼器緩沖器將含有連續(xù)的足夠數(shù)量的幀,用于連續(xù)譯碼,而不含有能夠使譯碼器緩沖器溢出的許多幀。
每個(gè)編碼的數(shù)據(jù)流的獨(dú)立的性質(zhì)使數(shù)字編碼的數(shù)據(jù)流疊接在一起變得更復(fù)雜。除去和每個(gè)數(shù)據(jù)流相關(guān)的獨(dú)立的形式和同步數(shù)據(jù)之外,常規(guī)的編碼器和譯碼器規(guī)范不能提供所需的定時(shí)參數(shù)或疊接點(diǎn)參數(shù)。由于缺少用于使數(shù)據(jù)流彼此相關(guān)的數(shù)據(jù),這種困難被進(jìn)一步加重。例如,不能提供用于直接且可靠地確定由一個(gè)以上的數(shù)據(jù)流占據(jù)的譯碼器緩沖器的內(nèi)容的參數(shù)。因而,沒有提供直接的支持,去確保譯碼器緩沖器將含有來自兩個(gè)被疊接在一起的數(shù)據(jù)流的每個(gè)數(shù)據(jù)流的足夠量的數(shù)據(jù),以便維持連續(xù)的數(shù)據(jù)流,并且緩沖器也不斷流或溢出。
盡管上述的和其它的困難涉及把數(shù)據(jù)流疊接在一起,還是提出了一些解決辦法,其中有兩種已被使用。一種常規(guī)的解決辦法是譯碼對(duì)象數(shù)據(jù)流,以譯碼的形式進(jìn)行疊接,然后對(duì)數(shù)據(jù)流進(jìn)行再編碼使得成為一個(gè)單獨(dú)數(shù)據(jù)流,借以有效地避免在疊接編碼的數(shù)據(jù)流時(shí)存在的固有的問題。遺憾的是,充分可靠地進(jìn)行實(shí)時(shí)疊接的編碼譯碼硬件是昂貴的。在廣播應(yīng)用中,由單獨(dú)的數(shù)據(jù)流源供應(yīng)每個(gè)“電視頻道”,其中任何一個(gè)頻道都可能需要疊接。因此,似乎需要多個(gè)譯碼器和編碼器輪流工作。
按照另一種常規(guī)的用以疊接編碼的數(shù)據(jù)流的方法,把黑化的無聲的視頻幀(“引導(dǎo)幀”)附加于新的數(shù)據(jù)流的開始處。這種方法的優(yōu)點(diǎn)是需要最小量的數(shù)據(jù)去產(chǎn)生引導(dǎo)幀。因此,譯碼緩沖器不會(huì)發(fā)生溢出。此外,引導(dǎo)幀用于掩蓋由于數(shù)據(jù)流對(duì)的不太精確的疊接,例如一般在本領(lǐng)域中被稱為翻轉(zhuǎn)的顯示失步,而引起的視覺問題。此外,這種方法可以使用現(xiàn)有的編碼器和譯碼器完成,從而避免替換成本。遺憾的是,疊接是不透明的。黑化的幀對(duì)于被供給顯示的數(shù)據(jù)流的用戶是明顯的。因?yàn)橐龑?dǎo)幀形成新的數(shù)據(jù)流的一部分,例如商業(yè)信息,故損失的“空的”時(shí)間對(duì)于廣告商而言是特別關(guān)心的,其在30秒鐘內(nèi)可以播放的廣告能夠超過900000美元的收費(fèi)。(因此每幀可以超過1000美元)。
盡管這些嘗試,但當(dāng)前由運(yùn)動(dòng)圖像和電視協(xié)會(huì)提出的標(biāo)準(zhǔn)化成果(“Proposed SMPTE Standard for Television-Splice Points forMPEG-2 Transport Streams”)建議廢除當(dāng)前的疊接方法以便有助于MPEG-2規(guī)范的新的擴(kuò)展。該提議提出了一種新的完整的協(xié)議,尤其是能夠進(jìn)行數(shù)據(jù)流對(duì)的透明的或“無縫的”疊接。概括地說,所提出的標(biāo)準(zhǔn)提出在編碼時(shí)直接在數(shù)據(jù)流中包含進(jìn)去疊接點(diǎn)和相關(guān)的疊接支持信息。遺憾的是,所提出的擴(kuò)展至少需要投資以便代替現(xiàn)有的編碼器。事情更加困難,所提出的標(biāo)準(zhǔn)仍然沒有被批準(zhǔn)。因此,可能會(huì)出現(xiàn)可能的修正,以及不可避免的不同解釋,實(shí)施,不相容性,專利權(quán)的“進(jìn)一步擴(kuò)充”和其他問題。
因而需要一種裝置和方法,用于疊接數(shù)字編碼的多媒體數(shù)據(jù)流而不需要新的編碼器或譯碼器,并且不引入明顯的空余時(shí)間被浪費(fèi)的人為現(xiàn)象。還要求這種裝置和方法能夠避免修改常規(guī)的編碼/譯碼規(guī)范的要求。
本發(fā)明提供一種基于數(shù)據(jù)處理系統(tǒng)的疊接系統(tǒng),用于無縫地把數(shù)字編碼的數(shù)據(jù)流疊接在一起。更具體地說,本疊接系統(tǒng)按照現(xiàn)有的編碼/譯碼規(guī)范使用常規(guī)的編碼器和譯碼器進(jìn)行舊數(shù)據(jù)流和單獨(dú)編碼的新數(shù)據(jù)流的疊接,同時(shí)避免過高的費(fèi)用、視覺問題和常規(guī)的疊接系統(tǒng)中引起的丟失空余時(shí)間等問題。
因而,本發(fā)明的第一優(yōu)選實(shí)施例包括一個(gè)疊接器,其用作在較大的數(shù)據(jù)流處理與廣播系統(tǒng)內(nèi)的一個(gè)程序庫。所述疊接器還直接或間接地和較大系統(tǒng)的主應(yīng)用程序以及多路傳輸器通信。此外,可以同時(shí)調(diào)用幾個(gè)疊接器,以便把存儲(chǔ)在主處理系統(tǒng)中的數(shù)據(jù)流疊接在一起與/或作為多路傳輸?shù)腗PEG-2數(shù)據(jù)流頻道向外同時(shí)傳輸。
有利的是,疊接器在疊接期間調(diào)整數(shù)據(jù)流而不需要譯碼,以便或者對(duì)齊數(shù)據(jù)流或者在新數(shù)據(jù)流的疊接入點(diǎn)關(guān)閉一個(gè)打開圖像組。疊接器還這樣調(diào)整新數(shù)據(jù)流,使得由于疊接而引起的接收譯碼器輸入緩沖器的溢出或欠流被避免。疊接器還有這樣的優(yōu)點(diǎn),即在完成疊接時(shí),新數(shù)據(jù)流的剩余部分可以作為編碼的數(shù)據(jù)被接收而不用疊接器進(jìn)一步干預(yù)。
當(dāng)由庫程序調(diào)用從主應(yīng)用程序中調(diào)用時(shí),優(yōu)選的疊接器接收建立信息,其中包括相應(yīng)的疊接緩沖器-N的位置,只疊接或插入方式選擇,音頻可選項(xiàng)選擇和疊接緩沖器滿或在所需的舊數(shù)據(jù)流部分前面的要在其中進(jìn)行疊接的“疊接緩沖器”的數(shù)量。此后,疊接器使用由按順序放置在疊接緩沖器-N中的新數(shù)據(jù)流數(shù)據(jù)跟隨的舊數(shù)據(jù)流數(shù)據(jù)進(jìn)行疊接。
優(yōu)選的疊接器的操作是通過產(chǎn)生疊接表并且然后分析在疊接緩沖器-N中的各個(gè)疊接緩沖器,以完成單獨(dú)的任務(wù)和并行的處理中的任務(wù)。單獨(dú)的任務(wù)包括產(chǎn)生疊接表,查找疊接出點(diǎn)和疊接入點(diǎn),確定新數(shù)據(jù)流傳輸時(shí)間并對(duì)齊新數(shù)據(jù)流的接收和對(duì)舊數(shù)據(jù)流的最后譯碼器緩沖器進(jìn)行譯碼的時(shí)刻。進(jìn)行中的任務(wù)包括利用數(shù)據(jù)流幀信息增加疊接表,并且同時(shí)還使用幀信息避免譯碼器輸入緩沖器溢出而不改變過去的疊接數(shù)據(jù)流編碼。
為了對(duì)齊數(shù)據(jù)流接收并避免或“校正”溢出,疊接器延遲并加速新數(shù)據(jù)流的不同部分。更具體地說,疊接器通過在數(shù)據(jù)流的開始之前插入空包延遲數(shù)據(jù)流接收,并通過從數(shù)據(jù)流的開始刪除空包加速數(shù)據(jù)流接收。類似地,疊接器通過在引起溢出數(shù)據(jù)包的前面插入空包來延遲這種數(shù)據(jù)包,并通過從落后的數(shù)據(jù)包中刪除空包來加速落后的數(shù)據(jù)包(或復(fù)位編碼定時(shí))。空包的加入是通過對(duì)主應(yīng)用程序提供指令實(shí)現(xiàn)的,主應(yīng)用程序進(jìn)行附加并對(duì)多路傳輸器提供用于多路傳輸和傳輸?shù)慕Y(jié)果。延遲是由疊接器使用重復(fù)的復(fù)制操作來移動(dòng)疊接緩沖器-N內(nèi)的數(shù)據(jù)包而直接地實(shí)現(xiàn)的。
在另一個(gè)優(yōu)選實(shí)施例中,數(shù)據(jù)流部分的延遲和加速通過調(diào)用一個(gè)新穎位時(shí)鐘裝置來實(shí)現(xiàn)。在一方面,不個(gè)別地進(jìn)行每個(gè)重復(fù)的復(fù)制空包刪除和每個(gè)空包的插入,而是保持空包計(jì)數(shù),直到完成當(dāng)前數(shù)據(jù)流部分的處理為止。在第二方面,多路傳輸器被設(shè)置成收集每個(gè)數(shù)據(jù)流輸出緩沖器,以便按照多路傳輸器的操作速率的比例傳輸。然后疊接器對(duì)于給定的緩沖器確定空包附加或刪除的數(shù)量并把這些數(shù)量提供給主應(yīng)用程序。然后主應(yīng)用程序把這些數(shù)量提供給多路傳輸器,它把這些數(shù)量附加到相應(yīng)緩沖器的定時(shí)表中。有利的是,因?yàn)楸苊庵貜?fù)復(fù)制和主應(yīng)用程序的操作,所以可以大大增加處理系統(tǒng)的輸出。
本發(fā)明的這些和其它的目的、優(yōu)點(diǎn)和特點(diǎn)由下面的附圖和說明將更加清楚。


圖1是按照本發(fā)明的優(yōu)選實(shí)施例的功能方塊圖,總體地說明一個(gè)用于接收、制備、存儲(chǔ)、恢復(fù)和發(fā)送數(shù)字編碼的多媒體數(shù)據(jù)流的系統(tǒng);圖2是說明圖1所示系統(tǒng)的更詳細(xì)的功能方塊圖;圖3是說明按照本發(fā)明的優(yōu)選的疊接器的功能方塊圖;圖4是說明按照本發(fā)明的用于把第一數(shù)字編碼的流和第二數(shù)字編碼的流疊接在一起的優(yōu)選的方法的流程圖;圖5是按照本發(fā)明說明按照?qǐng)D4所示的優(yōu)選的方法在第一數(shù)據(jù)流中發(fā)現(xiàn)疊接出點(diǎn)的優(yōu)選的方法的流程圖;圖6是按照本發(fā)明說明按照?qǐng)D4所示的優(yōu)選的方法在第二數(shù)據(jù)流中發(fā)現(xiàn)疊接入點(diǎn)的優(yōu)選的方法的流程圖;圖7是按照本發(fā)明說明按照?qǐng)D4所示的優(yōu)選的方法在第二數(shù)據(jù)流中閉合圖像的引導(dǎo)打開組的優(yōu)選的方法的流程圖;圖8是說明按照?qǐng)D7的優(yōu)選的方法的當(dāng)閉合圖像組時(shí)用于確定臨時(shí)基準(zhǔn)的優(yōu)選的方法的流程圖;圖9A是說明MPEG-2編碼的數(shù)據(jù)流按照常規(guī)方法是如何被譯碼器輸入緩沖器接收然后又被譯碼的曲線;圖9B按照本發(fā)明說明按照?qǐng)D4的優(yōu)選方法的在用于連續(xù)地顯示視頻幀的兩個(gè)視頻幀之間的常規(guī)的顯示掃描速率的定時(shí)關(guān)系;圖10是按照本發(fā)明說明按照?qǐng)D4的優(yōu)選的方法確定實(shí)時(shí)的新的數(shù)據(jù)流PCR的優(yōu)選的方法的流程圖;圖11是按照本發(fā)明說明按照?qǐng)D4的優(yōu)選的方法在確定實(shí)時(shí)的新的數(shù)據(jù)流PCR之后,譯碼器輸入緩沖器是如何接收第二數(shù)據(jù)流的曲線;圖12是按照本發(fā)明說明按照?qǐng)D4的優(yōu)選的方法使由譯碼器輸入緩沖器接收第二數(shù)據(jù)流和由譯碼器輸入緩沖器譯碼第一數(shù)據(jù)流對(duì)齊的優(yōu)選的方法的流程圖;圖13A按照本發(fā)明說明用于刪除數(shù)據(jù)流內(nèi)的空包的優(yōu)選的方法的流程圖,其中數(shù)據(jù)流被存儲(chǔ)在疊接緩沖器中;圖13B按照本發(fā)明說明在執(zhí)行圖12a的優(yōu)選的方法之后,疊接緩沖器的配置;圖14是按照本發(fā)明說明消除由于在譯碼輸入緩沖器中同時(shí)存在舊的數(shù)據(jù)流和要被疊接在一起的新的數(shù)據(jù)流而引起的譯碼輸入緩沖器的溢出的優(yōu)選的方法的流程圖;圖15A是按照本發(fā)明說明按照用于刪除和消除譯碼器輸入緩沖器溢出的優(yōu)選的方法增加具有舊的數(shù)據(jù)流幀數(shù)據(jù)的疊接表的優(yōu)選的方法的第一部分流程圖;圖15B是按照本發(fā)明說明按照?qǐng)D14的優(yōu)選的方法增加具有新的數(shù)據(jù)流數(shù)據(jù)的疊接表并同時(shí)刪除溢出的優(yōu)選的方法的第一部分流程圖;圖15C是按照本發(fā)明的圖15B的流程圖的繼續(xù);圖16是按照本發(fā)明說明溢出特性并進(jìn)一步說明按照?qǐng)D15a-15c的優(yōu)選的方法刪除和消除溢出的曲線;圖17按照本發(fā)明說明按照?qǐng)D15a-15c的優(yōu)選的方法的疊接表的示例的內(nèi)容;圖18是按照本發(fā)明說明用于設(shè)置第一數(shù)據(jù)流的音頻疊接出點(diǎn)的優(yōu)選的方法的流程圖;圖19A按照本發(fā)明說明另一個(gè)音頻疊接出點(diǎn);圖19B按照本發(fā)明說明另一個(gè)音頻疊接入點(diǎn);圖20是按照本發(fā)明說明用于在新的數(shù)據(jù)流中設(shè)置疊接入點(diǎn)的優(yōu)選方法的流程圖21是按照本發(fā)明的另一個(gè)優(yōu)選實(shí)施例說明利用比特定時(shí)的優(yōu)選的疊接器的流程圖;以及圖22是按照本發(fā)明說明增強(qiáng)圖15a-15c的用于檢測(cè)并校正溢出條件的優(yōu)選的方法的流程圖。
為簡明起見,此處討論的實(shí)施例主要針對(duì)把按照MPEG-2規(guī)范進(jìn)行編碼和譯碼的數(shù)字編碼的數(shù)據(jù)流(“數(shù)據(jù)流”)疊接在一起。更具體地說,討論的重點(diǎn)在于疊接正在播放的電視節(jié)目廣播和商業(yè)信息,疊接在用于向用戶所在地的電纜接收機(jī)發(fā)送信息的電纜廣播站進(jìn)行。討論將根據(jù)被裝在優(yōu)選的系統(tǒng)中的疊接器應(yīng)用程序進(jìn)行,所示系統(tǒng)用于接收、制備、存儲(chǔ)、檢索和傳輸數(shù)字編碼的多媒體數(shù)據(jù)流。
不過,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,除去MPEG規(guī)范之外,本發(fā)明可以容易地適用于現(xiàn)有的并正在被引入的許多數(shù)字編碼/譯碼規(guī)范。其中的例子包括但不限于歐洲電信標(biāo)準(zhǔn)。此外,對(duì)象數(shù)據(jù)流的內(nèi)容決不限于電視節(jié)目和商業(yè)信息。本發(fā)明給出的教導(dǎo)可以應(yīng)用于廣泛的范圍,包括音頻、視頻和其它類型可以利用數(shù)字編碼的的數(shù)據(jù)。如圖1總體地所示,按照本發(fā)明的用于接收、制備、存儲(chǔ)、檢索和傳輸數(shù)字編碼的多媒體數(shù)據(jù)流的優(yōu)選的系統(tǒng)100最好被全部包括在一個(gè)主處理系統(tǒng)中,例如個(gè)人計(jì)算機(jī)或“PC”中。系統(tǒng)100最好包括在電氣上耦聯(lián)的硬件,其中包括輸入裝置110、處理器112、存儲(chǔ)器114、存儲(chǔ)裝置116、MPEG-2編碼器120、MPEG-2譯碼器125、衛(wèi)星I/O130、電纜I/O133、網(wǎng)絡(luò)I/O135、音頻I/O137、視頻I/O138、和發(fā)送機(jī)139。系統(tǒng)100還包括一些耦合軟件元件,它們包括操作系統(tǒng)140,I/O處理器145,流路由器150,緩沖器發(fā)生器160,疊接緩沖器165,疊接器170,多路緩沖器180和多路傳輸器190。
本領(lǐng)域技術(shù)人員容易理解,在本發(fā)明的范圍內(nèi),系統(tǒng)100的結(jié)構(gòu)可以有多種改變。例如,隨著處理器和計(jì)算機(jī)性能的改變和技術(shù)的不斷進(jìn)步,硬件例如MPEG-2編碼器120和MPEG-2譯碼器125都可以用軟件實(shí)施,或者通過硬件和軟件的結(jié)合實(shí)施。類似地,軟件程序例如多路傳輸器185可以通過硬件或者硬件和軟件的組合實(shí)施。此外,雖然只說明了利用網(wǎng)絡(luò)I/O145和其它計(jì)算機(jī)裝置連接,但是也可以利用有線的、無線的、調(diào)制解調(diào)器與/或其它的連接和其它計(jì)算機(jī)裝置(包括但不限于局域網(wǎng)、廣域網(wǎng)和互連網(wǎng))相連。其它的例子還有利用分布處理、多位置觀看、信息傳輸、信息共享、遠(yuǎn)方信息檢索和和并接以及有關(guān)的應(yīng)用??梢岳貌煌牟僮飨到y(tǒng)和數(shù)據(jù)處理系統(tǒng),不過最好使用常規(guī)的多任務(wù)操作系統(tǒng),例如在IBM兼容機(jī)上運(yùn)行的Windows95或Windows NT(微軟公司的商標(biāo)),或者利用基于Unix操作系統(tǒng)的計(jì)算機(jī),下面將針對(duì)這些進(jìn)行討論。輸入裝置110可以包括用于輸入指令和數(shù)據(jù)的任何數(shù)量的裝置和/或裝置類型,包括但不限于鍵盤、鼠標(biāo)和語音識(shí)別裝置。
圖2的方塊圖較詳細(xì)地說明按照本發(fā)明的疊接器是如何作為圖1的系統(tǒng)100內(nèi)的支持應(yīng)用程序而優(yōu)選地操作的。概括地說,系統(tǒng)100最好按照用戶的選擇操作,以便接收來自外部源與/或存儲(chǔ)裝置的數(shù)據(jù)流,在需要時(shí)對(duì)數(shù)據(jù)流進(jìn)行MPEG-2編碼,多路傳輸編碼的數(shù)據(jù)流,然后發(fā)送與/或存儲(chǔ)多路傳輸?shù)臄?shù)據(jù)流(先前被譯碼或不被譯碼)。當(dāng)選擇疊接時(shí),系統(tǒng)100向疊接器優(yōu)選地發(fā)送當(dāng)前傳輸?shù)?舊的)數(shù)據(jù)流和新的數(shù)據(jù)流。疊接器根據(jù)需要實(shí)時(shí)地修正數(shù)據(jù)流對(duì),使得當(dāng)附加到多路傳輸?shù)臄?shù)據(jù)流時(shí),新的數(shù)據(jù)流將被接收、由譯碼器譯碼并輸出,而用作舊的數(shù)據(jù)流的無縫添加的數(shù)據(jù)流。
更具體地說,用戶最好以常規(guī)方式使用輸入裝置110、音頻I/O137和視頻I/O138結(jié)合I/O處理器145的用戶接口145a來輸入信息并接收輸出信息。用戶接口145a還最好以常規(guī)方式配備有WINDOWS操作系統(tǒng)。用戶可以通過用戶接口145a從I/O接口203得到的(即接收的)數(shù)據(jù)流源與/或從存儲(chǔ)裝置16檢索的數(shù)據(jù)流中選擇若干個(gè)數(shù)據(jù)流源.I/O接口103包括衛(wèi)星接口130和電纜接口133(即收發(fā)信機(jī)擴(kuò)展卡與/或包括的硬件與/或用于處理分別通過衛(wèi)星和電纜傳輸?shù)臄?shù)據(jù)流的軟件),網(wǎng)絡(luò)接口135,射頻接口137,和視頻接口139。本領(lǐng)域技術(shù)人員容易理解,用戶可以按照缺省的值與/或定時(shí)的與/或即時(shí)的選擇值互動(dòng)地選擇數(shù)據(jù)流源和其它項(xiàng)。
在系統(tǒng)100的正常操作期間(即在沒有疊接時(shí)),數(shù)據(jù)流路由器150按照數(shù)據(jù)流的類型發(fā)送選擇的數(shù)據(jù)流。更具體地說,數(shù)據(jù)流路由器從I/O接口103向緩沖器發(fā)生器160發(fā)送已經(jīng)編碼的數(shù)據(jù)流源。數(shù)據(jù)流路由器150還通過各個(gè)編碼器(例如編碼器-1220和編碼器-N120)例如從存儲(chǔ)裝置116向緩沖器發(fā)生器160發(fā)送未編碼的數(shù)據(jù)流。緩沖器發(fā)生器160在接收初始數(shù)據(jù)流時(shí)建立一個(gè)輸出緩沖器。為簡明起見,在正常操作期間由緩沖器發(fā)生器160產(chǎn)生的輸出緩沖器此處被稱為多路緩沖器(例如多路緩沖器-1280)。產(chǎn)生多路緩沖器之后,緩沖器發(fā)生器160便隨著從相應(yīng)的I/O接口收到的數(shù)據(jù)而增加多路緩沖器,并且在填滿多路緩沖器時(shí)再次設(shè)置數(shù)據(jù)準(zhǔn)備標(biāo)記。并和MPEG-2規(guī)范定時(shí)一致。雖然用戶可以選擇地確定各個(gè)多路緩沖器的大小,不過其一般的大小范圍大約在64k到47×64k字節(jié),從而至少提供300個(gè)包。
當(dāng)選擇疊接操作時(shí),流路由器150還按照數(shù)據(jù)流的類型發(fā)送舊的和新的數(shù)據(jù)流。更具體地說,流路由器150直接向緩沖器發(fā)生器160發(fā)送編碼的數(shù)據(jù)流(一般也從I/O接口203),并通過可得到的編碼器(例如編碼器-1220到編碼器-N120)向緩沖器發(fā)生器160發(fā)送未編碼的數(shù)據(jù)流(一般也從存儲(chǔ)裝置116,音頻I/O137和視頻I/O138),如正常操作那樣。不過,為簡明起見,在疊接操作期間由緩沖器發(fā)生器160產(chǎn)生的輸出緩沖器此處被稱為疊接緩沖器(如示范性的疊接緩沖器-N265和疊接緩沖器-1265a)。在產(chǎn)生疊接緩沖器之后,緩沖器發(fā)生器160隨著數(shù)據(jù)流數(shù)據(jù)而增加疊接緩沖器,并發(fā)出有關(guān)疊接器(例如示范性的疊接器-N270和疊接器-1270a)。疊接器最好是由主應(yīng)用程序的緩沖器發(fā)生器應(yīng)用程序部分的庫調(diào)用產(chǎn)生的C+庫。發(fā)出的疊接器實(shí)現(xiàn)疊接并把值返回主應(yīng)用程序。然后主應(yīng)用程序可以在設(shè)置狀態(tài)準(zhǔn)備標(biāo)記之前進(jìn)一步處理疊接緩沖器中的數(shù)據(jù)。因而概括地說,疊接器-N270最好被調(diào)用和操作,以便分析來自舊的數(shù)據(jù)流和新的數(shù)據(jù)流對(duì)的數(shù)據(jù)流數(shù)據(jù)(其被包含在疊接緩沖器-N265中,一次填滿一個(gè)緩沖器),進(jìn)行疊接,然后把參數(shù)返回主應(yīng)用程序。應(yīng)當(dāng)注意,主應(yīng)用程序在緩沖器由復(fù)用器190接收之前大約0.5-1秒填滿疊接緩沖器-N265,從而為疊接器-N270提供至少0.5秒的時(shí)間,用于處理緩沖器中包含的數(shù)據(jù)。
在正常和疊接操作期間,復(fù)用器190通過每個(gè)輸出緩沖器的數(shù)據(jù)準(zhǔn)備標(biāo)記測(cè)試來連續(xù)地循環(huán),并且在檢測(cè)到準(zhǔn)備好狀態(tài)時(shí),向發(fā)送機(jī)139發(fā)送各個(gè)緩沖器的內(nèi)容。在收到多路緩沖器內(nèi)容時(shí),發(fā)送機(jī)139向流路由器150發(fā)送輸出緩沖器內(nèi)容與/或(選擇地,按照用戶選擇)發(fā)出多路緩沖器內(nèi)容。在收到來自發(fā)送機(jī)139的數(shù)據(jù)時(shí),流路由器150向譯碼器125,I/O接口103與/或存儲(chǔ)裝置116發(fā)送接收的數(shù)據(jù)。
由系統(tǒng)100發(fā)送的復(fù)用數(shù)據(jù)流可由一個(gè)或幾個(gè)轉(zhuǎn)播站(例如示范性轉(zhuǎn)播站291)接收與再發(fā)送,或者由用戶接收機(jī)(例如示范性接收機(jī)293,295)直接接收。被包括在每個(gè)多路傳輸?shù)臄?shù)據(jù)流中的每個(gè)分?jǐn)?shù)據(jù)流被作為數(shù)據(jù)源接收,用于按照MPEG-2規(guī)范分離“電視頻道”。被疊接(主要是透明的疊接)的數(shù)據(jù)流對(duì)(例如電視節(jié)目和廣告的疊接)也被接收,用作一個(gè)MPEG-2編碼的頻道。
一般地,系統(tǒng)100需要一個(gè)大約5MHz的平均帶寬,用于疊接每個(gè)數(shù)據(jù)流對(duì)。因而具有200MHz的奔騰(英特爾公司商標(biāo)名)處理器的一般PC可以同時(shí)支持達(dá)40個(gè)數(shù)據(jù)流。不過,從處理器、裝置底板、存儲(chǔ)器、存儲(chǔ)裝置、系統(tǒng)軟件的發(fā)展的觀點(diǎn)看來,可以使系統(tǒng)100最佳化,從而使數(shù)據(jù)流的數(shù)量增加。系統(tǒng)100還可以和其它系統(tǒng)同步,用于通過提供合適的同步源而處理增加數(shù)據(jù)的數(shù)據(jù)流。
特定的接收機(jī)硬件和軟件的配置和功能可以有很大的不同,尤其是在未被MPEG-2規(guī)范包括的條件方面。不過每個(gè)接收機(jī)都包括用于譯碼的完整的硬件與/或軟件系統(tǒng)。因?yàn)榘l(fā)送的數(shù)據(jù)作為多路傳輸?shù)臄?shù)據(jù)流被接收,所以每個(gè)接收機(jī)包括解多路傳輸器(未示出)。因?yàn)槊總€(gè)數(shù)據(jù)流包括多路傳輸?shù)囊纛l和視頻數(shù)據(jù),故每個(gè)接收機(jī)還包括具有音頻視頻數(shù)據(jù)流的解多路傳輸能力的部件(未示出),用于支持每個(gè)數(shù)據(jù)流頻道。每個(gè)接收機(jī)還包括(對(duì)于每個(gè)頻道)用于對(duì)MPEG-2編碼的音頻和視頻數(shù)據(jù)譯碼的譯碼器。例如,視頻譯碼器293a和音頻譯碼器293b表示這種必須的用于一個(gè)MPEG-2編碼的數(shù)據(jù)流的譯碼器對(duì)。(每個(gè)緩沖器的大小,或者換句話說,每個(gè)緩沖器可以包含的數(shù)據(jù)量,可以因接收機(jī)而不同)。每個(gè)譯碼器包括輸入緩沖器(未示出),用于在譯碼之前接收各個(gè)多路傳輸?shù)囊曨l或音頻數(shù)據(jù),以及相應(yīng)的幀緩沖器,用于接收譯碼的視頻或音頻數(shù)據(jù)并重構(gòu)音頻視頻表示(即進(jìn)行重構(gòu)以便輸出到顯示裝置或其它裝置)。
通過參見圖2可知圖3和圖4在總體上說明按照本發(fā)明的優(yōu)選的疊接器和疊接方法。為簡明起見,下面的討論假定在系統(tǒng)100中只有兩個(gè)要被處理的數(shù)據(jù)流(舊數(shù)據(jù)流和新數(shù)據(jù)流),并且假定這種處理包括兩個(gè)數(shù)據(jù)流的疊接。因此只討論一個(gè)疊接器,即疊接器-N270(圖2),和一個(gè)輸出緩沖器,即疊接緩沖器-N265。根據(jù)所作的討論,本領(lǐng)域的技術(shù)人員將會(huì)理解,其它的疊接器和輸出緩沖器的組合也能以相同方式操作。
如圖3的方塊圖所示,疊接器-N270最好包括一些被連接的元件,它們包括疊接發(fā)生器310、順序求取器320、幀求取器330、包求取器340、GOP求取器350、包移動(dòng)器360和幀表370。概括地說,疊接發(fā)生器310產(chǎn)生并增加幀表370,并啟動(dòng)和利用其它疊接器-N270元件的操作。順序求取器320、幀求取器330、包求取器340、GOP求取器350最好分別定位和恢復(fù)來自MPEG-2編碼的數(shù)據(jù)流的各個(gè)順序、幀、包和GOP數(shù)據(jù)。包移動(dòng)器360優(yōu)選地消除定時(shí)誤差,以便使疊接器-N270形成無縫疊接,幀表370優(yōu)選地用于確定緩沖器溢出狀態(tài)。
參見圖2和圖3可知圖4說明按照本發(fā)明的優(yōu)選疊接方法。如前所述,疊接最好由來自主程序的一個(gè)調(diào)用啟動(dòng)或“開始”。來自主程序的該調(diào)用相當(dāng)于填充疊接緩沖器-N265的主程序,其啟動(dòng)(即“開始”,“調(diào)用”或“例示”)疊接器-N270。該調(diào)用還包括疊接緩沖器-N265在主處理系統(tǒng)內(nèi)的位置(或者疊接緩沖器的外部位置,如果是外部的話),并表明疊接要根據(jù)具有填充的疊接緩沖器-N265的主應(yīng)用程序按照規(guī)定的次數(shù)進(jìn)行。換句話說,由主程序送到疊接器-N270的緩沖器位置參數(shù)表示緩沖器的位置,而送到疊接器-N270的其它參數(shù)表示“疊接緩沖器滿”,其中疊接器-N270要結(jié)束舊的數(shù)據(jù)流。主程序在向疊接緩沖器-N265發(fā)出舊數(shù)據(jù)流的疊接緩沖器滿時(shí),還開始用新數(shù)據(jù)流的“疊接緩沖器滿”填充疊接緩沖器-N265。雖然疊接緩沖器-N265的大小和疊接開始時(shí)間是最好由用戶選擇的,但緩沖器-N一般適用于300k字節(jié)的數(shù)據(jù),并且一般在緩沖器啟動(dòng)之后50毫秒開始疊接。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,根據(jù)這里的教導(dǎo),數(shù)據(jù)流源與/或主程序可以由和疊接器-N270分開的處理系統(tǒng)主持,并且/或者疊接器-N270可以作為庫之外的單獨(dú)的處理或子處理來實(shí)現(xiàn)。不過,在一個(gè)處理系統(tǒng)內(nèi)完全的綜合和一個(gè)庫的使用最好是起因于用于完成實(shí)時(shí)疊接的增強(qiáng)的數(shù)據(jù)處理請(qǐng)求。不過,一個(gè)庫最好能夠支持多個(gè)這種處理或子處理,借以提供多個(gè)同時(shí)的疊接操作。由下面的討論可以看出,由主程序產(chǎn)生并填充的并根據(jù)需要被疊接器修正的一個(gè)疊接緩沖器同樣因?yàn)樵鰪?qiáng)的操作而被利用。例如,避免多個(gè)緩沖器的管理(例如多個(gè)位置指針和不鄰接的數(shù)據(jù)位置)以及緩沖器復(fù)制(例如從多個(gè)疊接器輸入緩沖器到單獨(dú)的疊接器輸出緩沖器)有助于使用于完成疊接的處理系統(tǒng)輸出的要求減至最少。
如圖所示,在步405,疊接器-N270產(chǎn)生并開始增加幀表370(圖3)。在步410,疊接器-N270查找舊數(shù)據(jù)流中在疊接之前舊數(shù)據(jù)流的傳輸被終止的數(shù)據(jù)位置,以后稱它為“舊數(shù)據(jù)流疊接出點(diǎn)”,或被簡稱為“疊接出點(diǎn)”。在步420,疊接器-N270查找新數(shù)據(jù)流中開始傳輸新數(shù)據(jù)流的數(shù)據(jù)的位置,以后它被稱為“新數(shù)據(jù)流入點(diǎn)”,或簡稱為“疊接入點(diǎn)”。在步430,疊接器-N270確定開始發(fā)送新數(shù)據(jù)流的時(shí)間,以后它被稱為“實(shí)時(shí)發(fā)送開始點(diǎn)”。在步440,疊接器-N270對(duì)齊新數(shù)據(jù)流,使得新數(shù)據(jù)流在開始譯碼最后一個(gè)舊數(shù)據(jù)流緩沖器的同時(shí)最好由接收機(jī)譯碼器接收。在步450,疊接器-N270檢測(cè)并校正譯碼緩沖器溢出狀態(tài)。
在完成疊接之后,疊接器-N270最好把參數(shù)返回調(diào)用程序(例如調(diào)用程序的緩沖器發(fā)生器子處理)。調(diào)用程序然后可以管理疊接緩沖器-N265的內(nèi)容,然后設(shè)置數(shù)據(jù)準(zhǔn)備好標(biāo)記,如上所述。此后,疊接器-N270可以設(shè)置一個(gè)PCR斷續(xù)包。
由下面的討論可以看出,在疊接時(shí),在發(fā)送之前疊接器-N270使用幀表370檢測(cè)并消除可能的譯碼器輸入緩沖器溢出條件發(fā)生,使得在發(fā)送之后不會(huì)發(fā)生溢出狀態(tài)。當(dāng)緩沖器發(fā)生器160(圖2)繼續(xù)用相應(yīng)于來自舊數(shù)據(jù)流和新數(shù)據(jù)流的數(shù)據(jù)的緩沖器滿來填充疊接緩沖器-N265時(shí),疊接器-N270同時(shí)進(jìn)行步410到450。例如,當(dāng)疊接緩沖器-N265包含舊數(shù)據(jù)流的最后一部分時(shí),疊接器-N270查找舊數(shù)據(jù)流疊接出點(diǎn)。當(dāng)疊接緩沖器-N265含有新數(shù)據(jù)流的第一部分時(shí),疊接器-N270還查找新數(shù)據(jù)流疊接入點(diǎn),如此等等。為簡明起見,保留產(chǎn)生與增加幀表370,以便相應(yīng)地討論檢測(cè)和消除譯碼器輸入緩沖器溢出(步450)。為簡明起見,將首先考慮優(yōu)選的視頻疊接,僅注解何時(shí)發(fā)生音頻疊接。然后單獨(dú)討論優(yōu)選的音頻疊接。
圖5說明疊接器-N270在收到舊數(shù)據(jù)流的最后疊接緩沖器滿時(shí)如何優(yōu)選地查找舊數(shù)據(jù)流視頻疊接出點(diǎn)。如圖所示,疊接器-N270優(yōu)選地提供多種可由調(diào)用程序規(guī)定的操作方式,其中每種方式都能由調(diào)用程序來指定。在“插入”操作方式中,疊接器-N270以這樣的方式進(jìn)行疊接,即例如,當(dāng)要在正播放的節(jié)目(例如電影)中插入商業(yè)信息時(shí),預(yù)期較后回到舊數(shù)據(jù)流的疊接。因?yàn)樵谏虡I(yè)信息之后繼續(xù)播放電影,故斷開電影數(shù)據(jù)流傳輸?shù)膬?yōu)選點(diǎn)也是在緊跟斷開的點(diǎn)之后實(shí)現(xiàn)電影數(shù)據(jù)流繼續(xù)傳輸?shù)狞c(diǎn),或“疊接出點(diǎn)”。與此相對(duì),在“只疊接方式”中,疊接器-N270實(shí)現(xiàn)孤立的疊接,而不管舊數(shù)據(jù)流以后的繼續(xù)。這種只疊接方式一般在這種情況下選擇,例如,在單獨(dú)編碼的預(yù)先制備的電影結(jié)束時(shí),或者在現(xiàn)場(chǎng)直播期間。此外,還有不同于連續(xù)的電影的情況。
用戶可以選擇現(xiàn)場(chǎng)直播的最后疊接緩沖器滿作為包括視頻數(shù)據(jù)的“額外”幀,因而尤其需要找到以前的疊接點(diǎn)(即在額外幀之前)。
如圖所示,如果在步501選擇了插入方式,則疊接器-N270在步520查找在程序頭部開始之前的舊數(shù)據(jù)流疊接出點(diǎn)。如果在步510選擇只疊接方式,則在步530疊接器-N270查找在序列頭部、GOP頭部、I幀或P幀第一次出現(xiàn)時(shí)的舊數(shù)據(jù)流疊接出點(diǎn)。接著在步540,疊接器-N270在疊接緩沖器-N265內(nèi)設(shè)置用于傳輸在疊接點(diǎn)之前的那些字節(jié)的字節(jié)。如后所述,疊接器-N270接著使用舊數(shù)據(jù)流視頻疊接出點(diǎn)查找舊數(shù)據(jù)流音頻疊接出點(diǎn)(未示出)。
在操作上,疊接器-N270通過分析在疊接緩沖器-N265中包含的數(shù)據(jù)(從第一次收到的數(shù)據(jù)開始),使用包括序列查找器320、GOP查找器350或幀查找器330的各個(gè)數(shù)據(jù)類型查找器優(yōu)先查找序列頭部、GOP頭部、I幀或P幀。每個(gè)數(shù)據(jù)類型查找器包括用于按照MPEG-2規(guī)范確定各個(gè)數(shù)據(jù)類型的狀態(tài)標(biāo)記,下面還要詳細(xì)說明。疊接器-N270還通過計(jì)數(shù)包括在疊接緩沖器-N265中的在疊接點(diǎn)之前的數(shù)據(jù)字節(jié)數(shù)來設(shè)置用于傳輸?shù)淖止?jié)(在檢索期間),并通過向主程序返回該數(shù)據(jù)字節(jié)數(shù),作為在疊接緩沖器-N265內(nèi)的主程序應(yīng)當(dāng)發(fā)送給多路傳輸器的數(shù)據(jù)字節(jié)數(shù)。主程序在收到該信息之后,則一般忽略在疊接緩沖器-N265中的剩余字節(jié)(在疊接點(diǎn)之后)。
參見圖3可知圖6到圖8說明一個(gè)優(yōu)選疊接器如何在新的數(shù)據(jù)流中查找視頻疊接入點(diǎn)。如上所述,主程序?qū)⒅甘?當(dāng)調(diào)用疊接器-N270時(shí))包含舊數(shù)據(jù)流的結(jié)束部分的疊接緩沖器滿。因此,伴隨的疊接緩沖器滿將含有新數(shù)據(jù)流的第一部分。概括地說,疊接器-N270將再次分析在疊接緩沖器-N265中包含的數(shù)據(jù)流數(shù)據(jù),以便確定新數(shù)據(jù)流疊接點(diǎn)。疊接器-N270操作的細(xì)節(jié)通過首先參考MPEG-2規(guī)范的某些方面將更加容易理解。
MPEG-2規(guī)范用于把連續(xù)的視頻流編碼而成為串行序列。每個(gè)序列又被分為圖像組(“GOP”),每個(gè)GOP包含一系列編碼的視頻幀。每個(gè)序列包括一個(gè)序列頭部,每個(gè)GOP包括GOP頭部,并且每個(gè)幀包括幀的頭部。如同將要進(jìn)一步討論的,每個(gè)序列還包括至少10個(gè)程序時(shí)鐘基準(zhǔn)或“PCR”。此外,每個(gè)數(shù)據(jù)流作為一個(gè)連接的但未必是連續(xù)的包系列被發(fā)送,每個(gè)包具有一個(gè)包頭部。除去視頻數(shù)據(jù)和幀類型字段(即一個(gè)I,B或P幀)之外,每個(gè)MPEG-2編碼的視頻幀還包括定時(shí)和相對(duì)的排序信息。幀定時(shí)信息包括(對(duì)于每幀的)譯碼時(shí)間標(biāo)記或“DTS”字段,(其表示收到的幀要被譯碼的時(shí)間),以及相應(yīng)地提供時(shí)間標(biāo)記或“PTS”字段(其表示譯碼的幀被提供用于顯示的時(shí)間)。幀相對(duì)排序信息包括(對(duì)于每幀)暫時(shí)基準(zhǔn)字段(表示要被顯示的幀和同一個(gè)GOP中的其它幀比較的順序)。
不過,盡管在數(shù)據(jù)流內(nèi)含有大量的識(shí)別信息,但MPEG-2編碼只提供關(guān)于一個(gè)編碼的數(shù)據(jù)流的信息,并且通常是以不能容易地被存取的方式提供這些信息。例如,MPEG-2規(guī)范規(guī)定上述信息的不同的排序和這些信息在GOP中甚至在包中的分配。更具體地說,雖然在數(shù)據(jù)流內(nèi),第一序列頭部后面必須是GOP頭部(對(duì)于第一GOP),然后是幀頭部(對(duì)于包含在GOP中的第一幀),但是對(duì)于第一幀的DTS和PTS對(duì)可以位于幀頭部之前的任何位置。正如將要看出的,這個(gè)DTS和PTS對(duì)最好由疊接器-N270使用,以便查找疊接點(diǎn)和幫助使新數(shù)據(jù)流和舊數(shù)據(jù)流實(shí)時(shí)地對(duì)齊。
現(xiàn)在參看圖6,疊接器-N270通過首先查找新數(shù)據(jù)流的第一視頻幀的DTS和PTS對(duì)優(yōu)先地進(jìn)行疊接。疊接器-N270首先在步610通過查找新數(shù)據(jù)流的第一序列頭部來查找該DTS和PTS對(duì),然后在步620查找并存儲(chǔ)第一幀頭部(其是第一視頻幀的幀頭部)之前的最后一個(gè)DTS,然后在步630查找并存儲(chǔ)相應(yīng)于DTS的PTS。接著,在步640,疊接器-N270確保新數(shù)據(jù)流的首先出現(xiàn)的幀是I幀。更具體地說,如果新數(shù)據(jù)流的第一GOP是打開的,則疊接器-N270將“關(guān)閉GOP”。最后,在步650,疊接器-N270查找音頻疊接入點(diǎn)(為簡明起見,音頻疊接入點(diǎn)和音頻疊接出點(diǎn)將在完成視頻討論之后討論)。
在操作上,疊接器-N270使用初始序列查找器320(圖3)查找序列頭部(即步610)。序列查找器320最好是一個(gè)狀態(tài)機(jī)器,其對(duì)于第一次出現(xiàn)的序列頭部碼,分析包含在疊接緩沖器-N265中的新數(shù)據(jù)流。由MPEG-2規(guī)范定義的每個(gè)序列頭部碼的數(shù)字序列是“000001B3Hex”。然后疊接發(fā)生器對(duì)于先前的DTS和PTS(即對(duì)于新數(shù)據(jù)流的第一幀的TDS和PTS)類似地分析新數(shù)據(jù)流。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,根據(jù)本發(fā)明的教導(dǎo),疊接入點(diǎn)可被另外選擇為不同于新數(shù)據(jù)流的第一幀的點(diǎn)。例如當(dāng)需要只顯示完整的商業(yè)信息的后部分時(shí),這種另外的幀可能是需要的。在這種情況下,用戶可以規(guī)定所需的“總的開始時(shí)間”(由此時(shí)間疊接器-N270將進(jìn)一步確定疊接入點(diǎn)),或者用戶可以直接地確定疊接入點(diǎn)。
圖7和圖8說明疊接器-N270如何優(yōu)選地關(guān)閉打開的新數(shù)據(jù)流的第一GOP(圖6的步540)。
編碼規(guī)范,尤其是MPEG-2編碼規(guī)范,一般不要求每個(gè)GOP必須由本身含有足夠的數(shù)據(jù)的幀開始,以便再生視頻圖像或幀(即I幀)。具有要求由先前的GOP中的幀再生視頻圖像的第一幀的GOP一般被稱為“打開的”GOP。例如,當(dāng)在疊接之前(“打斷聯(lián)系”)新數(shù)據(jù)流被編輯并被存儲(chǔ)時(shí),可能出現(xiàn)打開的GOP。雖然,如果采用合適的編碼,則一個(gè)打開的GOP將總是在含有相應(yīng)的I幀的GOP后面,因此,打開的GOP的獨(dú)立的幀可以被再生,但是對(duì)于新數(shù)據(jù)流的第一GOP,不存在這種I幀。因此,疊接器-N270確保新數(shù)據(jù)流的第一個(gè)出現(xiàn)的幀是I幀。
由疊接器-N270來“關(guān)閉”打開的GOP的一種方法包括對(duì)這些幀和第一幀本身譯碼,打開的GOP的第一幀依賴于這些被譯碼的幀。接著,把第一幀再編碼而成為I幀。遺憾的是,這種方法由于要增加專用的硬件與/或需要基于處理器系統(tǒng)的實(shí)時(shí)地輸出而費(fèi)用太高。因此這種用于關(guān)閉GOP的替代方法只作為一種選擇,以便適應(yīng)要求絕對(duì)精確的應(yīng)用情況。
不過,已經(jīng)發(fā)現(xiàn)打開的GOP也可以通過刪除而不通過重構(gòu)前面的獨(dú)立幀(即B幀)來關(guān)閉,其中只對(duì)先前打開的GOP中剩余的幀稍加修改。雖然由刪除的視頻幀表示的圖像被丟失并且新數(shù)據(jù)流的長度受影響,但是發(fā)現(xiàn),從關(guān)閉GOP所需的最小時(shí)間來看,一般丟失66毫秒是可以接受的。(按照這個(gè)優(yōu)選的方法,除去新數(shù)據(jù)流的前面打開的GOP之外的所有的GOP都保持不變,如圖6和圖7所示)。
現(xiàn)在參看圖7,如果在步710新數(shù)據(jù)流的第一個(gè)GOP是打開的GOP(即GOP的第一幀不是I幀),則在步720,疊接器-N270首先刪除所有的前面的非I幀。接著,在步730,疊接器-N270校正GOP中每個(gè)剩余幀的暫時(shí)基準(zhǔn)。最后,在步740,疊接器-N270利用在步720中刪除的幀的最大的DTS代替GOP的第一個(gè)I幀的DTS。
圖8的流程圖進(jìn)一步說明暫時(shí)基準(zhǔn)如何按照本發(fā)明被優(yōu)選地代替。如圖所示,如果在步810在最后刪除的幀之后在GOP中留有較多的幀,則在步820,疊接器-N270首先查找在GOP中的下一個(gè)幀頭部(表示現(xiàn)在“當(dāng)前”幀)。接著,在步830,疊接器-N270查找當(dāng)前幀的相應(yīng)的暫時(shí)基準(zhǔn)。最后,在步840,疊接器-N270用暫時(shí)基準(zhǔn)減去刪除的幀數(shù)來代替暫時(shí)基準(zhǔn),然后返回步810。
在操作上,疊接器-N270(圖3)通過啟動(dòng)幀查找器330優(yōu)先查找下一個(gè)幀。幀查找器330最好是一個(gè)狀態(tài)機(jī)器,其分析在疊接緩沖器-N265中包含的新數(shù)據(jù)流數(shù)據(jù),用于產(chǎn)生下一個(gè)幀頭部。每個(gè)幀頭部由MPEG-2規(guī)范定義為數(shù)字序列“00000100Hex”。
例如,按照?qǐng)D7和圖8所示的優(yōu)選方法,隨后下面打開的GOP現(xiàn)在要被關(guān)閉。
暫時(shí)基準(zhǔn)2 0 1 5 3 4幀類型I B B P B B
DTS-1 0 1 2 3 4首先,兩個(gè)前面的B幀(即暫時(shí)基準(zhǔn)數(shù)0和1)被刪除,在GOP中剩下I幀和在I幀后面的兩個(gè)B幀。
暫時(shí)基準(zhǔn)2 5 3 4幀類型I P B BDTS-1 2 3 4接著,剩余幀的暫時(shí)基準(zhǔn)按照順序被代替,從第一個(gè)刪除的幀的暫時(shí)基準(zhǔn)開始。
暫時(shí)基準(zhǔn)0 3 1 2幀類型I P B BDTS-3 0 1 2最后,前面的I幀的DTS被刪除的幀的最高的DTS代替。
暫時(shí)基準(zhǔn)0 3 1 2幀類型I P B BDTS-1 0 1 2圖9a到圖10說明在查找疊接點(diǎn)之后,按照本發(fā)明的優(yōu)選疊接器如何優(yōu)先查找新數(shù)據(jù)流的新流實(shí)時(shí)傳輸開始時(shí)間(即圖4的步420)。簡單地回顧一下MPEG-2規(guī)范的有關(guān)部分應(yīng)當(dāng)有助于理解按照本發(fā)明的優(yōu)選實(shí)施例是如何提供無縫疊接的。
圖9a的曲線說明新的MPEG-2編碼的數(shù)據(jù)流如何在MPEG-2規(guī)范規(guī)定的環(huán)境下(例如在沒有疊接時(shí))由用戶接收機(jī)接收和譯碼。該曲線說明不斷增加的垂直部分即由譯碼器輸入緩沖器接收的數(shù)據(jù)的數(shù)量對(duì)時(shí)間的變化,所述數(shù)量由左到右沿著橫軸增加。在由斜線段910到910d表示的時(shí)間間隔內(nèi),由譯碼器輸入緩沖器接收數(shù)據(jù),同時(shí)在由垂直部分920到920d指示的時(shí)間發(fā)生譯碼。
如圖所示,在t1開始接收新數(shù)據(jù)流和在t4對(duì)第一幀譯碼(按照幀的DTS)之間發(fā)生延遲。雖然在時(shí)刻t2接收第一幀和在譯碼(按照幀的DTS)第一幀的時(shí)刻之間的延遲由第一幀內(nèi)(以及每個(gè)相繼的幀)的數(shù)據(jù)字段給出,但是應(yīng)當(dāng)注意,在接收數(shù)據(jù)流和譯碼第一幀之間的實(shí)際時(shí)間也分別包括在時(shí)刻t1-t2和t3-t4的初始序列頭部的接收和譯碼。
為了顯示沒有產(chǎn)生通常被稱為圖像翻滾的視頻人為問題的運(yùn)動(dòng)的視頻圖像,圖9B進(jìn)一步說明在顯示第一幀的開始時(shí)刻和顯示下一幀的開始時(shí)刻之間必須有一個(gè)恒定的延遲,其等于一個(gè)視頻幀的掃描時(shí)間。例如,利用NTSC編碼時(shí),幀間延遲大約是33毫秒。因此看出可以通過提供可靠的定時(shí)基準(zhǔn)實(shí)現(xiàn)無縫疊接,其中考慮傳輸和譯碼之間的延遲(因而也是接收和譯碼之間的延遲),并且確保新流的顯示和幀間顯示延遲相等。
圖10的流程圖說明一個(gè)優(yōu)選疊接器如何優(yōu)選地確定新數(shù)據(jù)流實(shí)時(shí)傳輸開始時(shí)間(圖4的步420)。概括地說,步1010和1020產(chǎn)生只與新數(shù)據(jù)流有關(guān)的值,而步1030到1050則使用這些值建立相應(yīng)于舊數(shù)據(jù)流的新數(shù)據(jù)流傳輸時(shí)間。更具體地說,在步1010,疊接器-N270檢索新數(shù)據(jù)流的第一包的PCR(“PCR(新)”)。在步1020,疊接器-N270計(jì)算在新數(shù)據(jù)流的第一序列頭部的傳輸時(shí)間和新數(shù)據(jù)流的第一幀(先前存儲(chǔ)的)譯碼時(shí)間標(biāo)記(“DTS(新)”)之間的時(shí)間差(“Δ(新)”),由下式給出Δ(新)=DTS(新)-PCR(新)在步1030,疊接器-N270分析包含在疊接緩沖器-N265中的舊數(shù)據(jù)流數(shù)據(jù),以便得到舊數(shù)據(jù)流的最后幀的譯碼時(shí)間標(biāo)記(“DTS(舊)”)。在步1040,疊接器-N270計(jì)算新數(shù)據(jù)流的連續(xù)顯示譯碼時(shí)間標(biāo)記(“DTS(連續(xù))”),其等于在步1030求得的DTS(舊)和幀間延遲(下面也稱為“間隙”)的和。
DTS(連續(xù))=DTS(舊)+幀間延遲對(duì)于NTSC,該式等于DTS(連續(xù))=DTS(舊)+1001/30000秒最后,在步1050,疊接器-N270計(jì)算實(shí)時(shí)新流PCR(“PCR(新-RT)”),其等于在步1040確定的連續(xù)顯示DTS和傳輸延遲或在步1020求得的差值之間的差
PCR(新-RT)=DTS(連續(xù))-Δ(新)圖11的曲線以譯碼器輸入緩沖器內(nèi)容為例說明由用于確定如圖10所示的新數(shù)據(jù)流實(shí)時(shí)傳輸開始時(shí)間的優(yōu)選方法得到的結(jié)果。為簡明起見,舊數(shù)據(jù)流1101和可能的新數(shù)據(jù)流的變化1102a-1102c分別在曲線的上部和下部單獨(dú)示出了。如圖所示,上部和下部的每個(gè)曲線在水平軸上表示經(jīng)過的時(shí)間,從左到右而增加,在豎軸上表示不斷增加的輸入緩沖器內(nèi)容(如同圖8a的未修正的一個(gè)MPEG-2編碼的數(shù)據(jù)流曲線一樣)。此外,由垂直部分1110和1120a-c分別給出了舊數(shù)據(jù)流1101和可能的新數(shù)據(jù)流變化1102a-c的按照DTS的譯碼情況,同時(shí),例如由曲線部分1112和1113給出了舊數(shù)據(jù)流1101的在譯碼之間接收的數(shù)據(jù)流數(shù)據(jù)。不過應(yīng)當(dāng)注意,按照優(yōu)選的疊接器,所示的新數(shù)據(jù)流的部分和舊數(shù)據(jù)流的部分尚未被發(fā)送或尚未被譯碼器輸入緩沖器傳輸或接收。曲線中的數(shù)據(jù)僅僅是用于說明而已。
如圖所示,確定相對(duì)于舊流的最后的DTS值的實(shí)時(shí)新流PCR(加上一個(gè)幀間延遲或間隙)以及新流的第一DTS,用來首先使該數(shù)據(jù)流對(duì)對(duì)齊。換句話說,實(shí)時(shí)新流PCR使新流的第一幀在譯碼舊流1103的最后一幀之后大約33毫秒(1001/30毫秒)被譯碼(對(duì)于NTSC)。類似地,新流的第一個(gè)PTS也按照實(shí)時(shí)新流PCR來確定。因而,對(duì)于NTSC編碼,新的數(shù)據(jù)流的出現(xiàn)和顯示將在舊數(shù)據(jù)流的最后一幀被顯示之后大約33毫秒開始。因此,新數(shù)據(jù)流將無縫地被譯碼和發(fā)送,從而不產(chǎn)生圖像翻滾之類的視覺問題。
疊接器-N270通過發(fā)出序列查找器320(圖3)查找新數(shù)據(jù)流的第一序列頭部來確定幀間間隙1103。然后疊接發(fā)生器310查找按照MPEG-2規(guī)范包含在序列頭部內(nèi)的幀速率值,并按下式計(jì)算間隙11031/(由幀速率代碼給出的幀速率)按照MPEG-2規(guī)范的幀速率代碼由下面的幀速率代碼對(duì)幀速率值轉(zhuǎn)換表給出<
正確的譯碼和顯示以及正確的數(shù)據(jù)流。換句話說,在其它的特點(diǎn)當(dāng)中,遵守MPEG-2編碼應(yīng)當(dāng)保證數(shù)據(jù)流數(shù)據(jù)不會(huì)使譯碼器緩沖器溢出或欠流(假定數(shù)據(jù)流已被正確地編碼)。因此,通過避免修改在編碼期間建立的數(shù)據(jù)部分的關(guān)系,優(yōu)選的疊接器在疊接完成之后可避免校正由于這種修改而發(fā)生的錯(cuò)誤。因而,至少對(duì)于優(yōu)選的疊接器,新的數(shù)據(jù)流將繼續(xù)被譯碼,并按照其編碼在疊接之后被顯示。
不過,遺憾的是,圖11還說明在完成舊數(shù)據(jù)流的譯碼之前,在譯碼器輸入緩沖器中新數(shù)據(jù)流數(shù)據(jù)的存在仍然是有問題的。首先,譯碼器輸入緩沖器可能在舊數(shù)據(jù)流數(shù)據(jù)的最后一個(gè)“緩沖器滿”被譯碼之前或之后開始接收新數(shù)據(jù)流數(shù)據(jù)。第二,新數(shù)據(jù)流數(shù)據(jù)可能如此之多,以致于引起譯碼器輸入緩沖器溢出。這種溢出可能發(fā)生在譯碼舊數(shù)據(jù)流的最后幀之前的不同的時(shí)間點(diǎn),從而使事情更槽。
如圖所示,舊數(shù)據(jù)流1101直到時(shí)刻t2才被譯碼器輸入緩沖器接收。然后,從時(shí)刻t2到時(shí)刻t4,在譯碼器輸入緩沖器中的所有剩余的舊數(shù)據(jù)流數(shù)據(jù)(即“舊數(shù)據(jù)流的最后緩沖器”)被譯碼,直到所有舊數(shù)據(jù)流數(shù)據(jù)(由譯碼器接收的)都被譯碼完畢。第一個(gè)問題(即新數(shù)據(jù)流的開頭和舊數(shù)據(jù)流的最后緩沖器的開頭不對(duì)齊)對(duì)于可能的新數(shù)據(jù)流1102a是不存在的。不過,可能發(fā)生新數(shù)據(jù)流過早地開始被接收,如發(fā)生在時(shí)刻t2之前的可能的新數(shù)據(jù)流(即“早的數(shù)據(jù)流”)。遺憾的是,早的數(shù)據(jù)流的存在不僅可以導(dǎo)致溢出(和正被接收的舊數(shù)據(jù)流數(shù)據(jù)一起),而且在同一頻道上并行地接收與傳輸多個(gè)數(shù)據(jù)流也不符合MPEG-2規(guī)范??赡艿男聰?shù)據(jù)流1102c(即“最后的數(shù)據(jù)流”)也有這樣的問題,即由于在時(shí)刻t2之后的某個(gè)時(shí)刻發(fā)生并與舊數(shù)據(jù)流1101一起被譯碼,所以可能發(fā)生欠流。
圖12是流程圖,說明按照本發(fā)明的優(yōu)選疊接器如何優(yōu)選地對(duì)齊新數(shù)據(jù)流數(shù)據(jù)的譯碼器輸入緩沖器的開頭和舊數(shù)據(jù)流的最后緩沖器的開頭。概括地說,如果新數(shù)據(jù)流是早的數(shù)據(jù)流(例如圖11的1102b),則疊接器-N270延遲新數(shù)據(jù)流數(shù)據(jù)的傳輸(并且同樣延遲譯碼器的接收),如果新數(shù)據(jù)流是晚的數(shù)據(jù)流(例如圖11的1102c),則疊接器-N270加快新數(shù)據(jù)流的傳輸(同樣加快譯碼器的接收)。更具體地說,疊接器-N270通過在新數(shù)據(jù)流開始傳輸之前加上空包來延遲新數(shù)據(jù)流,或者通過刪除已被譯碼成為數(shù)據(jù)流的空包來延遲新數(shù)據(jù)流。疊接器-N270還優(yōu)選地存儲(chǔ)被加上/刪除的全部數(shù)量的空包,供在疊接期間使用,如下文所述。
如圖所示,在步1210,疊接器-N270初始化求和變量(“空計(jì)數(shù)”),并且在步1215,疊接器-N270查找數(shù)據(jù)流傳輸?shù)慕Y(jié)尾。如果在步1220實(shí)時(shí)新數(shù)據(jù)流PCR小于舊數(shù)據(jù)流的最后包被傳輸?shù)臅r(shí)間(“PCT舊”),則疊接器-N270確定在新數(shù)據(jù)流開始之前是否有足夠的空包數(shù),使得實(shí)時(shí)新數(shù)據(jù)流PCR等于PCR舊,并然后在步1240相應(yīng)地更新空計(jì)數(shù)。如果在步1250新數(shù)據(jù)流較晚,則疊接器-N270在步1260刪除在新數(shù)據(jù)流開頭附近的足夠數(shù)量的空包,使得實(shí)時(shí)的新數(shù)據(jù)流PCR等于PCR舊,并且在步1270相應(yīng)地更新空計(jì)數(shù)。
不過,因?yàn)榀B接器-N270是一個(gè)庫函數(shù),所以疊接器-N270不知道疊接緩沖器-N265的總的大小。因此,雖然疊接器-N270可以安全地從存儲(chǔ)在疊接緩沖器-N265中的數(shù)據(jù)流數(shù)據(jù)中除去空包(從而需要較少的疊接緩沖器容量)時(shí),但加上附加的空包的數(shù)據(jù)流數(shù)據(jù)可能超過疊接緩沖器-N265的容量。因此,疊接器-N270通過向主程序返回空計(jì)數(shù)的值,在疊接緩沖器-N265中存儲(chǔ)的數(shù)據(jù)被傳輸之前,利用加上那么多的空包的指令加上空包。由此處的討論,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,按照本發(fā)明的并作為一個(gè)完整的應(yīng)用程序的疊接器能夠規(guī)定靜態(tài)的或動(dòng)態(tài)的疊接緩沖器容量,使得疊接器能夠?qū)ΟB接緩沖器直接地加上空包。
雖然從新的數(shù)據(jù)流減去或加上空包對(duì)于保持新數(shù)據(jù)流的編碼特性的影響是相反的,但這種修正需要相當(dāng)少量的處理系統(tǒng)輸出,這尤其是因?yàn)楸仨毜腜CR值是已知的,并且必須的PCR舊可以從先前的疊接入點(diǎn)或傳輸起點(diǎn)通過計(jì)數(shù)包來求得。此外,雖然特別是從新的數(shù)據(jù)流中刪除空包將使得數(shù)據(jù)能夠被輸入緩沖器更快地接收并可能引起溢出,但是可在疊接完成之前在對(duì)齊期間對(duì)數(shù)據(jù)流修正進(jìn)行補(bǔ)償,如同下面將要進(jìn)一步討論的。
圖13a和13b說明按照本發(fā)明的優(yōu)選疊接器如何從新數(shù)據(jù)流中優(yōu)選地刪除空包。如圖所示,疊接緩沖器-N265(圖2)隨著作為按順序排序的分量數(shù)據(jù)包的數(shù)據(jù)流數(shù)據(jù)而增長。這種方案使得疊接器-N270在包的級(jí)上訪問、分析與/或管理數(shù)據(jù)流數(shù)據(jù),而不用進(jìn)一步管理或重構(gòu)(即和其它的組織方法相反,例如順序、GOP、幀或其它的粒度(granularity)等級(jí))。
疊接器-N270通過把每個(gè)剩余的數(shù)據(jù)包復(fù)制到疊接緩沖器-N265中的下一個(gè)新流位置來刪除數(shù)據(jù)包。例如,圖13A表示在疊接緩沖器-N265的位置2包含的空包。疊接器-N270通過把新數(shù)據(jù)流中的每個(gè)剩余的空包復(fù)制到以前的(即在時(shí)間上,或者相當(dāng)于較小的號(hào)數(shù))位置來刪除在位置2包含的空包,借以重寫在位置2包含的空包并形成修正的疊接緩沖器-N265,如圖13B所示。(因?yàn)樵跀?shù)據(jù)流中的每個(gè)序列一般至少包括10%或更多的空包,所以沒有發(fā)現(xiàn)可以刪除的空包的存在并且也不可能成為問題)。
由此處披露的內(nèi)容看來,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以利用許多不同類型的數(shù)據(jù)結(jié)構(gòu)代替疊接緩沖器-N265。其中的例子包括但不限于多維表和鏈接表。上述的用于插入和刪除的復(fù)制方法也容易被各種常規(guī)的表處理方法代替,其中的例子包括鏈接表和使用空的單元。優(yōu)選的方法盡管根據(jù)處理輸出看來花費(fèi)較多,但仍然是優(yōu)選的,這是由于其具有最小的復(fù)雜性,并且花費(fèi)也只是在暫時(shí)(即在疊接期間)從譯碼器直接接收數(shù)據(jù),然后把數(shù)據(jù)傳送給多路緩沖器,以及在進(jìn)行實(shí)時(shí)疊接時(shí)。不過,尤其是從不斷發(fā)展的硬件和軟件看來,可以預(yù)料,可以利用其它的表和表管理方法。
圖14到圖15c的流程圖,同時(shí)參考圖11,16,和17,說明按照本發(fā)明的優(yōu)選疊接器如何優(yōu)選地檢測(cè)并校正會(huì)由疊接引起(圖4的步450)的譯碼器輸入緩沖器溢出狀態(tài)。
首先參看圖11,舊數(shù)據(jù)流1801的最后譯碼器緩沖器在時(shí)刻t2之前將被傳輸給譯碼器。在舊數(shù)據(jù)流繼續(xù)譯碼或“播出”(從時(shí)刻t2到時(shí)刻t4)時(shí),新數(shù)據(jù)流1102a的第一譯碼器緩沖器(在對(duì)齊之后)將繼續(xù)被譯碼器輸入緩沖器接收。因此,從時(shí)刻t2到t4,主要在譯碼器輸入緩沖器中顯示連續(xù)地改變兩個(gè)數(shù)據(jù)流的數(shù)量,使舊數(shù)據(jù)流的數(shù)量減少,新數(shù)據(jù)流的數(shù)量增加。
新數(shù)據(jù)流的第一譯碼器緩沖器將繼續(xù)被譯碼器接收,直到在t5新的數(shù)據(jù)流譯碼開始(即新數(shù)據(jù)流疊接入點(diǎn))。所述的這些情況當(dāng)然是發(fā)生在沒有溢出校正時(shí)。
圖16的曲線也說明在譯碼器輸入緩沖器中的舊數(shù)據(jù)流數(shù)據(jù)和新數(shù)據(jù)流數(shù)據(jù)的一個(gè)示例的部分。不過,和圖11相比,只示出了舊數(shù)據(jù)流的最后譯碼器緩沖器的一部分。此外,示出了較多的信息性的數(shù)據(jù)流的例子,并且舊數(shù)據(jù)流數(shù)據(jù)和新數(shù)據(jù)流數(shù)據(jù)以組合的方式示出。圖16表示在譯碼器輸入緩沖器中的組合的數(shù)據(jù)流的存在如何使譯碼器輸入緩沖器的容量被超過,引起“譯碼器溢出狀態(tài)”(即視頻譯碼器輸入緩沖器的)A,B和C。遺憾的是,除非被校正,每個(gè)溢出狀態(tài)將引起數(shù)據(jù)流數(shù)據(jù)的丟失。
圖14的流程圖概括地說明按照本發(fā)明的用于消除溢出狀態(tài)的優(yōu)選的方法。如圖所示,如果在步1410疊接器-N270(圖3)發(fā)現(xiàn)由疊接引起的溢出狀態(tài),則在步1420疊接器-N270對(duì)引起溢出狀態(tài)的數(shù)據(jù)流部分延遲一個(gè)延遲量。然后疊接器-N270在步1430使落后的數(shù)據(jù)流部分加快一個(gè)相應(yīng)于延遲量的量。如在下面將要進(jìn)一步說明的,疊接器-N270最好通過在溢出校正期間在發(fā)生溢出狀態(tài)的(或簡稱為“溢出”)疊接緩沖器開頭插入空包來延遲一個(gè)數(shù)據(jù)流部分。疊接器-N270還最好在溢出校正期間通過在相應(yīng)的疊接緩沖器滿的開頭或開頭附近刪除空包來加快一個(gè)數(shù)據(jù)流部分。(如前所述,由于編碼的結(jié)果,數(shù)據(jù)緩沖器一般含有10%或更多的空包,因而尚未觀察到在進(jìn)行溢出校正期間沒有足夠的空包供刪除。)此外,疊接器-N270最好對(duì)數(shù)據(jù)流的那些被實(shí)際檢測(cè)到溢出的部分以空包插入與/或刪除的形式確定數(shù)據(jù)流的修正。更具體地說,只有在需要時(shí)才修正新數(shù)據(jù)流,并且在新數(shù)據(jù)流內(nèi),只有那些被檢測(cè)到溢出的疊接緩沖器與/或在前面與/或在后面的這種疊接緩沖器才被修正。根據(jù)此處的教導(dǎo),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在數(shù)據(jù)流中疊接緩沖器開頭之外的位置,空包插入可以用另外的方法實(shí)現(xiàn)。其中的例子包括但不限于就在檢測(cè)到溢出的數(shù)據(jù)包前面插入。不過,雖然這種方案可以更精確地校正溢出狀態(tài),但據(jù)觀察,優(yōu)選的方法能夠?qū)崿F(xiàn)同樣效果的溢出校正,并且通過作為庫實(shí)現(xiàn)的疊接器使得更容易實(shí)時(shí)地進(jìn)行校正。還有一些關(guān)于刪除空包的類似的方案。設(shè)想到的這些方案例如有,疊接器不作為庫來實(shí)現(xiàn),因此通過稍微增加費(fèi)用或者不用增加費(fèi)用便能具有更直接的控制能力。
現(xiàn)在參看圖16,優(yōu)選的疊接器-N270通過沿著組合數(shù)據(jù)流曲線1610的優(yōu)選確定點(diǎn)更特定地檢測(cè)溢出狀態(tài)。如圖所示,沿著所述曲線的確定點(diǎn)在時(shí)刻t2,t5和t7表明溢出狀態(tài)的開始。雖然似乎下一步可能包括計(jì)算超過譯碼器輸入緩沖器容量的數(shù)據(jù)的數(shù)量(并且這一步已經(jīng)被利用過),但是發(fā)現(xiàn)按照數(shù)據(jù)流數(shù)據(jù)的緩沖器超過數(shù)量進(jìn)行校正可能導(dǎo)致不精確的結(jié)果。據(jù)信這種可能的不精確大部分是由于在一個(gè)公共的數(shù)據(jù)流內(nèi)存在視頻、音頻和其它信息而造成的。不過,通過測(cè)量溢出狀態(tài)的長度,更具體地說,通過計(jì)算在溢出狀態(tài)期間應(yīng)當(dāng)由譯碼器輸入緩沖器接收的數(shù)據(jù)包的數(shù)量,已經(jīng)表明可以獲得精確的結(jié)果。由于混合類型數(shù)據(jù)的同樣的原因,數(shù)據(jù)流數(shù)據(jù)也最好按照視頻數(shù)據(jù)字節(jié)進(jìn)行分析,然后逐幀地進(jìn)行計(jì)算。
如上所述,疊接器-N270(圖3)最好這樣進(jìn)行操作部分地分析舊數(shù)據(jù)流數(shù)據(jù),然后在傳輸之前大約1秒鐘根據(jù)逐個(gè)緩沖器滿(或等效地,根據(jù)逐個(gè)疊接緩沖器)分析在疊接緩沖器-N265中按順序提供的新數(shù)據(jù)流數(shù)據(jù)。因此,當(dāng)疊接緩沖器-N265包含相應(yīng)的數(shù)據(jù)流部分時(shí)(例如舊數(shù)據(jù)流的結(jié)尾或新數(shù)據(jù)流的開始),疊接器-N270最好完成上述的每個(gè)功能(例如查找疊接入點(diǎn)和疊接出點(diǎn))。結(jié)合疊接入點(diǎn)、疊接出點(diǎn)、PCR和對(duì)齊確定,疊接器-N270產(chǎn)生疊接表370,然后利用用于檢測(cè)和校正溢出的數(shù)據(jù)使疊接表370增加(見圖4的步450)。
已經(jīng)觀察到,不僅在相繼的疊接緩沖器時(shí)期可能存在一個(gè)以上的溢出狀態(tài),而且在一個(gè)緩沖器時(shí)期也存在。因此疊接器-N270全部檢索每個(gè)疊接緩沖器,以揭示可能存在于疊接緩沖器內(nèi)的所有溢出狀態(tài)。
還已經(jīng)觀察到,在同一個(gè)疊接緩沖器內(nèi)發(fā)生溢出不應(yīng)當(dāng)孤立地進(jìn)行校正。例如,雖然希望通過相應(yīng)地插入空包應(yīng)當(dāng)避免每個(gè)溢出,但是觀察到,這種多次插入在一些情況下會(huì)引起譯碼器緩沖器欠流。因此疊接器-N270最好在進(jìn)行校正之前完成全部疊接緩沖器內(nèi)的溢出測(cè)試/檢測(cè)。更具體地說,疊接器-N270確定疊接緩沖器內(nèi)的持續(xù)時(shí)間最長的溢出狀態(tài),然后在該疊接緩沖器之前插入相應(yīng)數(shù)量的空包。
還應(yīng)當(dāng)注意,優(yōu)選的基于庫的疊接器-N270最好以上述的方式在溢出校正期間增加和刪除空包。更具體地說,通過使一個(gè)加指令和一些要增加的空包一道返回主程序來增加數(shù)據(jù)包。與此相反,疊接器-N270直接從疊接緩沖器-N265中刪除空包。
參考圖17示例的幀表,圖15a-c的流程圖更詳細(xì)說明用于檢測(cè)并消除溢出狀態(tài)的優(yōu)選的方法。圖15A說明用于利用舊數(shù)據(jù)流增加幀表265(圖3)的方法,而圖15b和15c說明用于利用新數(shù)據(jù)流數(shù)據(jù)增加幀表265以及用于檢測(cè)和消除溢出狀態(tài)的方法。
如圖15A所示,疊接器-N270最好通過利用被包含在疊接緩沖器-N265中的舊數(shù)據(jù)流視頻幀的DTS和大小增加疊接表-N370來開始溢出處理。雖然疊接器-N270基本上在啟動(dòng)時(shí)立即開始,但是疊接器-N270只需要足夠早地開始,以便保證疊接表370包含舊數(shù)據(jù)流的最后譯碼器緩沖器的全部數(shù)據(jù)。疊接器-N270以上述方式分析疊接緩沖器-N265的序列、GOP、包數(shù)據(jù)和幀數(shù)據(jù)。疊接器-N270還通過計(jì)數(shù)疊接緩沖器-N265包含的每個(gè)包內(nèi)的視頻幀數(shù)據(jù)字節(jié)來確定幀的尺寸。
更具體地說,如果在步1501,疊接緩沖器-N265包含舊數(shù)據(jù)流的新的疊接緩沖器,則在步1503,疊接器-N270分析疊接緩沖器-N265的第一幀(即“當(dāng)前幀”)。接著,在步1505,疊接器-N270檢索當(dāng)前幀的DTS,并在步1507在幀表370的下一個(gè)位置存儲(chǔ)檢索的DTS。如果在步1509在疊接緩沖器-N265中剩余較多的數(shù)據(jù),則疊接器-N270在步1510得到疊接緩沖器-N265的下一個(gè)數(shù)據(jù)包,并在步1511確定當(dāng)前包是否是新的幀。如果在步1511確定當(dāng)前幀是新的幀,則疊接器-N270在疊接表370中存儲(chǔ)先前視頻幀的尺寸,并返回步1505;否則,疊接器-N270便在步1513把當(dāng)前幀中的視頻數(shù)據(jù)字節(jié)數(shù)加在當(dāng)前幀的總數(shù)上,然后返回步1509。
如果在步1509在疊接緩沖器-N265中沒有剩余另外的數(shù)據(jù),則疊接器-N270進(jìn)行步1514的處理。如果在步1514疊接緩沖器-N265不包含舊數(shù)據(jù)流數(shù)據(jù)的最后疊接緩沖器,則疊接器-N270進(jìn)行步1501。如果在步1514疊接緩沖器-N265包含舊數(shù)據(jù)流數(shù)據(jù)的最后疊接緩沖器,則在步1515疊接器-N270初始化指針“第一”,使其指向(在幀表370中)舊數(shù)據(jù)流的最后譯碼器緩沖器的第一幀的位置。
在圖15B中進(jìn)行新數(shù)據(jù)流的處理,疊接器-N270首先通過對(duì)在譯碼器輸入緩沖器中已經(jīng)包含的舊數(shù)據(jù)流數(shù)據(jù)加上新數(shù)據(jù)流數(shù)據(jù)確定可以不被超出(即溢出)的緩沖器。更具體地說,在步1521疊接器-N270把變量“尺寸”的值設(shè)置為新數(shù)據(jù)流的第一序列頭部內(nèi)vbv緩沖器_尺寸字段的值。當(dāng)vbv緩沖器尺寸值不需反映每個(gè)接收譯碼器輸入緩沖器的總的可利用的尺寸時(shí)(其可以改變),它便代表在新數(shù)據(jù)流編碼期間預(yù)計(jì)的最大緩沖器尺寸。因此,疊接器-N270通過假設(shè)這樣一個(gè)尺寸,保證在不進(jìn)行疊接就不會(huì)發(fā)生溢出(即只有一個(gè)編碼的數(shù)據(jù)流占據(jù)譯碼器輸入緩沖器)的情況下不會(huì)發(fā)生溢出。在步1523,疊接器-N270初始化變量“加空”,用于決定是否添加空包,如果是,則確定要增加多少個(gè)空包。
圖17通過例子說明如何使用緩沖器表370檢測(cè)溢出。如圖所示,此時(shí)疊接器-N270已經(jīng)被找到(在相繼的疊接緩沖器中)并相應(yīng)地用舊數(shù)據(jù)流的每個(gè)DTS和幀尺寸填充幀表370。疊接器-N270也已經(jīng)把起始指針設(shè)置成指向舊數(shù)據(jù)流的最后譯碼器緩沖器的第一幀。不過,關(guān)于新數(shù)據(jù)流(在所示表的下部),疊接器-N270將以確定第一幀的DTS開始,然后開始確定第一幀的幀尺寸。直到疊接器-N270完成這尺寸的確定,該尺寸一直是簡單地“前進(jìn)”的。在完成確定該尺寸時(shí)(通過檢測(cè)下一個(gè)幀),當(dāng)前幀的尺寸將成為固定的。
在進(jìn)行幀計(jì)算的同時(shí),疊接器-N270將測(cè)試和校正溢出。因?yàn)檎_編碼的數(shù)據(jù)流不會(huì)單獨(dú)引起溢出,所以舊數(shù)據(jù)流的尺寸值可被加到一起而不用測(cè)試溢出。不過,由于尚未知道的一些新數(shù)據(jù)流數(shù)據(jù)包,使得溢出也會(huì)發(fā)生。因此疊接器-N270最好在分析每個(gè)包之后在完成前進(jìn)的尺寸確定時(shí)測(cè)試溢出(即超過vbv緩沖器尺寸)。新數(shù)據(jù)流的幀尺寸一旦被固定,便可以和舊數(shù)據(jù)流幀尺寸一起直接相加。不過,應(yīng)當(dāng)注意,雖然溢出確定和校正最好根據(jù)逐個(gè)疊接緩沖器進(jìn)行,但MPEG-2編碼的幀可以跨過幀緩沖器的邊界甚至跨過包的邊界開始和結(jié)束。
括號(hào)1710和1712和不斷增加的起始指針一道說明如何從舊數(shù)據(jù)流的每個(gè)相繼幀開始優(yōu)選地進(jìn)行測(cè)試溢出。為簡明起見,圖15a-15c的流程圖假定通過每個(gè)舊數(shù)據(jù)流譯碼消除溢出?;氐綀D16的曲線,代表至此發(fā)現(xiàn)的所有溢出狀態(tài)的溢出狀態(tài)A和B說明這種譯碼器消除溢出的情況。不過,應(yīng)當(dāng)注意,不能通過譯碼消除溢出的溢出狀態(tài)(例如C型溢出)也是可能存在的。因而,為了避免漏掉這種溢出,應(yīng)當(dāng)從當(dāng)前確定的尺寸中減去每個(gè)譯碼的幀的尺寸,并且再次進(jìn)行測(cè)試,以便確定是否還有溢出。如果有,則應(yīng)當(dāng)繼續(xù)確定在溢出過程期間的包數(shù)。不過,給定附加的時(shí)間和空間要求,可以優(yōu)先選擇地提供發(fā)生C型溢出的測(cè)試。
根據(jù)本發(fā)明的教導(dǎo),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,不脫離本發(fā)明的范圍和構(gòu)思,特定的疊接表結(jié)構(gòu)和特定的方法參數(shù)可被修改。
回到圖15B,在步1525,疊接器-N270從起點(diǎn)指針指示的位置開始加疊接表-N370中的所有的已知尺寸。在步1527,疊接器-N270把新數(shù)據(jù)流的第一幀的DTS輸入到疊接表-N370中,并把幀尺寸初始化為0。在步1529,疊接器-N270得到在疊接緩沖器-N265的當(dāng)前包中的視頻字節(jié)的總數(shù),再把該數(shù)加到當(dāng)前幀的幀尺寸中。
如果在步1531增加的新數(shù)據(jù)流數(shù)據(jù)字節(jié)引起溢出狀態(tài),則疊接器-N270轉(zhuǎn)到步1551(圖15C);否則,疊接器-N270繼續(xù)執(zhí)行步1533。
如果在步1533新數(shù)據(jù)流的當(dāng)前數(shù)據(jù)包的PCR值大于或等于開始幀(舊數(shù)據(jù)流的)的TDS,則將進(jìn)行舊數(shù)據(jù)流譯碼,并且可繼續(xù)關(guān)于下一個(gè)舊數(shù)據(jù)流幀的溢出檢測(cè),如步1535所示。而如果在步1533PCR值不大于或等于當(dāng)前起始幀的DTS,則疊接器-N270跳過步1535,并在步1537繼續(xù)。
如果在步1537已經(jīng)達(dá)到疊接緩沖器-N265的結(jié)尾,則疊接器-N270在步1557(圖15C)繼續(xù);否則,疊接器-N270通過對(duì)下一包中的視頻字節(jié)求和在步1539繼續(xù)視頻字節(jié)的計(jì)數(shù),或者如果達(dá)到新的幀,則輸入幀表370中的總的幀尺寸,重新初始化當(dāng)前幀尺寸,并進(jìn)行步1531的處理。
圖15C開始在步1551響應(yīng)檢測(cè)的溢出狀態(tài)的開始。如上所述,疊接器-N270優(yōu)選地確定在當(dāng)前緩沖器中持續(xù)存在溢出狀態(tài)的包數(shù),并加上等于這種在當(dāng)前疊接緩沖器中的最大的持續(xù)數(shù)量的空包數(shù)。在步1551,疊接器-N270得到當(dāng)前包的包數(shù)(從當(dāng)前包的頭部)。在步1553,疊接器-N270從下一包(或如前所述)得到視頻字節(jié)數(shù),如果下一包開始一個(gè)新幀,則疊接器-N270在緩沖器表370中輸入先前的幀尺寸,并重新初始化當(dāng)前的幀尺寸。
如果已經(jīng)達(dá)到溢出狀態(tài),并且在步1555尚未達(dá)到當(dāng)前疊接緩沖器的結(jié)尾,則疊接器-N270在步1565進(jìn)行處理。而如果已經(jīng)達(dá)到溢出狀態(tài),并且在步1555已經(jīng)達(dá)到當(dāng)前疊接緩沖器結(jié)尾,則疊接器-N270在步1557在當(dāng)前疊接緩沖器前面加上等于在當(dāng)前疊接緩沖器中最大的持續(xù)存在溢出的包數(shù)的空包數(shù),并進(jìn)行步1559的處理。
如果在步1559已達(dá)到結(jié)束狀態(tài),則疊接完成,否則,則疊接器-N270繼續(xù)執(zhí)行步1561。疊接器-N270最好在新的數(shù)據(jù)流繼續(xù)被編碼時(shí)(即在疊接期間進(jìn)行任何修正之前)確定是否發(fā)生結(jié)束狀態(tài)。因此,如果編碼的新數(shù)據(jù)流以一個(gè)閉合的GOP開始,則當(dāng)當(dāng)前疊接緩沖器的當(dāng)前包的PCR等于或大于編碼的舊數(shù)據(jù)流的最后的DTS時(shí)達(dá)到結(jié)束狀態(tài)。不過,如果疊接器-N270在新數(shù)據(jù)流開始(即在找到視頻疊接入點(diǎn)時(shí))已經(jīng)關(guān)閉一個(gè)打開的GOP,則當(dāng)疊接器-N270在新數(shù)據(jù)流中找到DTSn+1幀時(shí)達(dá)到結(jié)束狀態(tài),其中n是由疊接器-N丟失的幀數(shù)。例如,如果疊接器-N270通過丟失2幀來閉合一個(gè)GOP,則在疊接器-N270找到新數(shù)據(jù)流的第三幀的DTS時(shí)達(dá)到結(jié)束狀態(tài)。
在步1561(即發(fā)現(xiàn)溢出并且已經(jīng)達(dá)到當(dāng)前疊接緩沖器的結(jié)尾,但是不存在結(jié)束狀態(tài)),疊接器-N270從下一個(gè)疊接緩沖器的開始減去空包數(shù),并重新初始化空包計(jì)數(shù)。接著,在步1563,疊接器-N270通過得到疊接緩沖器的下一個(gè)(在這種情況下即第一個(gè))包的尺寸開始測(cè)試新的疊接緩沖器是否溢出,或者如果發(fā)現(xiàn)一個(gè)新幀,則向緩沖器表370輸入舊的幀尺寸,并把新的幀尺寸初始化為零字節(jié)。疊接器-N270然后繼續(xù)步1531(圖15B)。
雖然優(yōu)選的疊接器最好跟隨一種疊接緩沖器,對(duì)它已通過從隨后的疊接緩沖器中刪除相同的空包數(shù)而增加空包,但按照本發(fā)明的教導(dǎo),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以采用不同于直接刪除的恢復(fù)方案。如上所述,在疊接結(jié)束之前把剩余的新數(shù)據(jù)流恢復(fù)到其編碼形式,以便避免在不需要進(jìn)一步干預(yù)的疊接之后再發(fā)生溢出、欠流與/或其它異常狀態(tài)。因此,最好在增加空包之后刪除空包(即借以恢復(fù)編碼的數(shù)據(jù)流)。刪除還應(yīng)跟隨增加,使得足以接近閉合,從而例如避免因太多的延遲而引起欠流。不過,不同的例子包括但不限于在特定的增加和刪除之間只有一個(gè)緩沖器較少地接近閉合,并且假定相同的緩沖器不引起溢出和欠流。
現(xiàn)在返回到圖15C,在步1565,疊接器-N270得到疊接緩沖器的下一個(gè)包的尺寸,或者,如果找到新的幀,則在緩沖器表-N370中輸入舊的幀尺寸,并對(duì)新的幀尺寸初始化。然后,疊接器-N270繼續(xù)步1567。如果在步1567,已經(jīng)達(dá)到當(dāng)前疊接緩沖器結(jié)束,則疊接器-N270在步1557繼續(xù);否則,疊接器-N270在步1569繼續(xù)。如果在步1569當(dāng)前疊接緩沖器的當(dāng)前包的PCR值等于或大于起始幀的DTS值,則疊接器-N270在當(dāng)前疊接緩沖器前面加上一個(gè)空包數(shù),所述的空包數(shù)等于在步1571在當(dāng)前疊接緩沖器中持續(xù)發(fā)生溢出的最大的包數(shù),然后執(zhí)行步1563;否則,疊接器-N270跳過步1571而執(zhí)行步1563。
現(xiàn)在返回到圖18到圖20,疊接器-N270和視頻疊接相結(jié)合提供音頻疊接。更具體地說,疊接器-N270在找到視頻疊接出點(diǎn)(圖4的步410)之后查找舊數(shù)據(jù)流音頻疊接出點(diǎn),并類似地在找到視頻疊接入點(diǎn)(圖4步420)之后查找新數(shù)據(jù)音頻疊接入點(diǎn)。
圖18的流程圖說明用于在舊數(shù)據(jù)流中設(shè)置音頻疊接出點(diǎn)的優(yōu)選的方法。如圖所示,如果在步1810找到視頻疊接出點(diǎn),則在步1820疊接器-N270分析疊接緩沖器-N265以便得到最后的以前音頻包。接著,在步1830,疊接器-N270填充在音頻疊接點(diǎn)和空包后面的視頻疊接出點(diǎn)之間產(chǎn)生的間隙。
如圖19A的曲線所示,圖18的方法在點(diǎn)1901在結(jié)束疊接之前的視頻終結(jié)之前結(jié)束音頻疊接。雖然這種疊接出點(diǎn)在視頻圖像結(jié)束之前產(chǎn)生無聲間隔,但是認(rèn)為20-30毫秒的無聲間隔是可接受的。另一方面,如果確保不產(chǎn)生無聲間隔(通過使音頻PTS和視頻PTS匹配),則會(huì)引起在視頻結(jié)束之后,音頻1902還在繼續(xù)的問題。此外,過量的音頻數(shù)據(jù)更可能產(chǎn)生音頻緩沖器的溢出。
參考圖19B,圖20的流程圖說明在新數(shù)據(jù)流中設(shè)置音頻疊接入點(diǎn)的一種優(yōu)選的方法。如圖所示,如果在步2010已經(jīng)找到音頻疊接入點(diǎn),并且在步2020已經(jīng)選擇早出選擇,則在步2050,疊接器-N270查找在視頻疊接入點(diǎn)(圖19B的1905)之后的音頻頭部邊界。因?yàn)樵谝曨l開始之后存在無聲間隔期,所以在步2060,疊接器-N270用空包代替丟失音頻包(圖19B的1950)。而如果在步2020已經(jīng)選擇PTS匹配選擇,則在步2030,疊接器-N270查找大于視頻PTS的第一音頻PTS,并在步2040利用空包代替或“添湊”無聲間隔期,直到音頻開始(圖19B的1960)。早出點(diǎn)選擇的短的無聲間隔期也是可取的。
圖21和圖22說明本發(fā)明的另一個(gè)優(yōu)選的實(shí)施例。一般地說,本實(shí)施例提供一種以類似于前一個(gè)實(shí)施例的疊接器的方式進(jìn)行疊接的疊接器,不過本實(shí)施例的疊接器和一個(gè)優(yōu)選的利用多路傳輸器實(shí)現(xiàn)的“位時(shí)鐘”結(jié)合來操作。通過使用這種位時(shí)鐘和其它相關(guān)的優(yōu)點(diǎn),一種優(yōu)選的疊接器能夠使進(jìn)行疊接處理的要求大大降低。
一般地說,頻道多路傳輸器以重復(fù)的方式進(jìn)行操作,按照順序接收數(shù)據(jù)流數(shù)據(jù),對(duì)數(shù)據(jù)流進(jìn)行多路傳輸,并把多路傳輸?shù)臄?shù)據(jù)提供給發(fā)送機(jī)。在這種系統(tǒng)中,數(shù)據(jù)流的處理必須在由多路傳輸器接收之前被完成。不過,發(fā)現(xiàn)在疊接器和多路傳輸器之間可以建立公共的時(shí)基,使得多路傳輸器有助于疊接操作。
圖21說明位時(shí)鐘通常如何和疊接器的操作相結(jié)合而操作。如圖所示,在步2105,用戶設(shè)置多路傳輸器的位速率。在步2110,主應(yīng)用程序向多路傳輸器190(圖2)發(fā)出每個(gè)有效疊接緩沖器的傳輸位速率。在步2115,主應(yīng)用程序按照頻道位速率對(duì)多路傳輸器的位速率的比率設(shè)置緩沖器傳輸定時(shí)。在步2120,多路傳輸器190按照定時(shí)發(fā)出疊接緩沖器-N265未準(zhǔn)備發(fā)送的空包。在步2125,疊接器-N270的刪除n個(gè)空包的指令通過主應(yīng)用程序和疊接緩沖器-N265的內(nèi)容一道被多路傳輸器190接收。(對(duì)于一個(gè)刪除空包的指令,n是負(fù)的,對(duì)于增加空包的指令,n是正的。)在步2130,多路傳輸器190把疊接緩沖器-N265的內(nèi)容提供給發(fā)送機(jī),其在由下式表示的時(shí)刻立即發(fā)送給疊接緩沖器
應(yīng)當(dāng)注意,疊接器-N270不僅使用比前一實(shí)施例(圖13a和13b)用于刪除空包的多復(fù)制方法小得多的處理功率來加速疊接緩沖器,此外疊接器-N270還可以以和前一實(shí)施例相同的方式工作。還可以看到,因?yàn)榀B接器-N270以相同的方式實(shí)現(xiàn)延遲(即添加空包)和加速(即刪除空包),所以可以實(shí)現(xiàn)進(jìn)一步的優(yōu)化。
圖22的流程圖說明本發(fā)明的疊接器如何優(yōu)先優(yōu)化圖14到15c所示的溢出檢測(cè)和校正方法。概括地說,和圖15a-15c的單獨(dú)恢復(fù)新數(shù)據(jù)流然后校正同一疊接緩沖器的溢出的方法相比,本疊接器對(duì)每個(gè)疊接緩沖器只提供一個(gè)指令。此外,本疊接器和位時(shí)鐘結(jié)合優(yōu)選地操作,以便改變疊接緩沖器的傳輸而不象先前的方法那樣刪除和附加空包。
如圖所示,在步2205,疊接器-N270通過分析新數(shù)據(jù)流的第一疊接緩沖器來檢測(cè)一個(gè)或幾個(gè)溢出狀態(tài),然后,在步2210,疊接器-N270設(shè)置附加空包等于在溢出期間最大的包(如前一實(shí)施例一樣),并且再設(shè)置刪除空包等于附加空包。刪除空包被用于下一個(gè)疊接緩沖器恢復(fù)新數(shù)據(jù)流。接著,在步2215,疊接器-N270通過主應(yīng)用程序向多路傳輸器190發(fā)出“加空包”指令。如果在步2205沒有檢測(cè)到溢出狀態(tài),則疊接器-N270在步2207設(shè)置加空包和刪除空包為0。
如果疊接器-N270在步2220在分析下一個(gè)疊接緩沖器時(shí)檢測(cè)到溢出狀態(tài),則疊接器-N270在步2225存儲(chǔ)在最大的持續(xù)溢出期間疊接緩沖器的包數(shù),在步2230向主應(yīng)用程序發(fā)出在溢出校正和流決定的空包值之間的差(即分別加上并刪除空包),并在步2235設(shè)置刪除等于添加并然后添加等于0。如上所述,因而疊接器-N270對(duì)疊接幀優(yōu)選地只提供一個(gè)組合指令。如果在步2260,疊接器-N270沒有達(dá)到結(jié)束狀態(tài)(如前所述),則疊接器-N270轉(zhuǎn)到步2220。
如果疊接器-N270在步2220在分析下一個(gè)疊接緩沖器時(shí)沒有檢測(cè)到溢出狀態(tài),則疊接器-N270執(zhí)行步2140。如果在步2140刪除空包等于0,則疊接器-N270轉(zhuǎn)到步2260。而如果在步2140刪除空包等于0,則在步2245疊接器向主應(yīng)用程序發(fā)出相應(yīng)的刪除空包指令,并在步2250設(shè)置刪除空包等于0。
按照上述,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,此處所述的兩個(gè)實(shí)施例也可以應(yīng)用于舊數(shù)據(jù)流和新數(shù)據(jù)流用其他方法進(jìn)行相同編碼或不同編碼的情況。例如,優(yōu)選的疊接器還可以進(jìn)一步選擇地利用與/或設(shè)置一個(gè)公共時(shí)間基準(zhǔn),例如公共PCR。每種疊接器也可以被設(shè)計(jì)成用于直接和輸出裝置例如多路傳輸器190(圖2)通信。此外,所討論的從空包向位時(shí)鐘定時(shí)變化的轉(zhuǎn)換可以利用疊接器與/或主應(yīng)用程序來實(shí)現(xiàn)。
雖然本發(fā)明已經(jīng)參照特定實(shí)施例進(jìn)行了說明,但是應(yīng)當(dāng)理解,在不脫離所述本發(fā)明的范圍和構(gòu)思的情況下可以對(duì)上述的公開作出多種改變、改型和替代,并且在一些情況下可以使用本發(fā)明的一些特征而不使用其它特征。
權(quán)利要求
1.一種用于消除溢出狀態(tài)的方法,包括以下步驟檢測(cè)引起溢出狀態(tài)的第一數(shù)字編碼的數(shù)據(jù)流部分;延遲所述第一數(shù)據(jù)流部分一個(gè)用于阻止所述異常狀態(tài)的延遲時(shí)間;以及加速比所述第一數(shù)據(jù)流部分落后的第二數(shù)據(jù)流部分,以便基本上補(bǔ)償所述延遲時(shí)間。
2.一種用于消除溢出狀態(tài)的裝置,包括用于檢測(cè)引起溢出狀態(tài)的第一數(shù)字編碼的數(shù)據(jù)流部分的裝置;用于延遲所述數(shù)據(jù)流部分的裝置;以及用于加速比所述第一數(shù)據(jù)流部分落后的第二數(shù)據(jù)流部分的裝置。
3.一種用于避免含有新數(shù)據(jù)流部分和舊數(shù)據(jù)流部分的譯碼器緩沖器溢出的方法,包括(a)確定如果傳送給所述譯碼器緩沖器則會(huì)占據(jù)所述譯碼器緩沖器的舊數(shù)據(jù)流數(shù)據(jù)的總量;(b)把新數(shù)據(jù)流數(shù)據(jù)的數(shù)量加到所述總量上,以便獲得組合的數(shù)據(jù)量;(c)檢測(cè)所述的組合數(shù)據(jù)量是否溢出所述譯碼器緩沖器;(d)如果發(fā)生溢出,則在所述部分要被傳輸?shù)剿鲎g碼器緩沖器的情況下,使新數(shù)據(jù)流部分延遲一個(gè)至少相應(yīng)于所述溢出的延遲量。
4.根據(jù)權(quán)利要求3所述的方法,其中在所述確定步驟(a)之前確定所述譯碼器緩沖器的最大容量。
5.根據(jù)權(quán)利要求4所述的方法,其中所述最大容量按照舊數(shù)據(jù)流內(nèi)的緩沖器容量參數(shù)進(jìn)行確定。
6.根據(jù)權(quán)利要求4所述的方法,其中所述步驟(a)的最大容量按照在新數(shù)據(jù)流內(nèi)的緩沖器容量參數(shù)確定。
7.根據(jù)權(quán)利要求4所述的方法,還包括在檢測(cè)步驟(c)之前從所述總量中減去舊數(shù)據(jù)流數(shù)據(jù)的在被傳輸時(shí)要被所述譯碼器譯碼的數(shù)量。
8.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量是在所述新數(shù)據(jù)流的所述部分內(nèi)使所述緩沖器溢出的數(shù)據(jù)流數(shù)據(jù)的數(shù)量的函數(shù)。
9.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量是在所述新數(shù)據(jù)流的所述部分內(nèi)在一個(gè)溢出單事件的情況下使所述緩沖器溢出的數(shù)據(jù)流數(shù)據(jù)的數(shù)量的函數(shù)。
10.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量是在所述新數(shù)據(jù)流的所述部分內(nèi)溢出的持續(xù)時(shí)間的函數(shù)。
11.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量是在所述新數(shù)據(jù)流的所述部分內(nèi)一次溢出單事件情況下的持續(xù)時(shí)間的函數(shù)。
12.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量是在所述新數(shù)據(jù)流的所述部分內(nèi)持續(xù)時(shí)間最長的溢出事件的函數(shù)。
13.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)的延遲量等于在所述新數(shù)據(jù)流的所述部分內(nèi)持續(xù)時(shí)間最長的溢出期間所述部分的數(shù)據(jù)包數(shù)。
14.根據(jù)權(quán)利要求3所述的方法,其中所述步驟(d)還包括使所述新數(shù)據(jù)流的隨后部分被加速一個(gè)相應(yīng)于當(dāng)新數(shù)據(jù)流被傳輸時(shí)的所述延遲量的加速量。
15.一種用于檢測(cè)在包括舊數(shù)據(jù)流部分和新數(shù)據(jù)部分的數(shù)據(jù)流部分疊接期間數(shù)據(jù)流譯碼器溢出的方法,包括(a)確定多個(gè)舊數(shù)據(jù)流幀尺寸和相應(yīng)于所述舊數(shù)據(jù)流部分的舊數(shù)據(jù)流幀的譯碼時(shí)間,并在疊接表中存儲(chǔ)所述幀尺寸和所述譯碼時(shí)間;(b)確定最大的譯碼器緩沖器容量;(c)確定新的幀尺寸和相應(yīng)于新數(shù)據(jù)流部分的新數(shù)據(jù)流幀的譯碼時(shí)間;(d)通過對(duì)被存儲(chǔ)在疊接表中的多個(gè)舊數(shù)據(jù)流幀尺寸相加來確定一個(gè)中間尺寸;(e)通過把新數(shù)據(jù)流幀尺寸加到所述中間尺寸來確定一個(gè)總尺寸;以及(f)通過確定所述總尺寸是否超過所述最大譯碼器緩沖器容量來檢測(cè)溢出。
16.根據(jù)權(quán)利要求15所述的方法,其中所述步驟(d)的舊數(shù)據(jù)流幀尺寸包括如果數(shù)據(jù)流部分被傳輸,則當(dāng)所述新數(shù)據(jù)流幀被譯碼器接收時(shí)將保持不被譯碼的舊數(shù)據(jù)流部分的所有的幀。
17.根據(jù)權(quán)利要求16所述的方法,其中所述數(shù)據(jù)流部分被傳輸。
18.根據(jù)權(quán)利要求15所述的方法,還包括(a)如果在步驟(f)發(fā)現(xiàn)溢出,則使包括所述新數(shù)據(jù)流幀的新數(shù)據(jù)流數(shù)據(jù)部分的傳輸時(shí)間被延遲。
19.一種用于校正在包括舊數(shù)據(jù)流部分和新數(shù)據(jù)流部分的數(shù)據(jù)流部分的疊接期間數(shù)字編碼的數(shù)據(jù)流譯碼器溢出的方法,包括使新數(shù)據(jù)流數(shù)據(jù)的一部分的預(yù)定傳輸時(shí)間延遲。
20.根據(jù)權(quán)利要求20所述的方法,其中所述延遲是由于對(duì)所述新數(shù)據(jù)流部分加上空包而引起的。
21.根據(jù)權(quán)利要求19所述的方法,其中所述延遲是由于按照以下公式重新定時(shí)所述部分的傳輸而引起的(所述部分的當(dāng)前規(guī)定的傳輸時(shí)間)+(n包×m位/包×多路傳輸器位速率)/(數(shù)據(jù)流位速率),其中n表示要被延遲傳輸?shù)陌鼣?shù),m表示在要被傳輸?shù)臄?shù)據(jù)流數(shù)據(jù)中的位數(shù)。
22.根據(jù)權(quán)利要求21所述的方法,其中m=1504。
23.一種用于疊接包括舊數(shù)據(jù)流和新數(shù)據(jù)流的數(shù)字編碼的數(shù)據(jù)流的方法,包括(a)為了與舊數(shù)據(jù)流的疊接出點(diǎn)和新數(shù)據(jù)流的疊接入點(diǎn)相適應(yīng),修改新數(shù)據(jù)流的當(dāng)前時(shí)間基準(zhǔn),借以形成一個(gè)修正的新數(shù)據(jù)流時(shí)間基準(zhǔn);以及(b)按照所述的修正的新數(shù)據(jù)流時(shí)間基準(zhǔn)對(duì)齊新數(shù)據(jù)流的部分和舊數(shù)據(jù)流的部分,使得在播放期間從舊數(shù)據(jù)流向新數(shù)據(jù)流的傳輸基本上是不可覺察的。
24.根據(jù)權(quán)利要求23所述的方法,其中步驟(a)的所述修正的時(shí)間基準(zhǔn)還相應(yīng)于一個(gè)在用于譯碼舊數(shù)據(jù)流的最后幀的第一譯碼時(shí)間和用于譯碼新數(shù)據(jù)流的第一幀的第二譯碼時(shí)間之間的時(shí)間間隙。
25.根據(jù)權(quán)利要求23所述的方法,其中確定所述修正的新數(shù)據(jù)流時(shí)間基準(zhǔn)的步驟包括(i)確定新數(shù)據(jù)流的所述當(dāng)前時(shí)間基準(zhǔn);(ii)確定在所述當(dāng)前時(shí)間基準(zhǔn)和新數(shù)據(jù)流幀的當(dāng)前譯碼時(shí)間之間的延遲;(iii)確定一個(gè)相應(yīng)于所述當(dāng)前譯碼時(shí)間加上一個(gè)在譯碼舊數(shù)據(jù)流的最后幀的譯碼時(shí)間與用于譯碼新數(shù)據(jù)流的第一幀的譯碼時(shí)間之間的幀間延遲的新數(shù)據(jù)流的所述幀新譯碼時(shí)間;(iv)確定所述修正的新數(shù)據(jù)流時(shí)間基準(zhǔn),作為減去所述步驟(ii)的延遲的步驟(iii)的所述新譯碼時(shí)間。
26.根據(jù)權(quán)利要求23所述的方法,其中確定所述修正的新數(shù)據(jù)流時(shí)間基準(zhǔn)包括(i)確定所述新數(shù)據(jù)流的第一包的程序時(shí)鐘基準(zhǔn);(ii)確定一個(gè)在所述新數(shù)據(jù)流的第一序列頭部的傳輸和所述新數(shù)據(jù)流的第一幀的第一譯碼時(shí)間標(biāo)記(“DTS”)之間的延遲;(iii)確定連續(xù)的DTS,作為所述第一TDS和幀間延遲的和;以及(iv)確定新數(shù)據(jù)流的實(shí)時(shí)傳輸時(shí)間,作為減去所述步(ii)的延遲的步(iii)的所述連續(xù)的DTS。
27.根據(jù)權(quán)利要求23所述的方法,其中所述對(duì)齊步驟(b)設(shè)置一個(gè)相應(yīng)于用于譯碼舊數(shù)據(jù)流部分的譯碼時(shí)間的傳輸新數(shù)據(jù)流部分的起始時(shí)間。
28.根據(jù)權(quán)利要求23所述的方法,其中所述步(b)中的對(duì)齊設(shè)置一個(gè)用于譯碼緩沖器的起始時(shí)間,以便開始接收相應(yīng)于用于譯碼舊數(shù)據(jù)流部分的譯碼時(shí)間的新數(shù)據(jù)流的部分。
29.根據(jù)權(quán)利要求23所述的方法,還包括(d)如果數(shù)據(jù)流被傳輸,則檢測(cè)會(huì)由所述疊接引起的譯碼器緩沖器溢出狀態(tài);以及(e)校正所述溢出狀態(tài)。
30.根據(jù)權(quán)利要求23所述的方法,其中在所述確定步驟(a)之前執(zhí)行(i)確定舊數(shù)據(jù)流的疊接出點(diǎn);以及(ii)確定新數(shù)據(jù)流的疊接入點(diǎn)。
31.根據(jù)權(quán)利要求30所述的方法,其中步驟(ii)包括,如果新數(shù)據(jù)流的起始幀是參考前一幀的譯碼進(jìn)行正常譯碼的類型,則修正新數(shù)據(jù)流以除去所述參考。
32.根據(jù)權(quán)利要求31所述的方法,其中所述幀的類型從包括B幀和P幀的組中選擇,并且其中所述修正步驟包括關(guān)閉一個(gè)打開的圖像組(“GOP”)。
33.根據(jù)權(quán)利要求30所述的方法,其中所述數(shù)據(jù)流包括視頻數(shù)據(jù)和音頻數(shù)據(jù),其中步驟(a)包括確定視頻疊接出點(diǎn)和音頻疊接出點(diǎn),并且其中步驟(b)包括確定視頻疊接入點(diǎn)和音頻疊接入點(diǎn)。
34.根據(jù)權(quán)利要求30所述的方法,其中所述步驟(i)的疊接出點(diǎn)在舊數(shù)據(jù)流的用戶可選擇的部分內(nèi)確定。
35.根據(jù)權(quán)利要求30所述的方法,其中所述步驟(ii)的疊接入點(diǎn)在新數(shù)據(jù)流的用戶可選擇的部分內(nèi)確定。
36.根據(jù)權(quán)利要求30所述的方法,其中步驟(i)的所述疊接出點(diǎn)是用戶可選擇的。
37.根據(jù)權(quán)利要求30所述的方法,其中步驟(ii)的所述疊接入點(diǎn)是用戶可選擇的。
38.根據(jù)權(quán)利要求23所述的方法,其中在步驟(a)之前確定用于舊數(shù)據(jù)流的第一源和用于新數(shù)據(jù)流的第二源。
39.根據(jù)權(quán)利要求38所述的方法,其中所述源包括從由存儲(chǔ)裝置、衛(wèi)星接收器、電纜接收器、網(wǎng)絡(luò)、音頻源、視頻源和譯碼器構(gòu)成的組中選擇的類型的源。
40.根據(jù)權(quán)利要求39所述的方法,其中所述第一源和所述第二源是同一種源。
41.根據(jù)權(quán)利要求23所述的方法,其中至少一個(gè)所述數(shù)據(jù)流是MPEG編碼的。
42.根據(jù)權(quán)利要求23所述的方法,其中所述疊接被實(shí)時(shí)地進(jìn)行。
43.根據(jù)權(quán)利要求23所述的方法,其中在步驟(a)之后發(fā)送舊數(shù)據(jù)流的部分。
44.根據(jù)權(quán)利要求23所述的方法,其中在步驟(b)之后發(fā)送新數(shù)據(jù)流部分。
45.一種數(shù)據(jù)疊接的數(shù)據(jù)流組合,包括按照權(quán)利要求23的方法疊接在一起的舊數(shù)據(jù)流和新數(shù)據(jù)流。
46.一種計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),用于存儲(chǔ)程序代碼,以便使計(jì)算機(jī)執(zhí)行下述步驟(a)確定舊數(shù)據(jù)流內(nèi)的疊接出點(diǎn);(b)確定新數(shù)據(jù)流內(nèi)的疊接入點(diǎn);以及(c)確定新數(shù)據(jù)流的實(shí)時(shí)傳輸起始時(shí)間。
47.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),其中在步驟(a)之前進(jìn)行確定要和另一個(gè)數(shù)據(jù)流對(duì)同時(shí)疊接的新數(shù)據(jù)流對(duì);以及啟動(dòng)程序代碼,以便疊接所述新數(shù)據(jù)流對(duì)。
48.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),其中在步驟(a)之前進(jìn)行產(chǎn)生至少一個(gè)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),用于存儲(chǔ)所述數(shù)據(jù)流部分;以及在所述至少一個(gè)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)所述數(shù)據(jù)流部分。
49.根據(jù)權(quán)利要求48所述的計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),其中所述至少一個(gè)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)位于主處理系統(tǒng)的存儲(chǔ)器中。
50.一種用于疊接包括舊數(shù)據(jù)流和新數(shù)據(jù)流的數(shù)字編碼的數(shù)據(jù)流的方法,包括(a)接收一個(gè)表示要在其中確定疊接出點(diǎn)的舊數(shù)據(jù)流部分的用戶可選擇的參數(shù);(b)分配用于存儲(chǔ)舊數(shù)據(jù)流部分和新數(shù)據(jù)流部分的疊接緩沖器;(c)把舊數(shù)據(jù)流部分送到所述疊接緩沖器;(d)確定所述疊接出點(diǎn);(e)把新的數(shù)據(jù)流送到所述疊接緩沖器;(f)確定新數(shù)據(jù)流部分內(nèi)疊接入點(diǎn),并且如果新數(shù)據(jù)流部分的起始幀依賴于新數(shù)據(jù)流部分前面的幀,則修正新數(shù)據(jù)流部分,以消除所述的依賴性;(g)如果在傳輸時(shí),譯碼器緩沖器會(huì)在所述緩沖器最后接收舊數(shù)據(jù)流部分以后開始接收新數(shù)據(jù)流,則使所述新數(shù)據(jù)流和所述最后的接收對(duì)齊,以及(h)如果在傳輸時(shí),譯碼器緩沖器在所述緩沖器最后接收舊數(shù)據(jù)流部分之前開始接收新數(shù)據(jù)流,則使所述新數(shù)據(jù)流和所述最后的接收對(duì)齊。
51.根據(jù)權(quán)利要求50所述的方法,其中所述步驟(f)的依賴性是一個(gè)打開的GOP,并且其中所述的修正關(guān)閉這個(gè)打開的圖像組(“GOP”)。
52.根據(jù)權(quán)利要求50所述的方法,還包括(j)檢查所述譯碼器緩沖器的溢出;以及(k)如果發(fā)現(xiàn)溢出,則消除所述溢出。
53.一種用于疊接包括舊數(shù)據(jù)流和新數(shù)據(jù)流的數(shù)字編碼的數(shù)據(jù)流的疊接器,包括(a)用于按照舊數(shù)據(jù)流的疊接出點(diǎn)和新數(shù)據(jù)流的疊接入點(diǎn)來確定新數(shù)據(jù)流的實(shí)時(shí)傳輸開始時(shí)間的裝置;以及(b)用于按照所述新數(shù)據(jù)流實(shí)時(shí)傳輸時(shí)間來對(duì)準(zhǔn)新數(shù)據(jù)流和舊數(shù)據(jù)流的裝置。
54.一種用于準(zhǔn)備供疊接使用的數(shù)字編碼的數(shù)據(jù)流的方法,包括(a)確定新數(shù)據(jù)流的疊接入點(diǎn);以及(b)如果新數(shù)據(jù)流包括一個(gè)初始打開的GOP,則關(guān)閉新數(shù)據(jù)流的初始打開的圖像組(“GOP”)。
55.一種用于疊接包括舊數(shù)據(jù)流和新數(shù)據(jù)流的數(shù)字編碼的數(shù)據(jù)流的疊接器,包括(a)用于確定新數(shù)據(jù)流的疊接入點(diǎn)的裝置;以及(b)如果新數(shù)據(jù)流包括一個(gè)打開的GOP,則關(guān)閉新數(shù)據(jù)流的打開的圖像組(“GOP”)的裝置。
56.根據(jù)權(quán)利要求50所述的方法,其中所述疊接出點(diǎn)在步驟(a)中按照一個(gè)在插入方式選擇和只疊接方式選擇之間的用戶選擇進(jìn)行確定。
57.根據(jù)權(quán)利要求56所述的方法,其中所述的疊接出點(diǎn)在緊接一個(gè)序列的頭部的前方被確定。
58.根據(jù)權(quán)利要求56所述的方法,其中疊接出點(diǎn)在緊接第一次出現(xiàn)的圖像組(“GOP”)頭部、I幀和P幀、的前方被確定。
59.根據(jù)權(quán)利要求50所述的方法,其中所述確定一個(gè)疊接入點(diǎn)包括查找用于新數(shù)據(jù)流的一幀的譯碼時(shí)間標(biāo)記(“DTS”),所述的一幀被包括在新數(shù)據(jù)流的圖像組(“GOP”)內(nèi);查找用于所述幀的相應(yīng)的當(dāng)前的時(shí)間標(biāo)記;以及如果所述幀不是I幀,則關(guān)閉所述GOP。
60.根據(jù)權(quán)利要求59所述的方法,其中所述幀是新數(shù)據(jù)流的初始幀。
61.根據(jù)權(quán)利要求59所述的方法,其中查找所述DTS包括分析新數(shù)據(jù)流的第一部分以便得到第一序列頭部,然后再分析所述第一部分以便得到在第一幀頭部前面的最后的DTS。
62.一種用于確保編碼數(shù)據(jù)流部分的初始幀可以被獨(dú)立譯碼的方法,包括(a)確定在所述部分內(nèi)的可獨(dú)立譯碼的幀;(b)使所述部分的播放從所述可獨(dú)立譯碼的幀開始;以及(c)修正所述部分的排序參數(shù),使得接收譯碼器可譯碼作為所述部分的第一幀的所述可獨(dú)立譯碼的幀。
63.根據(jù)權(quán)利要求62所述的方法,其中步驟(b)通過刪除在所述可獨(dú)立譯碼的幀的前方的所述部分內(nèi)的幀來實(shí)現(xiàn)。
64.一種用于關(guān)閉一個(gè)數(shù)字編碼的數(shù)據(jù)流的打開GOP的方法,所述GOP包括多個(gè)幀,包括(a)確定所述GOP內(nèi)的第一個(gè)I幀;(b)確定所述GOP內(nèi)的在所述I幀前方的所有所述幀中的最大的DTS;(c)刪除在所述I幀前方的所述GOP內(nèi)的所有的幀;(d)修正在所述GOP內(nèi)的至少一個(gè)剩余幀的時(shí)間基準(zhǔn);以及(e)用步驟(b)的所述最大的DTS代替所述I幀的DTS。
65.根據(jù)權(quán)利要求62所述的方法,其中修正步驟(d)包括用相應(yīng)地增加在步驟(c)刪除的幀的時(shí)間基準(zhǔn)值來代替增加所述GOP內(nèi)的剩余幀的時(shí)間基準(zhǔn)值。
66.一種用于對(duì)齊數(shù)字編碼的舊數(shù)據(jù)流的疊接出部分和數(shù)字編碼的新數(shù)據(jù)流的疊接入部分的方法,包括求取新數(shù)據(jù)流的實(shí)時(shí)傳輸時(shí)間。
67.根據(jù)權(quán)利要求66所述的方法,其中所述求取步驟包括(a)確定所述新數(shù)據(jù)流的第一包的程序時(shí)鐘基準(zhǔn)(“PCR”);(b)如果所述新數(shù)據(jù)流被傳輸?shù)脑?,則確定一個(gè)在所述新數(shù)據(jù)流的第一序列頭部的傳輸和所述新數(shù)據(jù)流的第一幀的第一譯碼時(shí)間標(biāo)記(“DTS”)之間的時(shí)間差;(c)確定連續(xù)的DTS,作為所述第一DTS和幀間延遲之和;以及(d)確定所述新數(shù)據(jù)流實(shí)時(shí)傳輸時(shí)間,作為一個(gè)在所述連續(xù)的DTS和所述時(shí)間差之間的差。
68.根據(jù)權(quán)利要求66所述的方法,其中所述求取步驟在所述新數(shù)據(jù)流和所述舊數(shù)據(jù)流的疊接期間實(shí)時(shí)地進(jìn)行。
69.根據(jù)權(quán)利要求67所述的方法,其中所述幀間延遲等于1001/30000秒。
70.一種用于對(duì)齊數(shù)字編碼的舊數(shù)據(jù)流的疊接出部分和數(shù)字編碼的新數(shù)據(jù)流的疊接入部分的方法,包括設(shè)置所述新數(shù)據(jù)流的接收時(shí)間的開始時(shí)刻,在此時(shí)刻,如果所述新數(shù)據(jù)流被傳輸,則所述新數(shù)據(jù)流將開始被譯碼器接收,以便和用于所述舊數(shù)據(jù)流的所述疊接出點(diǎn)的譯碼時(shí)間對(duì)齊。
71.根據(jù)權(quán)利要求70所述的方法,其中所述設(shè)置步驟包括如果在所述數(shù)據(jù)流被傳輸時(shí),所述新數(shù)據(jù)流在譯碼器收到所有的疊接出部分之前開始被譯碼器接收,則設(shè)置用于所述新數(shù)據(jù)流的傳輸延遲參數(shù)。
72.根據(jù)權(quán)利要求71所述的方法,還包括如果所述新數(shù)據(jù)流被傳輸,則在所述新數(shù)據(jù)流的一個(gè)位置插入一些相應(yīng)于所述延遲參數(shù)的空包,使得所述空包基本上在其它的新數(shù)據(jù)流數(shù)據(jù)之前傳輸。
73.根據(jù)權(quán)利要求72所述的方法,其中如果新數(shù)據(jù)流被傳輸?shù)脑?,則所述空包數(shù)等于沒有所述插入時(shí)在譯碼器收到所有所述疊接出部分之前應(yīng)當(dāng)由譯碼器收到的數(shù)據(jù)的包數(shù)。
74.根據(jù)權(quán)利要求70所述的方法,其中所述設(shè)置步驟包括如果所述新數(shù)據(jù)流在其被傳輸時(shí),在譯碼器已經(jīng)收到所有所述的疊接出部分之后開始被譯碼器接收,則設(shè)置用于所述新數(shù)據(jù)流的傳輸加速參數(shù)。
75.根據(jù)權(quán)利要求74所述的方法,還包括如果所述新數(shù)據(jù)流被傳輸?shù)脑?,則從所述新數(shù)據(jù)流的第一個(gè)被傳輸?shù)牟糠謩h除一些相應(yīng)于所述加速參數(shù)的空包。
76.根據(jù)權(quán)利要求75所述的方法,其中所述如果新數(shù)據(jù)流被傳輸?shù)脑?,則空包數(shù)等于沒有所述刪除時(shí)在譯碼器收到所有所述疊接出部分之后應(yīng)當(dāng)由譯碼器收到的數(shù)據(jù)的包數(shù)。
77.一種用于對(duì)齊數(shù)字編碼的舊數(shù)據(jù)流的疊接出部分和數(shù)字編碼的新數(shù)據(jù)流的疊接入部分的方法,所述疊接出部分和所述疊接入部分中每個(gè)部分都包括多個(gè)包,所述方法包括(a)分析所述疊接出部分以便得到要被傳輸?shù)乃霪B接出部分的最后包的程序時(shí)鐘基準(zhǔn)(“PCR”);(b)分析所述疊接入部分,以便得到所述新數(shù)據(jù)流的第一幀的第一序列頭部和第一譯碼時(shí)間標(biāo)記(“DTS”);(c)確定所述新數(shù)據(jù)流的連續(xù)的DTS;(d)如果步驟(a)的疊接出PCR小于步驟(c)的實(shí)時(shí)傳輸時(shí)間,則存儲(chǔ)一個(gè)表示當(dāng)在所述疊接入部分之前傳輸時(shí),將使疊接入部分的傳輸在基本上和所述疊接出部分的譯碼時(shí)間相同的時(shí)間開始的空包總數(shù)的值;以及(e)如果步驟(a)的疊接出PCR大于步驟(c)的所述實(shí)時(shí)傳輸時(shí)間,則存儲(chǔ)一個(gè)表示當(dāng)從所述疊接入部分刪除時(shí),將接近一種其中疊接出部分的PCR等于實(shí)時(shí)傳輸時(shí)間的狀態(tài)的空包總數(shù)的值。
78.一種數(shù)字編碼的數(shù)據(jù)流發(fā)送器,包括用于確定數(shù)據(jù)流部分的預(yù)定的傳輸時(shí)間要被其加速或要被其延遲的數(shù)量的改變裝置;以及用于在按照由所述改變裝置確定的數(shù)量加速或延遲的傳輸時(shí)間傳輸所述數(shù)據(jù)流部分的傳輸裝置。
79.根據(jù)權(quán)利要求78所述的裝置,其中所述新數(shù)據(jù)流數(shù)據(jù)作為多個(gè)數(shù)據(jù)包被接收。
80.根據(jù)權(quán)利要求79所述的裝置,其中所述的量作為一個(gè)相應(yīng)于數(shù)據(jù)流數(shù)據(jù)的數(shù)據(jù)包數(shù)的時(shí)間被計(jì)算。
81.一種用于發(fā)送一種和數(shù)字編碼的舊數(shù)據(jù)流疊接的數(shù)字編碼的新數(shù)據(jù)流的發(fā)送機(jī),包括一個(gè)發(fā)送器;以及一個(gè)位時(shí)鐘裝置,用于把所述新數(shù)據(jù)流的新數(shù)據(jù)流數(shù)據(jù)的發(fā)送時(shí)間規(guī)定在一個(gè)相應(yīng)于對(duì)所述新數(shù)據(jù)流和所述舊數(shù)據(jù)流進(jìn)行疊接的時(shí)間。
全文摘要
一種疊接系統(tǒng)包括用于把數(shù)字編碼的數(shù)據(jù)流無縫地疊接在一起的疊接器。在優(yōu)選實(shí)施例中,疊接器優(yōu)選地分析相繼的數(shù)據(jù)流數(shù)據(jù)的疊接緩沖器,以便得到疊接入點(diǎn)和疊接出點(diǎn),如果需要,則關(guān)閉一個(gè)開始的GOP。優(yōu)選的疊接器還求取新數(shù)據(jù)流的實(shí)時(shí)的PCR值,用于對(duì)齊新數(shù)據(jù)流譯碼/表示,并對(duì)齊新數(shù)據(jù)流開始時(shí)間。同時(shí),疊接器優(yōu)選地使用幀表來檢測(cè)溢出并通過加上空包來校正這種溢出,借此延遲數(shù)據(jù)流數(shù)據(jù)的一些部分。疊接器還通過刪除空包來優(yōu)選地恢復(fù)數(shù)據(jù)流編碼,借此加速數(shù)據(jù)流數(shù)據(jù)的一部分。在另一個(gè)優(yōu)選實(shí)施例中,疊接器優(yōu)選地使用位時(shí)鐘定時(shí)偏移來延遲或加速數(shù)據(jù)流數(shù)據(jù)的一些部分。
文檔編號(hào)H03M7/30GK1275289SQ99800710
公開日2000年11月29日 申請(qǐng)日期1999年4月2日 優(yōu)先權(quán)日1998年4月4日
發(fā)明者希萊爾·格茲特 申請(qǐng)人:蔚友圖形公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1