新四季網

數字媒體流的反向表示的製作方法

2023-05-12 06:14:01 2

專利名稱:數字媒體流的反向表示的製作方法
技術領域:
本發明通常涉及一種數字多媒體技術。
背景技術:
隨著處理和存儲技術的持續改進,如今許多個人計算系統(例如,個人計算機、機頂盒等)已經可以接收、處理並再現多媒體對象。該對象具有多媒體內容,包括音頻、圖形和/或視頻內容的組合。可以用多種方式中的任意一種將該多媒體內容傳送至計算系統,例如包括在緻密盤只讀存儲器(CD-ROM)、數字通用盤只讀存儲器(DVD-ROM)、經由通信連接的數據網絡(例如,網際網路)等方式。
由於精確再現這樣的多媒體內容所需的數據量的原因,通常以編碼、壓縮的形式將數據傳送至計算系統。為了再現用於顯示的原始內容,必須在顯示該多媒體內容之前將其解壓縮和解碼。此處,顯示包括將該多媒體內容傳送至顯示器和/或音頻設備。
已經開發出了多個多媒體標準,出於分配的目的定義了已編碼的多媒體內容的格式和含意。例如,由國際標準化組織(ISO)和國際電工委員會(IEC)支持的運動圖像專家組(MPEG),以及由國際電信同盟(ITU)支持的視頻編碼專家組(VCEG)的組織已經開發出了多種多媒體編碼標準(例如,MPEG-1、MPEG-2、MPEG4、H.261、H.263等)。
簡單地說,編碼處理從媒體內容中消除了空間和時間的冗餘,由此減小了顯示該媒體內容所需的數據量,並因此降低了用於存儲和/或傳送該媒體內容的帶寬負擔。編碼處理的例子包括熵解碼、運動補償預測、反量化(inversequantization)、逆變換,以及產生預測的附加逆變換。
相反地,簡單的說,解碼處理通常是編碼處理的逆過程。
再現通常包括另外的數字—模擬變換的步驟(經過濾波)。其產生了接近原始的模擬媒體信號的顯示。
此處,「媒體流」是按照通常可用於此處理的機制被壓縮和編碼的多媒體對象(含有音頻和/或視頻內容)。而且,希望該媒體流按照通常可用於此處理的機制被解碼和再現。
在沒有一般性損失的情況下,同樣的技術可應用於任何具有可減小時間或空間冗餘的相似結構的媒體流。例如,許多音頻壓縮格式具有跟隨修改數據的關鍵幀(keyframe)以重建接近原始的未壓縮流。
存在許多不同的視頻流數據格式。例如,H.263、MPEG-1、MPEG-2、MPEG-4Visual、H.264/AVC和DV格式。
存在許多不同的音頻流數據格式。例如,DTS音頻或MLP音頻。
MPEG-2/H.262最主要的數字視頻壓縮和傳輸格式來自被稱為基於塊的運動補償混合視頻信號編碼器的家族,如由IS/IEC MPEG-X(運動圖像專家組)和ITU-T VCEGH.26X(視頻編碼專家組)標準所代表的。該族的標準用於以數字壓縮格式編碼音頻—視頻信息(例如,電影、視頻、音樂等)。
為了方便說明,此處一般討論和說明MPEG-2視頻流(也可以是已知的H.262視頻流),因為其具有傳統視頻編碼方法的典型結構。但是,本領域技術人員應當了解和意識到,也可以存在並使用其它這樣的數字視頻壓縮和傳輸格式。
通常可將MPEG-2格式稱為「正向解碼」格式。圖1的10一般性地示出了MPEG格式的示例性顯示。每個視頻序列由通常被稱為圖像組(或「GOP」)的幀序列構成。一個GOP由圖像或幀的序列構成。GOP數據被壓縮為I-、P-和B-幀的序列,其中·I-幀(即,內部幀)是獨立開始圖像(以類似於JPEG圖像格式壓縮的)。I-幀或「關鍵幀」(例如I-幀12)不參考任何過去或未來的幀而被作為單個圖像編碼。I-幀被認為是MPEG-2中的「參考幀」,因為其內容可以用於按照解碼順序針對一個隨後的P-幀或多個隨後的B-幀的解碼處理。
·P-幀(即,前向預測幀)可以通過圍繞來自先前的I-幀或P-幀的矩形(宏塊)移動,然後(假如由編碼器表示的話)施加稱為剩餘的「校正」而被計算。隨後的P-幀(例如P-幀18)相對於過去的參考幀(例如先前的I-幀或P-幀)被編碼。P-幀也可以被視為「δ幀」,它們含有相對於它們的參考幀的變化。P-幀在MPEG-2中也被視為「參考幀」,因為其內容可以用於按照解碼順序針對一個隨後的P-幀或多個隨後的B-幀的解碼處理。
·零個或多個B-幀(即,雙向預測幀,例如幀14和16)由來自於其後跟隨(假如由編碼器表示的話)校正扇區的相鄰的I-幀或P-幀的矩形組合而形成。幾個B-幀可以位於一對參考幀(或是I-幀或是P-幀)之間。在MPEG-2中,B-幀不被稱為參考幀,因為它們不能用作按照解碼順序解碼隨後幀的參考。
GOP結構旨在幫助在該流中隨機存取。GOP通常是可獨立解碼的單元,其可以是只要由I-幀開始的任何大小。
與MPEG-2格式相關的一個問題屬於可以以正常播放順序的相反順序重放該數據。正向播放數據通常不是問題,因為其本身格式是正向解碼的,這意味著通常必須首先解碼I-幀,然後移動到GOP中的其它幀上。但是,以相反順序重放該數據更具有挑戰性,因為GOP固有地抵制直接反向解碼。
類似的挑戰也存在於被壓縮為開始扇區值(即,每音頻信道一個)的音頻數據,該開始扇區值跟隨在δ幀後。
DVD通常地,當圖像記錄在例如DVD的光碟上時,其內容實際上被分成小的單元,該小單元覆蓋預先確定的時間周期(通常大約為1/2秒單元或視頻對象基本單元(「VOBUs」))。這種格式的優點是在播放視頻時,可以一個接一個的逐步通過視頻單元。如果想跳到任意的視頻片斷,則可以簡單的跳到感興趣的視頻單元,並且該視頻和音頻將被同步。所有流被同步的位置稱為「淨化點」。因此,當視頻和音頻單元被壓縮時,它們被壓縮成一個可以在精確的相同時間再現的單元,即音頻和視頻之間沒有不對稱。
當在MPEG-2背景下討論時,I-幀的所有參考可以是其它數據格式的關鍵幀。當在MPEG-2背景之外討論時,術語I-幀與關鍵幀具有相同意思。
典型的媒體流再現系統圖2示出了典型的系統200,其可以從媒體流源(如DVD)再現數據。系統200包括與源組件204通信的應用程式202,源組件204從DVD 206中讀出數據。從DVD中讀出的數據包括已經被編碼和復用在一起的音頻和視頻數據。
當源組件從DVD中讀出數據時,其從數據包提取時間標記,該時間標記隨後被用於重現時對該數據包進行同步和確定時間。然後將該數據包提供至信號分離器(或「demux」)208,該信號分離器將數據包分成不同的組成部分——音頻、視頻和子圖像包(如果存在的話)。
然後通過信號分離器將該數據包提供至相關的解碼器,例如視頻解碼器210(用於解碼視頻包)、音頻解碼器212(用於解碼音頻包)和子圖像解碼器214(用於解碼子圖像包)。每一個包都具有相關的時間信息,該時間信息定義了假設該包的內容將被再現的時間。這些包可以是一個GOP(如上關於MPEG所述的)。
然後解碼器解壓縮它們相關的包,並將各個數據樣本或包(包括數據包的時間標記)發送至適當的再現器,例如視頻再現器216和音頻再現器218。通常每一個這些再現器都具有高速緩存,用於臨時存儲已解碼的數據包(或其部分)。通常,高速緩存至少足夠大,以便容納來自其它幀的幀解碼參考數據。
系統200通常也包括共用時鐘220,其被各種再現器使用,以確定何時再現一定的數據樣本,其中該數據樣本的時間標記與共用時鐘所示的時間一致。
反向重放現在假設用戶通過應用程式202指示她希望以相反的順序瀏覽內容。這可被稱作「反向重放」,「後退播放」,「倒回」,「後退掃描」,「反向特技播放」或「反向掃描」。
GOP的幀被設計成通常以相同的方向被解碼和顯示,其在此被稱為「正向」方向。這是與GOP的幀被編碼方向相同的方向。但是,GOP幀通常被編碼的實際特定順序不同於其顯示的實際特定順序。
為了解碼B-幀(例如圖1中的幀14和16),必須已經存在先前的I-幀/P-幀和下面的I-幀/P-幀。例如,GOP可以以I1B2B3P4B5P6的順序存在,但是其將以I1P4B2B3P6B5的順序被編碼。注意,P4必須在B2和B3產生之前解碼。P4必須被解碼以產生P6。
因此,簡單的顛倒解碼順序不足以產生GOP的反向重放。在上述的例子中,P6取決於如果出現反向解碼時還沒有被解碼的先前的P4幀。而且,P4取決於如果出現反向解碼時還沒有被解碼的先前的I1幀。此外,B-幀取決於一個或多個在反向解碼時還沒有被解碼的幀。
由此看來,一種用於GOP的「反向重放」的傳統方法包括反向表示GOP中的幀,以使在顯示每個幀之前,解碼當前幀之前的所有幀(或至少所有的參考幀)。例如,對於標記為ABCDE的幀,傳統的方法解碼幀ABCDE,然後顯示幀E。接下來,解碼ABCD,然後顯示幀D。接下來,解碼ABC,然後顯示C,依此類推。
該傳統的方法非常浪費時間並且效率非常低,因為系統重複地解碼一些相同的幀。其對計算的要求非常高,而對存儲器的要求相對較低。
另一種用於GOP的「反向重放」的傳統方法按照正常進行正向解碼,但是臨時存儲GOP的所有已解碼且當前未壓縮的幀。一旦全部的GOP被解碼和存儲,就將已解碼的幀以反向順序發送到再現器。因此,以反向順序簡單的顯示了存儲的輸出幀。
通過此方法,對計算的要求相對較低,但是對存儲器的要求相對較高。該傳統的方法要求·大量的高速緩存存儲器,以高速存儲GOP的已解碼幀的未壓縮的圖像。即使對於例如DVD的通用格式或標準清晰度的TV,也需要10MB或更大的高速緩存存儲器。更高的HDTV解析度通常要求50MB的存儲器。
·高速緩存存儲器通常位於解碼器單元可存取的高速存儲器中。隨機矩形提取產生了對高速緩存非常不利的存取圖形。通常,該存儲器需要是昂貴的,並且限制在視頻卡的本地視頻存儲器(VRAM)上。
·由於GOP通常需要使用至少兩個高速緩存的流水線處理,以確保恆定的輸出速度,因此對高速緩存存儲器的要求通常是雙倍的。儘管對於一塊的全部反向解碼速度等於以相同速度正向播放的速度,但是解碼器必須幾乎立即解碼該塊,然後以正常速度反向播放該塊。通過在存儲器中具有全部解碼的GOP,解碼器單元與GOP顯示時間等值的去解碼下一個GOP。
此外,處理過的內容(例如解除隔行掃描、縮放、濾波、音頻間距修正等)可以要求額外的計算功耗和臨時的處理高速緩存。
為了繞過反向重放中含有的難點,一些傳統的方法只簡單的解碼並顯示來自每個GOP的關鍵幀(例如,I-幀)。這使出現在視頻流中的靜態圖像產生了不均勻的類似放映幻燈片的反向表示。儘管直接,但是該簡單化的方法在視頻流的視頻內容模擬反向運動時不優美且完全失敗。

發明內容
此處公開了一種實施方式,可以促進已編碼的數字媒體流的反向表示。
此發明內容本身並不意味著限制本專利申請的範圍。而且,該專利申請的名稱並不意味著限制本專利申請的範圍。為了更好的理解本發明,請結合附圖閱讀下面的詳細說明和後附的權利要求書。本發明的範圍由權利要求指出。


所有附圖中使用的相同數字標誌類似的元件和特徵。
圖1顯示了可用於按照此處所述實施例的圖像組(GOP)的方塊圖;圖2是按照此處所述實施例的系統圖;圖3是顯示此處所述的方法實施例的流程圖;圖4是顯示此處所述的方法實施例的流程圖;圖5顯示了可用於按照此處所述實施例的複雜的圖像組(GOP)的方塊圖;圖6是顯示此處所述的方法實施例的流程圖;圖7顯示了可採用此處所述實施例的典型環境;圖8顯示了示例的顯示設備、電視以及與顯示設備交互的各種輸入設備;圖9顯示了圖7和8所示的顯示設備示例的組件的方塊圖;圖10是計算操作環境的示例,該計算操作環境可以(整體或部分地)實施至少一個此處所述的實施例。
具體實施例方式
在下面的說明中,出於說明的目的,闡述了具體的數字、材料和配置,以便提供對本發明的整體理解。但是,本領域技術人員應當清楚,可不通過具體的示例性細節來實施本發明。在其它例中,為了使本發明典型實施例的說明清楚,而刪除或簡化了公知的特點,由此更好的解釋了本發明。此外,為了容易理解,某些方法步驟被作為分開的步驟進行描述;但是,這些分開描述的步驟不應當解釋為它們性能所依賴的必要順序。
下面的說明結合了後附權利要求書中所引用的元件,闡述了一種或多種反向表示數字媒體流的典型實施例。為了滿足法定的撰寫說明、授權和最佳模式的要求,具體化說明了這些實施例。但是,該說明本身並不意味著限制該專利申請的範圍。
發明人旨在將這些典型實施例作為示例。發明人並不想要用這些典型實施例限制本發明所要保護的範圍。而且,發明人已經構想,可以結合其它現存的或未來的技術以其它方式來體現和實施所要保護的本發明。
數字媒體流的反向表示的典型實施例被稱為「典型反向表示器(presenter)」。
介紹可通過媒體流再現系統200、顯示設備708、和/或類似於圖10中所示的部分計算環境來實施(整體或部分)此處所述的本所要保護的發明的一個或多個典型實施例。
典型的反向表示器方便了壓縮的數字媒體流的反向重放。大多數的媒體流格式使用含有幀序列的獨立可解碼塊進行壓縮。為了方便,這樣的塊在此被稱為幀塊(BOF)。在MPEG中,圖像組(GOP)即是這樣的BOF的示例。注意,在某些情況下(例如,在MPEG2中的開放GOP),BOF可與相鄰的BOF分享幀(即,交迭)。
此處,「幀」是指媒體數據(通常是音頻和/或視頻數據)的壓縮單元。全部的編碼處理減少了BOF幀的媒體數據內的時間或空間冗餘。當幀被解碼(或未壓縮)時,其媒體數據被完全顯示而沒有任何壓縮(由於時間或空間冗餘減少)。
每個BOF通常包括至少一個關鍵幀(例如,I-幀)或參考扇區,其後跟隨幾個δ幀。類似的過程可用於解碼各種媒體流,例如使用類似的結構被壓縮的音頻。
傳統的用於反向重放媒體流的方法通常按照正常的「正向」方向解碼BOF,但是高速緩存全部BOF的所有已解碼和當前未壓縮的幀。一旦全部BOF被解碼和高速緩存,則以反向順序表示已解碼的幀。
此傳統和直接的方法針對大小相對較小的未壓縮幀和長度較短的BOF工作。但是,當未壓縮的幀大小增加時,例如在解碼HDTV圖像的情況下,對臨時存儲器要求變得非常高。
對於具有1/2秒長度BOF的交錯1920×1080像素的圖像,需要超過300MB的存儲器存儲該幀。更壞的情況是,高速緩存的圖像必須位於解碼器的本地存儲器中(而不是主存儲器)。用於將解壓縮的圖像複製到主存儲器所需的存儲器帶寬經常超過系統內部總線的帶寬。
簡單地添加更多的本地高速緩存存儲器,因為其只是增加組件的成本而並不經濟。在某些方面,這種強力解決方案(增加更多的存儲器)將由於成本原因而不可行。
典型的反向表示器通過執行更有效的媒體流的BOF反向解碼,促進了流的反向表示的改善。其也平衡了對計算能力和存儲器要求,因此如果存儲器或計算資源有限也仍然可以反向解碼該內容。
典型的反向表示器通過圖2的媒體流再現系統200、圖7和9的顯示設備708、和/或如圖10中所示的部分計算環境可以實施(整體或部分的)典型的反向表示器。
典型的反向表示器的流解碼功能可出現在解碼單元,該解碼單元具有接受壓縮的視頻和音頻流的多媒體數據的有限存儲器。解碼單元包括解碼控制器(例如圖9的控制器940)和硬體解碼器(例如圖2的解碼器210、212和214或圖6的解碼器930)。
解碼器控制器(例如圖9的控制器940)控制解碼處理。其由該解碼器安排要解碼的幀的時間順序。解碼器控制器可以用軟體、硬體或其組合形式執行。其可以是顯示設備708和/或如圖10所示的部分計算環境上的程序模塊。
解碼器(例如圖2的解碼器210、212和214或圖6的解碼器930)是專用的解壓縮/解碼硬體、執行同等操作的軟體組件、或其二者的組合。由於解碼通常是由專用硬體處理,所以解碼(或重新解碼幀)經常可以比將被表示的幀所必要的速度更快。
此處,術語「幀緩衝器」是指用於存儲一個未壓縮的幀的存儲器存儲位置。在此,「高速緩存」是存儲器存儲。高速緩存可以含有幀緩衝器。
參考和非參考幀「參考幀」是一種具有用作參考以產生從此獨立的幀的數據的幀的類型。通常必須在參考幀的數據被參考之前解碼該參考幀。關鍵幀一直是參考幀。但是,依賴於關鍵幀、但是也具有一個或多個從此獨立的幀的中間幀也被分類為參考幀。在MPEG領域,I-幀和P-幀均被分類為參考幀。
「非參考幀」是一種不含有被其它幀參考的數據的幀的類型。除了包含在非參考幀中的數據以外,幀中的全部解碼圖像的產生還取決於其解碼的參考幀的數據。在MPEG領域,B-幀被分類為非參考幀,因為沒有幀依賴於它們,但是它們依賴於兩個參考幀(I-幀或P-幀)。非參考幀通常被解碼,然後被丟棄,且不需要為了解碼其它幀而被臨時存儲。
典型的反向表示器的方面下面(關於標題部分「解碼參考幀,但是高速緩存編碼的非參考幀」)所述的典型的反向表示器的方面,關注相對於參考幀(例如,I-/P-幀)的非參考幀(例如,B-幀)的改進的處理。如此處理,提供了反向重放媒體流的改進的方法。
相反地,下面(關於標題部分「解碼且高速緩存選擇的參考幀」)所述的典型的反向表示器的另一個方面,關注於參考幀(例如,I-/P-幀)的改進的處理,以產生用於流的反向重放的改進方法。此方面提供的改進不基於對非參考幀(例如,B-幀)的處理。但是,可一起採用典型的反向表示器的兩個方面。並且實際上希望同時利用這兩個方面,以進一步提高整體的反向重放功能。
解碼參考幀,但是高速緩存編碼的非參考幀典型的反向表示器的這個方面,通過正向解碼BOF的一些或所有的參考幀(例如,I-幀或P-幀),同時高速緩存仍被編碼(因此仍被壓縮)的非參考幀(例如,B-幀),獲得了BOF(例如GOP)的改進的反向重放。
因為典型的反向表示器以反向順序表示了BOF的幀,所以顯示了已經解碼的參考幀,但是在顯示該非參考幀之前,其基於它們已經解碼的參考幀來解碼高速緩存中的仍被編碼的非參考幀。
I-幀獨立於先前或未來的幀信息而被解碼。P-幀是先前的I-幀或P-幀的正向修改。因為B-幀只依賴於與I-/P-幀相鄰的幀,所以隨後通過交換相鄰幀的幀索引並正向解碼它們,可以向後解碼B-幀。
例如,假設B-幀中的合成的宏塊MB是來自先前P-幀的宏塊MP1和來自下一個P-幀的宏塊MP2的函數。如果B-幀被正向解碼,則MB=函數1(MP1,MP2)。但是,當交換B-幀的索引時,現在的解碼如下MB=函數2(MP2,MP1),其中函數2是通過交換其操作數的函數1。
因此,可通過顛倒相鄰幀的解碼順序並施加相同的剩餘糾正,來產生B-幀的已解碼宏塊。
典型的反向表示器高速緩存壓縮格式的非參考幀(例如B-幀)。當以反向順序表示BOF幀時,高速緩存的已壓縮的非參考幀隨後被解碼。當需要再現非參考幀的數據時,解決了對解碼非參考幀的相關性,優於先前技術。
非參考幀可存儲在主系統存儲器中、可提高存取速度的本地存儲器中(例如VRAM)、或者解碼器單元容易存儲的系統存儲器中(例如AGP存儲器)。此處可將任何一種存儲器一般性地稱為高速緩存。
例如,如果使用IBBPBBPBBPBBI(其中最後一個I與相鄰的BOF共用)的典型的BOF重放結構,則反向重放對存儲器的要求大約是傳統方法中高速緩存所有BOF的已解碼幀的所需要的三分之一。在此示例中,典型的反向表示器只高速緩存十幀中的四幀的已解碼版本,而不是全部的十幀。特別地,其高速緩存I-幀和P-幀的已解碼版本。
在此示例中,典型的反向表示器存儲壓縮格式的六個B-幀。三種類型(I-、P-和B-幀)中,B-幀表示最大壓縮類型的幀,因為它們依賴於其它兩種幀。避免B-幀的解壓縮數據的臨時存儲表示在高速緩存BOF的所有已解碼幀的傳統方法中對存儲器的要求明顯降低。
對於典型的反向表示器的這個方面,具體地BOF結構是IBBPBBPBBP的典型的BOF結構。這是通用的BOF結構,但是本領域技術人員應當了解和意識到,其它的BOF結構也是可能的,還應當理解和意識到這個方面如何被應用到其它可能的結構中。
用於保持(或有效地「高速緩存」)壓縮格式的非參考幀的其它方式是簡單的將其留在視頻數據所到達的無論什麼存儲介質上。例如,幀可以留在DVD或硬碟驅動器上,並且在希望時可讀取它們的位置。
典型的反向表示器的方法實施例圖3顯示了用於反向重放包括已解碼參考幀的典型的反向表示器的方法實施例,但是高速緩存編碼的非參考幀。這種方法實施例可以以軟體、硬體或其組合的方式來執行。
在圖3的310,典型的反向表示器接收BOF,並且該接收的BOF的指示將被反向表示(即,反向重放)。
在312,典型的反向表示器正向解碼接收到的BOF的參考幀。
在314,典型的反向表示器存儲解碼的BOF的參考幀和仍被編碼的非參考幀。
在316,對於每個非參考幀,交換相鄰幀的幀索引。因此其顛倒了對非參考幀的相關性。
在圖3的318,典型的反向表示器顯示將被表示的BOF最後的參考幀。
在320,典型的反向表示器產生將被表示的BOF最後的非參考幀。基於其對高速緩存中已經解碼的參考幀的相關性,解碼該剛產生的非參考幀。
在322,其顯示剛產生的非參考幀,並優選的釋放用於存儲該剛產生的非參考幀的幀緩衝器。由於對於顯示或對於任何其它幀的進一步解碼都不再需要該剛產生的非參考幀,所以為了其它的使用可以釋放保持該剛產生的非參考幀的存儲器。其也有利於下一幀(在相反方向上)。
在324,如果下一個幀是非參考幀,則其重複步驟320和322,以相反順序出現每個非參考幀。如果不是,則進入到步驟326。
在326,如果下一個幀是參考幀,則其確定是否是BOF的最後的幀(在反向方向上,但其也是正向方向上的第一幀)。如果是,則進入到步驟328。如果不是,則下一個幀只是其他的參考幀,過程進行到步驟318。
在圖3的328,典型的反向表示器顯示與此BOF有關的最後的幀(在反向方向上,但其也是正向方向上的第一幀),該過程結束。
典型的操作為了按照圖3的方法實施例以反向順序播放BOF,典型的反向表示器接收由I1B2B3P4B5B6PBB9P10構成的示例的BOF。其也接收將以反向順序播放該BOF的指示。
典型的反向表示器正向解碼該參考幀,並將它們臨時存儲在高速緩存中。在此示例中,其正向解碼並高速緩存這些參考幀I1P4P7P10。
除了臨時存儲參考的未壓縮版本之外,典型的反向表示器也在高速緩存中存儲壓縮格式的非參考幀,即,B2B3,B5B6和B8B9。其也交換非參考幀的幀索引,以交換它們的幀相關性。這麼處理使得使用相鄰幀的反向解碼順序同時仍施加相同的剩餘糾正,而產生B-幀的已解碼宏塊。
典型的反向表示器安排被存儲和解碼的P10用於顯示(例如,再現和顯示)的時間順序。
其基於P7和P10產生B9。該產生是以依賴於P7和P10的B9為基礎的解碼或解壓縮。
其安排該存儲和正被解碼的B9的顯示時間,優選的將分配給B9的存儲器返回成自由共享。
由於下一個幀(當反向進行時)是另一個非參考幀(是B8),所以對B8重複上述的兩種動作(B-幀的產生和顯示)。
在B9和B8被解碼和顯示之後,則不再需要P10(因為其已經被表示,並且不再被用於相關性解碼)。因此,可以釋放用於P10的存儲器。
對於下一組(當反向進行時)P4B5B6P7重複上述對組P7B8B9P10操作的動作。
對於下一組(當反向進行時)I1B2B3P4現在重複上述對組P7B8B9P10操作的動作。
最後,典型的反向表示器安排被存儲和解碼的I1的顯示時間。由於I1是最後的幀(反向順序),所以它的顯示完成了由幀I1B2B3P4B5B6P7B8B9P10構成的示例BOF的反向重放。
而且,典型的反向表示器通過在每次解碼先前BOF的下一個參考幀時為當前BOF釋放參考幀緩衝器,可以使CPU使用平穩。這種方式使得當前一個剛完成就解碼下一個BOF。
選擇的參考幀的解碼和高速緩存此部分所述的典型的反向表示器的另一方面關注於參考幀(例如,I-/P-幀)的改進處理,以產生用於流的反向重放的改進方法。由這方面提供的改進沒有基於其非參考幀(例如,B-幀)的處理。但是,這個方面可與上述的一個方面組合,以進一步改善整體的反向重放功能。
通過典型的反向表示器的這個方面,其選擇地維持未壓縮的參考幀(例如,I-/P-幀)並重新產生其它幀。通過如此處理,降低了BOF序列的反向重放所需的臨時存儲器(例如高速緩存)的容量。通過此方面,可僅使用高速緩存中提供的少量幀緩衝器來執行反向重放。此處,「幀緩衝器」是配置用於存儲一個未壓縮幀的存儲器存儲位置。
儘管精確的策略可根據BOF序列的精確結構改變,但是為了使論述和說明清楚,在這部分中假設每個BOF具有單個關鍵幀(例如,I-幀),並由此幀開始。還假設關鍵幀後跟隨其它的參考幀(例如,P-幀)和非參考幀(例如,B-幀)。
為了選擇最好的解碼策略,可通過完全預先掃描BOF以發現BOF中幀的數量來改善這些策略。
對於典型的MPEG-2視頻流,三分之一的幀是I-或P-幀,並且BOF的大小大約是500ms。這映射到15幀,並產生具有5個參考幀的BOF。
存在一些具有多個關鍵幀(例如,I-幀)的更複雜的BOF結構。當反向重放時,這些結構被解壓縮成BOF子塊,每個子塊具有一個關鍵幀。此主題更多的論述見下面標題為「延伸至含有B-幀的BOF」的部分。
所採用的具體策略將根據BOF序列的具體BOF結構(例如,其I-、P-和B-幀位置和順序)而改變,具體的BOF結構是典型的反向表示器的一個主題。由於可根據局部參考幀生成非參考幀,所以參考幀的相對結構受這方面影響最大。
對於典型的反向表示器的這個方面,可以忽略非參考幀(例如,B-幀)。因此,此方面關注於參考幀。此處討論的參考幀的具體BOF結構包括單個I-幀,後面跟隨n-1個P-幀。因此,數量n是BOF結構中參考幀的數量。
這是公用的BOF結構,但是本領域技術人員應當理解和意識到其它的BOF結構也是可能的,還應當理解和意識到將如何對其它可能的結構應用該方面。
一些BOF結構可以從下一個BOF要求I-幀,以解碼最後的B-幀(例如,MPEG2「開放GOP」)。為了簡化說明而不尚失一般性,當前的BOF的定義傾向於包括下一個BOF的下一個I-幀。結尾的I-幀在當前的BOF結束處被稱作「P-幀」。
典型的反向表示器或者確定參考幀的數量n,或者為其設定上限。為了確定數量n,典型的反向表示器可以高速緩存並分析BOF的壓縮格式。或者,其可以使用時間間隔和BOF結構限制來估計參考幀的最大數量。
對於此論述,m表示可用於臨時存儲已解碼參考幀的幀緩衝器的數量,而n表示BOF序列中參考幀的數量。
對於n=1(則只有單個I-幀)的平常情況,只需要一個幀緩衝器。另一個平常情況是n=2。在此情況下,需要兩個幀緩衝器。這兩個平常情況假設存在一個(對於n=1的例子)或兩個(對於n=2的例子)幀緩衝器的情況。
如果n>2,則至少一個幀緩衝器用於第一個I-幀圖像,而至少一個幀緩衝器用於最後的將被表示的P-幀圖像。其餘的幀緩衝器(它們中的1至n-2個)可用於其它將被表示的P-幀圖像。此處,參考的幀「圖像」意味著幀的內容被完全解碼(例如,未壓縮的)。
如果n≤m,則存在足夠多的幀緩衝器,以正向解碼所有的參考幀然後以反向順序表示它們。
因此,典型的反向表示器的這個方面在具有多於兩個參考幀(n>2)且幀緩衝器少於參考幀(m>n)時特別有用。
使用選擇策略(例如此處論述的二元細分或其它的策略),典型的反向表示器在將被表示的參考幀中選擇,以將其解碼並存入幀緩衝器。
如果還沒有解碼和存儲,則正向解碼所有的參考幀需要解碼所選擇的參考幀。當如此解碼時,其臨時存儲解碼的BOF的參考幀,該參考幀在最後的將被表示的參考幀之前。如果已解碼的幀不是一個所選擇的幀,則丟棄該幀並釋放幀緩衝器。
典型的反向表示器將所選擇的幀存入幀緩衝器。其顯示最後一個存儲的將被表示的幀,然後釋放其使用的幀緩衝器。該緩衝器可以返回到空閒緩衝器的可用狀態,用於高速緩存解碼處理中隨後的幀。此觀察資料是提議的算法與二元細分之間的關鍵區別。其允許提議的算法明顯降低計算成本。
典型的反向表示器再次使用其選擇策略來選擇沒有被解碼和存儲在幀緩衝器中的另一個參考幀。重複上述的選擇、解碼、存儲和顯示功能,直到其顯示了BOF的所有參考幀。
如此處理,典型的反向表示器可以不止一次的很好的解碼一些參考幀。通常,解碼器具有比其顯示數據更快的解碼數據的能力。典型的反向表示器的這個方面利用了可用的空閒時間來根據需要重新產生未壓縮的幀,而不是在其需要之前高速緩存未壓縮的幀。
出於在存儲器資源與計算資源之間尋求平衡的目的,典型的反向表示器在高速緩存與重新產生幀之間做出決定。
典型的反向表示器的方法實施例圖4顯示了典型的反向表示器用於反向重放的方法實施例,典型的反向表示器選擇的解碼和高速緩存參考幀。該方法實施例可以由軟體、硬體或其組合的形式執行。
由於此方面關注於參考幀,所以下面所述的方法實施例忽略對非參考幀的任何操作。但是,下面所述的方法實施例可以與其它的對非參考幀(例如參照圖3所述的一個實施例)操作的實施例組合。
在圖4的410,典型的反向表示器接收BOF並反向表示(即,反向重放)該接收的BOF的指示。
在412,典型的反向表示器確定用於參考幀的數量n的值,其中n表示BOF中參考幀的實際數量,或參考幀的上限。為了確定此數量,典型的反向表示器可以高速緩存並分析BOF的壓縮格式,以識別和計算參考幀。或者,其可以使用時間間隔和BOF結構限制來估計參考幀的最大數量。
在414,典型的反向表示器確定m的值,其中m表示可用於臨時存儲已解碼的參考幀的幀緩衝器的數量。其可以通過存儲器跟蹤技術來實現此確定,存儲器跟蹤技術跟蹤幀緩衝器的具體數量以及存儲器系統中可用的存儲器位置。其也可以從這樣的存儲器跟蹤系統中接收此信息。
在416,其確定是否存在多於兩個的參考幀(n>2)並且幀緩衝器是否少於參考幀(m<n)。如果是,則過程進入到步驟418。否則,在430結束過程。
在圖4的418,典型的反向表示器選擇BOF的n個參考幀的m(或更小)大小的子集。如果任何的參考幀都已經被表示,則該參考幀不包括在該子集中。通常,這種選擇至少包括I-幀和最後將被表示的P-幀(其中「最後的」是以BOF的正向順序看的)。當具有兩個以上的幀緩衝器時,也選擇m-2個額外的P-幀(在I-幀和第一個將被表示的P-幀之間)。
可以採用多種選擇策略。一種策略是使用二元細分法從剩餘的參考幀中選擇。根據參考幀(n)的數量,典型的反向表示器可配置成採用下面標題為「用於小n的幀緩衝器選擇策略」、「用於中間n的幀緩衝器選擇策略」以及「用於大n的幀緩衝器選擇策略」的子部分所述的兩種選擇策略的一種。
在420,典型的反向表示器正向解碼所有的參考幀需要解碼所有已選擇的參考幀。如果已經存儲了對於解碼所選擇的參考幀必須的幀,則不必再解碼它。換言之,如果已選擇的參考幀已經被解碼並存儲在幀緩衝器中,則對其不用做任何事情。
當進行此解碼時,臨時存儲BOF的在最後將被表示的參考幀之前的每個已解碼的參考幀。如果已解碼的幀不是所選幀中的一個,則將其放棄,並且釋放其幀緩衝器以便存儲所選參考幀的一個。
將所選幀存儲在幀緩衝器中。在此運行的結束處,幀緩衝器存儲了所選的參考幀。
在422,顯示存儲在幀緩衝器中的最後將被表示的參考幀(例如,I-/P-幀)。由於這是BOF的反向重放,所以顯示最後將被表示的參考幀的過程產生了BOF的參考幀的反向表示。
此外,在參考幀的表示之間,典型的反向表示器也可以反向表示任何插入的非參考幀(例如,B-幀)。
在424,典型的反向表示器釋放其中存儲了剛被表示的參考幀的幀緩衝器。由於剛被表示的參考幀不再需要用於顯示或用於解碼任何其它幀,所以可以釋放保持它的存儲器用於其它的使用。
在426,如果剛被表示的參考幀是BOF的第一幀(例如,I-幀),則關於此BOF的過程結束。否則,過程回到步驟418來重複步驟418至426。通過對幀緩衝器的釋放,向上,在返回到步驟418時可以選擇新的參考幀。
用於小n的幀緩衝器選擇策略儘管選擇用於劃分「小」n、「中間」n、「大」n的臨界值整體上不是任意的,但是臨界值的選擇通常包括試探的階段。其很大程度依賴於典型的反向表示器的實際實施例的計算能力。例如,「小」與「中間」之間的臨界值可以大約是8,而「中間」與「大」之間的臨界值可以大約是500-1000。但是,可以利用此處所述的概念來調整臨界值,以滿足具體的實施需要。
因此,對於小數量(n)的參考幀(其中n≤8且m<n),典型的反向表示器的這種幀緩衝器利用下面顯示的表選擇策略。可以在上述圖3的步驟3 18中和周圍的運行中採用這種策略。這些表是通過最佳的小n算法的輸出產生的。
這些表假設BOF結構是I1P2P3...Pn且I幀的相對解碼成本類似於P幀。
兩個幀緩衝器(m=2)如果只有兩個幀緩衝器(m=2),則典型的反向表示器開始產生第一幀(例如,I1),並遞歸地產生最後將被表示的幀。可以丟棄I幀,有利於高速緩存後面的P幀以降低第一運行的長度。
下表顯示了對具有n=3至8的每個參考幀執行的解碼數量

表1
三個幀緩衝器(m=3)如果只有三個幀緩衝器(m=3),則典型的反向表示器產生第一幀,大約保持P幀一半,並使用最後兩個幀緩衝器遞歸地產生最後將被表示的幀。將它們存儲在三個幀緩衝器中的兩個。選擇剩餘參考幀的一個,並存儲在一個剩餘的幀緩衝器中。
通過選擇(用於選擇被存儲的參考幀)、產生和顯示運行的每次遞歸,選擇了新的最後將被表示的幀,並且第一幀與新的最後將被表示的幀之間的新的參考幀被存儲在幀緩衝器中。
下表顯示了對具有n=4至8的每個參考幀執行的解碼數量當m=3時,全部的解碼數量=2n-3。
典型的BOF結構具有5個參考幀(n=5)。因此,當m=3時,對於典型的BOF結構通常進行8次解碼。
四個幀緩衝器(m=4)如果有四個幀緩衝器(m=4),則可利用一個額外的幀緩衝器(當與m=3的情況相比時)來降低參考幀的重複解碼時間長度。此策略選擇在將被表示的幀序列中位於大約一半位置的幀。如此處理有助於將BOF分成兩半,其中解碼每一半。

表2此策略出於使一個或多個必須被解碼(或重複解碼)的幀跨度的大小最小化的目的來選擇幀。在此處理中,對於剩餘的將被表示的幀的全部解碼(和需要重複解碼)操作被遞歸地分成兩個子操作。每個子操作可以具有較少的幀緩衝器,並且可以使用具有可用幀緩衝器m較少的n較小的情況來解決。
例如,如果n=8(I1P2P3P4P5P6P7P8)並且我們選擇高速緩存幀4,則從P4...P8的第二解碼操作可以被視為具有5個幀和3個緩衝器的子問題(n=5,m=3,見前面的m=3表中n=5項)。在解碼第二子問題之後,剩餘的解碼I1P2P3P4的問題成為前面具有m=4個緩衝器的n=4的子情況。該選擇策略仍與n=4和b=4的情況相同,但是因為幀I1和P4被高速緩存,所以只有2個額外的參考幀必須被解碼。
五個幀緩衝器(m=5)如果m=5以及n=6,則只有一個幀(例如,幀P2)需要解碼。這使得總共有7個解碼。
如果m=5以及n=7,則只有2個幀(例如,幀P2P3)需要解碼。這使得總共有9個解碼。
如果m=5以及n=8,則只有3個幀(例如,幀P2、P3和P4)需要解碼。這使得總共有11個解碼。

表3*在P2至P5範圍內的任何兩個幀,選擇頭兩個對於解碼效率(高速緩存交疊)是有利的。
**在P2至P6範圍內的任何三個幀,選擇頭三個對於解碼效率(高速緩存交疊)是有利的。
六個幀緩衝器(m=6)如果m=6以及n=7,則只有一個幀(例如,幀P4)需要解碼。這使得總共有8個解碼。
如果m=6以及n=8,則只有2個幀需要解碼。這使得總共有10個解碼。

表4*在P2至P5範圍內的任何幀,選擇第一個對於解碼效率(高速緩存交疊)是有利的。
**在P2至P6範圍內的任何兩個幀,選擇頭兩個對於解碼效率(高速緩存交疊)是有利的。
七個幀緩衝器(m=7)如果m=7以及n=8,則只有一個幀(例如,幀P2)需要解碼。這使得總共有9個解碼。

表5*在P2至P5範圍內的任何幀,選擇第一個對於解碼效率(高速緩存交疊)是有利的。
全部解碼的總結

表6典型的反向表示器的選擇策略可以明顯地降低重複解碼的數量,同時也消除了對大量緩存(傳統的方法所需要的)的需要。
此處的可選實施例可以不使已解碼的I-幀保持為可用的。實際上,可以丟棄它,並在後面再次解碼。
用於中間n的幀緩衝器選擇策略因此,對於中間數量(n)的參考幀,典型的反向表示器的這種幀緩衝器利用下面所述的策略選擇策略(其中n約大於8且m<n)。可以在上述圖3的步驟318中和周圍的運行中採用這種策略。
此選擇策略也可以被稱作「記憶化(memoization)」策略。通常,「記憶化」是保存(即,記憶)稍後再次使用計算的結果而不是在相同條件下再次重複計算該結果的算法技術。
其焦點是遞歸地將BOF分成越來越小的跨度。跨度是所選幀(用於高速緩存)之間的幀。跨度長度是以跨度中有多少幀為基礎的。此選擇策略連續的將跨度分成更小的跨度,直到已知的跨度組合與已知的幀和緩衝器的組合匹配為止。
為了使用m個緩衝器以反向順序解碼和顯示n個幀,典型的反向表示器這種幀緩衝器選擇策略定義了「用於保持的第一幀」F(m,n)。在解碼之後,該第一幀不使其緩衝器立即釋放。幀在其中解碼的該緩衝器直到該幀實際已經被表示後才被釋放。任意地,第一幀的數量被選擇為1。
此選擇策略定義需要解碼的數量,以便使用D(m,n)的此算法的m個緩衝器以反向順序解碼和顯示n個幀。現在遞歸地計算F(m,n)和D(m,n)。注意,如果m≥n,則D(m,n)=n,F(m,n)=1。
如果m<n,通過找到用於所保持的第一幀的所有敏感值所需的最小解碼數量來執行遞歸,由此作為附帶推導出F(m,n)和D(m,n)假設用於保持的第一幀是x,則所需的解碼數量分解為

表7使這些量的和最小的x的值是F(m,n)。使這個和最小的x的最大值可以任意地選擇以避免模糊。
在計算遞歸過程中,D(i,j)和F(i,j)的值被集中在大小為m×n的陣列中。所以當值已經被計算一次時,不再需要上述的進一步搜索。
接下來,使用F(i,j)的值重構解碼序列。
用於大n的幀緩衝器選擇策略如此,對於大數量(n)的參考幀,典型的反向表示器的這種幀緩衝器利用下面所述的策略選擇策略(其中n約大於8且m<n)。可以在上述圖3的步驟318中和周圍的運行中採用這種策略。
此選擇策略也可以被稱作「標準化算術跨度寬度序列」策略。其焦點是跨度長度。跨度是所選幀(用於高速緩存)之間的幀。跨度長度是以跨度中有多少個幀為基礎的。此選擇策略嘗試使最長的多個跨度的多個重複解碼的長度最小化。
通常,幀緩衝器被重複解碼的次數與所選幀(被高速緩存在幀緩衝器中)之間的跨度成正比。當幀被表示時,它們的幀緩衝器是不再需要的,並且可以被重複用於高速緩存重複解碼的幀。
隨著n的大小的增加,選擇策略的置換最優化並不是與幀解碼的相對數量一樣有意義。選擇策略盡力使每個「重複解碼」塊的跨度長度最小化,同時當BOF被解碼時計算幀緩衝器的增加數量。
從最後將被解碼的幀開始,跨度長度與1、2、3、4、5、...、m-2(即,在幀索引順序中相對跨度寬度是m-2、m-1、...、3、2、1)成比例。對於第一幀、第n幀和與第n幀相鄰的一幀(即,在n-1),需要至少一個幀緩衝器以解碼最後的區間。在最後的區間被解碼之後,釋放緩衝器直到解碼下一個最後的間隔。因此具有m-3個緩衝器放置在n-2個幀的區間上。由此,用於在從2到n-1範圍內均勻展開它們的縮放因子通過下面的因子給出k=(n-2)/求和(sum)(1...m-2)=(n-2)/((m-2)×(m-1)/2)=2(n-2)/((m-2)×(m-1))按照循環,所選幀的位置是·f(m)=n·f(m-1)=n-1·f(m-1-i)=f(m-i)-取整(round)(k×i),對於i=1...m-3·f(1)=1例如,如果m=10個幀緩衝器用於n=100個幀,留下-個緩衝器用於解碼區間,則9個緩衝器是可用的,所以k=2×98/(8×9)=2.7。將選擇下面的幀f(1...m)用於高速緩存在幀緩衝器中f(10)=100f(9)=f(10)-1=99f(9-i)=f(10-i)-k×(i),對於i=1...7f(8)=f(9)-k×1=99-3=96f(7)=f(8)-k×2=96-5=91f(6)=f(7)-k×3=91-8=83f(5)=f(6)-k×4=83-11=72
f(4)=f(5)-k×5=72-14=58f(3)=f(4)-k×6=58-16=42f(2)=f(3)-k×7=42-19=21f(1)=1(注意如果i=8,則f(1)=f(2)-k×8=21-22=-1,約等於1)。
所以,幀1、21、42、58、72、83、91、96、99和100將被選擇用於高速緩存。
在解碼跨度之後,該算法遞歸地應用到上一個跨度。
在解碼過程中,幀1至100將首先被解碼一次(以產生高速緩存點),然後重複解碼的幀之間的間隔將只有2幀。這產生了對於給定幀的最多為3的最大重複解碼數。例如,為了解碼91...96,具有2個自由幀(99和100),所以94和95將被高速緩存(重複解碼92、93、94和95)。則2個幀對於解碼91和93(從95和96釋放)是可用的。類似的對於1...21,將有8個幀是可用的(應用相同的算術間隔算法,幀將是2倍的重複解碼成本)。
總的解碼成本大約是200(大約是2倍),但是對存儲器的需求降低了10倍。
這種選擇策略逐步增加了每個跨度的長度(相對於最後的幀)。
相反,二元細分算法將選擇幀1、50、75、87、93、96、99和100。平均起來,每個幀將被解碼ln(g)次,總的來說大約是700解碼成本。二元細分算法不利於任何超過「m」的可用的緩衝器,因此浪費了m-1n(g)=10-7=3個緩衝器。我們的第一種算法使用額外的緩衝器來將第一跨度減少至21的長度而不是50的長度。
含有B-幀的BOF的擴展部分如果BOF含有B-幀,則包括使用比BOF中具有的非參考幀更少的緩衝器的上述方案要求使用額外的緩衝器。該緩衝器用於保存最後解碼的參考幀,直到參考它的非參考幀被表示。
平滑計算負載期望儘可能相等的在每個幀顯示之間平衡解碼幀的成本。使每個幀顯示之間需要的解碼最大數量的最小化對於幀的平滑反向重放是最重要的因素。
在此情況下,包括使用比BOF中具有的非參考幀更少的緩衝器的上述用於反向重放的方案可以被修改以滿足此目的。一種在此方面改進該方案的方式是,當仍然有空閒緩衝器可以用於繼續解碼時,可延遲顯示一些已解碼的參考幀。這在靠近反向重放1個BOF的結束以及開始顯示前一個BOF時尤其重要。在此情況下,假設m幀是可用的,當還有m幀要被表示時,每個幀緩衝器將含有BOF中頭m幀中的一個。在此情況下,例如,當第m幀一被表示時,我們就釋放一個緩衝器,使其達到最好的負載平衡,使用該空閒的緩衝器可以解碼前一個BOF的多個幀。可以很容易地意識到,可以用於解碼前一個BOF的另外的緩衝器,當它們變成空閒時如何可以被使用。
也可以設計具體地被設計用於使最大解碼數量最小化或使用於解碼的最大時間最小化的算法。
分解成只具有一個I-幀的BOF上面的討論和解釋的典型的反向表示器,假設每個BOF具有單個關鍵幀(例如,I-幀)並由此開始。也假設了關鍵幀之後跟隨了其它的參考幀(例如,P-幀)和/或非參考幀(例如,B-幀)。
但是,存在更複雜的BOF結構。這些結構具有多個關鍵幀(例如,I-幀)。這些結構在反向重放時可以被分解成每個都具有一個關鍵幀的子BOF組,。例如,DVD的VOBU可以被視為由許多子BOF組構成的大的BOF。
如果BOF含有多個I-幀,則其可以被分解成多個子BOF組,每個組具有單個I-幀,且每個子BOF組由從一個I-幀至下一個I-幀的幀跨度而形成。
典型的反向表示器執行子BOF組的塊級反向表示。因此,每個子BOF組的幀在解碼時反向。每個子BOF組的第一幀可以被高速緩存,用於下一個子BOF組的解碼。
例如,假設輸入BOF為I1B2B3P4B5B6I7B8B9P10B11I12B13I14。從I-幀至I-幀的有效的子BOF是BOF1=I1B2B3P4B5B6I7BOF2=I7B8B9P10B11I12BOF3=I12B13I14在BOF3被解碼之後,當產生B11幀同時表示BOF2時,幀I12可以被保持。
因此,可以在圖3的步驟310或圖4的步驟410中期間執行此運行。在那些步驟的操作期間,接收的BOF被分解成多個子BOF組。其餘的每個過程對子BOF組進行操作,當完成時它們返回到開始處,以便對下一個子BOF進行操作。
具有複雜BOF結構的其它格式的擴展部分在最普通的視頻流格式中,B-幀是專用的非參考幀。但是,存在其它的複雜格式,例如H.264標準。這些格式具有更複雜的BOF結構,例如具有分級的參考幀的BOF。在這些複雜的格式中,B-幀可以用作其它B-幀的參考幀。
例如,假設存在序列I1B2B3B4B5B6I7B8B9B10B11B12I13B14I15的BOF結構,如圖5的BOF 500所示。
在此示例中,BOF 500包括參考幀510和非參考幀520。這些參考幀中的一些幀(特別是B2B4B6B8B11B14)是B-幀,並且通常只作為非參考幀。但是,在這些具有分級參考幀的複雜BOF結構中,這些B-幀是參考幀,因為其它的幀(特別是B3B5B9B10B12B14)依賴於它們。其可以被分解成三個子BOF,530、532和534。
典型的反向表示器執行塊反向分解(如上所述),該分解可以被應用到參考幀之間的每個區間(例如每個子BOF)。例如,圖5的子BOF 3(534)可以被反向並被表示。幀I13可以被高速緩存並用於反向和播放子BOF 2(532)。類似地,幀I7可以被高速緩存並用於反向和播放子BOF 1(530)。塊反向也可以用於偽參考幀515之間的子BOF。例如,B2...B6的子BOF 530可被分別分解成由B4...B6和B2...B4構成的兩個子子BOF。每個子子BOF可被單獨的反向。
或者,典型的反向表示器可以用其它的方式分解BOF,例如當其知道「區間參考幀」之間的參考幀的數量時。此處,區間參考幀是劃分每個間隔的I-幀,例如圖5中的I1、I7、I13和I15。子BOF1(530)的區間具有五個參考和偽參考幀(I1B2B4B6I7)和兩個非參考幀(B3B5)。
通過使用深度第一橫貫(traversavl)使BOF層級線性化,典型的反向表示器可以分配關鍵幀的高速緩存位置。這將大量的幀緩衝器分配給含有大量需要被重複解碼的幀的分支。
有效的區間寬度等於區間內參考幀的數量。分支中參考幀的數量有助於分配區間的權重。分支的權重是該區間及其所有子區間所需的幀緩衝器的最小數量。
具有部分幀解碼相關性的其它格式的擴展部分在最普通的視頻流格式中,產生的幀是完全由其它幀產生的。例如,B-幀可由兩個相鄰的關鍵幀重構。但是,也存在其它的更複雜的格式,例如H.264,其中幀可以被細分成更小的區域。幀可以被分成片(16像素高帶),片可以被分成宏塊(16×16像素塊),宏塊可以被分成子宏塊(四分之一或二分之一宏塊)等等。
通過用其它幀的一部分和修正因子來只替換幀的一部分從而執行修改,幀可以被編碼為先前幀的副本。
這些複雜因素並不影響典型的反向表示器的方法。非參考幀仍被定義為不用於產生其它幀的幀,而如果其仍被要求用於產生其它幀,則該幀為參考幀。
對於給定的GOP,典型的反向表示器創建直接的非循環相關性圖,類似於圖5所示。
典型的反向解碼器的方法實施例圖6顯示了由媒體流再現系統200(或其一部分)執行的典型的反向表示器的方法實施例。這個方法實施例可以由軟體、硬體或其組合來執行。
在圖6的610,典型的反向表示器將複雜的BOF分成多個區間,每個區間至少具有一個參考幀。
在612,典型的反向表示器對每個區間執行塊反向分解。
在614,將每個區間分成子區間,每個子區間具有至少一個偽參考幀。
在616,典型的反向表示器對每個子區間執行塊反向分解。
對子區間的每個級層重複步驟614和616。
計算解碼的成本通過此處所述的至少一種實施例,假設解碼參考幀(例如,I-/P-幀)的成本。更具體地,可以假設I-幀和P-幀的相對成本。
除了假設這些相對解碼成本,此處所述的方法實施例還可以計算解碼I-幀和P-幀的相對成本。
典型的環境圖7顯示了典型的環境700,在其中可以實施(部分或整體)此處所述的技術、系統和其它方面。典型的反向表示器700是電視娛樂系統,其促進了多媒體的分配。典型的數字視頻廣播(DVB)網絡是這種環境的一個示例。
環境700包括一個或多個多媒體內容提供者702、內容分配系統706和一個或多個顯示設備708(1)、708(2)、...、708(N),其經過廣播網絡710連接到內容分配系統706。
多媒體內容提供者702包括內容伺服器712和存儲的內容714,例如電影、電視節目、商業廣告、音樂和類似的音頻和/或視頻內容。內容伺服器712控制存儲的內容714從內容提供者702到內容分配系統706的分配。此外,內容伺服器702控制實時內容(例如,沒有事先存儲的內容,例如實況轉播提供的)和/或存儲在其它位置的內容到內容分配系統706的分配。
內容分配系統706可以連接到網絡720,例如經過內聯網或網際網路。內容分配系統706包括廣播發射器728和一個或多個內容處理器730。廣播發射器728經過廣播網絡710發射信號,例如有線電視信號。
內容分配系統706表示數據轉發服務,其向多個用戶提供多媒體內容。
廣播網絡710可以包括有線電視網絡、RF、微波、衛星、和/或例如網際網路的數據網,也可以包括使用任何廣播制式或廣播協議的有線或無線媒體。此外,廣播網絡710可以是使用任何類型的網絡拓撲結構和任何網絡通信協議的任何類型的網絡,可以被表示或以其它方式實施為兩種或多種網絡的組合。
在經過廣播網絡708傳送該內容之前,內容處理器730處理從內容提供者702接收的內容。特別的內容處理器730可以編碼,或以其它方式將接收的內容處理成可被連接到廣播網絡710的多個顯示設備708(1)、708(2)、...、708(N)識別的格式。
顯示設備708可以多種方式來實施。例如,顯示設備708(1)從基於衛星的發射器經過衛星天線734接收廣播內容。顯示設備708(1)也被稱作機頂盒或衛星接收設備。顯示設備708(1)連接到電視736(1)以及圖形用戶接口,用於顯示由顯示設備接收的內容(例如,音頻數據和視頻數據)。特別的顯示設備708可以連接到任何數量的電視736和/或類似的可以用於顯示或以其它方式再現內容的設備。類似地,任何數量的顯示設備708可以連接到單個電視736。
顯示設備708(2)也被連接用於從廣播網絡710接收廣播內容,並將接收的內容提供到相關的電視736(2)。顯示設備708(N)是電視738和集成的機頂盒740的組合的一個例子。在此示例中,機頂盒的各種部件和功能被結合在電視中,而不是使用兩個分開的設備。結合在電視中的機頂盒可以經過衛星天線(類似於衛星天線734)和/或經過廣播網絡710接收廣播信號,在可選的實施例中,顯示設備706可以經過網際網路或任何其它的廣播媒體接收廣播信號。
典型的環境700也包括存儲的點播內容742,例如視頻點播(VOD)電影內容。可通過屏幕上的電影指南由顯示設備708來瀏覽存儲的點播內容,例如,瀏覽者可以輸入指令將特定的電影或其它的存儲內容下載到對應的顯示設備708。
迄今為止,已經根據數字視頻廣播(DVB)環境說明了該典型的環境700。實際上,這是一個典型的環境。但是,在其沒有整個DVB環境的情況下也可以實施該典型的反向表示器。替代的,其可以通過例如設備708(X)所示的單機顯示設備來實施。
單機顯示設備708(X)從存儲介質744(例如DVD盤)中存取數字視頻。其將內容從介質提供到相關的電視739。這樣的單機顯示設備的例子包括DVD播放器、個人視頻記錄機等。
典型的顯示設備圖8顯示了顯示設備708的典型實施例800,如連接到電視736的單機單元所示。顯示設備708可以以任何數量的實施例來實施,包括作為機頂盒、衛星接收機、具有硬碟的TV記錄機、遊戲控制臺、信息裝置、DVD播放器、個人視頻記錄機以及前述的設備。
顯示設備708包括無線接收埠802,例如紅外(IR)或藍牙無線埠,用於從遙控器804、手持輸入設備806或例如無線鍵盤的任何其它的無線設備接收無線通信。手持輸入設備806可以是個人數字助手(PDA)、手持計算機、無繩電話等。此外,無線鍵盤808被連接用於與顯示設備708通信。在可選的實施例中,遙控器804、手持設備806和/或鍵盤808可以使用RF通信連結或其它方式發射,以便與顯示設備708通信。
顯示設備708可以具有存儲介質讀取器809,用於讀取內容存儲介質,例如DVD盤。單機或非單機顯示設備708可以包括存儲介質讀取器809。
顯示設備708可以從一個或多個廣播源(例如從衛星或從廣播網絡)接收一個或多個廣播信號810。顯示設備708包括硬體和/或軟體,用於接收和解碼廣播信號810,例如NTSC、PAL、SECAM或其它TV系統視頻信號。
顯示設備708也包括硬體和/或軟體,用於為用戶提供圖形用戶接口,例如通過該接口用戶可以訪問各種網絡服務,配置顯示設備708以及執行其它的功能。
顯示設備708可以經過一個或多個連接與其它的設備通信,連接包括電話連結812、ISDN連結814、電纜連結816、乙太網連結818、DSL連結820等。顯示設備708可以在特定的時刻使用一個或多個各種通信連結812-820,以便與任何數量的其它設備通信。
顯示設備708產生視頻信號820和音頻信號822,兩者都被傳到電視736。視頻信號和音頻信號可以經過RF(射頻)連結、S-視頻連結、複合視頻連結、組合視頻連結或其它通信連結從顯示設備708傳到電視736。
儘管圖8中沒有顯示,但是顯示設備708可以包括一個或多個用於識別設備當前狀態的發光體和其它的指示器。此外,顯示設備可以包括一個或多個控制按鈕、開關或其它用於控制設備的操作的可選控制。
圖9顯示了圖7和8中所示的顯示設備708的所選部件。顯示設備708包括第一調諧器900和可選的第二調諧器902。這些調諧器可被稱作接收單元。調諧器900和902表示一個或多個帶內調諧器,其調諧各種頻率和信道以接收電視信號,也表示用於調諧廣播信道的帶外調諧器,其中其它內容可以在廣播信道上發射到顯示設備708。
顯示設備708也包括一個或多個處理器304和一個或多個存儲器部件。可能的存儲器部件的例子包括隨機存取存儲器(RAM)906、盤驅動器908、大容量存儲部件910和非易失性存儲器912(例如,ROM、快閃記憶體、EPROM、EEPROM等)。
顯示設備708的可選實施例可以包括一定範圍的處理和存儲器容量,並且可以包括比圖9所示的更多或更少類型的存儲器部件。
處理器904處理各種指令,以便控制顯示設備708的操作,以及與其它電子和計算設備通信。存儲部件(例如,RAM 906、盤驅動器908、存儲媒體910和非易失性存儲器912)存儲各種信息和/或數據,例如多媒體數據、電子程序數據、網頁內容數據、顯示設備708的配置信息、和/或圖形用戶接口信息。設備可以將數據高速緩存到這些存儲部件的任何一種內。
作業系統914和一個或多個應用程式916可以存儲在非易失性存儲器912中,並在處理器904上運行,以便提供運行時間環境。運行時間環境通過允許定義各種接口,反過來允許應用程式916與顯示設備708交互,從而促進了顯示設備708的擴展性。
可以在顯示設備708上實施的應用程式916可以包括電子程序指南(EPG)、方便電子郵件的電子郵件程序等。
顯示設備708也可以包括電視娛樂系統固有的其它部件,出於簡單的目的在此例子中沒有顯示。例如,顯示設備708可以包括用戶接口應用程式和用戶接口發光體、按鈕、控制等,以方便瀏覽者與設備交互。
顯示設備708也包括解碼器920,以解碼廣播視頻信號,例如NTSC、PAL、SECAM或其它的TV系統視頻信號。其也可以是用於解碼數字壓縮視頻流(例如,按照MPEG形成的)的解碼器。這可以是與圖2的解碼器210、212和214相同類型的解碼器。
顯示設備708還包括無線接口922、網絡接口924、串行和/或並行接口926以及數據機928。無線接口922允許顯示設備708從用戶操作的輸入單元,例如從遠程控制設備或從其它的IR、藍牙或類似的RF輸入設備中接收輸入指令和其它的信息。
網絡接口924和串行和/或並行接口926允許顯示設備708經過各種通信連結與其它的電子和計算設備交互和通信。儘管沒有顯示,顯示設備708也可以包括其它類型的數據通信接口,以便與其它的設備通信。數據機928方便顯示設備708經過傳統的電話線與其它的電子和計算設備通信。
顯示設備708也包括視頻/音頻輸出930,其將信號提供給電視或處理和/或顯示或以其它方式再現視頻和音頻數據的其它設備。此輸出可被稱作顯示器。
顯示設備708也可以包括解碼控制器940,其部分和整體實施該典型的反向表示器。其可以是應用程式或硬體部件(或二者的組合)。
儘管分開的顯示,但是顯示設備708的一些組件可以實施在特定用途集成電路(ASIC)中。此外,系統總線(沒有顯示)通常連接顯示設備708內的各種部件。
典型的計算系統和環境圖10顯示了適當的計算環境1000的例子,在該環境內可以實施(或者全部或者部分)如此處所述的典型的反向表示器。計算環境1000可以被用於此處所述的計算機和網絡結構中。
典型的計算系統1000隻是計算系統的一個例子,並不意味著對計算和網絡結構的使用範圍或功能施加任何限制。計算系統1000或者應當被解釋為具有任何相關性,或者是要求涉及典型的計算環境1000中所示的任何一個部件或部件的組合。
典型的反向表示器可以通過多種其它一般目的或具體目的的計算系統環境或配置來實施。已知的計算系統、環境、和/或配置的例子可以適用於使用包括(但不限於)個人計算機、伺服器計算機、薄的客戶端、厚的客戶端、手持或臺式設備、多處理器系統、基於微處理器的系統、機頂盒、可編程消費電子產品、網絡PC、微機、大型計算機、包括任何上述的系統或設備的分配式計算環境等。
典型的反向表示器可以以計算機可執行指令的一般背景來說明,計算機可執行指令例如通過計算機運行的程序模塊。通常,程序模塊包括例行程序、程序、對象、要素、數據結構等,用於執行特定任務或實施特定摘要數據類型。典型的反向表示器也可以以分配式計算環境來實施,其中通過經由通信網絡連結的遠程處理設備來執行任務。在分配式計算環境中,程序模塊可以位於本地和遠程計算機的包括存儲器存儲設備的存儲媒體上。
計算環境1000包括計算機1002形式的通用計算設備,其可以是顯示設備708的另一個例子。計算機1002的部件可以包括(但不限於)一個或多個處理器或處理單元1004、系統存儲器1006和系統總線1008,其將包括處理器1004的各種系統部件連接到系統存儲器1006。
系統總線1008表示使用任何各種總線結構的一種或多種的任何幾種類型的總線結構,包括使用任何的各種總線結構的存儲器總線或存儲器控制器、外圍總線、圖形加速接口或本地總線。作為示例,這樣的結構可以包括卡總線(CardBus)、個人計算機存儲卡國際協會(PCMCIA)、加速圖形接口(AGP)、小型計算機系統接口(SCSI)、通用串行總線(USB)、IEEE 1394、視頻電子標準協會(VESA)本地總線,以及也被稱作夾層總線(Mezzanine bus)的周邊元件擴展接口(PCI)總線。
計算機1002通常包括各種計算機可讀媒體。這樣的媒體可以是任何可用的媒體,其可通過計算機1002存取,並包括易失性和非易失性媒體,以及可移動和不可移動的媒體。
系統存儲器1006包括易失性存儲器形式的計算機可讀媒體,例如隨機存取存儲器(RAM)1010,和/或非易失性存儲器,例如只讀存儲器(ROM)1012。含有基本例了程序的基本輸入/輸出系統(BIOS)1014被存儲在ROM 1012中,基本例行程序例如在啟動期間有助於在計算機1002內的元件之間傳遞信息的。RAM1010通常包括數據和/或程序模塊,通過處理單元1004可立即存取這些模塊和/或立即對其操作。
計算機1002也可以包括其它的可移動/不可移動的、易失性/非易失性的計算機存儲媒體。作為示例,圖10顯示了用於讀取和寫入不可移動的、非易失性磁媒體(沒有顯示)的硬碟驅動器1016,用於讀取和寫入可移動的、非易失性磁碟1020(例如,軟盤)的磁碟驅動器1018,以及用於讀取和/或寫入可移動的、非易失性光碟1024(例如,CD-ROM、DVD-ROM或其它光學媒體)的光碟驅動器1022。硬碟驅動器1016、磁碟驅動器1018和光碟驅動器1022,每個都通過一個或多個數據媒體接口1 026連接到系統總線1008。或者,硬碟驅動器1016、磁碟驅動器1018和光碟驅動器1022可以通過一個或多個接口(沒有顯示)連接到系統總線1008。
盤驅動器和與它們相關的計算機可讀媒體提供非易失性存儲的計算機可讀指令、數據結構、程序模塊和計算機1002的其它數據。儘管示例顯示了硬碟1016、可移動的磁碟1020和可移動的光碟1024,但是應當意識到,其它類型的可以存儲由計算機存取的數據的計算機可讀媒體也可以用於實施該典型的計算系統和環境,例如,盒式磁帶或其它的磁存儲設備、快閃記憶體卡、CD-ROM、數字通用盤(DVD)或其它的光學存儲器、隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等。
任何數量的程序模塊可以存儲在硬碟1016、磁碟1020、光碟1024、ROM1012、和/或RAM1010上,作為示例,程序模塊包括作業系統1026、一個或多個應用程式1028以及程序數據1032。
用戶可以經過輸入設備,例如鍵盤1034和定點設備1036(例如「滑鼠」)將指令和信息輸入到計算機1002中。其它的輸入設備1038(沒有具體顯示)可以包括麥克風、操縱杆、遊戲鍵盤、衛星天線、串口、掃描儀和/或類似設備。這些和其它的輸入設備經過連接到系統總線1008的輸入/輸出接口1040而連接到處理單元1004,但是也可以通過其它的接口和總線結構來連接,例如並口、遊戲埠或通用串行總線(USB)。
監視器1042或其它類型的顯示設備可以經過接口,例如視頻適配器1044連接到系統總線1008。除了監視器1042之外,其它的輸出外圍設備可以包括例如揚聲器(沒有顯示)和印表機1046的部件,其可以經過輸入/輸出接口1040連接到計算機1002。
計算機1002可以工作在網絡環境中,網絡環境使用邏輯連接到一個或多個遠程計算機,例如遠程計算設備1048。作為示例,遠程計算設備1048可以是個人計算機、可攜式計算機、伺服器、路由器、網絡計算機、同等設備或其它公用網絡節點等。遠程計算設備1048被示例顯示為可攜式計算機,其可以包括此處所述的有關於計算機1002的許多或全部的元件和特徵。
計算機1002與遠程計算機1048之間的邏輯連接被表示為區域網(LAN)1050,和一般的廣域網(WAN)1052。這樣的網絡環境在辦公室、企業寬的計算機網絡、內聯網和網際網路中是很平常的。
當以LAN網絡環境實施時,計算機1002經過網絡接口或適配器1054連接到本地網絡1050。當在WAN網絡環境中實施時,計算機1002通常包括數據機1056或其它用於在廣域網1052上建立通信的裝置。數據機1056可以是計算機1002的內部或外部設備,其可以經過輸入/輸出接口1040或其它適當的機構連接到系統總線1008。應當意識到,示例的網絡連接是典型的,也可以採用在計算機1002與1048之間建立通信連結的其它裝置。
在網絡環境中,例如示例的計算環境1000,程序模塊相對於計算機1002被描述,或其部分可以存儲在遠程存儲器存儲設備上。作為示例,遠程應用程式1058位於遠程計算機1048的存儲設備中。
出於示例的目的,應用程式和其它的可執行程序部件,例如作業系統,在此作為分開的塊被表示,儘管如此,應該意識到這樣的程序和部件存在於各個時期的計算設備1002的不同存儲部件中,並且通過計算機的數據處理器來運行。
計算機可執行指令可以以計算機可執行指令的一般背景來說明典型的反向表示器的實施例,計算機可執行指令例如是由一個或多個計算機或其它設備運行的程序模塊。通常,程序模塊包括例行程序、程序、對象、要素、數據結構等,其執行特定的任務或實施特定的摘要數據類型。通常,可以按照各個實施例所期望的來組合或分配程序模塊的功能。
計算機可讀媒體典型的反向表示器的實施例可以存儲在一些形式的計算機可讀媒體上或經過一些形式的計算機可讀媒體來傳輸。計算機可讀媒體可以是任何可通過計算機存取的可用媒體。作為示例(沒有限制性),計算機可讀媒體可以包括「計算機存儲媒體」和「通信媒體」。
「計算機存儲媒體」包括以任何方法和技術實施的易失性和非易失性的、可移動和不可移動的媒體,用於存儲信息,例如計算機可讀指令、數據結構、程序模塊或其它數據。計算機存儲媒體包括(但不限於)RAM、ROM、EEPROM、快閃記憶體或其它的存儲器技術、CD-ROM、數字通用盤(DVD)或其它的光學存儲器、盒式磁帶、磁帶、磁碟存儲器或其它的磁存儲設備,或任何其它可用於存儲想要的信息且可由計算機存取的介質。
「通信媒體」通常包括計算機可讀指令、數據結構、程序模塊、或以調製的數據信號形式的其它數據、例如載波或其它傳輸機制。通信媒體也包括任何信息傳遞媒體。
術語「調製的數據信號」意為具有一個或多個特徵集的或以可將信息編碼在信號中的方式被改變的信號。作為示例(沒有限制性),通信媒體包括有線媒體,例如有線網絡或直接有限連接,還包括無線媒體,例如聲學的、RF、紅外和其它無線媒體。上述方式的任何組合也包含在計算機可讀媒體的範圍內。
結論儘管已經以專用於結構特徵和/或方法步驟的語言說明了本發明,但是應當理解,權利要求中定義的本發明並不限於所述的具體特徵或步驟。確切的是,具體的特徵和步驟作為實施所要求保護的本發明的優選形式來說明。
權利要求
1.一種具有計算機可執行指令的計算機可讀介質,當計算機運行該指令時,其執行一種促進媒體流的幀塊(BOF)的反向表示的方法,該BOF是具有已定義正向表示順序的幀的序列,每個幀被分類為參考幀或非參考幀,參考幀是具有BOF中至少一個其它幀用作對其固有已編碼數據解碼的參考的數據的幀,而非參考幀是具有不被BOF中另一幀所參考的已編碼數據的幀,該方法包括獲得媒體流的BOF;正向解碼和存儲BOF的一個或多個已解碼的參考幀;存儲BOF的非參考幀,而其數據仍被編碼;以從序列的最後幀開始的序列的反向順序,對於含有非參考幀和至少一個相鄰參考幀的每個子序列重複下面過程,並持續該重複過程直到達到第一幀為止●如果反向順序中下一個將被表示的幀是參考幀,則表示BOF中該參考幀;●產生BOF中的非參考幀的下一個將被表示的子序列;●以序列的反向順序表示一個或多個剛產生的非參考幀;●釋放存儲了剛被表示的非參考幀的存儲器;以及●如果反向順序中下一個將被表示的幀是參考幀,則表示BOF中的該參考幀;表示序列的第一參考幀。
2.如權利要求1所述的介質,其中對每個剛產生的非參考幀的表示發生在下一個將被表示的子序列的每個非參考幀產生之後。
3.如權利要求1所述的介質,其中釋放發生在剛表示的非參考幀參考的所有參考幀表示之後。
4.如權利要求1所述的介質,進一步包括釋放存儲了一個或多個剛表示的參考幀的存儲器。
5.如權利要求1所述的介質,其中該方法進一步包括接收由序列中多個BOF構成的超級BOF,其中每個BOF具有一個關鍵幀,其不依賴於其它的幀而解碼;將該超級BOF分解成多個BOF;重複權利要求1所述的步驟,其中多個BOF中不同的一個以該超級BOF中的BOF序列的反向順序被提供給獲得步驟。
6.如權利要求1所述的介質,其中該方法進一步包括接收由序列中多個BOF構成的超級BOF,其中每個BOF具有一個在序列開始處的不依賴於其它幀而解碼的關鍵幀,以及一個在序列結束處的不依賴於其它幀而解碼但是是下一個邏輯BOF的一部分的關鍵幀;將該超級BOF分解成多個BOF;重複權利要求1所述的步驟,其中多個BOF中不同的一個以該超級BOF中的BOF序列的反向順序被提供給獲得步驟。
7.一種計算設備,包括一個輸入設備,配置用於接收媒體流;一個顯示設備,配置用於顯示所要表示的幀;一個如權利要求1所述的介質。
8.一種具有計算機可執行指令的計算機可讀介質,當計算機運行該指令時,其執行一種促進媒體流的幀塊(BOF)的反向表示的方法,該BOF是具有已定義正向表示順序的幀的序列,每個幀被分類為參考幀或非參考幀,參考幀是具有至少一個其它幀用作對其固有已編碼數據解碼的參考的數據的幀,而非參考幀是具有不被BOF中另一幀所參考的已編碼數據的幀,該方法包括獲得媒體流的BOF;正向解碼BOF的一個或多個參考幀;存儲BOF的已解碼的參考幀;存儲BOF的其數據仍被編碼的非參考幀;以序列的反向順序,選擇地解碼非參考幀;以反向順序表示該序列;釋放存儲了已經表示的非參考幀的存儲器。
9.如權利要求8所述的介質,其中該方法還包括以序列的反向順序選擇地解碼參考幀。
10.如權利要求8所述的介質,其中在以反向順序表示BOF的任何幀之前,少於所有的非參考幀被解碼。
11.如權利要求8所述的介質,其中釋放進一步包括,在參考剛被表示的參考幀的所有非參考幀被表示之後,釋放存儲了剛被表示的非參考幀的存儲器。
12.如權利要求8所述的介質,其中釋放進一步包括,在參考剛被表示的參考幀的所有非參考幀被表示之後,釋放存儲了剛被表示的非參考幀的存儲器,其中該方法進一步包括使用這樣的存儲器以便有助於解碼將被表示的幀的子序列。
13.如權利要求8所述的介質,其中該方法進一步包括接收由序列中多個BOF構成的超級BOF,其中每個BOF具有一個關鍵幀,其不依賴於其它的幀而解碼;將該超級BOF分解成多個BOF;重複權利要求8所述的步驟,其中多個BOF中不同的一個以該超級BOF中的BOF序列的反向順序被提供給獲得步驟。
14.一種計算設備,包括一個輸入設備,配置用於接收媒體流;一個顯示設備,配置用於顯示所要表示的幀;一個如權利要求8所述的介質。
15.一種具有計算機可執行指令的計算機可讀介質,當計算機運行該指令時,其執行一種促進媒體流的幀塊(BOF)的反向表示的方法,該BOF是具有已定義正向表示順序的幀的序列,包括其後跟隨多個已編碼幀的關鍵幀,已編碼幀逐步依賴於在其之前用於產生的序列中的一個或多個幀,該方法包括獲得媒體流的BOF;在BOF的結束處開始,對BOF表示的所有非關鍵幀,重複以下過程選擇將被表示的這些幀的一個或多個幀;以反向順序,確定哪個幀是下一個將被表示的幀;如果下一個將被表示的幀已經產生,並且存儲在存儲器中,則表示該下一個將被表示的幀,否則●產生在下一個將被表示的幀之前的、對於產生下一個將被表示的幀是必要的幀,但是僅產生沒有存儲在該存儲器中的幀;●在產生期間,存儲通過選擇步驟選擇的該產生的幀;●進一步產生下一個將被表示的幀;●表示下一個將被表示的幀;作為條件的優點,重複選擇、確定的動作,以及如果、則、否則等條件動作,直到BOF的關鍵幀被表示為止。
16.如權利要求15所述的介質,其中產生步驟和進一步產生步驟包括基於其擁有的數據以及基於BOF中其它幀的數據解碼幀。
17.如權利要求15所述的介質,其中存儲步驟包括只存儲通過選擇步驟選擇的該產生的幀。
18.如權利要求15所述的介質,其中在表示之後,該方法進一步包括釋放存儲了剛被表示的幀的存儲器。
19.如權利要求15所述的介質,其中該方法進一步包括存儲BOF的其數據仍被編碼的非參考幀,非參考幀是具有已編碼數據的幀,該已編碼的數據不被BOF中其它幀所參考;以序列的反向順序,選擇地解碼非參考幀。
20.如權利要求15所述的介質,其中該方法進一步包括存儲BOF的其數據仍被編碼的非參考幀,非參考幀是具有已編碼數據的幀,該已編碼的數據不被BOF中其它幀所參考;以序列的反向順序,選擇地解碼參考幀和非參考幀。
21.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行二元細分以基本上識別用於選擇的大約m幀。
22.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的參考幀;映射序列中剩餘的將被表示的幀的相對位置;執行二元細分以基本上識別用於選擇的大約m幀。
23.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行二元細分以基本上識別用於選擇的m或更少的幀。
24.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的參考幀;映射序列中剩餘的將被表示的幀的相對位置;執行二元細分以基本上識別用於選擇的m或更少的幀。
25.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀,其中幀的選擇在朝向序列中剩餘的將被表示的幀的結束處被更重的加權。
26.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的參考幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀,其中幀的選擇在朝向序列中剩餘的將被表示的幀的結束處被更重的加權。
27.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀,其中幀的選擇在朝向序列中剩餘的將被表示的幀的結束處被更重的加權,並且幀的選擇產生與反向的算術序列成比例的間隔。
28.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀;參考存儲在存儲器中的一個或多個選擇表以識別用於選擇的m或更少的幀。
29.如權利要求15所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的參考幀;映射序列中剩餘的將被表示的幀;參考存儲在存儲器中的一個或多個選擇表以識別用於選擇的m或更少的幀。
30.如權利要求15所述的介質,其中該方法進一步包括接收由序列中多個BOF構成的超級BOF,其中每個BOF具有一個不依賴於其它的幀而解碼的關鍵幀;將該超級BOF分解成多個BOF;重複權利要求15所述的步驟,其中多個BOF中不同的一個以該超級BOF中的BOF序列的反向順序被提供給獲得步驟。
31.如權利要求15所述的介質,進一步包括計算解碼幀的成本。
32.如權利要求15所述的介質,進一步包括計算關鍵幀和BOF的一組中的逐步相關幀的成本。
33.一種計算設備,包括一個輸入設備,配置用於接收媒體流;一個顯示設備,配置用於顯示所要表示的幀;一個如權利要求15所述的介質。
34.一種具有計算機可執行指令的計算機可讀介質,當計算機運行該指令時,其執行一種促進媒體流的幀塊(BOF)的反向表示的方法,該BOF是具有已定義正向表示順序的幀的序列,包括其後跟隨多個已編碼幀的關鍵幀,已編碼幀逐步依賴於在其之前用於解碼的序列中的一個或多個幀,該方法包括獲得媒體流的BOF;在BOF的結束處開始,對BOF表示的所有非關鍵幀,重複以下過程●以反向順序,表示下一個將被表示的幀;●在表示下一個將被表示的幀之前,正向解碼在下一個將被表示的幀之前的、對於解碼下一個將被表示的幀是必要的幀;●選擇哪一個已解碼的幀存儲在存儲器中,其中該選擇的產生的幀少於BOF的所有幀;●存儲該選擇的已解碼的幀;進一步表示該關鍵幀。
35.如權利要求34所述的介質,其中選擇的解碼幀是參考幀。
36.如權利要求34所述的介質,其中已經被解碼和存儲在該存儲器中的幀被排除在正向解碼之外。
37.如權利要求34所述的介質,其中已經被解碼和存儲在該存儲器中的幀被排除在正向解碼之外,這些被排除的幀在通過選擇步驟選擇的幀之中。
38.如權利要求34所述的介質,其中在表示之後,該方法進一步包括釋放存儲了剛被表示的幀的存儲器。
39.如權利要求34所述的介質,其中該存儲器進一步用於幫助解碼幀。
40.如權利要求34所述的介質,其中該方法進一步包括存儲BOF的其數據仍被編碼的非參考幀,非參考幀是具有已編碼數據的幀,該已編碼的數據不被BOF中其它幀所參考;以序列的反向順序,選擇地解碼非參考幀。
41.如權利要求34所述的介質,其中選擇的已解碼幀是參考幀,且其中該方法進一步包括存儲BOF的其數據仍被編碼的非參考幀,非參考幀是具有已編碼數據的幀,該已編碼的數據不被BOF中其它幀所參考;以序列的反向順序,選擇地解碼非參考幀。
42.如權利要求34所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀。
43.如權利要求34所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的參考幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以識別用於選擇的m或更少的幀。
44.如權利要求34所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀,其中幀的選擇在朝向序列中剩餘的將被表示的幀的結束處被更重的加權。
45.如權利要求34所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀的相對位置;執行遞歸細分以基本上識別用於選擇的大約m幀,其中幀的選擇在朝向序列中剩餘的將被表示的幀的結束處被更重的加權,並且幀的選擇產生與反向的算術序列成比例的間隔。
46.如權利要求34所述的介質,其中選擇步驟包括確定存儲器的可用幀緩衝器的數量m,每個幀緩衝器可以存儲已解碼的幀;映射序列中剩餘的將被表示的幀;參考存儲在存儲器中的一個或多個選擇表以識別用於選擇的m或更少的幀。
47.如權利要求34所述的介質,其中選擇步驟包括接收由序列中多個BOF構成的超級BOF,其中每個BOF具有一個關鍵幀;將該超級BOF分解成多個BOF;重複權利要求34所述的步驟,其中多個BOF中不同的一個以該超級BOF中的BOF序列的反向順序被提供給獲得步驟。
48.一種計算設備,包括一個輸入設備,配置用於接收媒體流;一個顯示設備,配置用於顯示要表示的幀;一個如權利要求34所述的介質。
49.如權利要求34所述的介質,其中選擇步驟包括接收一組幀,其中解碼對其它幀的片段具有相關性的幀;確定存儲器的可用幀緩衝器或幀緩衝器片段的數量m,每個幀緩衝器片段可以存儲部分的已解碼的幀;映射序列中剩餘完成的將被表示的幀片段;參考存儲在存儲器中的一個或多個選擇表或使用選擇策略以識別用於選擇的m或更少的幀片段。
50.如權利要求49所述的介質,其中該方法進一步包括幀片段包括片、宏塊、子宏塊或子宏塊的片段。
51.如權利要求49所述的介質,其中在顯示之後,該方法進一步包括釋放存儲了剛被表示的幀的存儲器。
52.如權利要求34所述的介質,進一步包括計算解碼幀的成本。
全文摘要
此處公開了一種方便已編碼的數字媒體流的反向表示的實施例。摘要本身並不限制本發明的範圍。本發明的範圍在後附的權利要求中指出。
文檔編號H04N5/85GK1725844SQ200510092239
公開日2006年1月25日 申請日期2005年5月17日 優先權日2004年5月17日
發明者G·J·沙利文, G·F·伊文斯, R·C·B·斯彼得, S·C·羅佛 申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀