專利名稱:用于vc-1的rtp凈荷格式的制作方法
用于VC-1的RTP凈荷格式背景實時傳輸協議(RTP)是一種公知的用于通過IP網絡傳送媒體信息(音 頻和視頻)的協議。RTP協議在Schulzrinne等人的"RTP: A Transport Protocol for Real-Time Applicatons" (RTP:用于實時應用的傳輸協議),STD 64, RFC 3550, 2003年7月中有完整描述。如
圖1中概括地表明的,RTP分組100包 括RTP分組首部102和RTP凈荷104。 RTP首部102包括圖1中枚舉的各種 公知的元數據字段。接收RTP分組的設備使用RTP首部102中的信息來支配 對凈荷104內的信息的處理。RTP對每一編解碼器需要一單獨的所謂的凈荷格式。用于處理媒體信息的 公知的編解碼器包括MPEG-2、 H.264/MPEG-4AVC、 MP3等等。凈荷格式指 定了使用RTP來封裝編解碼器數據的精確方式。換言之,凈荷本質上是一映 射規范,它詳細描述了如何在RTP分組內排列視頻或音頻數據。每一編解碼 器具有唯一的復雜度。由此,為編解碼器開發RTP凈荷格式的任務引發了多 種獨特的挑戰。此處所描述的主題描述了一種用于視頻編解碼器1 (VC-1)視頻編解碼器 的RTP凈荷格式。VC-1具有廣泛的適用性,它適用于低比特率因特網流傳送 應用到具有幾乎無損編碼的HDTV廣播和數碼影院應用。更具體而言,例如, VC-1被廣泛用于在因特網上以Windows Media Video 9 (WMV-9)的形式下載 和流傳送電影。VC-1還作為用于各種高清DVD格式的強制壓縮格式而被采用。VC-1編解碼器在"Proposed SMPTE Standard for Television: VC-1 Compressed Video Bitstream Format and Decoding Process"(對電冬見建i義的 SMPTE標準VC-1壓縮視頻比特流格式和解碼過程),(美國)電影電視工 禾呈師學會(The Society of Motion Picture and Television Engineers ), 白原市, 紐約,2005年8月23日(以下簡稱為SMPTE 421M)中有描述。SMPTE 421M 規范通過整體引用結合于此。概述描述了一種用于VC-1的RTP凈荷格式。該RTP凈荷格式提供了能包括 一個或多個訪問單元(AU)的RTP凈荷。訪問單元可提供VC-1信息的完整 幀。或者,VC-1信息的幀可在多個訪問單元之中分段。每一訪問單元包括一 訪問單元首部和一訪問單元凈荷。該RTP凈荷格式結合了用于提高VC-1信息處理中的效率和穩健性的各種規定,這一提高部分地是通過由訪問單元的相應 訪問單元首部所傳達的控制信息來實現的。本概述一節中所陳述的主題涉及本發明的示例性表示,因此并不限制權利 要求書部分中所述的本發明的范圍。附圖簡述圖1示出了一示例性RTP分組。圖2示出了如SMPTE421M中所描述的對VC-1中三種不同類的使用。 圖3示出了由VC-1使用的分層模型。 圖4示出了可在處理VC-1時重排幀的方式。 圖5示出了根據本發明的用于處理媒體信息的示例性系統。 圖6示出了用于VC-1的RTP凈荷格式的示例性結構。 圖7-9示出了解釋圖5的系統的操作的示例性過程。 圖IO示出了用于實現圖5的系統的各方面的示例性計算機環境。 在全部公開內容和附圖中使用相同的標號來指代相同的組件和特征。100 系列的標號指代最初在圖1中找到的特征,200系列的標號指代最初在圖2中 找到的特征,300系列的標號指代最初在圖3中找到的特征,依此類推。詳細描述此處描述了用于VC-1的RTP凈荷格式。本公開內容包括以下各小節。小節A提出了 VC-1標準的介紹性綜述。小 節B提出了使用用于VC-1的RTP凈荷格式來處理媒體信息的示例性系統。小 節C描述了 RTP凈荷格式的示例性結構。小節D描述了小節A的系統的示例性操作方式。而小節E描述了用于實現小節B的系統的各方面的示例性計算機 環境。A. VCM綜述A/.教膽為便于解釋用于VC-1的獨特RTP凈荷格式,在本介紹性小節中將提供 SMPTE421M標準的某些突出特征的引導性討論。在本介紹性小節中,某些定 義和解釋是從SMPTE421M規范中摘錄的。SMPTE 421M指定了符合VC-1的比特流的特性以及解碼這些流所需的過 程。(然而,這一標準沒有指定VC-1壓縮算法,因此允許用不同的方式來實 現VC-1編碼器)。如在圖2中所表明的,VC-1比特流句法具有三個類(202、 204、 206)。類指的是該標準的句法的一個定義的子集,其具有與其相關聯的 特定的一組編碼工具、算法和句法規則。取決于使用VC-1的應用,某些類可 能比其它類更適用。簡單和主類(202、 204)是為相對較低比特率的應用設計的。例如,簡單 類當前支持的最大比特率是384 Kbps。高級類206是為諸如數字TV、 HD DVD 或HDTV等較高比特率廣播應用設計的。高級類當前支持的最大比特率是135 Mbps,使得它適用于對HDTV信號的幾乎無損的編碼。高級類206還支持隔 行視頻幀。高級類206還提供用戶數據(例如,元數據)與壓縮比特流的帶內 組合。用戶數據可用于例如關閉字幕支持。此外,高級類206允許諸如圖像寬 高比等編解碼器配置參數通過壓縮比特流中的帶內信令來改變。再者,諸如非正方形像素和對隔行圖像的支持等可用于實現高壓縮效率的某些特征僅被包 括在高級類中。對于每一類,定義了某一數量的"級"。與意味著特定的一組特征或句法 元素的"類"不同,"級"是關于類中的參數值的一組約束,諸如比特率或緩 沖區大小。VC-1簡單類202具有兩級,主類204具有三級,而高級類206具 有五級。SMPTE 421M的附錄D提供了類和級的更詳細列表。層現在參考圖3, VC-1比特流被定義為層的分層結構。這在概念上類似于 聯網協議的協議棧的表示法。最外面的層被稱為序列層302。其它層是入口點 層304、圖像層306、片層308、宏塊層310以及塊層312。在簡單和主類(202、 204)中,序列層302中的序列由一系列一個或多個 已編碼圖像(以下討論)構成。在高級類206中,序列由一個或多個入口點段 (以下討論)構成,其中每一入口點段由一系列一個或多個圖像構成,并且其 中每一入口點段中的第一個圖像提供了隨機訪問(以下討論)。在高級類206中,序列首部(以下更詳細描述)可對序列的開始劃界。入口點層304定義了比特流中提供隨機訪問的點。更具體而言,比特流中 的隨機訪問點(也稱為入口點)是通過以下保證來定義的如果解碼在該點開 始,則在該點之后所有需要顯示的幀對該點之前的任何數據沒有解碼依賴性, 并且也存在于該點之后的解碼序列中。入口點段指的是存在于一個入口點和一 個隨后的入口點之間的段。在高級類306中,入口點可由入口點首部(如以下 更詳細描述的)來劃界。另一方面,簡單和主類(202、 204)不采用由入口點 首部劃界的段;相反,在這些類(202、 204)中,每一I圖像包括一隨機訪問 占。關于圖像層306,圖像指的是源、已編碼或重構的圖像數據。每一圖像可 被編碼為I圖像、P圖像、跳過圖像、BI圖像或B圖像。這些術語在本領域中 是公知的,并且例如在SMPTE 421M的4.12節中定義。P圖像是使用從過去 的參考場或幀的經運動補償的預測來編碼的圖像。B圖像是使用從過去和/或未 來的參考場或幀的經運動補償的預測來編碼的圖像。B圖像不能用于預測任何 其它圖像。I圖像指的是幀內編碼圖像,即使用僅來自其自身的信息來編碼的 圖像。對于逐行視頻,圖像等同于幀,而對于隔行視頻,取決于上下文,圖像可 以指幀,或是幀的上場或下場。逐行指的是其中幀的所有樣本都表示同一時刻 的幀特性。隔行是其中幀的交替行表示不同時刻的幀特性。更正式地,幀包含 視頻信號的空間信息行。對于逐行視頻,這些行包含從一個時刻開始并通過連 續的行到幀的最后的樣本。對于隔行視頻,幀由兩個場,即上場和下場構成。 這些場中的一個比另一個晚開始一個場周期。關于片層308、宏塊層310和塊層312,每一圖像由片集合組成,每一片 由宏塊集合組成,而每一宏塊由塊集合組成。最后,塊指的是8行乘8列的樣 本矩陣,即64個變換系數。片層302僅存在于高級類206中。A丄5DC/浙五5Z)C7對于高級類206, SMPTE 421M將圖3所示的信息組織成稱為比特流數據 單元(BDU)的單元。BDU是可獨立于同一分層級上的其它信息來語法分析 (例如,句法解碼)的壓縮數據的單元。BDU可以是例如序列層首部、入口 點首部、幀或片。BDU的開始由稱為起始碼(SC)的標識符來表示。例如,序列層首部和 入口點首部是BDU,因此可容易地用其起始碼來標識。參見SMPTE421M的 附錄E以獲得起始碼的完整列表。注意,塊和宏塊不是BDU,并且因此沒有 起始碼且不必是字節對齊的。為防止已編碼比特流中的起始碼的意外競爭, SMPTE 421M定義了使用字節填充的封裝機制。通過該機制封裝的BDU被稱 為封裝BDU,或稱EBDU。A(,身f ,激浙乂"點,薪更詳細地考慮高級類206的序列層首部BDU。序列層首部包含初始化 VC-1解碼器所必需的參數。這些參數適用于已編碼比特流中序列層首部的下 一次出現之前的所有入口點段。序列層首部中的參數包括高級類級、己編碼圖 像的劃界、寬高比、隔行信息、幀速率、以及用于假想參考解碼器(HRD)(以 下更詳細討論)的多達31個漏桶參數。SMPTE 421M的6.1節提供了序列層 首部的正式規范。接著更詳細討論高級類206的入口點首部BDU。如上所述,入口點首部 對比特流內的隨機訪問點劃界。入口點首部還指定了用于HRD中的漏桶的當 前緩沖區滿度值。該首部還指定了在比特流中的下一入口點首部出現之前有效 設置的編碼控制參數。參見SMPTE 421M的6.2節以獲得關于入口點首部的正 式規范。為了清晰和重申,簡單和主類(202、 204)沒有利用序列層首部或入口點首部。對于這些類(202、 204),解碼器初始化參數可從已編碼比特流帶外傳 遞。A5.微參考麟器f卿J上述"HRD"指的是一種所謂的假想參考解碼器。如在SMPTE 421M規 范中完整描述的,假想參考解碼器(也稱為視頻緩沖區驗證器)指的是概念上 連接到編碼器的輸出的假想解碼器。其目的是提供關于編碼器或編輯過程可產 生的數據率的變化性的約束。對HRD技術的一般描述可在Ribas-Corbera, J.、 Chou, P.A.禾口 S丄.Regunathan的"A generalized hypothetical reference decoder for H.264/AVC "(用于H.264/AVC的廣義假想參考解碼器),IEEE Transactions on Circuits and Systems for Video Technology (關于視頻技術的電路和系統的正EE 學報),2003年8月中找到。支配HRD的操作的緩沖模型被稱為"漏桶"。漏桶是由三個參數(R、 B、 F)來表征的,其中R是比特進入解碼器緩沖區的峰值傳輸比特率(以比特 每秒為單位);B是解碼器緩沖區的容量(以比特為單位);F是初始解碼器 緩沖區滿度(以比特為單位),它應當小于或等于B。用于HRD的漏桶"參 數集"指定了峰值傳輸比特率和解碼器緩沖區容量。SMPTE 421M的附錄C 提供了關于HRD對VC-1比特流的應用的附加信息。".定靜離腐驟前進到圖4,該圖示出了在處理過程中可重排幀的方式。更具體而言,幀 是以捕捉它們的相同次序來傳輸的,除了如果在已編碼比特流中存在B圖像之 外。在這一情況下,傳輸各幀使得B圖像所依賴的幀被首先傳輸。這被稱為幀 的已編碼次序。關于解碼器如何將幀從己編碼次序轉換成顯示次序的規則在SMPTE 421M的5.4節中有規定。簡言之,如果B幀可能存在于已編碼比特流中,則 假想解碼器實現需要緩沖一個附加的已解碼幀。當接收到I幀或P幀時,該幀 可被立即解碼,但是在接收到下一I幀或P幀之前不被顯示。然而,B幀被立 即顯示。圖4具體示出了當B幀存在于已編碼比特流中時,幀的捕捉、其已編碼 次序以及已解碼幀的顯示次序之間的定時關系。在圖4所示的具體示例中,幀 P4的顯示被延遲到接收到幀P7之后,而幀B2和B3被立即顯示。另一方面, 如果不存在B圖像,則已編碼次序和顯示次序是相同的,并且幀因此可沒有附 加延遲地顯示。B.示例性系統一般而言,參考附圖所描述的任何功能都可使用軟件、硬件(例如,固定 邏輯電路)、手動處理或這些實現的組合來實現。如此處所使用的術語"邏輯"、 "模塊"或"功能" 一般表示軟件、硬件或軟件和硬件的組合。例如,在軟件 實現的情況下,術語"邏輯"、"模塊"或"功能"表示當在一個或多個處理 設備(例如, 一個或多個CPU)上執行時執行指定任務的程序代碼(或聲明性 內容)。程序代碼可被儲存在一個或多個計算機可讀介質中。更一般地,所示的將邏輯、模塊和功能分割成不同單元可以反映這些軟件 和/或硬件的實際物理分組和分配,或可對應于由單個軟件程序和/或硬件單元 執行的不同任務的概念上的分配。所示的邏輯、模塊和功能可位于單個地點(例 如,如由處理設備實現的),或可在多個位置上分布。術語"機器可讀介質"等指的是用于以任何形式保留信息的任何種類的介 質,包括各種存儲設備(磁、光、固態等)。術語機器可讀介質還包含表示信 息的暫時形式,包括用于將信息從一點傳輸到另一點的各種硬連線和/或無線鏈 路。圖5示出了可利用此處所描述的RTP凈荷格式的一個示例性系統500的 綜述。該系統包括源模塊502,它經由通信機制(或多個機制)504向目標模塊 506發送媒體信息。源模塊502和目標模塊506可表示各種各樣的設備或其它 功能,包括任何種類的計算機。例如,源模塊502可表示服務器,而目標模塊 506可表示客戶機計算機。然而,許多其它情形也是可能的。在另一情形中, 源模塊502和目標模塊506可表示例如經由中間服務器交換機、經由P2P等彼 此通信的兩個個人計算機設備。在另一情形中,源模塊502和目標模塊506可表示兩個服務器型計算機。在另一情形中,源模塊502和/或目標模塊506可表 示其它種類的計算設備,諸如可佩帶處理設備、移動電話設備、機頂盒、游戲 控制臺、音頻回放設備、任何種類的視頻盤播放器、數字錄像機(DVR)等等。 再一次,許多其它置換也是可能的。 一般而言,在一種情況下,源模塊502在 目標模塊506的遠程。在另一種情形中,源模塊502相對于目標506是本地的。通信機制504可表示用于在設備之間交換信息的任何種類的信道或信道 組合。它可表示局域網(LAN)、廣域網(WAN,例如,因特網)或其組合。 它可使用任何種類和組合的鏈路,諸如硬連線導電鏈路、無線鏈路、電力線等 來物理地實現。通信機制504還可包括諸如各種路由器、網關、名稱服務器等 網絡相關設備的任意組合。如圖5中概括地示出的,源模塊可包括用于將媒體信息(或其它種類的數 據)流轉換成所需標準(在此情況中為VC-1)的編碼模塊508。發送模塊510 可使用將在本說明書的小節C中描述的凈荷格式來封裝VC-1媒體信息。換言 之,該過程包括根據以下描述的規則將VC-1流中的信息組織成RTP分組。圖 5還示出了直接通往發送模塊510的箭頭,這示出了發送模塊可接收VC-1媒 體信息而無需執行由編碼模塊508執行的編碼。在又一情形中,發送模塊510 可接收已經被轉換成所需VC-1 RTP凈荷格式的VC-1信息,并且因此,該信 息可直接就緒用于發送。在任何情況下,發送模塊510都通過通信機制504向 目標模塊506發送RTP分組。目標模塊506包括用于從通信機制504接收RTP分組的接收模塊512。與 此相關,接收模塊512可執行多個功能,諸如緩沖RTP分組流、如有必要重 排分組流中的信息、解決分組流中的信息丟失等等(將在下一節中更詳細討 論)。接收模塊512將所接收到的媒體信息傳遞給解碼模塊514,后者解碼該 媒體信息。解碼模塊514可將它所產生的己解碼信息傳遞給由后處理模塊516 表示的任何種類的后處理功能。后處理模塊516對該已解碼信息執行歸于其的 處理任務以得到最終輸出。在媒體信息的上下文中,輸出可表示音頻和/或視頻 演示的生成。輸出設備(未示出)可包括揚聲器和/或電視機屏幕、和/或計算 機監視器等等。在另一情形中,源模塊502可在一個或多個計算機可讀介質上以所需的凈荷格式儲存媒體信息。目標模塊506可從一個或多個計算機可讀介質中讀取該 媒體信息并對該媒體信息執行規定的操作。在這一情形中,通信機制504可被 廣泛地解釋為表示上述一個或多個計算機可讀介質。示例性類型的計算機可讀 介質包括各種類型的磁存儲設備、光學設備、固態存儲設備等等。C.示例性凈荷格式C./. i 7P ^游KC-7潛式^獰蔬游教麥C丄/.縛潛式浙諸転総祭述圖6示出了實現被修改成適合VC-1標準的示例性凈荷格式的示例性RTP 分組602。它包括RTP首部部分602和整數個字節對齊的訪問單元(AU) 606。 每一訪問單元能以AU首部(將在以下定義)開始,并且后跟一可變長度凈荷。 在一個示例性實現中,AU有效載荷包含僅屬于一個VC-1幀的數據,使得來 自不同VC-1幀的數據總是在不同的AU中。例如,圖6所示的每一AU凈荷 可包含相應的VC-1幀。(注意,如果對于這些VC-1幀的AU的組合大小小 于RTP分組的最大傳輸單元(MTU)大小,則將AU組合成單個RTP分組將 是有益的;這一規定允許將RTP封裝的開銷分攤到多個AU上。)然而,如以 下在C丄2—節中討論的,幀也可在多個AU之中分段。圖6還示出了示例性訪問單元(AU) 608的合成。該AU608包括AU首 部部分610和可變長度AU凈荷612。 AU首部部分610包括支配AU 608內的 媒體信息的處理的各種控制信息。AU首部610在各種控制字段中傳達控制信 息,這些字段包括AU控制字段614、 RA計數字段、AUP長度字段、PTS增 量字段以及DTS增量字段。圖6枚舉了 "AU控制字段"614的示例性內容。 稍后的小節描述了 AU首部610中的每一控制信息字段所擔的任務。以下示例性一般特性可應用于AU凈荷的內容*對于高級類,AU凈荷可包含EBDU格式的VC-1比特流數據(例如, 該比特流可使用SMPTE421M的附錄E中所定義的字節填充封裝模式。)'對于高級類,AU凈荷可包含多個EBDU,例如,序列層首部、入口點 首部、圖像首部和多個片及相關聯的用戶數據。AU中的所有片及其相應的宏 塊應屬于同一視頻幀。'如果AU中的數據(在高級類的情況下是EBDU,而在簡單和主類的情 況下是幀)不在八位組邊界處結束,則可添加最多7個零值填充比特來實現八 位組對齊。 當使用VC-1簡單或主類時,AU凈荷應以圖像首部開始,除了當AU 凈荷包含分段幀(如下所述)時之外。如上所述,每一AU凈荷可包含一完整的VC-1幀。然而,如果向AU凈 荷添加完整的幀導致RTP分組超出MTU大小,則該幀可被分段成多個AU以 避免IP級分段。可設置AU首部中的FRAG字段(在以下更詳細討論)以指 示該AU包含分段的幀。以下示例性特性可應用于AU凈荷內的幀的分段 對于高級類,不包含分段幀或包含幀的第一片段的AU凈荷可在EBDU 邊界處開始。*如上所述,對于簡單和主類,AU凈荷能以圖像首部的起始而開始,除 了當AU凈荷包含分段幀時之外。在簡單和主類的情況下,由于塊和宏塊不是 字節對齊的,因此分段邊界可被任意選擇。,如果使用高級類,則包含除第一片段之外的幀片段的AU凈荷可在EBDU 邊界處開始,諸如在片的起始處開始。然而,注意,片僅是對高級類定義的, 并且并不是始終使用的。因此,在某些情況下,可能無法在EBDU邊界處繼續 分段幀。如果AU不能在EBDU邊界處開始,則它可在塊或宏塊處開始。但是 注意,塊和宏塊不是BDU (因此沒有起始碼),并且不是字節對齊的。可通 過檢査AU凈荷的前三個字節來確定AU凈荷是否在EBDU邊界處開始。如果 前三個字節等于起始碼前綴(例如,0x00、 0x00、 0x01),則AU凈荷在EBDU 邊界處開始。*如果RTP分組包含具有幀的最后一個片段的AU,則在一個示例性實現 中,RTP分組中不包括另外的AU。 如果AU首部中的PTS增量字段存在(將在以下描述),則幀的每一 片段應具有相同的演示時間。*如果AU首部中的DTS增量字段存在(將在以下描述),則幀的每一 片段應具有相同的解碼時間。C./丄疆/驟有多個問題可影響RTP分組中媒體信息的時間相關處理。示例性的這樣 的問題如下*在一個示例性實現中,源模塊502可按已編碼次序來發送視頻幀。如上 在圖4的上下文中討論的,已編碼次序意味著沒有幀依賴于后續幀。
RTP時戳字段(例如,圖1的RTP首部102中的"時戳"字段)可被 設為包含在RTP分組中的第一個AU中的視頻幀定義的演示時間。該演示時間 可被用作RTP首部中的時戳字段,因為它與該幀的采樣時刻僅有任意常數偏 移量的不同。 如果AU中的視頻幀具有不同于RTP時戳字段的演示時間,則可使用 AU首部中的PTS增量字段來指定演示時間。由于RTP時戳字段應與第一視頻 幀的演示時間相同,因此該情形僅在RTP分組包含多個AU時才發生。PTS 增量字段的句法在以下更詳細定義。
VC-1幀的解碼時間在以已編碼次序發送視頻幀時單調遞增。如果B圖 像不存在于已編碼比特流中,則幀的解碼時間等于幀的演示時間。 如果B圖像存在于已編碼比特流中,則幀的解碼時間可如下確定(1) 非B幀解碼時間等于按已編碼次序的前一非B幀的演示時間。(2) B幀解碼時間等于該B幀的演示時間。作為一個示例,再一次考慮圖4。假定非B幀P4的解碼時間是4個時間 單位,這等于按已編碼次序的前一非B幀(Pl)的演示時間。另一方面,B幀 B2的解碼時間是5個時間單位,這等于其演示時間。,如果視頻幀的解碼時間不同于其演示時間,則解碼時間使用AU首部中 的DTS增量字段來指定。DTS增量字段的句法在以下定義。
一般而言,知道流是否包含B圖像可幫助目標模塊506更有效地分配 資源并可減少延遲,因為流中沒有B圖像意味著在解碼過程和己解碼幀的顯示 之間不需要幀的重排。這一時間節省對于交互式應用尤其有用。 接收器在以下情況下可假定已編碼比特流可包含B圖像(1) 高級類如果"bpic"媒體類型參數的值是1,或者如果未指定 "bpic"參數。"bpic"參數是一個MIME (多用途因特網郵件擴展)參數,并且在以下描述。(2) 主類如果STRUCTj:解碼器初始化參數中的MAXBFRAMES 字段具有非零值。STRUCTj:是在"config"媒體類型參數中傳達的,如 將在以下更詳細描述的。STRUCT—C在SMPTE421M的附錄J中定義。*注意,簡單類不使用B圖像。C.".鄉艦點如在小節A中所描述的,入口點(也稱為隨機訪問點)定義了流中解碼 器模塊514可獲得對該流的"入口"以開始處理它或在中斷之后繼續處理它的 點。兩個連續的入口點定義了任何入口點段。這意味著在丟失RTP分組的情 況下,解碼器模塊514在其到達流中的下一入口點之前可能無法解碼幀。入口點首部對入口點段劃界。入口點首部包含解碼模塊514解碼由入口點 首部標識的入口點段中的幀所需的信息。入口點首部之后的第一個幀是到該已 編碼比特流的隨機訪問點(即,入口點)。簡單和主類沒有入口點首部。對于 這些類,每一I圖像用作隨機訪問點。RTP凈荷格式定義了稱為"RA計數"的字段,如在圖6的AU首部610 中所指出的。RA計數字段允許接收器模塊512檢測所丟失的RTP分組包含隨 機訪問點。更具體而言,源模塊502可的每一隨機訪問點遞增(例如,模256) RA計數字段的值,并將該值插入到每一相應AU的RA計數字段中。目標模 塊506可使用該計數信息例如通過檢測它所接收到的媒體信息中的RA計數值 的不連續性來檢測媒體信息的丟失。對于涉及該主題的其它細節,參見C.2.2 節中對"RA計數"的定義。RTP凈荷格式還在AU控制字段中定義了一個稱為"RA"標志的位,如 在由AU首部610的AU控制字段614中所指示的。該位僅對于包含隨機訪問 點的這些AU才設置為1。RA標志因而使得確定AU是否包含隨機訪問點更為 容易。RA位在小節C2.3中更詳細地描述。C.".朋D參教游移餘高級類中的序列層首部可包括用于假想參考解碼器(HRD)的多達31個 漏桶參數集。該漏桶參數集描述了可能應用于向目標模塊506的媒體信息傳輸 的不同傳輸情形。更具體而言,每一漏桶參數集指定了一可能的峰值傳輸比特 率(HRD一RATE)和解碼器緩沖區容量(HRD—BUFFER)。對于序列層首部 中的每一漏桶參數集,在入口點首部中還存在指定漏桶的初始滿度的參數 (HRD—FUIX)。在某些情形中,源模塊502 (或其它發送器實體)可能已經知道了向目標 模塊506發送媒體信息的實際峰值速率。在這一情況下,源模塊502可從序列 層首部中移除除了對應于實際峰值傳輸速率之外的參數集之外的所有漏桶參 數集。然而,當完成這一動作時,源模塊502還應當移除入口點首部中的相應 HRD一FULL參數。如上所述移除漏桶參數集可顯著減小序列層首部和入口點 首部的大小。C./,6.簠餅膽,教源模塊502可通過在比特流中頻繁地重復序列層首部來改善針對RTP分 組丟失的穩健性。S卩,通過這一策略,序列層首部的丟失可能使用已被成功接 收到(并包含與丟失的序列層首部相同的信息)的另一序列層首部來補救。在 這一策略中,序列層首部和入口點首部中的漏桶參數的個數可使用在上一節 (C丄5節)中所描述的技術來減少到1。這一規定將幫助減少因重復序列層首 部而引起的開銷。注意,當計算用于HRD的漏桶參數時應當考慮VC-1比特流中的任何數 據,包括序列首部本身的重復副本。還要注意,如果序列層首部中的TFCNTRFLAG標志的值為1,則每一圖 像首部包含一幀計數器字段(TFCNTR)。每次當將序列層首部插入到比特流 中時,應重置該計數器的值。最后,AU控制字段614定義了稱為"SL"標志的位,如圖6中所指出的。 該SL位允許目標模塊506檢測丟失的RTP分組包含新的序列層首部。S卩,源 模塊502 (或其它實體)可在發送序列層首部時來回切換該位,但是僅在該首部與最近發送的序列層首部不同時才切換。通過記下該位的值的改變,目標模塊506可確定是否己發送了新的序列層首部,以及這一序列層首部是否可能已 丟失。SL位在C.2.3節中進一步討論。C./,7. M/雄潛式參教游表示當對SDP (會話描述協議)使用上述RTP凈荷格式時,可在SDP中使用 C.3.1節中指定的MIME參數來表示解碼器初始化參數。C.3.2節指定了如何將 MIME參數映射到SDP。 C.3.3節定義了對SDP提議/答復模型專用的規則,而 C.3.4節定義了當以聲明性方式使用SDP時的規則。作為背景,會話描述協議 (或稱SDP)規范陳述了用于描述用于流傳送媒體信息的會話的細節的協議。 參見Handley, M.和V. Jacobson的"SDP: Session Description Protocol" (SDP: 會話描述協議),RFC 2327, 1998年4月。多用途因特網擴展(或稱MIME) 規范陳述了用于格式化用于通過因特網傳輸的消息的規則。SDP提議/答復模 型在Rosenberg, J.禾卩H. Schulzrinne的"An Offer/Answer Model with Session DescriptionProtocol(SDP)"(具有會話描述協議(SDP)的提議/答復模型), RFC 3264, 2002年6月中有描述。當使用高級類時,解碼器初始化參數可通過在已編碼比特流中插入新的序 列層首部或入口點首部來改變。相反,當使用簡單或主類時,解碼器初始化參 數在己編碼比特流中不改變。對解碼器初始化參數的任何改變可通過帶外手 段,例如通過更新SDP來作出。對于高級類,注意序列層首部指定VC-1級、已編碼圖像的最大尺寸以及 可任選的還有最大幀速率。媒體類型參數"level (級)"、"width (寬度)"、 "height (高度)"和"framerate (幀速率)"指定了這些參數的上限。由此, 序列層首部可指定低于媒體類型參數"levd"、 "width"、 "height"或"framerate" 的值的值,但是序列層首部不應超過這些媒體類型參數中任一個的值。CJ乂"mo&=7 "微鄉參教序列層首部在使用高級類的某些應用中從不改變。這可用媒體類型參數 "mode=l"(模式=1)來表示。("mode"參數在C.3.1節中定義)。"mode=l"參數用作對目標模塊506的提示,表示比特流中的所有序列層首部都將相同。 如果表示了 "model"并且已編碼比特流中存在序列層首部,則該序列層首部 應與由"config"媒體類型參數所指定的序列層首部相同。由于序列層參數在"m0de=l"中從不改變,因此源模塊502或其它RTP 發送器可將其從比特流中移除。然而,注意,如果序列層首部中的 FRCNTRFLAG標志的值是1,則每一圖像首部包含幀計數器字段(TFCNTR)。 該字段在每次序列層首部在比特流中出現時被重置。如果RTP發送器選擇移 除序列層首部,則它應確保所得的比特流仍符合VC-1規范(例如,通過在必 要時調整TFCNTR字段)。C.".'Wr3 "微鄉參教在其它情況下,序列層首部和入口點首部兩者在高級類中從不改變。這可 用MIME參數"mode=3"來表示。C丄8節中描述的對"mode=l"相同的規則 適用于"mode二3"。另夕卜,如果表示了 "mode=3",則源模塊502或其它RTP 發送器可通過不在RTP分組中包括序列層首部和入口點首部兩者來"壓縮" 已編碼比特流。接收模塊512(或其它功能)可通過在將已編碼比特流傳送到解碼模塊514 之前重新插入被移除的入口點首部來"解壓"已編碼比特流。序列層首部無需 由接收模塊512解壓,因為它從不改變。如果表示了 "mode=3"并且接收模塊512接收到完整的AU或AU的第 一個片段,并且RA位被設為1但是AU不是以入口點首部開始的,則這表明 入口點首部被"壓縮"。在這一情況下,接收模塊512可在AU的開頭插入入 口點首部。當插入入口點首部時,接收模塊512可使用由MIME "config"參 數指定的首部。C丄鮮縛潛式敏 C.2i.,微娜RTP首部的格式在RFC 3550中指定,并且概括地由圖1表示。固定RTP 首部的字段具有其通常的含義,這在RTC 3550中并由使用中的RTP類來定義,附加注解如下 標記位(M) 1位如果RTP分組包含含有完整的VC-1幀或VC-l幀的最后一個片段的訪問單元,則該位被設為1。*凈荷類型(PT) : 7位該描述沒有為此處所述的RTP凈荷格式分配RTP凈荷類型。凈荷類型的 分配可以通過使用的RTP類或以動態方式來執行。 ,序列號16位目標模塊506可使用序列號字段來恢復VC-l幀的已編碼次序。(典型的 VC-l解碼器要求按已編碼次序來傳送VC-l幀。)當VC-l幀己跨RTP分組分 段時,目標模塊506可使用序列號字段來確保沒有片段遺漏。 時戳32位RTP時戳被設為第一個訪問單元中的VC-l幀的演示時間。在一個示例性 實現中,可使用90kHz的時鐘速率。如上所述,圖6示出了示例性訪問單元608的合成。訪問單元608包括 AU首部610和AU凈荷612。訪問單元首部610包括一字節的AU控制字段、 RA計數字段和三個其它字段(AUP長度、PTS增量和DTS增量)。這些字段 中的任一個可被定義為強制的或可任選的。例如,在一個示例性實現中,AU 控制和RA計數字段是強制的,而其余三個字段是可任選的。所有字段都可按 照網絡字節序來寫。AU首部的結構在以下更詳細定義 'AU控制8位對AU控制字段的使用在C.2.3節中定義。 .RA計數8位隨機訪問點計數器。該字段定義了二進制模256計數器。源模塊502或其 它發送實體可在每次其發送AU時將該字段的值遞增1,只要AU控制字段中 的RA位被設為1。該字段的初始值未定義,并且可被隨機選擇。'AUP長度16位訪問單元凈荷長度。該字段指定了訪問單元的凈荷612的長度,以字節為 單位。該字段不包括AU首部本身的大小。該字段應被包括在RTP分組的每一 AU首部中,除了該分組中的最后一個AU首部之外。如果未包括該字段,則 應假定訪問單元的凈荷延伸到RTP凈荷的末尾。 "PTS增量32位演示時間增量。該字段指定了幀的演示時間為與該RTP分組的RTP首部 中的時戳字段的2的補碼偏移量(增量)。PTS增量字段可使用與RTP首部 中的時戳字段相同的時鐘速率。該字段不應被包括在RTP分組的第一個AU首部中,因為RTP時戳字段 指定了第一個AU中的幀的演示時間。如果未包括該字段,則可假定幀的演示 時間由RTP分組首部中的時戳字段來指定。
DTS增量32位解碼時間增量。該字段指定了幀的解碼時間為演示時間和解碼時間之間的 2的補碼偏移量(增量)。注意,如果演示時間大于解碼時間,則這導致DTS 增量字段的值大于0。DTS增量字段應使用與RTP首部中的時戳字段相同的時 鐘速率。如果未包括該字段,則可假定幀的解碼時間與幀的演示時間相同。C.2丄^C/鄉字虔敏8位AU控制字段的結構在圖6中示出,并描述如下 FRAG: 2位分段信息。該字段指示AU凈荷612是包含完整的幀還是幀的一個片段。它可如下設置0: AU凈荷包含幀中除第一個或最后一個片段之外的片段。 1: AU凈荷包含幀的第一個片段。 2: AU凈荷包含幀的最后一個片段。 3: AU凈荷包含完整的幀(未分段)。
RA: 1位隨機訪問點指示符。如果AU包含作為隨機訪問點的幀,則該位被設為1。在簡單和主類的情況下,任何I圖像是隨機訪問點。在高級類的情況下,入口點首部之后的第一個幀是隨機訪問點。可使用媒體類型參數"mode=3"來指示 沒有在每一隨機訪問點處發送入口點首部。
SL: 1位序列層計數器。如果AU包含序列層首部并且如果該序列層首部不同于最 近發送的序列層首部,則該位可被來回切換,即從0變為1或從1變為0。否 則,該位的值與前一AU中的SL位的值相同。該位的初始值未定義,并且可 被隨機選擇。對于簡單和主類比特流,或者如果高級類中的序列層首部從不改變,則該 位可被設為0。
LP: 1位長度存在。如果AU首部包括AUP長度字段,則該位可被設為l。
PT: 1位PTS增量存在。如果AU首部包括PTS增量字段,則該位可被設為l。
DT: 1位DTS增量存在。如果AU首部包括DTS增量字段,則該位可被設為l。
R: 1位保留。該位可被設為0,并且可被接收器忽略。上述在AU首部和AU控制字段中表達的信息項是示例性的。在其它實現 中,可添加另外的信息項和/或可省略上述信息項。可使用一個或多個標志來表 示特定的可任選信息項是存在還是被省略。上述句法的另外的其它變型也是可 能的。c丄7 r尸凈裔潛式參教 c.".微類鵬箭用于vc-i的媒體子類型是從標準樹分配的。其下注冊該凈荷格式的頂層 媒體類型是"視頻"。接收器可忽略任何未識別的參數。 ,媒體類型視頻*媒體子類型VCl標準參數 profile (類)該參數是指示VC-1類的整數。定義了以下值0:簡單類;h主類;以及3:高級類。如果profile參數用于指示已編碼比特流的特性,則它指示當解碼比特流 時解碼器必須支持的VC-1類。如果profile參數用于能力交換或在會話設置過 程中使用,則它指示編解碼器支持的VC-1類。
level (級)該參數是指定VC-1類的級的整數。對于高級類,有效值是0到4,這分 別對應于級L0到L4。對于簡單和主類,定義以下值 1:低級; 2:中級;以及 3:高級(僅對主類有效)。如果使用level參數來指示己編碼比特流的特性,則它指示當解碼比特流 時解碼器必須支持的VC-1類的最高級。注意,對一級的支持意味著對給定類 的全部數值上更低的級的支持。如果level參數用于能力交換或在會話設置過 程中使用,則它指示編解碼器支持的VC-1類的最高級。可任選參數 config (配置)該參數是表達解碼器初始化參數的八位組串的基16 (十六進制)表示。 (關于基16表示的一般主題,參閱Josefsson,S.,Ed.的"TheBasel6,Base32, and Base64 Data Encodings"(基16、基32和基64數據編碼),RFC 3548, 2003年7月)。解碼器初始化參數可在最高位優先(MSB-first)的基礎上被映射到 基16八位組串。解碼器初始化參數的第一位位于第一個八位組的MSB上。如 果解碼器初始化參數不是8位的倍數,則可添加最多7個零值填充位來實現最 后一個八位組中的八位組對齊。對于簡單和主類,解碼器初始化參數是如在SMPTE 421M的附錄J中定 義的STRUCT_C。對于高級類,解碼器初始化參數是后面緊跟一入口點首部的 序列層首部。兩個首部是EBDU格式的,這意味著它們包括起始碼并使用 SMPTE421M的附錄E中定義的封裝方法。
width C寬度)-該參數是大于零的整數,指定了己編碼圖像的最大水平大小,以像素為單 位。如果未指定該參數,則它默認為指定的類和級所允許的最大水平大小。
height (高度)該參數是大于零的整數,指定了已編碼圖像的最大垂直大小,以像素為單 位。如果未指定該參數,則它默認為指定的類和級所允許的最大垂直大小。
bitrate (比特率):該參數是大于零的整數,指定了已編碼比特流的峰值傳輸速率,以比特每 秒為單位。該數字不包括因RTP封裝引起的開銷。SP,例如,它不包括AU首 部,或RTP、 UDP或IP首部中的任一個。如果未指定該參數,則它默認為指 定的類和級所允許的最大比特率。參見SMPTE 421M的附錄D中"RMax"的值。
buffer (緩沖區)該參數是指定包含以bitrate參數指定的傳輸速率傳輸的流所需的漏桶大 小B的整數,以毫秒為單位。該參數在SMPTE 421M的附錄C中用于VC-1 的假想參考解碼器模型中定義。注意,該參數僅涉及編解碼器比特流,并且沒 有考慮可能補償網絡抖動所需的任何緩沖時間。如果未指定該參數,則它默認 為指定的類和級所允許的最大緩沖區大小。參見SMPTE 421M的附錄D中 "BMax"和"RMax"的值。
framerate (幀速率)該參數是大于零的整數,指定了已編碼比特流中每秒的最大幀數,并乘以 IOOO且舍入到最近的整數值。例如,每秒30000/1001 (大約29.97)幀被表示 為29970。如果未指定該參數,則它默認為指定的類和級所允許的最大幀速率。
bpic (B圖像)該參數表示當使用高級類時是否存在B圖像。如果存在該參數,并且在己編碼比特流中存在B圖像,則該參數等于l。 O值表明已編碼比特流中不應存在B圖像,即使序列層首部改變。在一個實現中,如果在已編碼比特流中不 包括B圖像,則可包括該值,且值為0。該參數不用于簡單和主類。(對于主類,B圖像的存在可由STRUCT—C 解碼器初始化參數中的MAXBFRAMES字段來指示)。對于高級類,如果未 指定該參數,則可假定值l。
mode (模式)該參數是指定對序列層首部和入口點首部的使用的整數。該參數僅對高級類定義。定義了以下值0:序列層首部和入口點首部都可改變,并且改變的首部將被包括在 RTP分組中;1:在COnfig參數中指定的序列層首部從不改變;以及 3:在config參數中指定的序列層首部和入口點首部從不改變。 如果未指定模式參數,則可假定值0。如果模式1或3適用于VC-1比特 流,則不應指定mode參數。
max-width (最大寬度)、max-height (最大高度)、max-bitrate (最大 比特流)、max-buffer (最大緩沖區)、max-framerate (最大幀速率)這些參數是被定義用于能力交換過程的。這些參數不表示已編碼比特流的 特性,而是"width" 、 "height" 、 "bitrate" 、 "buffer"和"framerate"參 數的上限或優選值。表示對給定類和級的支持的接收器應支持對該類和級的這些參數的最大 值。例如,在一個實現中,表明對主類、低級的支持的接收器應支持352像素 的寬度和288像素的高度,即使這需要縮放圖像以適合較小顯示設備的分辨率。接收器可使用 max-width 、 max-height 、 max-bitrate 、 max-buffer 禾口 max-framerate參數中的任一個來指示優選能力。例如,接收器可選擇指定匹配 其顯示設備的分辨率的max-width和max-height的值,因為使用這些參數編碼 的比特流不需要被重新縮放。如果max-width 、 max-height 、 max-bitrate 、 max-buffer禾口 max-framerate參 數中的任一個表示小于所表示的類和級的所需能力的能力,則這些參數可被解釋為對該能力的優選值。這些參數中的任一個還可用于表示超出所表示的類和級的所需能力的能 力。在這一情況下,參數可被解釋為可對該能力支持的最大值。在一個示例性實現中,當存在來自該集合(max-width、 max-height、 max-bitrate、 max-buffer和max-framerate)的多于一個參數時,所有表示的能 力都應同時得到支持。在一個示例性實現中,如果發送器或接收器能支持更高級的所有特性,則 發送器或接收器不應使用這些參數來表示滿足比在"level"參數中指定的級更 高的VC-1類的級的要求的能力,除了如果指定更高級因為其它限制而不被允 許之外。(作為這一限制的一個示例,在SDP提議/答復模型中,可在答復中 使用的level參數的值受到在提議中所指定的值的限制。) max-width:該參數是大于零的整數,指定了對于已編碼圖像的水平大小,以像素為單 位。如果該值小于類和級所允許的最大水平大小,則該值指定了優選水平大小。 否則,它指定了所支持的最大水平大小。如果未指定該參數,則它默認為指定 的類和級所允許的最大水平大小。
max-height:該參數是大于零的整數,指定了對于已編碼圖像的垂直大小,以像素為單 位。如果該值小于類和級所允許的最大垂直大小,則該值指定了優選垂直大小。 否則,它指定了所支持的最大垂直大小。如果未指定該參數,則它默認為指定 的類和級所允許的最大垂直大小。
max-bitrate:該參數是大于零的整數,指定了對于已編碼比特流的峰值傳輸速率,以比 特每秒為單位。該數字不包括因RTP封裝引起的開銷,例如,它不包括AU首 部,或RTP、 UDP或IP首部中的任一個。如果該值小于類和級所允許的最大比特率,則該值指定了優選比特率。否 則,它指定了所支持的最大比特率。如果未指定該參數,則它可默認為指定的 類和級所允許的最大比特率。參見SMPTE421M的附錄D中"RMax"的值。
max隱buffer:該參數是指定包含以max-bitrate參數所指定的傳輸速率傳輸的流所需的 漏桶大小B的整數,以毫秒為單位。該參數在SMPTE421M的附錄C中用于 VC-1的假想參考解碼器模型中定義。注意,該參數僅涉及已編碼比特流,并 且沒有考慮可能補償網絡抖動所需的任何緩沖時間。如果該值小于max-bitrate參數以及類和級所允許的最大漏桶大小,則該值 指定了優選漏桶大小。否則,它指定了對max-bitrate參數所指定的比特率所支 持的最大漏桶大小。如果未指定該參數,則它默認為指定的類和級所允許的最 大緩沖區大小。參見SMPTE421M的附錄D中"BMax"和"RMax"的值。
max-framerate:該值是大于零的整數,指定了對于己編碼比特流的每秒幀數。該值是幀速 率乘以1000并舍入到最近的整數值。例如,每秒30000/1001 (大約29.97)幀 被表示為29970。如果該值小于類和級所允許的最大幀速率,則該值指定了優選幀速率。否 則,它指定了支持的最大幀速率。如果未指定該參數,則它默認為指定的類和 級所允許的最大幀速率。C.3.2.,體鄉參翻,游薄媒體類型規范中所攜帶的信息具有到會話描述協議(SDP)中的字段的特 定映射。如果使用SDP來指定使用該凈荷格式的會話,則一個示例性映射如 下執行 SDP的"m="行中的媒體名稱是video (視頻)(類型名稱)。 .SDP的"a=rtpmap"行中的編碼名稱是vcl (子類型名稱)。
"a=rtpmap"行中的時鐘速率是90000。 所需的參數"profile"和"level"應被包括在SDP的"a=fmtp"行中。 這些參數以參數=值對的逗號分隔列表的形式來表達。'可任選參數"config" 、 "width" 、 "height" 、 "bitrate" 、 "buffer"、 "framerate"、 "bpic"、 "mode"、 "max-width"、 "max-height"、 "max-bitrate"、 "max-buffer"和"max-framerate"在存在時可被包括在SDP的"a=fmtp"行 中。這些參數以參數=值對的逗號分隔列表的形式來表達a-fmpt^動態凈荷類型〉 <參數名>=<值>[,<值>][; <參數名>=<值>] ,對使用SDP的設備未知的任何參數可被忽略。例如,在稍后的規范中 定義的參數可被復制到SDP中并可被不理解它們的接收器忽略。CJ丄^^/芬復裙l游使f當在用于協商單播使用的提議/答復模型中通過使用SDP的RTP來提議 VC-1時,以下規則適用。關于提議/答復模型的一般主題,參閱例如Rosenberg,J. 禾口 H.Schulzrinne 的 "An Offer/Answer Model with Session Description Protocol(SDP)"(具有會話描述協議(SDP)的提議/答復模型),RFC 3264, 2002年6月。
"profile"參數可被對稱地使用,即答復者或者可維持該參數,或者如 果不支持所提議的VC-1類時可完全移除媒體格式(凈荷類型)。
"level"參數指定了編解碼器所支持的VC-1類的最高級。在一個示例 性實現中,答復者不應在答復中指定比在提議中指定的級數值上更高的級。答 復者可指定比在提議中指定的級低的級,目卩,level參數可被"降級"。如果提議指定了 sendrecv (發送接收)或sendonly (僅發送)方向屬性, 并且答復使level參數降級,則這可能要求新提議指定一更新的"config"參數。 如果該"config"參數不能用于答復中指定的級,則提議者可發起另一提議/答 復輪,或者不使用媒體格式(凈荷類型)。'參數"config"、 "bipc"、 "width" 、 "height"、 "framerate"、 "bitrate"、 "buffer"和"mode"描述了提議者或答復者對該媒體格式配置正在發送的VC-1 比特流的特性。在單播使用并且提議或答復中的方向屬性是recvonly (僅接收) 的情況下,這些參數的解釋未被定義,并且不應使用它們。 參數"config" 、 "width" 、 "height" 、 "bitrate"和"buffer"應在 方向屬性是sencrecv或sendonly時被指定。 參數"max-width" 、 "max-height" 、 "max-framerate" 、 "max-bitrate" 和"max-buffer"可在提議或答復中指定,并且其解釋如下當方向屬性是sendonly時,這些參數描述了發送者對給定類和級以及對同一類的任何較低級能夠產生的VC-1比特流的限制。當方向屬性是recvonly或sendrecv時,這些參數描述了接收器實現的特性。 如果一特性的值小于VC-1類的級所允許的值,則它可被解釋為優選值,并且 發送器的VC-1比特流不應超過它。如果一特性的值大于VC-1類的級所允許 的值時,則它可被解釋為接收器對給定的類和級以及對同一類的任何較低級接 受的值的上限。例如,如果recvonly或sendrecv提議指定了 " profile=0; level=l; max-bitrate=48000",則48 kbps僅是建議的比特率,因為簡單類、低級的所 有接收器實現都被要求支持高達96 kbps的比特率。假定該提議被接受,則答 復者應在答復中指定"bitrate-48000",但是允許最高達96000的任何值。但 是如果提議指定了 "max-bitrate=200000",則這意味著接收器實現對給定類和 級(或較低級)支持200 kbps的最大值。在這一情況下,允許答復者用最高達 200000的bitrate參數來答復。 如果提議者希望在發送和接收之間具有非對稱能力,例如在每一方向中 使用不同的級,則提議者必須提議不同的RTP會話。這可通過指定分別被聲 明為"recvonly"和"sendonly"的不同媒體行來完成。對于通過多播傳送的流,以下附加規則適用 "level"參數指定了由多播會話中的參與者使用的VC-l類的最高級。 在一個實現中,該參數的值不應被答復者改變。由此,凈荷類型或者可被無更 改地接受,或者可被移除。'參數"config"、 "bpic"、 "width" 、 "height" 、 "framerate"、 "bitrate"、 "buffer"和"mode"指定了在多播會話上將被發送和/或接收的VC-1比特流 的特性。即使方向屬性是recvonly也可指定這些參數。在一個示例性實現中, 這些參數的值不應被答復者改變。由此,凈荷類型或者可被無更改地接受,或 者可被移除。 參數"max-width" 、 "max-height" 、 "max-framerate" 、 "max-bitrate" 和"max-buffer"的值應被答復者對被聲明為sencrecv或recvonly的所有流支 持。否則,可執行以下動作之一移除媒體格式,或拒絕會話。C. J.(聲敏絲會話激述護游伊I當以聲明性方式通過使用SDP的RTP來提議VC-1時,如在RTSP或SAP 中那樣,以下規則適用。關于RTSP, 一般參閱Schulzrinne, H.、 Rao, A.和R. Lanphier的"Real Time Streaming Protocol(RTSP)"(實時流傳送協議(RTSP )), RFC 2326, 1998年4月。關于SAP,—般參閱Handley, M.、 Perkins, C.和E, Whelan的"Session Announcement Protocol"(會話通告協議),RFC 2974, 2000年10月。 參數"profile"和"level"僅指示已編碼比特流的特性。它們不暗示對 發送器所支持的能力的限制。'應指定參數"config" 、 "width" 、 "height" 、 "bitrate"和"buffer"。 .在一個示例性實現中,不應使用參數"max-width" 、 "max-height"、 "max匿framerate" 、 "max隱bitrate"禾口 "max隱buffer,,。采用SDP的媒體表示的一個示例如下(簡單類,中級) m=video 49170 RTP/AVP 98a=rtpmap:98 vc 1/90000a=fmtp:98profile=0;level=2;width=352;height=288;framerate=15000; bitrate=384000;buffer=2000;config=4e291800D. 示例性過程圖7-9示出了解釋圖5所示的系統500的示例性操作方式的過程。為便于 討論,某些操作被描述為構成按特定次序執行的不同步驟。這一實現是示例性 而非限制性的。此處所描述的某些步驟可被組合在一起并在單個操作中執行, 而某些步驟可以按不同于本發明中所述的示例中所采用的次序的次序來執行。£>丄薪遂一開始,圖7示出了提供圖5所示的端到端處理的綜述的過程700,它涉 及媒體信息的編碼、媒體信息的傳輸、以及所接收的媒體信息的解碼。在步驟702處,源模塊502接收媒體信息。在一種情況下,該過程可包括接收采用原始格式或某一其它非VC-1格式的媒體信息,并隨后將該信息轉換成VC-1格式。在另一情況下,該過程可包括接收己被轉換成vc-i格式的媒體信息。在步驟704處,源模塊502以符合上述RTP凈荷格式的方式格式化媒體 信息。即,步驟704產生包含以所需RTP凈荷格式表達的VC-1信息的一系列 RTP分組。以下討論的圖8提供了關于步驟704中執行的格式化的附加信息。 或者,源模塊502可接收已經被轉換成所需的RTP凈荷格式的VC-1媒體信息。在步驟706處,源模塊508通過通信機制504發送RTP分組。通信機制 504可以包括任何種類的網絡或網絡組合。或者,通信機制504可以松散地表 示任何種類的物理計算機可讀介質的運輸,等等。在步驟708處,目標模塊506接收RTP分組。在步驟710處,目標模塊506處理RTP分組。這可涉及使用圖5中的接 收模塊512來執行RTP分組的初始處理,接著使用解碼模塊514來解碼RTP 分組中表達的媒體信息。步驟710的結果是已處理的媒體信息的任何種類的輸 出。以下討論的圖9提供了關于步驟710中執行的處理的附加信息。編馮圖8提供了關于用于將媒體信息結構化成用于VC-1的所需RTP凈荷格式 的過程800的附加細節。該過程800包括圖7的步驟704和706作為其組成部 分。作為預備,在步驟802處,系統500 (圖5)可為通信會話初始化目標模 塊506。該操作可使用諸如SDP (會話描述協議)等任何種類的協議來執行。初始化本身可涉及作出各種控制設置。如在前一節(C)中所討論的, mode=l控制設置可用于指示在"conflg"參數中指定的序列層首部不改變。由 于序列層首部在"mod「l"時從不改變,因此源模塊502可將其從比特流中移 除。mode=3控制設置可用于指示"config"參數中指定的序列層首部和入口點 首部從不改變。對于該模式,源模塊502還可從訪問單元中省略入口點首部。 步驟802還可包括例如用bpic參數來表示流是否包含B圖像。該信息是有用的,因為它允許目標模塊506以更有效的方式處理RTP分組。還有其它初始化信息可在步驟802中傳達。此外,源模塊502可通過在通 信會話中的各個接合點處經由序列層首部發送控制信息來覆蓋各種初始化設 置。在步驟804處,源模塊502將媒體信息的VC-1幀表達為RTP分組的RTP 凈荷中的一個或多個訪問單元(AU)。圖8示出該步驟804可導致至少兩個 不同的情形,被標為情形A和情形B。在情形A中,VC-1幀用單個AU來封 裝,其中該AU包括訪問單元首部(Hau)和凈荷(PLau) 。 AU作為整體形 成了RTP分組的凈荷。RTP分組還包括RTP首部(HRTP)。在情形B中,向 單個AU添加VC-1幀將導致RTP分組超過最大傳輸單元(MTU)大小。由此, 在這一情形中,源模塊502將VC-1幀分段成兩個或多個相應的RTP分組中的 兩個或多個AU。還有其它情形也是可能的;情形A和B僅是代表性的。在某些情況中,如在前一步驟802的上下文中所討論的,源模塊502可從 AU中省略某些類型的信息,諸如序列層首部、入口點首部等等。在其它情況 中,源模塊502可能已經知道了將媒體信息發送給目標模塊506的實際峰值傳 輸速率。在這一情況下,源模塊502可從序列層首部中移除除對應于實際峰值 傳輸速率的參數集之外的所有漏桶參數集。除了從RTP分組中移除不必要的信息之外,源模塊502還可(或可替換 地)將冗余信息引入到RTP分組中。例如,源模塊502可通過在比特流中頻 繁地重復序列層首部來改善針對RTP分組丟失的穩健性。在步驟806處,源模塊502可定義將支配目標模塊506對RTP分組的解 釋的各種控制設置。(在實際的實踐中,步驟804和806可表示用于產生RTP 分組的集成過程,而非兩個不同的操作)。如由圖8中的虛線箭頭所指示的, 源模塊502可通過定義RTP分組的首部以及RTP凈荷內的AU的各個首部中 的各種值來進行設置。實際控制設置可包括前一節中所述的控制信息中的任一個。這些設置的一 個示例性(且不完整的)列表在以下以概要方式闡明,如果RTP分組包含含有完整VC-1幀或VC-1幀的最后一個片段的訪問 單元,則可設置標記位。 可設置AU首部中的FRAG字段以指示該AU包含分段幀。
AU首部中的RA計數字段可基于二進制模256計數器的值來設置。源 模塊502或其它發送實體可對每一隨機訪問點遞增RA計數字段的值,并對每 一相應的AU將該值插入到RA計數字段中。目標模塊506可使用該計數信息 例如通過檢測它所接收的媒體信息中RA計數值的不連續性來檢測媒體信息的 丟失。
AU首部中的"RA"字段可僅對包含隨機訪問點的那些AU設置。 *如果AU包含序列層首部并且如果該序列層首部不同于最近發送的序列層首部,則AU首部中的SL字段可被來回切換。 AU首部中的PTS增量字段指定了幀的演示時間為與該RTP分組的RTP 首部中的時戳的2的補碼偏移量(增量)。 AU首部中的DTS增量字段指定了幀的解碼時間為演示時間和解碼時間 之間的2的補碼偏移量(增量)。首部可包括另外的控制信息,如在前一節中更完整陳述的。步驟706涉及發送在步驟704中創建的RTP分組,此處重復上述過程。 過程800的凈效應是傳輸了根據所需的VC-l RTP凈荷格式配置的RTP分組 流。圖9提供了關于用于處理所接收到的RTP信息的過程900的附加細節。 該過程900包括圖7的步驟704和706作為其組成部分。在步驟708處,目標模塊506經由通信機制504或某一其它信息管道接收 一個或多個RTP分組。在步驟710處,目標模塊506處理該RTP分組以輸出到一個或多個輸出 設備。在作為步驟710的一部分的步驟902處,目標模塊506緩沖該RTP分組, 并對所接收的RTP分組執行各種預處理操作。根據一個示例性操作,目標模 塊506可確定所接收到的信息(由RTP分組提供)是否包括任何遺漏,例如 由于分組丟失而引起。例如,目標模塊506可使用RA計數字段來確定提供隨 機訪問點的信息是否丟失。目標模塊506可使用SL字段來確定提供新(即, 不同)序列層首部的信息是否丟失。根據另一實行操作,目標模塊506可重新插入被源模塊502故意移除的信 息,諸如入口點首部。更具體而言,如果表示了 "m0de=3"并且接收模塊512 接收到完整的AU或AU的第一個片段,并且RA位被設為1但是AU不以入 口點首部開始,則這表明入口點首部被源模塊502 "壓縮"。在這一情況下, 接收模塊512可在AU的開頭插入一入口點首部。當插入該入口點首部時,接 收模塊512可使用由MIME "config"參數指定的首部。在步驟902處可對接收到的媒體信息執行其它類型的預備操作。 最后,步驟904需要解碼在步驟902中處理的媒體信息。 過程900中的上述過程在一循環中重復,使得新的媒體信息被連續添加到 緩沖區,并且所接收到的媒體信息被連續從緩沖區中拉出以供處理。E.示例性計算機環境圖10提供了關于可用于實現前述各節中所描述的處理功能中的任一個, 諸如圖5所示的模塊中的任一個(如源模塊502和/或目標模塊506,或這些模 塊(502、 506)的組合)的計算機環境1000的信息。然而,如上所述,存在 源模塊502和目標模塊506的許多其它實現。計算環境1000包括通用或服務器類型的計算機1002和顯示設備1004。 然而,計算環境1000可包括其它種類的計算設備。例如,盡管未示出,但計 算機環境1000可包括手持式或膝上型設備、機頂盒、游戲控制臺、大型計算 機等等。此外,圖IO示出了計算機環境1000的元件被組合在一起以便于討論。 然而,計算環境1000可采用分布式處理配置。在分布式計算環境中,計算資 源可物理地分散在整個環境中。示例性計算機1002包括一個或多個處理器或處理單元1006、系統存儲器 1008和總線1010。總線1010將各種系統組件連接在一起。例如,總線1010 將處理器1006連接到系統存儲器1008。總線1010可使用任何種類的總線結構 或總線結構的組合來實現,包括存儲器總線或存儲器控制器、外圍總線、加速 圖形端口、以及使用各種總線體系結構中的任一種的處理器或局部總線。計算機1002還可包括各種計算機可讀介質,包括各種類型的易失性和非 易失性介質,其每一個都可以是可移動或不可移動的。例如,系統總線1008包括諸如隨機存取存儲器(RAM) 1012等易失性存儲器、以及諸如只讀存儲 器(ROM) 1014等非易失性存儲器形式的計算機可讀介質。ROM 1014包括 輸入/輸出系統(BIOS) 1016,它包含諸如在啟動期間有助于在計算機1002內 的元件之間傳輸信息的基本例程。RAM 1012通常包含可被處理單元1006快速 訪問的形式的數據和/或程序模塊。其它種類的計算機存儲介質包括用于從不可移動、非易失性磁介質中讀取 并向其寫入的硬盤驅動器1018,用于從可移動、非易失性磁盤1022 (例如, "軟盤")中讀取并向其寫入的磁盤驅動器1020,以及用于從諸如CD-ROM、 DVD-ROM或其它光學介質等可移動、非易失性光盤1026中讀取并向其寫入 的光盤驅動器1024。硬盤驅動器1018、磁盤驅動器1020和光盤驅動器1024 各自通過一個或多個數據介質接口 1028連接到系統總線1010。或者,硬盤驅 動器1018、磁盤驅動器1020和光盤驅動器1024可以通過SCSI接口 (未示出) 或其它耦合機制連接到系統總線1010。盡管未示出,但是計算機1002可包括 其它類型的計算機可讀介質,諸如磁帶盒或其它磁存儲設備、閃存卡、 CD-ROM、數字多功能盤(DVD)或其它光學存儲、電可擦除可編程只讀存儲 器(EEPROM)等。一般而言,上述計算機可讀介質提供了計算機1002所使用的計算機可讀 指令、數據結構、程序模塊和其它數據的非易失性存儲。例如,可讀介質可儲 存操作系統1030、應用專用功能1032、其它程序模塊1034和程序數據1036。計算機環境1000可包括各種輸入設備。例如,計算機環境1000包括用于 將命令和信息輸入到計算機1002中的鍵盤1038和定點設備1040 (例如,"鼠 標")。計算機環境1000可包括其它輸入設備(未示出),諸如話筒、操縱 桿、游戲手柄、圓盤式衛星天線、串行端口、掃描儀、讀卡設備、數字或視頻 攝像機等等。輸入/輸出接口 1042將輸入設備耦合到處理單元1006。更一般地, 輸入設備可通過任何種類的接口和總線結構,諸如并行端口、串行端口、游戲 端口、通用串行總線(USB)端口等耦合到計算機1002。計算機環境1000還包括顯示設備1004。視頻適配器1044將顯示設備1004 耦合到總線1010。除了顯示設備1004之外,計算機環境1000可包括其它輸出 外圍設備,諸如揚聲器(未示出)、打印機(未示出)等。計算機1002使用到一個或多個遠程計算機,諸如遠程計算設備1046的邏 輯連接在聯網環境中操作。例如,計算機1002可表示圖5的源模塊502,而遠 程計算設備1046可表示圖5的目標模塊506,或相反。遠程計算設備1046可 包括任何種類的計算機設備,包括通用個人計算機、便攜式計算機、服務器等。 遠程計算設備1046可包括以上相對于計算機1002所討論的全部特征或其某一子集。任何類型的網絡1048可用于將計算機1002與遠程計算設備1046耦合, 諸如圖4的WAN 402、 LAN等等。計算機1002經由網絡接口 1050 (例如, 圖4所示的接口416)耦合到網絡1048,該接口可利用寬帶連接、調制解調器 連接、DSL連接或其它連接策略。盡管未示出,但計算環境1000可提供用于 將計算機1002與遠程計算設備1046連接(例如,經由已調制無線電信號、已 調制紅外信號等)的無線通信功能。盡管以對結構特征和/或方法動作專用的語言描述了本發明,但是可以理 解,所附權利要求書中定義的本發明不必限于所描述的具體特征或動作。相反, 這些具體特征和動作是作為實現所要求保護的本發明的示例性形式而公開的。
權利要求
1.一種用于在RTP分組(602)中封裝VC-1信息的方法,包括將所述VC-1信息排列成至少一個訪問單元(608),所述訪問單元共同形成RTP凈荷(606);以及將一RTP首部(604)追加到所述RTP凈荷(606)以形成所述RTP分組(602)。
2. 如權利要求1所述的方法,其特征在于,訪問單元包含完整的VC-1 信息幀。
3. 如權利要求l所述的方法,其特征在于,VC-1信息幀在多個訪問單元上被分段。
4. 如權利要求3所述的方法,其特征在于,還包括在訪問單元的首部中 設置指示所述訪問單元包括幀的片段的控制信息。
5. 如權利要求3所述的方法,其特征在于,還包括在接收所述多個訪問 單元之后,在解碼所述VC-1信息之前從所述多個訪問單元重新組裝所述VC-1 信息幀。
6. 如權利要求3所述的方法,其特征在于,還包括在接收所述多個訪問 單元之后,將所述VC-1信息幀的片段重新組裝成至少一個封裝的比特流數據 單元(EBDU)。
7. 如權利要求1所述的方法,其特征在于,還包括提供指示所述VC-1 信息不包含需要重排的圖像的控制信息。
8. 如權利要求1所述的方法,其特征在于,還包括遞增訪問單元的首部 中的計數器以檢測隨機訪問點的出現。
9. 如權利要求1所述的方法,其特征在于,還包括在訪問單元的首部中 設置指示所述訪問單元包含隨機訪問點的控制信息。
10. 如權利要求l所述的方法,其特征在于,還包括 確定實際峰值傳輸速率;以及減少在訪問單元中表達的參數的個數以移除不涉及所述實際峰值傳輸速 率的多余參數信息。
11. 如權利要求l所述的方法,其特征在于,還包括在由RTP分組序列 定義的比特流內冗余地重復序列層首部以形成對信息丟失有更強復原力的比 特流。
12. 如權利要求l所述的方法,其特征在于,還包括在訪問單元的首部中 包括指示已發送了不同于直接前一序列層首部的序列層首部的控制信息。
13. 如權利要求l所述的方法,其特征在于,還包括提供指示序列層首部 在由RTP分組序列定義的比特流內不變化的控制信息。
14. 如權利要求13所述的方法,其特征在于,還包括從所述比特流省略 所述不變化的序列層首部。
15. 如權利要求l所述的方法,其特征在于,還包括提供指示入口點首部 在由RTP分組序列定義的比特流內不變化的控制信息。
16. 如權利要求15所述的方法,其特征在于,還包括 從所述比特流中省略所述不變化的入口點首部;以及 在解碼所述比特流之前將所述入口點首部重新插入到所述比特流中。
17. —種或多種包含用于實現如權利要求1所述的方法的機器可執行指令 的計算機可讀介質。
18. —種由如權利要求1所述的方法產生的RTP數據結構,所述數據結 構被表現在一個或多個計算機可讀介質上。
19. 一種由如權利要求l所述的方法產生的訪問單元數據結構,所述數據 結構被表現在一個或多個計算機可讀介質上。
20. —種包括被配置成實現如權利要求1所述的方法的邏輯的源模塊。
21. —種包括被配置成解釋由如權利要求1所述的方法產生的RTP分組 的邏輯的解碼器模塊。
22. —種包括被配置成實現如權利要求1所述的方法的源模塊、以及被配 置成解釋由如權利要求1所述的方法產生的RTP分組的解碼器模塊的系統。
23. —種用于在RTP分組(602)中封裝VC-1信息的RTP數據結構,所 述數據結構被表現在一個或多個計算機可讀介質上,包括包括RTP首部(604)和RTP凈荷(606)的RTP分組(602), 其中所述RTP凈荷(606)包括至少一個訪問單元(608),其中所述至少一個訪問單元(608)包括訪問單元首部(610)和訪問單元 凈荷(612),以及其中所述至少一個訪問單元(608)或者包括完整的VC-1幀,或者包括 VC-1幀的一個片段。
24. —種被配置成在RTP分組(602)中封裝VC-1信息的源模塊(502), 包括被配置成將所述VC-1信息排列成至少一個訪問單元(608)的邏輯,所 述訪問單元共同形成RTP凈荷(606);以及被配置成將一RTP首部(604)追加到所述RTP凈荷(606)上以形成所 述RTP分組(602)的邏輯。
25. —種被配置成接收并處理RTP分組序列的目標模塊(506),包括 被配置成解釋與RTP分組序列中的RTP分組(602)相關聯的RTP首部(604)中的控制信息的邏輯,其中所述RTP分組(602)包括包含一個或多 個訪問單元(608)的凈荷(606),并且其中每一訪問單元(608)包括訪問 單元首部(610)和訪問單元凈荷(612),并且其中每一訪問單元凈荷(612) 包括VC-1信息;被配置成解釋所述RTP分組(602)的RTP凈荷(606)內的至少一個訪 問單元首部(610)中的控制信息的邏輯;以及被配置成基于所述RTP首部(604)以及所述至少一個訪問單元首部(610) 中的控制信息來處理所述VC-1信息的邏輯。
全文摘要
描述了用于VC-1的RTP凈荷格式。RTP凈荷格式提供了可包括一個或多個訪問單元(AU)(608)的RTP凈荷(606)。訪問單元(608)可提供完整的VC-1信息幀。或者,VC-1信息幀可在多個訪問單元(608)之間分段。每一訪問單元(608)包括訪問單元首部(610)和訪問單元凈荷(612)。該RTP凈荷格式結合了用于改善VC-1信息處理中的效率和穩健性的各種規定,這部分地通過由訪問單元(608)的相應訪問單元首部(610)傳達的控制信息來實現。
文檔編號H04L29/06GK101283566SQ200680037805
公開日2008年10月8日 申請日期2006年10月3日 優先權日2005年10月13日
發明者A·E·克萊門茨 申請人:微軟公司