專利名稱:用于多路復用h.264基本流的方法和裝置的制作方法
技術領域:
本發明總體上涉及圖像處理。更具體地,本發明涉及AVC (高級視頻編解碼器)基 本流的多路復用。
背景技術:
數字廣播工業當前采用了多種高級技術,包括高清晰度、網際協議電視(IPTV)以 及移動視頻。這些技術的關鍵促成者是壓縮效率,以及因此對H. ^4/AVC (高級視頻編解 碼器/MPEG-4,部分10)視頻編解碼器的較低帶寬需求。MPEG-2 (“活動圖像專家組”)和 “H. 264"(這二者是活動圖像編碼過程的國際標準)已定義了作為壓縮單元的圖像幀或圖像 場,被稱為“圖片”。每個“圖片”被用作編碼過程和解碼過程中的接入單元(AU)。為了將H.264/AVC作為附加基本流(ES)類型合并到MPEG-2傳輸流(TS)中, MPEG-2標準的擴展已使得它可以是廣播電臺和網絡運營商容易取得的并且對他們具有吸 引力。基本流(ES)基本上是一個音頻或視頻信號的原始壓縮表示。基本流的格式取決 于編解碼器或流中所攜帶的數據,并且在將該流分組成分組的基本流時,其攜帶公共報頭。在MPEG-2系統中,視頻基本流被組裝成分組的基本流(PES)。在分組的基本流的 報頭中攜帶呈現時間戳(PTS)。當啟用雙向預測編碼時,還在I-或P-圖片的PES報頭中攜 帶解碼時間戳(DTS)。當以延遲的模式多路復用時,H. 264視頻基本流通常被存儲為文件。H. 264視頻基 本流包括網絡抽象層(NAL)單元語法結構序列。NAL單元被分類成視頻編碼層(VCL)和非 VCL NAL單元。VCL NAL單元包含表示視頻圖片的數據;非VCL NAL單元包含附加信息,例 如應用于大量VCL NAL單元的序列參數集(SPS)和圖片參數集(PPS)。序列參數集(SPS)中 的參數包括對幀數目、圖片順序計數(POC)和流的幀速率的標識符限制。SEI NAL單元也被 編碼以增強可用性,然而,對于解碼VCL NAL單元不是必要的。典型地,在解碼切片報頭和切片數據之前,一個或多個序列參數集和圖片參數集 被發送到解碼器。編碼的切片報頭涉及圖片參數集并且這激活了特定圖片參數集。被激活 的圖片參數集然后保持有效直到在另一個切片報頭中涉及不同的圖片參數集而使該不同 的圖片參數集被激活為止。類似地,圖片參數集涉及激活序列參數集的標識符。被激活的 SPS保持有效直到不同的序列參數集被激活為止。H. 264視頻基本流可以被看作編碼的視頻序列。編碼的視頻序列包括一個或多個 接入單元。每個接入單元(AU)是總是精確地包含一個基本編碼圖片的NAL單元集合。除 了基本編碼圖片之外,AU還可以包含一個或多個冗余編碼圖片或者不包含編碼圖片的切片 或切片數據分區(partition)的其它NAL單元。AU的解碼總是產生解碼的圖片。在圖1中 示出傳統接入單元的一般結構。分組的基本流(PES):對于實際用途,需要將攜帶來自壓縮器的音頻或視頻的無限 連續基本流分成PES分組。這些分組被包含時間戳(PTS和DTS)的報頭標識以用于同步。PES分組可以被用來創建程序流或傳輸流。在壓縮之后,因為雙向編碼,圖片將會被失序發 送。它們需要可變數量的數據并且因為多路復用和傳輸而經歷可變的延遲。為了保持音頻 和視頻鎖定在一起,時間戳被周期性地合并到每個圖片中。時間戳是一個33位數字,其是由90kHz時鐘驅動的計數器的采樣。通過將27MHz 程序時鐘除以300來獲得該時鐘。因為呈現時間是均勻間隔的,所以沒必要在每個呈現單 元中包括時間戳。而是,時間戳可以由解碼器插值,但是在程序流或傳輸流中它們不得分開 多于700ms。時間戳指示特定接入單元在時間上屬于何處。通過將時間戳合并到視頻和音頻 PES分組二者中的報頭中來獲得口型同步(Lip sync)。當解碼器接收到所選擇的PES分組 時,它解碼每個接入單元并且將其緩存到RAM中。當時間線計數達到時間戳的值時,RAM被 讀出。該操作具有兩個期望的結果。首先,在每個基本流中獲得有效時間基礎校正。其次, 可以使視頻和音頻基本流一起同步來制成程序。PES分組被分成固定的188字節TS分組。傳輸流(TS)分組總是以報頭開始。分 組的剩余部分攜帶被稱為有效載荷的數據。每個PES分組形成TS分組的有效載荷。TS報 頭相對較小,但是對于特定用途(例如為了攜帶PCR),該報頭可以被擴展。在這種情況下,有 效載荷會變得更小以使得TS分組的總大小不被改變。圖2描繪將音頻和視頻流多路復用成單個傳輸流的傳統方法。分組器20 和202b 分別從視頻編碼器201a和音頻編碼器201b接收視頻流和音頻流。這些流在TS多路復用 器203中被多路復用以在輸出端處獲得單個傳輸流。每個接入單元包含基本編碼圖片。該 基本編碼圖片可以是I切片(在IDR的情況下為內部切片,切片包含整數個宏塊),P切片(預 測切片),或B-切片(可以使用內部預測來解碼的切片)。通過解碼切片報頭的切片_類型 (slice_type)來獲得所攜帶的圖片類型。當基本流包含具有B-幀的接入單元時,連續編碼 的B-幀的數目是可變的和未綁定的。比特流中編碼幀的順序(也被稱為編碼順序)是解碼 器重構它們的順序。重構幀在解碼過程輸出處的順序(也被稱為顯示順序)不總與編解碼器 順序相同。在PES報頭中編碼呈現時間戳和解碼時間戳,其確定圖片的解碼和顯示順序。序列參數集還包含視頻可用性信息(VUI)。通過視頻可用信息來用信號通知HRD (假設參考解碼器)參數。HRD參數包含比特率信息以及編碼圖片緩沖器和解碼圖片緩沖器 的值。HRD被用來檢查比特流和解碼器的一致性。而且,HRD參數連同可選的SEI消息(當 其存在時)一起幫助計算流中編碼的圖片的PTS和DTS值。參見H. 264標準的附錄C以得 到更多信息。當在編碼的視頻可用性信息(VUI)中H. 264視頻基本流不具有HRD參數時,參考 參數列表列表0和列表1的數目可以被用于預測。然而,這可能是個麻煩的過程。因此,需求一種消除對構造(如在標準中所描述的)參考列表列表0和列表1來獲 得對于不具有編碼的定時信息的那些基本流的定時信息的需要的方法。
發明內容
本發明的目的是提供一種機制,其可以應用于不具有編碼的定時參數的高清晰度 視頻基本流的延遲時間多路復用中。本發明的另一目的是提供一種用于生成視頻基本流的有效多路復用以生成傳輸流(TS)的方法。相應地,本發明的實施例提供一種在沒有編碼的定時信息的情況下多路復用基本 流的裝置和方法。在一些實施例中,構造“η”個接入單元(AU)并將其一個接一個地推入到列表中。 每個接入單元能夠前瞻(looking ahead)以獲得關于下一接入單元的定時的信息。通過由 列表的最頂部接入單元計算定時信息來構造報頭。將所述報頭寫入到TS中,并且用來自所 述基本流的數據填充TS的剩余字節。由此,構造出傳輸流。在一些實施例中,迭代地檢查每一個接入單元中編碼的基本圖片類型,并且相應 地計算包括對于每個接入單元的呈現時間戳(PTS)和解碼時間戳(DTS)的定時信息。而且, 對于基本流推導出可變幀速率(tc )。如果編碼的基本圖片類型是B幀,則如下計算dts和pts dts (n) =dts (n-1) +tc,以及
pts(η) =dts (η);
在B幀的pts和dts之間不包括任何偏移的情況下,解碼所述B幀并同時呈現。對于P和I類型的圖片幀,如下計算dts和pts dts (n) =dts (n-1) +tc,以及
pts (η)=dts(η)+pts_offset*tc ;
接下來,對于在下一 I幀或P幀出現之前的B幀的數目(pts_0ffset)檢查接入單元。從附圖以及下面的詳細描述,本發明的其它特征將變得顯而易見。
將參考本發明的實施例,可以在附圖中說明其示例。這些圖旨在是說明性的而非 限制性的。盡管在這些實施例的背景中大致描述了本發明,但是應該理解它不打算將本發 明的范圍限制為這些特定實施例。圖1說明傳統接入單元的一般結構。圖2描繪用于將音頻和視頻多路復用成單個傳輸流的傳統方法。圖3描繪根據本發明的實施例的前瞻方法(look-ahead method)的流程圖。圖4描繪根據本發明的實施例將高清晰度視頻基本流多路復用成傳輸流的方法。圖5描繪根據本發明的實施例的多路復用裝置的框圖。
具體實施例方式本文所描述的是用于多路復用不具有編碼的定時信息的高清晰度視頻基本流來 創建傳輸流(TS)的裝置和各種方法。在一些實施例中,構造“η”個接入單元(AU)并將其 一個接一個地推入到列表中。每個接入單元能夠前瞻以獲得關于下一接入單元的定時的信 息。通過由列表的最頂部接入單元計算定時信息來構造報頭。將所述報頭寫入到TS中,并 且用來自所述基本流的數據填充TS的剩余字節。由此,構造出傳輸流。如上文所解釋的那樣,本發明的實施例目的在于提供一種機制,其可以應用于不 具有編碼的定時參數的高清晰度視頻基本流的延遲時間多路復用中。為此,下文描述一種前瞻方法,并且還在圖3中示出該前瞻方法。該前瞻方法是一
6種在不構造(如在標準中所描述的)參考列表列表0和列表1的情況下在解碼過程中進行幀 重新排序的方式。當視頻序列不包含B-幀時,編碼的順序總是與顯示順序相同。B-切片的 出現意味著視頻幀的編碼順序將不同于顯示順序。當編碼的幀被多路復用時,其順序不應 該改變,這意味著與它們相關聯的PTS值將向上和向下跳一個比特。計算時間戳的前瞻方法
圖3描繪根據本發明的實施例的前瞻方法的流程圖。該前瞻方法保持“η”個接入單元 的列表,即被用于多路復用的有效AU列表。在步驟301中并且在開始時,該列表是空的。當 將基本流轉換成分組的基本流時,記下開始點(start point)。在步驟302中,從開始讀取 基本流直到它形成單個接入單元為止。還在步驟302中記下結束點(end point)。一個接入單元是表示小的數據邏輯單元的基本流的一個段。通常,接入單元可以 被直接使用,而不用參考基本流的其它部分。例如,當單個視頻幀被解碼時,其可以是接入 單元,或者是代表32ms時間段的文件的一部分。在一些實施例中,在每一個接入單元中編碼的基本圖片類型被迭代地檢查,并且 相應地計算包括對于每個接入單元的呈現時間戳(PTS)和解碼時間戳(DTS)的定時信息。 而且,對于基本流推導出可變幀速率(tc)。在步驟303中,針對B-類型基本圖片類型檢查 每個AU以便可以在接下來的步驟中計算PTS和DTS值。為了計算PTS和DTS值,最初如下推導出變量tc(或幀速率/場速率,這視情況而 定)并且所述變量tc被稱為時鐘計時單元(clock tick)。tc = num_units_in_tick / time_scale, η = 0,
dts(n-l) = 0,
pts(n-l) = 0,因為 activeAUlist (有效 AU 列表)是空的。num_units_in_tick和time_SCale是有效序列參數集的視頻可用性信息的一部 分。當序列參數集變成有效時(這取決于在有效圖片參數集中編碼的標識符),值tc可 以改變并且在整個流中它將不會保持固定。在單個接入單元被形成之后,將其推到activeAUlist。根據在被推到列表的接入 單元中編碼的圖片,判定是否查找在該流中出現的下一幀。如上文在步驟303中所提到的 那樣,針對B-類型基本圖片類型檢查每個AU。如果在所形成的AU中編碼的基本圖片是B 幀,則在步驟 305 中,如下計算 DTS 和 PTS :dts (η) =dts (n_l) +tc,以及 pts (η) =dts (η)。解 碼所述B幀并同時呈現。在B幀的pts和dts之間不存在偏移。在步驟304中,記下AU的結束并且PTS偏移被設置為零。對于其他幀I或P,在 步驟306中,構造接下來的接入單元,并且在步驟307中,對于在下一 I幀或P幀出現之前 的B幀的數目(pts_0ffset)檢查接下來的AU。一旦該信息可用,在步驟308中,如下計算 DTS 禾口 PTS :dts (η) =dts (n_l) +tc,以及 pts (η) =dts (η) +pts_offset*tc。現在,文件指針被存儲回到接入單元(η)的結束,在步驟309中其被推到 activeAUlist。這是形成接入單元的一個迭代。對于后續的迭代,在步驟310中“η”的值 被增加1并且重復步驟301到309。對于不將HRD參數作為它們的SPS的VUI語法元素的一部分的流遵循該前瞻方法。對于攜帶HRD信息作為它們的SPS的一部分的流,SEI信息和HRD參數(Nal hrd或vcl hrd,不管哪個被編碼)被用來計算定時信息。對于計算接入單元的定時的等式請參見用于 一般視聽服務的ITU -TH. 264高級視頻編碼的附錄C。使用前瞻方法形成的該activeAUlist被用于多路復用。圖4描繪根據本發明的 實施例將H. 264基本流多路復用成傳輸流的方法。現在參考圖4,在步驟401中,列表的頂部元素包含要被寫入到傳輸流的接入單元 (AU)0在步驟402中,AU的開始被檢查。在步驟403中,當AU在TS分組中開始時,payloacL unitstartjndicator(有效載荷_單元_開始_指示符)被標記為真,并且在步驟404中, TS報頭被寫入到TS分組。這指示TS有效載荷包含PES開始。因此,在步驟405中再次檢 查AU的開始。當發現AU的開始為真時,在步驟406中將PES報頭寫入到TS分組中,因為 TS有效載荷的第一字節應該包含PES報頭的值開始字節。然后,在步驟407中,AU的開始 被設置為假,在這種情況下TS有效載荷的大小將減少一個字節。因此在步驟408中如下計 算Readbytes (讀取字節):Readbytes = 188-TS報頭大小-PES報頭大小。在步驟409中, 將Readbytes從文件寫入到TS分組。利用來自activeAUlist的頂部元素的PTS和DTS值 來構造PES報頭。該PES報頭被包括在TS有效載荷中。然后,用H. 264接入單元填充TS 有效載荷的剩余字節。因此,在步驟410中檢查最頂部AU的結束,并且如果發現最頂部AU 的結束為真,則在步驟411中AU的開始被設置為假以結束TS構造的一個迭代。對于后續 迭代,在步驟411中“η”的值增加1,并且重復步驟401到410。圖5示出根據本發明的實施例的多路復用裝置的框圖。裝置501包括電路502, 其用于多路復用不具有編碼的定時信息的高清晰度視頻基本流來創建傳輸流(TS)。該電路 502能夠在列表中構造“η”個接入單元(AU)。可以構造每個AU以使得它能夠前瞻以獲得 關于下一 AU的定時的信息。所述電路502還能夠啟用指針來指示來自列表的AU的開始; 迭代地檢查來自列表的AU的開始;通過由列表的最頂部AU計算定時信息來構造報頭;將 所述報頭寫入到TS中;以及用來自所述基本流的數據填充TS的剩余字節。裝置501的電路502使得最頂部AU的開始能夠被檢查并且將payl0ad_imit_ start_indicator標記為真。電路502還使得TS報頭能夠被寫入到TS分組中。這指示TS 有效載荷包含PES開始。因此,電路502再次檢查AU的開始。當發現AU的開始為真時,將 PES報頭寫入到TS分組中,因為TS有效載荷的第一字節應該包含PES報頭的開始字節值。 然后,電路502將AU的開始設置為假。在這種情況下,TS有效載荷的大小將減少一個字節。 因此,如下計算Readbytes :Readbytes=188_TS報頭大小-PES報頭大小。電路502還使得 Readbytes能夠從文件寫入到TS分組中。利用來自activeAUlist的頂部元素的PTS和DTS 來構造PES報頭。該PES報頭被包括在TS有效載荷中。然后用H. 264接入單元填充TS有 效載荷的剩余字節。因此,最頂部AU的結束被檢查,并且如果發現最頂部AU的結束為真, 則該裝置的電路502將AU的開始設置為假以結束TS構造的一次迭代。對于后續迭代以及 TS構造,“η”的值增加1。本發明的應用
本文所述的各種實施例可以被用來生成H. 264視頻基本流的有效多路復用以生成 MPEG-2傳輸流(TS)。它們可以被應用于不具有編碼的NAL/VCL-HRD參數(作為序列參數集 的VUI信息的一部分)或補充增強信息(SEI)的H. 264視頻基本流的延遲的時間多路復用。
8H. 264基本流的每個接入單元(AU)可以前瞻關于文件中下一接入單元的圖片類型的信息。 該圖片類型信息可以被用于計算分組的基本流(PES)的PTS和DTS值。于是,每個AU可以 被分組成PES分組并且然后被分成TS分組的流。為了更好地理解,使用了具體的示例性細節來解釋本文所述的發明。然而,在不使 用這些具體細節的情況下,所公開的發明可以由本領域技術人員做出。本發明可以以硬件 和軟件來實施。在框圖中示出的結構和設備說明了本發明的示例性實施例并且旨在避免模 糊本發明。而且,在各種元件之間的連接沒必要是直接的并且其間的數據傳遞可以經受編 碼、重新格式化或修改。在說明書中,對“一個實施例”或“實施例”的引用意味著結合實施例所述的特定 特征、結構、特性或功能被包括在本發明的至少一個實施例中。在說明書中的各種場合出現 的短語“在一個實施例中,,沒必要全都指代相同的實施例。為了清楚和理解的目的已描述了本發明的前述描述。它并不旨在將本發明限制成 所公開的精確形式。
權利要求
1.一種用于多路復用不具有編碼的定時信息的高清晰度視頻基本流來創建傳輸流 (TS)的方法,該方法包括下述步驟在列表中構造“η”個接入單元(AU),每個AU能夠前瞻以獲得關于下一 AU的定時的信息;啟用指針來指示來自列表的AU的開始;迭代地檢查來自列表的AU的開始;通過由列表的最頂部AU計算定時信息來構造報頭;將所述報頭寫入到TS中;以及用來自所述基本流的數據填充TS的剩余字節。
2.根據權利要求1所述的方法,其中構造“η”個接入單元的步驟包括下述步驟 在將基本流轉換成分組的基本流(PES)時從所述開始讀取基本流直到其形成單個AU為止并記下其起點和終點;將剛形成的單個AU推入到所述列表中; 檢查在被推入到所述列表中的AU中編碼的基本圖片類型;計算包括呈現時間戳(PTS)和解碼時間戳(DTS)的定時信息,并且對于基本流推導出 可變幀速率(tc);如果編碼的基本圖片類型是B幀,則計算 dts (n) =dts (n-1) +tc,以及 pts(n) =dts (η),以及在B幀的pts和dts之間不包括任何偏移的情況下,解碼所述B幀并同時呈現; 如果編碼的基本圖片類型是I或P幀,則計算 dts (n) =dts (n-1) +tc,以及pts(n)=dts(n)+pts_offset*tc,并對于在下一 I幀或P幀出現之前的B幀的數目 (pts_0ffset)檢查接下來的接入單元;以及構造下一 AU并且將所述下一 AU推入到列表中以重復計算定時信息的各步驟。
3.根據權利要求1所述的方法,其中所述高清晰度基本流是H.264/AVC視頻基本流。
4.根據權利要求1所述的方法,其中TS是MPEG-2TS0
5.根據權利要求1所述的方法,其中所述多路復用是不具有編碼的NAL/VCL-HRD參數 (作為序列參數集的VUI信息的一部分)或補充增強信息(SEI)的H. 264視頻基本流的延遲 時間多路復用。
6.根據權利要求2所述的方法,其中圖片類型(B、P或I)信息被用來計算分組的基本 流(PES)的PTS和DTS值。
7.根據權利要求2所述的方法,其中變量tc是幀速率或場速率并且被推導為tc= num—units_in_tick / time—scale。
8.根據權利要求2所述的方法,其中PES分組被分成固定的188字節TS分組。
9.一種包括電路的裝置,用于根據下述步驟多路復用不具有編碼的定時信息的高清 晰度視頻基本流來創建傳輸流(TS)在列表中構造“η”個接入單元(AU),每個AU進行前瞻以獲得關于下一 AU的定時的信息;啟用指針來指示來自列表的AU的開始;迭代地檢查來自列表的AU的開始;通過由列表的最頂部AU計算定時信息來構造報頭;將所述報頭寫入到TS中;以及用來自所述基本流的數據填充TS的剩余字節。
10.根據權利要求9所述的裝置,其中所述電路還執行下述步驟在將基本流轉換成分組的基本流(PES)時從所述開始讀取基本流直到其形成單個AU 為止并記下其起點和終點;將剛形成的單個AU推入到所述列表中; 檢查在被推入到所述列表中的AU中編碼的基本圖片類型;計算包括呈現時間戳(PTS)和解碼時間戳(DTS)的定時信息,并且對于基本流推導出 可變幀速率(tc);如果編碼的基本圖片類型是B幀,則計算 dts (n) =dts (n-1) +tc,以及 pts(n) =dts (η),以及在B幀的pts和dts之間不包括任何偏移的情況下,解碼所述B幀并同時呈現; 如果編碼的基本圖片類型是I或P幀,則計算 dts (n) =dts (n-1) +tc,以及pts(n)=dts(n)+pts_offset*tc,并對于在下一 I幀或P幀出現之前的B幀的數目 (pts_0ffset)檢查接下來的接入單元;以及構造下一 AU并且將所述下一 AU推入到列表中以重復計算定時信息的各步驟。
11.根據權利要求9所述的裝置,其中所述高清晰度基本流是H.^4/AVC視頻基本流。
12.根據權利要求9所述的裝置,其中TS是MPEG-2TS0
13.根據權利要求9所述的裝置,其中所述多路復用是不具有編碼的NAL/VCL-HRD參 數(作為序列參數集的VUI信息的一部分)或補充增強信息(SEI)的H. 264視頻基本流的延 遲時間多路復用。
14.根據權利要求10所述的裝置,其中圖片類型(B、P或I)信息被用來計算分組的基 本流(PES)的PTS和DTS值。
15.根據權利要求10所述的裝置,其中變量tc是幀速率或場速率并且被推導為tc= num—units_in_tick / time—scale。
16.根據權利要求10所述的裝置,其中PES分組被分成固定的188字節TS分組。
全文摘要
本發明涉及用于多路復用H.264基本流的方法和裝置。本發明的實施例多路復用不具有編碼的定時信息的基本流來創建傳輸流。在一些實施例中,構造“n”個接入單元(AU)并將其一個接一個地推入到列表中。每個接入單元能夠進行前瞻以獲得關于下一接入單元的定時的信息。通過由列表的最頂部接入單元計算定時信息來構造報頭。將所述報頭寫入到傳輸流中,并且用來自所述基本流的數據填充傳輸流的剩余字節。由此,構造出傳輸流。
文檔編號H04N21/2368GK102065319SQ20101054909
公開日2011年5月18日 申請日期2010年11月18日 優先權日2009年11月18日
發明者M·V·卡雷古達 申請人:特克特朗尼克國際銷售有限責任公司