專利名稱:動態(tài)流交織和基于子流的遞送的制作方法
技術領域:
本發(fā)明涉及在各個方面改善流傳送質量遞送、內容移到時間、流的可 擴展分布式遞送和FEC編碼的使用以改善流傳送解決方案。流傳送包括以 恒定或者可變的比特率的、用于按需的、播放列表內容或者現場直播的音 頻、視頻和數據的流傳送。
背景技術:
由于通過基于分組的網絡來遞送高質量音頻和視頻正在變得越來越常 見,流媒體遞送正在變得越來越重要,所述網絡諸如因特網、蜂窩和無線 網絡、輸電線網絡和許多其他網絡。所遞送的流媒體的質量取決于多個因素,其中包括原始內容的質量、原始內容的編碼質量、接收設備解碼和顯 示視頻的能力、在接收器接收的信號的時間性和質量等。為了建立感知的 良好流媒體體驗,在接收器接收的信號的傳送和時間性特別重要。與從發(fā) 送器發(fā)送的流相比較,良好的傳送提供了在接收器接收的流的保真度,而 時間性表示接收器能夠多么快地在發(fā)起對于內容的請求后開始播放所述內 容。
近來,考慮使用前向糾錯(FEC)碼來用于在傳輸期間的流媒體的保護
變?yōu)閼T例。當通過分組網絡——其實例包括諸如由諸如3GPP、 3GPP2和 DVB的組織標準化的那些的因特網和無線網絡——發(fā)送時,源流當被生成 或者使得可獲得時被置于分組中,因此,分組用于以源或內容流被生成或 者使得可獲得時的順序來攜帶源或內容流到接收器。
在針對這些類型的情況的FEC碼的典型應用中,編碼器在維修分組的 建立中使用FEC碼,除了包含源流的原始源分組之外,還隨后發(fā)送所述維 修分組。維修分組具有下述屬性當源分組丟失發(fā)生時,所接收的維修分 組可以用于恢復在丟失的源分組中包含的數據。維修分組可以用于恢復完 全丟失的丟失源分組的內容,但是也可以用于從部分分組丟失發(fā)生時恢復, 無論完全接收的維修分組或者甚至部分接收的維修分組。因此,完全或者 部分地接收的維修分組可以用于恢復完全或者部分丟失的源分組。
在其他實例中,所發(fā)送的數據會發(fā)生其他類型的惡化,例如,比特的 值可能變換,因此,可以使用維修分組來校正這樣的惡化,并且盡可能精 確地提供源分組的恢復。在其他實例中,并非必然地以離散分組來發(fā)送源 流,而是可以例如作為連續(xù)比特流來發(fā)送源流。
存在可以用于提供源流的保護的FEC碼的許多實例。里德-所羅門 (Reed-Solomon)碼是在通信系統中用于錯誤和消除糾正的公知編碼。對 于在例如分組數據網絡上的消除糾正,里德-所羅門碼的一種公知的有效實 現方式使用在下文中所述的柯西(Cauchy)或者范特蒙德(Vandermonde) 矩P車LRizzo, "Effective Erasure Codes for Reliable Computer Communication Protocols", Computer Communication Review, 27(2):24-36 (April 1997)(以下 稱為"Rizzo")禾B Bloemer等,"An XOR-Based Erasure-Resilient Coding Scheme", Technical Report TR-95-48, International Computer Science Institute,Berkeley, California (1995)(以下稱為"XOR-Reed-Solomon")或者其他。FEC碼的其他實例包括LDPC代碼、諸如在Luby I中所述的那些的鏈 式反應碼和諸如在Shokrollahi I中的多級鏈式反應碼。在Rizzo和XOR-Reed-Solomon中描述了用于里德-所羅門碼的變化形 式的FEC解碼處理的實例。在那些實例中,在已經接收到足夠的源和維修 數據分組后應用解碼。解碼處理可能是在計算上復雜的,并且依賴于可用 的CPU資源,相對于由在塊中的媒體所跨越的時間長度,這可能需要相當 長的時間來完成。接收器當計算在媒體流的接收開始和媒體的播放之間所 需要的延遲時必須考慮解碼所需要的時間長度。由于解碼所導致的這個延 遲被用戶感知為在他們請求特定媒體流和重放開始之間的延遲。因此期望 最小化這個延遲。在許多應用中,將分組進一步細分為其上應用了FEC處理的符號。分 組可以包括一個或多個符號(或者少于一個符號,但是通常不在分組間劃 分符號)。符號可以具有任何大小,但是符號的大小經常至多等于分組的大 小。源符號是編碼要被發(fā)送的數據的那些符號。維修符號是除了源符號(即, 如果可以獲得所有的源符號并且不能獲得任何維修符號,則可以完全恢復 要發(fā)送的數據)之外地、直接或者間接地從源符號生成的符號。一些FEC碼是基于塊的,其中,編碼操作依賴于在塊中的一個或多個 符號,并且可以獨立于不在那個塊中的符號。使用基于塊的編碼,FEC編 碼器可以從在一個塊中的源符號生成那個塊的維修符號,然后移動到下一 個塊,并且不必涉及除了用于被編碼的當前塊的源符號之外的源符號。在 發(fā)送中,包括源符號的源塊可以被表示為包括編碼的符號(其可以是一些 源符號、 一些維修符號或者兩者)的編碼塊。在存在維修符號的情況下, 在每個編碼塊中不是需要全部的源符號。對于一些FEC碼,特別是里德-所羅門碼,當每個源塊的編碼符號的數 量增加時,編碼和解碼時間增大地不再實用。因此,在實踐中,經常在每 個源塊可以生成的編碼符號的總數上有實際上限(255是一些應用的大概實 際限制),特別是在通過常規(guī)硬件來執(zhí)行里德-所羅門編碼或者解碼處理的典 型情況下,例如在限于每個源塊總共255個里德-所羅門編碼符號的蜂窩電 話中的專用硬件中實現使用作為用于保護流以防止分組丟失的DVB-H標7一個編碼符號,則編碼的源塊可以是至多255 KB (千字節(jié)),并且這也 當然是在源塊本身的大小的上限。下述其他所關心的情況也是問題諸如能夠足夠快地解碼源塊以趕上 源流傳送率,最小化由FEC解碼引入的解碼延遲,并且在FEC解碼期間的 任何時間點僅僅使用在接收設備上的可用CPU的小部分。其他關心情況包括開始播放流的能力,諸如使用個人計算機來解碼和 呈現所接收的音頻和視頻流,并且在計算機屏幕上顯示所述視頻,并且通 過內置的揚聲器來播放所述音頻,或者作為另一個實例,使用機頂盒來解 碼和呈現所接收的音頻和視頻流,并且在電視顯示器上顯示所述視頻,并 且通過立體聲系統來播放所述音頻。 一個主要問題是最小化在當用戶確定 觀看作為流遞送的新內容時和當所述內容開始播放時之間的延遲,以下稱 為"內容移到時間"。內容移到的實例是當用戶正在觀看經由第一個流遞送 的第一內容,然后用戶決定觀看經由第二個流遞送的第二內容,并且啟動 開始觀看第二內容的動作的時候。第二個流可以從與第一個流相同或不同 的服務器組發(fā)送。內容移到的另一個實例是當用戶正在觀看網站并且通過 點擊在瀏覽器窗口中的鏈接而決定開始觀看經由第一個流遞送的第一內容 的時候。內容移到的另一個實例是當用戶想尋求并開始在同一內容流中新 的位置(向前或者向后)觀看的時候。當搜索和采樣大量的可用內容時, 最小化內容移到時間對于視頻觀看以允許用戶具有高質量的快速內容沖浪 體驗是重要的。高質量的快速內容沖浪體驗經常與用戶消費的內容量正相 關。經常是這樣的情況對于內容移到時間的主要影響因素是底層的FEC 結構。另一個考慮是最小化在播放一個內容的結尾和播放另一個內容的開 始之間的時隙,其最好是連續(xù)的,具有很小暫?;蛘邲]有暫停。例如,當 所述一個內容是廣播顯示并且所述下一個內容是廣告,或者相反時,在它 們的播放之間的長間隙(本文稱為"內容過渡時間")是不期望的。顯然,最小化內容過渡時間是期望的,同時最小化所述過渡周圍的時段期間向接收器的流傳送速度。另一個考慮是當使用諸如因特網之類的盡力遞送網絡時最大化所遞送 的流的質量,所述網絡可能丟棄分組并且會引起要遞送的分組所花費的時 間量上的很大變化,同時最小化諸如帶寬的網絡資源的使用。另一個考慮是提供強壯和可擴展的流遞送解決方案,其允許系統的部 件在故障時不對被遞送到接收器的流的質量產生副作用??梢允褂媒豢梺硖峁τ谥T如間歇的分組丟失的信道缺陷的優(yōu)越保 護。例如,分組丟失經常有些突發(fā)性,因此在更長的時段上展開源塊會是 有益的。對于某些FEC碼,大源塊的本地使用是實用的,但是對于諸如里德-所羅門碼的其他FEC碼,經常有可以使用的源塊的大小的實際限制。因此,為了在更長的時間間隔上擴展與源塊相關聯的分組的傳輸,交織包括 針對不同源塊的編碼符號的分組的發(fā)送是有益的。以前,已經引入了解決如上所述的一些考慮的方法。例如,在LubyII 中描述了一些新穎的FEC源塊形成和交織方法。 一些交織方法在交織量對 于整個流是固定的意義上是靜態(tài)的。因此,有時在影響由這樣的方法提供 的保護質量的交織量和內容移到時間之間存在折衷,即更大的交織量提供 了更好的流保護,但提供更長的內容移到時間,并且對于向接收器的流發(fā) 送的整個持續(xù)時間,以固定的方式來確定這種折衷。存在在流發(fā)送處理的大多數期間提供短的內容移到時間和更大的交織 量的一些方法,諸如在Watson中描述的一些方法。在Watson中描述的一 些方法從短的初始源塊向越來越長的源塊動態(tài)過渡,并且在所述過渡時段 期間,以比內容流發(fā)送速度略快的速度發(fā)送。這樣的方法提供了短的內容 移到時間,同時允許建立當流進行時提供的保護質量。例如, 一種應用在 Watson中所述的一些方法的方式是確定源塊結構,并且在流正被發(fā)送時執(zhí) 行FEC編碼,即短到長的源塊結構被確定,并且當它們在其中它們被單獨 的接收器訪問的每個點被發(fā)送時被FEC編碼,因此,對于每個接收器獨特 地執(zhí)行源塊結構形成和FEC編碼,并且被發(fā)送到每個接收器的流是獨特的。 但是,有時期望具有獨立于流的遞送而確定的內容流的源塊結構,所述獨 立于例如獨立于接收器、獨立于觀看內容的時間和所述觀看在內容流中的 何處開始、以及獨立于在流中的數據以何順序被遞送。如果要從多個服務9器向單個接收器遞送內容流,則這是特別重要的。 因此,期望具有改進的過程和裝置。發(fā)明內容根據本發(fā)明的方面的編碼器、解碼器和通信系統的實施例提供了動態(tài) 交織流的方法,包括當發(fā)送流時獨立于任何源塊結構動態(tài)地引入更大的交 織量的方法。這些方法的一些益處是它們比未引入交織時在原始流中在 更大時段上擴展在信道中的丟失或者誤差,它們提供當使用FEC編碼時對于分組丟失或者分組損壞的優(yōu)越保護,它們提供對于網絡抖動的優(yōu)越保護, 并且它們允許將內容移到時間和內容過渡時間減小到最小。這些方法的一 些另外的益處包括平滑所發(fā)送的流速度,包括在從流發(fā)送一個內容向另一 個內容的過渡上,以及最小的內容過渡時間。根據本發(fā)明的方面的編碼器、解碼器和通信系統的實施例也可以將數 據流劃分為子流,將所述子流通過網絡沿著不同的路徑遞送到接收器,并且在接收器處同時接收從可能的不同服務器發(fā)送的不同子流。當與FEC編碼結合使用時,所述方法包括從可能的不同服務器遞送每個源塊的編碼的部分。這些方法的一些益處包括改善的內容移到時間、對于服務器故障 和路徑故障的強壯性、對于盤故障的強壯性、對于分組丟失和/或損壞的改 善的強壯性、整體流遞送解決方案的改善的可擴展性和在服務器之間的改 善的內容存儲和流傳送速度均衡。根據本發(fā)明的方面的編碼器、解碼器和通信系統的實施例也可以將動態(tài)交織與子流遞送結合。例如,使用動態(tài)交織可以確定源塊架構和FEC編 碼,并且可以將編碼流劃分為子流,并且可以使用動態(tài)交織向接收器遞送 子流的組合,以提供具有最小內容移到時間的強壯的流遞送系統。這些組 合的方法的益處是動態(tài)交織和子流遞送的益處的組合。下面的詳細說明與附圖將提供本發(fā)明的本質和益處的更好的理解。
圖1是根據本發(fā)明的一個實施例的通信系統的框圖。 圖 是說明內容移到時間的圖。圖3A是例示內容移到時間的分量的圖。圖3B是例示在解碼期間的用于FEC的CPU利用率的圖。圖4是例示內容流的源塊結構和每個源塊的對應內容流速度的表示的圖。圖5是例示對應于圖4的內容流的編碼塊結構的圖。圖6是例示對應于基本發(fā)送器方法的接收器和內容移到時間的圖。圖7是例示流發(fā)送的帶子方法的圖。圖8是例示根據流發(fā)送的帶子方法的靜態(tài)交織的圖。圖9是例示對應于靜態(tài)交織發(fā)送器方法的接收器和內容移到時間的圖。圖10是例示當向接收器發(fā)送新流時的動態(tài)交織發(fā)送器方法的圖。圖11是例示由用于動態(tài)交織發(fā)送器方法的接收器經歷的內容移到時間和長時期保護期的圖。圖12是例示在用于動態(tài)交織發(fā)送器方法的在兩個連續(xù)內容分段之間的內容過渡的圖。圖13是例示在用于動態(tài)交織發(fā)送器方法的在兩個不連續(xù)內容分段之間 的內容過渡的圖。圖14是例示要用于基于子流的遞送方法中的、從頭端服務器向各個分 布式服務器分發(fā)的編碼內容流的圖。圖15是例示在基于子流的遞送方法中的、從各個分布式服務器請求內 容流并且從這些服務器中的一些接收編碼內容流的接收器的圖。
具體實施方式
實施例提供了動態(tài)地交織流的新穎方法,包括用于當獨立于任何源塊 結構而發(fā)送流時動態(tài)地引入更大交織量的方法,其中所述發(fā)送是在網絡等上進行的。實施例也提供了用于下述方面的新穎方法將數據流劃分為子 流,將所述子流通過網絡沿著不同的路徑遞送到接收器,并且在接收器處同時接收從可能的不同的服務器發(fā)送的不同子流。當與FEC編碼結合使用時,所述方法包括從可能的不同的服務器遞送每個源塊的編碼的部分。 實施例還提供了將動態(tài)交織與子流遞送結合的新穎方法。以下,假定承載數據的網絡是基于分組的,以便簡化本文的說明,并且認識到,本領域內的技術人員可以容易看出本文所述的過程和方法如何 可以被應用到諸如連續(xù)比特流網絡之類的其他類型的傳輸網絡。以下,假 定FEC碼提供了對于丟失分組或者丟失分組中的部分數據的保護,以便簡 化本文的說明,并且認識到本領域內的技術人員可以容易看出本文所述的 過程和方法如何可以被應用到諸如比特變換之類的其他類型的數據傳輸錯 誤。在本說明書中,假定要編碼的數據(源數據)已經被劃分為相等長度 的"符號",其可以是任何長度(小到單個比特),但是對于數據的不同部 分可以是不同的長度。
可以在分組中在數據網絡上承載符號,并且在每個分組中明確地承載 或者隱含全部數量的符號。在一些情況下,有可能源分組不是符號長度的 倍數,在這種情況下,可以截斷在分組中的最后符號。在這種情況下,為
了 FEC編碼的目的,隱含地假定這個最后的符號被填充固定模式的比特, 例如零值比特,以便即使這些比特未被承載在分組中,接收器也仍然可以 填充這個最后的截斷符號為完整的符號。在其他實施例中,所述固定模式 的比特可以被置于分組中,由此有效地將符號填充到等于所述分組長度的 長度??梢越洺R员忍貋頊y量符號的大小,其中,符號具有M比特的大小, 并且從2AM (2的M次冪)個符號的符號表中選擇所述符號。非二進制數 字也是可預期的,但是二進制比特是優(yōu)選的,因為它們更普遍地被使用。
被考慮用于流傳送的FEC碼通常是系統化的FEC碼,g卩,源塊的源符 號被包括為源塊的編碼的一部分,并且從而發(fā)送所述源符號。本領域內的 技術人員可以認識到,本文所述的方法和過程也同樣良好地適用于不是系 統化的FEC碼。系統化的FEC編碼器從源符號的源塊生成某個數量的維修 符號,并且所述源符號和維修符號的至少一些的組合是表示源塊的通過信 道發(fā)送的編碼符號。某些FEC碼有益于有效地生成所需要數量的維修符號, 諸如"信息附加碼"或者"噴泉碼(fountaincodes)",并且這些代碼的實例 包括"鏈式反應碼"和"多級鏈式反應碼"。諸如里德-所羅門碼的其他FEC 碼可以實際上對于每個源塊僅生成有限數量的維修符號。
存在用于承載符號的許多其他方法,并且雖然下面的說明為了簡單起 見使用了分組的方法,但是這不意味著是限定性的或全面的。在下面的說 明的環(huán)境中,術語"分組"并不意味著被限制為在字面上表示作為單個數據單位被發(fā)送的內容。相反,其表示包括用于定義可以或者可以不作為單 個數據單位被發(fā)送的符號和部分符號的邏輯分組的更寬意圖。
也存在除符號丟失之外的數據損壞的形式,例如在發(fā)送中改變其值或 者以其他方式被損壞的符號,下述的方法也同樣地適用于它們。因此,雖 然下面的說明經常描述符號丟失,但是所述方法同樣良好地適用于其他類
型的損壞和除FEC消除碼之外的其他類型的FEC碼,諸如FEC糾錯碼。 FEC碼實例
圖1是使用鏈式反應FEC編碼的通信系統100的框圖。在通信系統100 中,輸入文件101或者輸入流105被提供到輸入符號生成器110。輸入符號 生成器110從輸入文件或者流生成一個或多個輸入符號(IS(O)、 IS(l)、 IS(2)、...)的序列,并且每個輸入符號具有值和位置(在圖1中被表示為 帶括號的整數)。輸入符號的可能值,即它的符號表通常是二百萬符號的符 號表,使得每個輸入符號對于輸入文件的M個比特編碼。 一般通過使用通 信系統IOO來確定M的值,但是通用系統可以包括對于輸入符號生成器110 符號大小輸入,使得M可以針對不同的使用而不同。輸入符號生成器110 的輸出被提供到編碼器115。
密鑰生成器120生成用于要由編碼器115生成的每個輸出符號的密鑰。 可以根據在Luby I或者在Shokrollahi I中所描述的方法之一或者任何類似 的方法來生成每個密鑰,該任何類似的方法保證對于在流中的同一輸入文 件或者數據塊生成的密鑰的大部分是唯一的,而不論它們是由這個還是另 一個密鑰生成器生成的。例如,密鑰生成器120可以使用計數器125的輸 出、唯一的流標識符130和/或隨機數生成器135的輸出的組合來生成每個 密鑰。密鑰生成器120的輸出被提供到編碼器115。在諸如一些流傳送應用 的其他實例中,密鑰組可以是固定的,并且再次重用于在流中的每個數據 塊。在一個典型的實施例中,通過密鑰生成器的分辨率而不是輸入文件或 者流的大小或者其他特性來控制可以生成的密鑰的數量。例如,如果預期 輸入是在經常數千符號或者更少的數量級上,則密鑰分辨率可以是32比特, 允許多達40億個唯一密鑰。這些相關數目的一個結果是根據這些密鑰編碼 的編碼器能夠對于4000個輸入符號生成40億個唯一的輸出符號。實際上,大多數通信系統將不會丟失符號的0.999999部分,因此在任何地方都不需 要生成40億個輸出符號,因此,可能密鑰的數量可以被當作有效地無限的, 并且將不必被重復,并且密鑰的兩個獨立選擇將獲得同一密鑰的可能性為 無限小。但是,如果由于某些原因是這種情況,則可以提高密鑰生成器的 分辨率,以便使用密鑰的處理可以像存在無盡的密鑰供應那樣運行。
從由密鑰生成器120提供的每個密鑰I,編碼器115從由輸入符號生成 器提供的輸入符號生成具有值B(I)的輸出符號。
每個輸出符號的值根據其密鑰和一個或多個輸入符號的某個函數被生 成,所述一個或多個輸入符號在此被稱為輸出符號的"關聯的輸入符號" 或者僅僅稱為輸出符號的"關聯"。通常,但是不總是這樣,M對于輸入符 號和輸出符號是相同的,即它們都對于相同的比特數量編碼。在一些實施 例中,輸入符號的數量K被編碼器使用來選擇所述關聯。如果不預先知道 K,諸如當輸入是流并且K可以在流中的每個塊之間變化時,K可以僅僅 是估計。值K也可以被編碼器115使用來分配輸入符號的存儲。
編碼器115向發(fā)送模塊140提供輸出符號,并且密鑰生成器120向發(fā) 送模塊140提供每個這樣的輸出符號的密鑰。發(fā)送模塊140發(fā)送輸出符號, 并且依賴于所使用的密鑰生成方法,發(fā)送模塊140也可以在信道145上向 接收模塊150發(fā)送關于發(fā)送的輸出符號的密鑰的一些數據。假定信道145 是消除信道(erasure channel),但是這不是通信系統100的正確操作的要求。 模塊140、 145和150可以是任何適當的硬件部件、軟件部件、物理媒體或 者它們的任何組合,只要發(fā)送模塊140適于向信道145發(fā)送輸出符號和關 于它們的密鑰的任何所需要的數據,并且接收模塊150適于從信道145接 收符號和關于它們的密鑰的可能的一些數據。K的值如果用于確定所述關 聯,則可以通過信道145被發(fā)送,或者其可以通過編碼器115和解碼器155 的協商被預先設置。
信道145可以是實時信道,諸如通過因特網的路徑或者從電視機發(fā)送 器向電視機接收器的廣播鏈路或者從一個點到另一個點的電話連接,或者 信道145可以是存儲信道,諸如CD-ROM、盤驅動器或者網站等。信道145 甚至可以是實時信道和存儲信道的組合,諸如以如下方式形成的信道一 個人從個人計算機通過電話線向因特網服務提供商(ISP)發(fā)送輸入文件,
14所述輸入文件被存儲在萬維網服務器上,并且隨后通過因特網被發(fā)送到接 收者。
當信道145包括分組網絡時,通信系統100可能不能假定在通過信道 145的傳送中保持任意兩個或者更多個分組的相對順序。因此,使用如上所 述的密鑰生成方案中的一個或多個來確定輸出符號的密鑰,而不必然地通 過輸出符號脫離接收模塊150的順序來確定。
接收模塊150向解碼器155提供輸出符號,并且接收模塊150接收的 關于這些輸出符號的密鑰的任何數據被提供到密鑰再生器160。密鑰再生器 160重新生成用于所接收的輸出符號的密鑰,并且向解碼器155提供這些密 鑰。解碼器155使用由密鑰再生器160提供的這些密鑰以及對應的輸出符 號來恢復輸入符號(再次的IS(O)、 IS(l)、 IS(2)、...)。解碼器155向輸入 文件重組器165提供所恢復的輸入符號,輸入文件重組器165生成輸入文 件101的副本170或者輸入流105的副本175。
媒體流應用
當用于媒體流應用中時,形成源媒體流的源分組有時被收集在稱為源 塊的組中。例如,源塊可以是跨越固定時間長度的一組源分組,并且例如, 可以向這些源塊獨立地應用里德-所羅門消除碼,以生成與源塊的原始源分 組一起被發(fā)送到接收器的維修分組。
在發(fā)送器,當源分組到達時,源流可以被連續(xù)地劃分為源塊,并且對 于每個源塊生成維修分組,并且發(fā)送維修分組。有時優(yōu)選來最小化通過使 用FEC碼而增加的總的端到端延遲,特別是對于現場直播或者交互的流應 用,而有時優(yōu)選的是,如果FEC解決方案的整體設計使得在被發(fā)送之前在 發(fā)送器處盡可能少地被延遲,并且以盡可能小的總的延遲來發(fā)送對于源塊 的所有源分組和維修分組。還優(yōu)選的是,如果FEC編碼流的速度盡可能平 滑,即在FEC編碼流速度上有盡可能小的可變性或者至少不放大在原始源 流中已經存在的任何可變性,因為這使得FEC編碼流帶寬使用更可預測, 并且最小化對于網絡和其他可能的競爭流的影響。還優(yōu)選的是,如果在源 塊的分組中發(fā)送的數據盡可能均勻地在當發(fā)送那個源塊的分組時的期間擴 展,因為這提供了對于突發(fā)丟失的最佳保護。還優(yōu)選的是,以使得最小化內容移到時間和內容過渡時間的方式來構造源塊。還優(yōu)選的是,在接收器 的邏輯盡可能簡單。
在接收器,如果分組丟失或者帶有錯誤地被接收(所述錯誤可以例如 使用CRC校驗被檢測到并丟棄該分組),那么,假定己經接收到足夠的維 修分組,則可以使用維修分組來恢復丟失的源分組。
在一些應用中,分組被進一步細分為其上應用了FEC處理的符號。對 于一些FEC碼,特別是里德-所羅門碼,當每個源塊的編碼符號的數量增大 時編碼和解碼時間變得不再實用,并且在每個源塊可以生成的編碼符號的 總數上經常存在上限。由于符號被置于不同的分組有效負荷中,這在源塊 的編碼上的最大長度上施加了實際上限,并且也當然在源塊本身的大小上 施加了上限。
對于許多應用,當要在長時間段上提供保護或者當媒體流速率高時, 在超過最大源塊大小的數據上提供保護是有利的。在這些情況下,使用比 最大源塊大小更小的源塊然后交織來自不同源塊的源分組提供了一種解決 方案,其中,來自被發(fā)送的單獨源塊的源分組被擴展到更大的時段上。對 于其他應用,當期望短的內容移到時間時并且當獨立于交織方法而確定源 塊結構時,期望使用更短的源塊,并且當接收器訪問內容時開始依序發(fā)送 它們,然后當內容流傳送繼續(xù)時提高交織量以便在更長的時間間隔上擴展 源塊的發(fā)送,以提高對于突發(fā)丟失的保護水平。
另一個考慮是能夠足夠快地解碼源塊,以趕上源流傳送速度,最小化 由FEC解碼引入的解碼延遲,并且在FEC解碼期間的任何時間點上僅使用 在接收設備上的可用CPU的一小部分。因此,期望使用允許每個源塊的FEC 解碼在時間上盡可能均等地擴展、并且最小化FEC解碼延遲的源塊交織。
本文所述的各個實施例提供了這些優(yōu)點中的一個或多個。
流傳送和FEC碼
為了提供源流的FEC保護,該源流可以是一個或多個邏輯流的組合, 其實例是音頻RTP流和視頻RTP流的組合、MIKEY流和RTP流的組合、 兩個或者更多視頻流的組合和控制RTCP業(yè)務和RTP流的組合。當源流以 例如源比特流、源符號流或者源分組流的格式到達發(fā)送器時,發(fā)送器可以
16將所述流緩沖為源塊,并且從源塊生成維修流。發(fā)送器可以例如在要通過 分組網絡發(fā)送的分組中調度和發(fā)送源流和維修流。FEC編碼流是組合的源
流和維修流。FEC接收器接收可能例如由于丟失或者比特變換而已經損壞 的FEC編碼流。FEC接收器嘗試重建源流的原始源塊,并且在接收器處調 度和使得可以獲得原始源流。
對于許多應用,結合底層流的結構——例如H.264 AVC視頻流的GOP 結構和/或幀結構——來確定源塊結構。對于這些應用中的一些,在分組的 流發(fā)送順序之前和/或獨立于分組的流發(fā)送順序而確定源塊結構,其中,分 組的流發(fā)送順序可以依賴于何時和何地所述流被接收器訪問以便接收所述 流。對于這樣的應用,優(yōu)選的是,以下述方式來確定源塊結構每個源塊 包括來自流的連續(xù)的一組源分組,以便允許最小化內容移到時間和內容過 渡時間。
對于一些應用,優(yōu)選的是,在發(fā)送流之前執(zhí)行源塊結構形成和流的FEC 編碼。這樣做的一個原因是可以向許多接收器發(fā)送流,從而,對于所有的 接收器一次完成源塊結構形成和FEC編碼,這提供了一些可擴展益處。
對于流傳送應用,存在作為如何使用FEC碼來保護源流的設計的輸入 的幾個關鍵參數和通常對于優(yōu)化很重要的幾個關鍵量度。
在源塊結構的設計中的一個可能的關鍵輸入參數是源塊持續(xù)時間。源 塊的源塊持續(xù)時間可以被定義為如果依序(即,不交織)發(fā)送源塊并且以 正常的速度(即,以實質上正常的播放速度)發(fā)送它們,則發(fā)送從那個源 塊生成的符號的持續(xù)時間?;蛘?,源塊持續(xù)時間可以被定義為由源塊表示 的視頻的播放時間。在一些情況下,這兩個定義一致,但是它們可以不一 致。但是,為了本文描述上的簡單起見,我們使用源塊持續(xù)時間,而不指 定哪個定義被表示,簡單地假定兩個定義一致。本領域內的技術人員可以 認識到,本文描述的方法和過程適于源塊持續(xù)時間的任何一個定義,即使 兩個定義不一致,并且甚至在一些情況下,可以比其播放速度快得多地發(fā) 送源塊。而且,本領域內的技術人員可以認識到,存在例如通過指定在源 塊中的符號的數量和源塊的符號大小來指定源塊的大小或者播放時間的其 他方式。
源塊的保護期是發(fā)送源塊的時段,而不論源塊發(fā)送是否將來自一些源塊的分組的發(fā)送與來自其他源塊的分組的發(fā)送交織。注意,如果不使用源 塊交織,則所述保護期一般等于源塊持續(xù)時間,但是保護期可以長于并且 有時大大長于當使用交織時的源塊持續(xù)時間。
源塊的保護量是對于源塊發(fā)送的FEC維修符號的數量,其被表示為在
源塊中的源符號的數量的一部分或者百分比。例如,如果保護量是20%, 并且在源塊中存在10,000個源符號,則存在從所述源塊生成的2,000個維 修符號。所述保護量是相對概念,即同一源塊的保護量可以依賴于發(fā)送源 塊的位置和源塊要被發(fā)送到的位置而不同。例如,可以以保護量50%從第 一服務器向另一個服務器發(fā)送源塊,然而可以以保護量10%從第二服務器 向接收器發(fā)送同一源塊。
每個源塊的源塊持續(xù)時間和保護量在源塊之間可以不同。例如,當源 塊優(yōu)選地不在源流中的某些源分組之間跨越時,例如當第一分組是在 MPEG2視頻流中的畫面組(GOP)的最后分組并且第二個連續(xù)的分組是下 一個GOP的第一分組時,則可以在第一分組之后終止源塊,并且在第二分 組開始新的源塊。這允許FEC編碼塊與視頻編碼塊對齊,這可以具有許多 優(yōu)點,包括由于可能在接收器處最小化視頻緩沖和FEC緩沖的組合,從而 可以最小化接收器延遲或者信道移到時間的優(yōu)點。在其他應用中,由于多 個原因,對于每個連續(xù)的源塊總是保持相同的源塊持續(xù)時間和/或源塊大小 是有利的。在下面的一些說明中,為了簡單起見,假定源塊持續(xù)時間和保 護量對于每個隨后的源塊是相同的。對于本領域內的技術人員,在閱讀了 本公開后應當清楚,這不是限定性的,因為在閱讀了本公開后可以容易地 確定當保護量或者源塊持續(xù)時間或者兩者從一個源塊到下一個源塊變化 時,并且當源塊大小從一個到下一個變化時,可以如何應用本文所述的過 程和方法。
為了簡化一些隨后的討論,有時假定原始流的源符號以穩(wěn)定的速度到 達發(fā)送器,該發(fā)送器用于執(zhí)行源塊形成和FEC編碼,并且一旦FEC接收器 首次使得在所述接收器處可以獲得源符號,則使得FEC接收器以同一穩(wěn)定 速度可以獲得隨后的源符號,假定在從其接收到源符號的第一源塊中沒有 源符號丟失,并且在每個隨后的源塊中,編碼符號丟失是至多最大可能的, 以允許成功的FEC解碼。這種簡化的假定不是在隨后描述的過程和方法的
18操作或者設計中固有的,并且不意味著以任何方式將這些過程限于這種假 定,而是僅僅作為工具被引入以簡化所述過程和方法的屬性的一些說明。 例如,對于可變速度流,對應的條件是使得FEC接收器以源符號到達發(fā)送 器的相同或者近似相同的速度獲得所述源符號。在一些應用中,優(yōu)選的是, 在接收器處盡可能快地向視頻播放器遞送解碼的源符號,以便最小化內容 移到時間,并且在這樣的情況下,可以在源塊的突發(fā)中遞送源符號。在一
些應用中,期望將源塊形成、FEC編碼和發(fā)送步驟分為兩個或者更多個不 同的步驟。例如,如下所述,可以在一個服務器中執(zhí)行源塊形成和FEC編 碼,然后將編碼流劃分為子流,然后所述子流被發(fā)送到一個或多個分布式 服務器,并且被本地高速緩存,然后所述子流的一些或者全部被從所述一 個或多個分布式服務器中的一些發(fā)送到接收器。
用于最小化的一些重要的關鍵量度包括發(fā)送器延遲,其是由發(fā)送器引 入的延遲。對于諸如現場直播視頻流的一些應用或者諸如視頻會議的交互 應用,期望最小化發(fā)送器延遲。有助于最小化發(fā)送器延遲的整體設計的一 個方面是發(fā)送器以連續(xù)的順序向接收器發(fā)送流的一個或多個初始源塊的的 編碼符號。下面說明最小化發(fā)送器延遲的其他設計方面。
另一個重要量度是內容移到時間。如圖2中所示,這是在當接收器加 入或者請求流直到當FEC接收器首次使得可以從流獲得源符號的時間之間 的時間。通常,期望最小化內容移到時間,因為這會最小化在接收器加入 流時和當在接收器處流首次開始變得可獲得時(例如用于播放視頻流)之 間的時間量。最小化內容移到時間的一個重要方面是發(fā)送器保持初始源塊 的編碼符號的原始發(fā)送順序,但是如下所述,存在對于內容移到時間具有 很大影響的許多其他重要設計方面。
內容移到時間通常包括多個分量。在其中不使用交織的圖3A和3B中 示出了被劃分為順序源塊的流的這些分量的實例。圖3A示出了每個保護期 的單個源塊,并且所述實例示出了接收器在源塊的開始處加入流的情況。 在這個實例中的內容移到時間的兩個分量是保護期和FEC解碼延遲。源塊 的接收器保護期是下述時間在此期間,接收器正緩沖來自源塊的所接收 編碼符號。注意,如果在發(fā)送器和接收器之間的信道在每個比特、字節(jié)、 符號或者分組從發(fā)送器向接收器行進所需要的時間量方面沒有任何變化,則發(fā)送器保護期和接收器保護期是相同的。因此,在實踐中由于在遞送中 的網絡時間變化,對于同一源塊,發(fā)送器保護期可能與接收器保護期不同。 為了簡化在此的說明,假定對于每個源塊來說發(fā)送器保護期和接收器 保護期相同(并且"保護期"同義地用于發(fā)送器保護期和接收器保護期), 但是不必總是這種情況。換句話說,存在對于所有數據網絡遞送時間相同 的假定。本領域內的技術人員可以在閱讀本公開后對本文描述的方法和裝 置進行必要的改變,以考慮由于網絡遞送波動導致的在發(fā)送器和接收器保 護期上的差別。
內容移到時間的保護期分量是不可避免的,因為即使在第一源塊中沒 有任何源符號的丟失,也仍然需要延遲,使得至少保護期可以獲得源符號, 以便當在隨后的源塊中存在編碼符號的丟失時保證所有隨后的源符號的平 滑的源符號遞送。在所述保護期期間,源塊的FEC解碼的一些或者大多數 或者全部可以與編碼符號的接收同時地發(fā)生。在保護期的結尾,可能有在
從FEC接收器可以獲得源塊的第一源符號之前發(fā)生的另外的FEC解碼,并 且這個時段在圖3A中被標注為FEC解碼延遲。另外,即使在可以獲得第 一源符號后,也可能有在可以獲得源塊的第二和隨后的源符號之前發(fā)生的 另外的FEC解碼。為了簡單起見,在圖3A中未示出這個另外的FEC解碼, 并且在本實例中假定存在足夠的可用CPU資源來以足夠快的速度解碼在第 一個源符號之后的所有源符號。
內容移到時間的另一個可能分量可以是在當接收器請求加入流時和當 那個流的第一分組到達接收器時之間的時間。這個時間量可以是可變的, 并且依賴于在流的分組的接收器和一個或多個發(fā)送器之間的一個或多個來 回行程時間。在此不詳細說明內容移到時間的這個分量,但是本領域內的 技術人員可以認識到,有時其可以是應當考慮的對于內容移到時間的重要 影響因素,并且可以容易地修改本文所述的方法和過程以考慮對于內容移 到時間的這個可能的影響因素。
圖3B示出了可以對應于在圖3A中所示的實例的兩個可能的FEC解碼 CPU利用率曲線。在圖3B中所示的兩個曲線之一中,用于FEC解碼的CPU 利用率在每個時間點是相同的,即,CPU利用率均勻地分布。這是期望的 CPU利用率曲線,因為它可預測地使用在每個時間點的相同的CPU資源數量,并且在假定需要相同數量的總的CPU資源來解碼整個源塊的情況下最
小化了最大CPU資源。在圖3B所示的兩個曲線的另一個中,用于FEC解 碼的CPU利用率在每個時間點不同,并且具體地,接近源塊的編碼符號的 接收結束和僅跟其后的CPU利用率顯著高于其他時間點。這不是期望的 CPU利用率曲線,因為CPU資源使用在某些時間點——其可以是當諸如視 頻播放器之類的其他處理也對CPU產生需求時的時間點——生成尖峰,因 此增加了在視頻流的播放中引起例如小故障的可能性。因此,用于保護流 的FEC解決方案的設計要提供下述解決方案其中,FEC解碼器隨著時間 盡可能平滑和均勻地使用CPU。作為實例,設計標準可以是在編碼符號丟 失的最壞情況模式下的FEC解碼處理中在任何時間點的最大CPU利用率小 于特定門限值,例如在每個100毫秒的間隔上使用CPU的至多10%。
在一些流傳送應用中,當接收器碰巧在源塊中間加入流時,則內容移 到時間可以像當沒有來自那個第一部分源塊的源符號的任何丟失時源塊持 續(xù)時間加解碼延遲那樣小,只要發(fā)送器初始保持源分組的原始發(fā)送順序和 遞送速度。在其他視頻流應用中,發(fā)送器總是從GOP的開始向接收器發(fā)送 流,其中優(yōu)選的是,源塊的開始與GOP的開始對齊。因此,為了最小化內 容移到延遲,期望發(fā)送器保持初始源塊的源符號的原始發(fā)送順序。
也可以使用FEC流傳送解決方案來最小化FEC端到端延遲,其對于現 場直播流傳送應用而言是最差情況的、由當在應用FEC編碼之前源分組準 備好用于在發(fā)送器的流傳送時和當在己經應用FEC解碼后源塊可在接收器 播放時之間的FEC的使用引入的整體延遲。對于其他類型的流傳送應用, 諸如按需流傳送或者播放列表內容流傳送,FEC端到端延遲不是主要考慮 因素。
在所有類型的流傳送應用中,最小化內容移到時間和內容過渡時間是 重要的。同時,最小化流的發(fā)送速度是重要的,即總是將發(fā)送速度限制為 大于內容流傳送速度一小部分,包括在內容移到和內容過渡期間。
也可以使用FEC流傳送解決方案來最小化當使用FEC時在發(fā)送速度上 的波動。其一個益處是在分組網絡中,當在流的發(fā)送速度上的峰值與在具 有有限容量的網絡中的點的其他通信量的峰值重合時,具有波動的發(fā)送速 度的流更容易受到由于擁塞或者緩沖溢出導致的分組丟失的影響。至少,在FEC編碼流的速度上的波動應當不比在原始源流的速度上的波動更差,
并且優(yōu)選的是,當向原始源流應用更多的FEC保護時,在FEC編碼流的速 度上的波動變得越小。作為特殊情況,如果原始流以不變的速度發(fā)送,則 優(yōu)選的是,以盡可能接近不變的速度來發(fā)送FEC編碼流。
當每個隨后的源塊的最后的編碼符號被接收時的時間盡可能均勻地隨 著時間擴展的屬性是期望的屬性。當針對源塊接收到最后的編碼符號時的 時間是當用于解碼所述源塊的所有信息可被FEC解碼器獲得時的時間,并 且這通常是當在最壞情況的丟失條件下FEC解碼器必須最努力地工作以在 規(guī)定的解碼延遲預算中完成解碼時的時間。因此,均勻地擴展源塊的最后 的編碼符號的接收允許更平滑地使用CPU來用于FEC解碼。
FEC流傳送解決方案在FEC接收器處應提供盡可能簡單的邏輯。這在 許多環(huán)境下是重要的,因為FEC接收器可以被內置在具有有限的計算、存 儲器和其他資源能力的設備中。而且,在一些情況下,在傳輸中可能有較 大的符號丟失或者損壞,因此,FEC接收器必須從災難性丟失或者損壞情 況中恢復,在上述情況中,當條件改善時,有很少環(huán)境或者沒有這樣的環(huán) 境來明白從流中的何處繼續(xù)接收。因此,FEC接收器邏輯越簡單和越強壯, 則FEC接收器能夠更快和可靠地開始恢復和使得可以再次從FEC編碼流的 接收中獲得源流的源符號。
可以在源塊的源分組之前、之后或者與其混雜地發(fā)送源塊的維修分組, 并且如本文所述,對于不同的策略存在優(yōu)點。
FEC流傳送解決方案的整體期望特征的一些包括
1. 短的內容移到時間
2. 短的內容過渡時間
3. 應當限制所有時間的發(fā)送流速度,即限制到大于內容流速度一小部分。
4. 發(fā)送流速度應當是平滑的,并且應當至少與內容流速度一樣平滑。
5. 當使用FEC編碼時,可以對流執(zhí)行源塊形成和FEC編碼,并且可 以在可能的不同的時間向許多接收器發(fā)送同一編碼流。
6. 當使用FEC編碼時,使用具有所需要的最小保護量的小源塊持續(xù)時 間的對于分組丟失的保護應當是高的,特別是當所述丟失在本質上有些突發(fā)性的時候。
7. 當使用FEC編碼時,源塊應當包括流的連續(xù)部分。
8. 當用于現場直播流傳送應用的FEC編碼時,FEC端到端延遲應當小。
9. 當使用FEC編碼時,FEC解碼應當平滑地擴展CPU利用率。
FEC編碼流的基本發(fā)送
在這個部分中,我們描述發(fā)送器定時可以被FEC編碼的流的分組的發(fā) 送的基本方法和過程。設k是在源塊中的源符號的數量,設T是源塊的源 塊持續(xù)時間,設p是被表達為分數的保護量,因此對于源塊將發(fā)送p*k個 維修符號。當形成每個源塊時,動態(tài)地確定k、 T和p的值,因此,當源塊 的大多數或者全部源符號已經到達源塊形成處理時,所述處理才知道該源 塊的k和T的值,并且在所述源塊的所有源符號已經到達源塊形成處理后 或者通過獨立的處理,可以確定p的值。而且,源塊形成處理可以改變不 同源塊的符號大小。因此,特定源塊的這些參數中的許多或者全部可以被 源塊形成處理良好地知道來用于那個源塊的數據的接收。
下面的過程描述了不使用交織的基本發(fā)送器。為了簡單起見,對于這 個基本發(fā)送器假設已經向流應用了源塊形成處理,并且所述流已經被劃分 為連續(xù)的源塊,每個這樣的源塊包括k個源符號并且具有T秒的源塊持續(xù) 時間,并且對于每個這樣的源塊,已經生成了p+k個維修符號。
當接收器請求在特定源塊處開始的流(或者使用來自接收器的明確開 始請求前攝地發(fā)送流)時,基本發(fā)送器開始在T秒的時段上發(fā)送所請求的 源塊的(l+p^k個編碼符號,并且隨后發(fā)送在所請求的源塊之后的下一個源 塊的編碼符號等。
基本發(fā)送器具有下面的屬性
1. 保護期是T,其與源塊持續(xù)時間相同。
2. 針對源塊發(fā)送的符號均勻地擴展在T秒的時段上。這意味著當存在 固定持續(xù)時間的突發(fā)中斷時對于丟失提供的保護水平不依賴于在符號的傳 輸期間何時發(fā)生中斷,這是所期望的。
3. 所述發(fā)送器不在符號的整體發(fā)送速度上引起波動。具體地,如果源 符號的原始發(fā)送速度不變,則所有符號的發(fā)送速度仍然不變,并且如果在
23發(fā)送器處的源符號的原始到達速度可變,則至少每個源塊的符號的不變的 發(fā)送速度降低波動。這是期望的屬性。
4.內容移到時間可以像T那樣小。這意味著(l+pZk個符號的最小緩沖 (假定所有的源塊包括k個源符號),這是對于給定的保護期的最小可能,
因此是期望的。
基本發(fā)送器具有的一個屬性是內容移到時間至少是保護期的時間,并 且保護期直接地與對于突發(fā)丟失的保護質量有關。因此,有時需要在保護 期和內容移到時間之間進行折衷。例如,期望具有在一秒以下的內容移到 時間,同時也期望具有跨越幾秒的保護期,以便提供對于導致可以持續(xù)幾 十或者幾百毫秒——在一些情況下是幾秒——的數量級的突發(fā)分組丟失的 暫時網絡中斷或者其他類型的間歇網絡問題提供更好的保護,同時使用合
理的小保護量,諸如10%。期望能夠具有比內容移到時間大得多的保護期,
并且這是在下一個部分中描述的交織方法提供的許多優(yōu)點之一。 流交織
這個部分描述新穎方法和過程,其用于以下述方式獲得數據流并且向
數據流的不同部分應用不同的時間延遲在發(fā)送處理中, 一些部分比其他 部分被延遲更多。這些方法和過程的更重要方面之一是用于當發(fā)送數據流 時動態(tài)地調整在所述流的不同部分中引發(fā)的延遲量的手段。
經常優(yōu)選的是,將源塊與視頻流的畫面組(GOP)結構或者其他幀結
構對齊,以便最小化內容移到時間,并且提供流的更好保護。在一些應用 中,期望交織處理可以獨立于源塊形成處理而發(fā)生,它們可能在不同時間 執(zhí)行或者可能在不同位置執(zhí)行。在一些情況下,即使不使用源塊形成處理,
例如因為未使用FEC編碼,也可能期望交織處理以例如將突發(fā)錯誤更均勻 地擴展在流上。此處所述的方法甚至當不使用源塊形成和FEC編碼時也適 用,如本領域內的技術人員將會認識到的。
在一些情況下,允許發(fā)送器交織來自不同源塊的符號的發(fā)送存在優(yōu)點, 其使得每個源塊的符號可以被擴展到比源塊持續(xù)時間更長的保護期上。如 此做的一個原因是對于依賴于時間的丟失(例如突發(fā)性丟失)提供更好的 保護,即當源塊的保護期增大時需要更少的保護量來提供對于固定持續(xù)時
24間的突發(fā)丟失的保護。雖然源塊持續(xù)時間可能是t秒,但是源塊的期望保護 期可以是P秒,其中p〉W。使用交織的發(fā)送器的其他期望屬性包括(1)源 分組以在源塊中的它們的原始順序被發(fā)送,以及(2)當每個隨后的源塊的 最后的編碼符號被接收時的時間盡可能均勻地隨著時間擴展。
當使用FEC編碼時,引入靜態(tài)地交織源塊的編碼符號的發(fā)送的方法,
并且引入當發(fā)送流時動態(tài)地調整交織量的方法,通常在流的發(fā)送的開始具 有很少交織或者沒有交織,因此具有與源塊持續(xù)時間近似相同的保護期, 并且當流的發(fā)送進行時平滑地引入越來越多的交織,從而,保護期變得比 源塊持續(xù)時間長得多。這允許在接收器處最小化內容移到時間,同時當發(fā) 送進行時允許越來越多的對于突發(fā)丟失或者破壞的保護。所述方法的另一 個優(yōu)點是當流的發(fā)送進行時能夠逐漸地對越來越多的網絡抖動進行保護。
為了簡化下面的說明,假定在流的發(fā)送之前進行源塊形成和FEC編碼 處理。這不是所述方法的限制,因為本領域內的技術人員將認識到如下所 述的形成源塊和對于這些源塊執(zhí)行FEC編碼和發(fā)送流的處理可以同時運 行,并且在一些情況下,這是有益的。而且,對于一些應用,源塊形成、 FEC編碼處理和如下所述的用于流的交織發(fā)送的方法可以動態(tài)地相互依 賴,即源塊如何被形成和FEC編碼可能在一些情況下依賴于發(fā)送流策略。
流發(fā)送的帶子方法
為了描述新的交織方法,引入下面的流發(fā)送帶子方法是有益的。圖4 是對于其而言已經確定了源塊結構的內容流的說明圖。對于每個源塊405 (1)、 405 (2)、...,寬度410 (1)、 410 (2)、...示出了那個源塊的內容播 放持續(xù)時間,并且每個源塊415 (1)、 415 (2)的高度示出了每個內容流源 塊的平均播放速度,其中,在這個實例中,不同的源塊具有不同的播放速 度。
圖5示出了對應于圖4的對應編碼塊結構,即已經向每個源塊應用了 FEC編碼以為每個源塊生成另外的維修數據510 (1)、 510 (2),以形成編 碼塊。510 (1)、 510 (2)、...的高度515 (1)、 515 (2)、...指示在每個編 碼塊中為每個源塊生成的另外的維修數據的數量,即如果在與對應的源塊 相同的持續(xù)時間上發(fā)送編碼塊,則所述高度指示編碼的源塊的平均發(fā)送速度。這個附圖僅僅是說明性而不是限定性的,因為例如,對丁每個編碼塊 生成的維修數據量可以比為每個編碼塊發(fā)送的數量更大,并且為每個編碼 塊發(fā)送的數量可以在接收器之間不同。而且,圖5并不意味著建議在編碼 的源塊中的源符號和維修符號的排序的表示。
圖6是示出了對應于基本發(fā)送器方法的接收器的內容移到時間體驗的 說明圖。內容移到時間605的一些分量包括接收器接收足夠的流的第一 編碼塊以解碼第一源塊所需要的時間610;接收器從接收的第一編碼塊的部 分解碼第一源塊所需要的時間620;為吸收網絡抖動、在源塊持續(xù)時間上的 變化、以及從在流的接收期間接收的編碼塊的部分解碼源塊的時間而預留
的預留緩沖時間630。
發(fā)送流的帶子方法被描述,并且本領域內的技術人員可以認識到存在 許多產生類似方法的等同描述和產生在此所述的方法的變化形式的在描述
上的變化形式。圖7示出了對應于在圖5中示出的編碼塊結構的帶子方法 的實例。在帶子方法中,通過描繪要作為帶子705發(fā)送的流來指示數據流 的發(fā)送,其中,沿著帶子的X軸的每個位置710對應于在編碼塊結構中的 不同時間點,并且其中,帶子的高度總是相同的,例如標稱為高度l,而與 在沿著帶子在那個時間點的編碼源塊的速度無關??梢酝ㄟ^從帶子725的 頂部向帶子730的底部延伸的移動線720 (1)、 720 (2)來指示由帶子表示 的流的發(fā)送。在一種表示中,線720 (1)、 720 (2)隨著時間的移到表示來 自流的編碼塊的數據的發(fā)送順序。在帶子中的每個點740 (1)、 740 (2)、... 表示要發(fā)送的一塊流數據,例如,每個點可以表示編碼塊的編碼符號的一 個分組,或者每個點可以表示編碼塊的單個編碼符號。落在對應于編碼塊 750 (1)、 750 (2)、…的區(qū)域中的點表示與那個編碼塊相關聯的數據。
通過當發(fā)送流時隨著時間在帶子上掃過線720 (1)、 720 (2)來表示根 據發(fā)送流的帶子方法的發(fā)送處理,并且每次所述線掃過點,對應于那個點 的流的數據被發(fā)送。圖7示出了在發(fā)送處理中在兩個不同時間的線,其中, 線720 (1)是在第一時間的其外形,線720 (2)是在第二時間的其外形。 因此,發(fā)送處理在第一時間和第二時間之間的時間間隔期間發(fā)送與在由720 (1)、 720 (2)、 725和730限定的區(qū)域中的點相關聯的所有數據。在每個 編碼塊中的點的分布優(yōu)選地根據它們的權重均勻地分布在用于那個編碼塊的帶子區(qū)域中,例如隨機地分布或者偽隨機地分布或者通過保證根據每個 點的權重均勻地分布所述點的處理來確定地分布,其中,點的權重是由那 個點表示的數據量。
如上所述,線720是直的,但是本領域內的技術人員可以認識到,存 在許多變化形式,例如所述線可以是彎曲的或者包括連續(xù)線段的序列,并 且當所述線在發(fā)送處理期間掃過時可以改變其形狀。也存在帶子發(fā)送方法 的其他變化形式,包括表示所述帶子使得所述帶子不是相同高度,而是根 據在帶子的位置710處的流的速度來改變其高度。
存在用于指定在發(fā)送處理期間線通過帶子的移動的各種方法,如下更 詳細所述。
靜態(tài)交織方法
發(fā)送流的帶子方法可以用于實現任何類型的內容流或者編碼內容流的
任何深度的靜態(tài)交織,而不論是否使用FEC編碼,并且不論是否使用源塊 結構。為了說明性的目的,假定已經定義了源塊結構,并且使用FEC編碼。
參照圖7,通過實例描述了使用發(fā)送流的帶子方法來實現給定數量的靜 態(tài)交織的一種方式。在這個實例中,每個編碼塊通過時間量D而與其他相 鄰的編碼塊交織,即交織深度為D。在這個實例中,當請求流時,接收器 傳送位置X和D的值。然后,通過下述方式來描述在發(fā)送器處的發(fā)送處理: 通過配置線720,使得在開始時線720在位置X-D與帶子的底部730相交, 在開始吋線720在位置X與帶子的頂部725相交,然后發(fā)送處理以與流的 播放速度相同的速度在時間上向前掃過線720,即在開始發(fā)送處理后的時間 t,線720已經掃過,使得其在位置X-D+t與帶子的底部730相交,并且線 720在位置X+t與帶子的頂部725相交。
在靜態(tài)交織方法的這個說明中,如果所述方法用于向接收器發(fā)送新請 求的流,則X位于要在接收器處開始播放的流中的位置是有益的,例如, X是編碼塊的開始位置,或者X是在視頻流中的GOP的開始位置,并且編 碼塊的開始與GOP的開始對齊。而且,在這些情況下,發(fā)送器在沿著帶子 的位置X之前不向接收器發(fā)送任何數據是有益的,因為通常接收器將僅僅 接收編碼塊的一部分,并且很可能不足以完全地解碼部分接收的編碼塊。圖8是例示了當發(fā)送器使用剛剛描述的靜態(tài)交織方法時的發(fā)送流的形 狀的說明圖。在這種情況下,靜態(tài)交織方法被應用到在圖7中所示的帶子, 其對應于在圖5中所示的編碼流。在這個實例中,接收器將X的值指定為
在圖7中的第一編碼塊750 (1)的開始位置,因此在這個實例中,沒有沿 著帶子在位置X之前的數據要被發(fā)送。在這個實例中,接收器也指定D的 值,其可以是諸如10秒的值。由發(fā)送器根據這個處理發(fā)送的結果流如圖8 中所示,其中,850 (1)、 850 (2)、...的面積分別與圖5的405 (1)加510 (1)、 405 (2)加510 (2)、...的面積相同。注意,在圖8中所示的發(fā)送速 度是在圖5中所示的原始內容速度的平滑版本。
圖9是示出了由對應于如上所述的靜態(tài)交織方法的接收器體驗的內容 移到時間的說明圖。內容移到時間905的一些分量包括接收器接收足夠 的流的第一編碼塊以解碼第一源塊所需要的時間910,其是源塊持續(xù)時間和 交織深度D的和;接收器從接收的第一編碼塊的部分解碼第一源塊所需要 的時間920;以及,為預期的網絡抖動延遲、在源塊持續(xù)時間上的變化和從 在流的接收期間接收的編碼塊的部分解碼源塊的時間而預留的預留緩沖時 間930。注意,因為保護期——其在這種情況下是源塊持續(xù)時間加上交織深 度D——可以比源塊持續(xù)時間大得多,因此內容移到時間905可以比使用 所述的這種方法的源塊持續(xù)時間大得多。
動態(tài)交織方法
可以使用發(fā)送流的帶子方法來實現在任何類型的內容流或者編碼內容 流的任何交織深度的任何步調的動態(tài)交織,而不論是否使用FEC編碼和是 否使用源塊結構。為了說明性目的,假定已經定義了源塊結構,并且使用 了 FEC編碼。
參照圖7,通過實例描述了使用發(fā)送流的帶子方法來實現以無交織開始 并且進行到給定的交織深度的動態(tài)交織的一種方式。在這種方法的典型使 用中,以很小的交織來發(fā)送第一編碼塊,然后逐漸地隨著時間,越來越平 滑地交織隨后的編碼塊,直到與其他相鄰的編碼塊實現交織深度D。但是, 也在下面公幵了這種方法的其他使用,并且本領域內的技術人員可以認識 到,也存在多種其他變化形式。在表達所述方法的參數的這個實例中,當請求流時,接收器傳送線720的初始上部位置UI、線720的初始下部位置 LI、線720的最后上部位置UF、線720的最后下部位置LF和時間值T。 為了簡單起見,以下假定UF〉-UI, LF>=LI、 UF>=LF, UI>=LI, T>=0。通 常,優(yōu)選的是具有UF^UI+T和LF^LI+T,以有助于保證在接收器的數據 總是在需要時可以獲得。如下面的實例中所述,UF、 UI、 LF、 LI和T的這 些值可以允許當動態(tài)地調整交織時在接收器處平滑地建立內容的預留緩 沖。
在發(fā)送器處的發(fā)送方法使用參數LI、 UI、 LF、 UF和T來如下執(zhí)行帶 子方法。首先,圖7的線720在發(fā)送時間t二0被初始配置,使得在開始時 線720在位置LI與帶子的底部730相交,并且在開始時線720在位置UI 與帶子的頂部725相交,然后,在發(fā)送時間t二O到t:T期間,線720掃過 帶子,使得在吋間t,線720在位置t*(LF-LI)/T+LI與帶子的底部730相交, 并且在時間t,線720在位置t*(UF-UI)/T+UI與帶子的頂部725相交。然后, 對于所有的發(fā)送時間t>T,線720掃過帶子,使得在時間t,線720在位置 t-T+LF與帶子的底部730相交,并且在時間t,線720在位置t-T+UF與帶 子的頂部725相交,即對于t>T,交織是靜態(tài)的,其使用交織深度D=UF-LF。
用于新請求的流的動態(tài)交織方法
所述動態(tài)交織方法的一個示例使用是向接收器發(fā)送新請求的流。作為 實例,如圖10中所示,初始值可以全部被設置為同一值1=111=1^,即在開 始時沒有交織,并且對于接收器將開始播放內容流的位置S,滿足S4。這 保證接收器已經被發(fā)送了從位置S以及之后的內容的整個帶子。如圖10中 所示,優(yōu)選的是,S=UI=LI,其 中S是在內容流中的位置,在這個位置可以 播放內容流,例如S是編碼塊的起點,所述編碼塊的起點與GOP的起點對 齊。而且,T<=LF-S是有益的。這保證如果接收器以內容速度播放內容, 則內容的發(fā)送是以至少與在接收器處的內容的播放一樣快的速度,并且 R=LF-S-T秒的預留緩沖時間被平滑地建立,并且當從向接收器開始發(fā)送起 在發(fā)送時間T達到靜態(tài)交織后繼續(xù),其中,預留緩沖可以吸收網絡抖動、 變化的源塊持續(xù)時間和解碼時間。從沒有交織到D-UF-LF秒的交織,平滑 地建立交織量。作為動態(tài)交織方法的一個具體實例,假定接收器從開始起在訪問內容, 并且在穩(wěn)定的狀態(tài)下達到5秒的預留緩沖,并且在穩(wěn)定狀態(tài)下期望10秒的 交織深度,并且發(fā)送速度要比當提高交織和預留緩沖時的時段期間的編碼 流速度高大約10%。然后,所述參數的可能設置是S二UI吒I是期望的開
始位置,T二100秒,LF二S+T+5秒,并且UF二LF+10秒。因此,如果這 個實例的內容流速度是lMbps,并且使用10%的保護量,則編碼流速度將 是1.1 Mbps。然后,對于使用采用剛剛討論的參數設置的動態(tài)交織方法進 行發(fā)送的前100秒,發(fā)送速度將是大約1.21 Mbps,因為在前100秒中發(fā)送 了 100+(5+15)/2=110秒的流。在100秒的發(fā)送后,預留緩沖將是5秒,并 且交織深度將是IO,然后,其后的發(fā)送速度將是l.l Mbps。對于在己經發(fā) 生了 100秒的流傳送之前的幾秒,發(fā)送速度將從1.21 Mbps速度平滑地過渡 到l.lMbps速度。還應注意,在開始時,發(fā)送速度按照編碼流速度,并且 當交織深度和預留緩沖平滑地增大時,發(fā)送速度變得平滑,并且越來越接 近地匹配平均編碼流速度。
參照圖11來描述對應于如上所述的動態(tài)交織方法的接收器體驗的內容 移到時間。內容移到時間1105的一些分量包括接收器接收足夠的流的第 一編碼塊以解碼第一源塊所需要的時間1110;接收器從接收的第一編碼塊 的部分解碼第一源塊所需要的時間1120;以及初始預留緩沖時間1130,其 被預留用于預期的網絡抖動延遲、源塊持續(xù)時間變化和從在所述流的接收 期間接收的編碼塊的部分解碼源塊的時間。
因為當使用動態(tài)交織時隨著時間建立預留緩沖,因此當使用動態(tài)交織 時初始預留緩沖時間1130可以比當預留緩沖大小對于流發(fā)送的整個持續(xù)時 間固定的情況短得多。例如,使用基本流發(fā)送器,可以將預留緩沖大小設 置為兩秒以對于至多兩秒的長期網絡抖動進行緩沖,而對于動態(tài)交織的發(fā) 送方法,可以將初始預留緩沖時間1130設置為短得多,例如200毫秒,因 為有可能在流發(fā)送的前幾秒期間有很少的網絡抖動,并且在其之前己經實 質上建立了預留緩沖。
因為當使用動態(tài)交織時每個源塊的保護期逐漸地建立,因此當使用動 態(tài)交織時的初始源塊持續(xù)時間可以比當對于流發(fā)送的整個持續(xù)時間而言保 護期是源塊持續(xù)時間時短得多。例如,使用基本流發(fā)送器,源塊持續(xù)時間
30可以被設置為5秒,并且保護量可以被設置為20%以對于500毫秒的短突
發(fā)分組丟失進行保護,而使用動態(tài)交織發(fā)送方法,可以將源塊持續(xù)時間設
置為更短,例如500毫秒,并且可以將保護量設置得更小,例如5%,以提供相同水平的對于這樣的突發(fā)的保護,因為不可能這樣的突發(fā)在發(fā)送流的前幾秒期間發(fā)生,并且在其之前保護期已經實質上建立為例如原始源塊持續(xù)時間加上IO秒的交織深度,以對于這樣的突發(fā)進行保護。
因此,總之,使用動態(tài)交織方法,內容移到時間會短,例如在1秒以內的內容移到時間相對于在相同網絡條件下使用基本流發(fā)送方法的幾秒,并且動態(tài)交織方法還可以提供對于網絡抖動和突發(fā)性分組丟失的優(yōu)越長期保護。
存在如何可以指定參數的許多變化形式。例如,可以替代地指定在帶子上的初始開始位置、初始交織量、最后交織量和從初始交織向最后交織平滑過渡的時段??蛇x地,不是指定從初始交織向最后交織平滑過渡的時段,可以相對于要進行過渡的內容流傳送速度來指定速度。作為變化形式的另一個實例,另外的參數可以被發(fā)送器知道或者被接收器指定,例如接收器可以明確地以信號表示接收器將從其開始播放內容的開始位置S。
存在本領域內的技術人員可以認識到的動態(tài)交織方法的許多變化形式。例如,發(fā)送器可以決定從一些或者全部編碼塊濾除一些編碼數據和不向個別接收器發(fā)送一些編碼數據,例如因為那些接收器未經歷許多丟失。作為另一種變化形式,可以預先確定源塊結構,但是當發(fā)送處理正在運行時,FEC編碼運行以生成用于各個接收器的編碼塊,或者當接收器遇到需要比以前的接收器更大的保護量時偶爾生成某些編碼塊的大量維修符號。
作為經常優(yōu)選的另一種變化形式,接收器可以控制動態(tài)交織方法的初始參數的設置,并且發(fā)送器或者發(fā)送器組可以確定動態(tài)交織方法的最后目標參數。例如,接收器可以指定要以2秒的交織深度和1秒的預留緩沖來開始內容流,并且服務器可以然后確定其將以下述方式來發(fā)送使得在發(fā)送的前2分鐘中實現20秒的交織深度和10秒的預留緩沖。使得所述一個或多個服務器控制動態(tài)交織方法的最終參數的一個優(yōu)點是更容易支持現場直播流傳送,在現場直播流傳送中,不可獲得在當前時間之外的內容流的部分,因此,服務器可以將動態(tài)交織參數引導到在給定約束下工作的最后
31設置。作為使得服務器控制最終參數的優(yōu)點的另一個示例是服務器可以在一些情況下調整被來自在流中的實質上相同位置的相同內容流服務的多個客戶的參數,以這種方式,最后許多接收器被引導到相同的最終參數,這使得在向這些接收器發(fā)送分組中的服務器的高效率,因為在同一時刻要從內容流向全部這些接收器發(fā)送相同的分組。
用于內容分段過渡的動態(tài)交織方法
動態(tài)交織方法的一個示例使用是當接收器從在內容分段列表中的一個內容分段向下一個內容分段過渡時,例如當從表演的一個情節(jié)的分段向廣告過渡然后返回到表演的下一個分段時,其中,所有的過渡在沒有任何接收器交互的情況下發(fā)生。不同的內容分段可以由不同的發(fā)送器發(fā)送,例如,表演情節(jié)的分段可以由內容服務器發(fā)送到接收器,而插入的廣告可以由廣告服務器發(fā)送到接收器。
第一實例是當接收器一直在觀看由第一發(fā)送器使用如上所述的動態(tài)交織方法發(fā)送的第一內容分段,并且第一發(fā)送器已經發(fā)送了足夠長以至于已經建立了完整的交織深度D和預留緩沖時間R的時候。然后,可以如下所述使用動態(tài)交織方法來實現向第二內容分段的平滑過渡。
1. 在結束第一內容分段的發(fā)送之前的D+R秒,第一分段的發(fā)送速度將在D秒的時段中從編碼流速度線性地降低到0,并且在那個點,第一發(fā)送器將停止發(fā)送第一分段。
2. 在第一內容分段結束播放之前的D+R秒,接收器使用參數UI二O、LI=-D、 UF=0、 LF=-D、 T二0從第二服務器請求第二內容分段。假定沒有網絡延遲,第二服務器將開始發(fā)送第二內容分段的流,在發(fā)送的前D秒線性地提高速度,其后以編碼流的速度進行發(fā)送。
3. 當第一內容分段結束播放時,第二內容的預留緩沖已經建立為R秒,并且交織深度已經建立為D秒。在這個時刻,可以開始第二內容的播放。
因此,從第一內容分段向第二內容分段的過渡將在接收器處的接收速度保持在編碼流速度,即當第一內容分段的發(fā)送速度線性地斜線降低時,第二內容分段的發(fā)送速度線性地斜線升高,以此方式,在所述過渡上的組合速度相同,好像存在一個連續(xù)被發(fā)送的內容分段。而且,第二個流的預留緩沖保護和交織保護與在穩(wěn)定狀態(tài)下的第一個流相同。圖12是其圖示。
即使與發(fā)送第一內容分段的結束相比較在第二內容分段的流的發(fā)送的開始上的定時差一點,因為斜線降低的速度和斜線上升的速度是平滑地線性的,因此在流傳送速度上的純誤差較小。例如,如果在兩個流之間的過渡定時上存在500毫秒的誤差,并且交織深度是10秒,則在流傳送速度上
的誤差至多是5%。這也意味著可以比如上所述更保守一點地設置第二內容
分段的參數,即以下述方式來進行它們試圖建立更多一點的預留緩沖和交織時間,而不是僅僅試圖將這些值保持為與第一個流的相同,并且在內容分段過渡期間在組合的流傳送速度上產生的提高將較小。
內容分段過渡的第二實例是當接收器正在觀看由第一發(fā)送器使用如上所述的動態(tài)交織方法來發(fā)送的第一內容分段,但是第一發(fā)送器還沒有發(fā)送
足夠長的時間以使得完整交織深度D和預留緩沖時間R已經被建立的時候。
那么,可以如下所述使用動態(tài)交織方法來實現向第二內容分段的平滑過渡,其中在這種情況下,接收器所做的是以下述方式來設置參數并且請求第二
個流從第一個流向第二個流的過渡是好像兩個內容分段連接在一起,并且由一個服務器發(fā)送。本領域內的技術人員可以得出如何使用動態(tài)交織方法來實現這種類型的過渡的細節(jié)。
內容分段過渡的第三實例是當接收器正在觀看由第一發(fā)送器使用如上所述的動態(tài)交織方法來發(fā)送的第一內容分段,并且在當第一內容分段在接收器處播放結束和第二內容分段播放要開始時之間的時段之間存在間隙的時候。例如,在下述情況下這可能為期望的行為當存在結束播放的表演情節(jié)的第一分段,其后是例如30秒的持續(xù)時間的非流傳送廣告,其后是表演情節(jié)的第二內容分段的立即播放。在這種情況下,動態(tài)交織方法可以被如下使用,為了簡單起見,假定第一內容分段已經被發(fā)送到接收器足夠長
的時間使得已經建立了完整交織深度D和預留緩沖時間R。在這種情況下,
像上面的第一實例的情況那樣,接收器在第一內容分段的播放結束之前的
D+R秒使用參數UI二0、 LI二-D、 UF=0、 LF二-D、 T=0發(fā)送對第二內容分段的請求。這使得第二服務器開始以一個速度發(fā)送第二內容分段,所述速度當與從第一服務器發(fā)送的第一內容分段的速度組合時是單個發(fā)送流的速度。然后,正好在當第一內容分段在接收器處完成播放時的時間,接收器以信號通知第二服務器停止發(fā)送第二內容分段的流,并且向接收器的發(fā)送速度立即降低到O。然后,出現所述30秒的間隙。在間隙的結尾,接收
器立即開始播放第二內容分段,并且同時使用參數UI二D+R、 LI二R、 UF=D+R、 LF二R、 T=0向第二服務器發(fā)送對于第二內容的請求。這使得第二服務器從在所述間隙之前停止的地方繼續(xù)發(fā)送第二內容??傮w效果是在預定的時間立即播放第二內容,同時在過渡期間的所有點向接收器的組合的發(fā)送速度與在所述兩個內容分段的播放期間的一個編碼流速度相同,并且當所述兩個內容分段的任何一個都不被播放時,發(fā)送速度是0。圖13是其圖示。
本領域內的技術人員可以認識到,存在如上所述的動態(tài)交織方法的許多其他使用和變化。
基于子流的遞送方法
基于子流的遞送是用于下述的方法獲得FEC編碼流,并且將其劃分為子流,使得例如在每個子流中包括每個編碼塊的大致相同的數量。例如,編碼流可以被劃分為40個子流,每個子流由每個源塊的大約5%構成,因此在這個實例中,使用FEC編碼為每個源塊生成的維修數據的數量大約等于源塊的大小。更一般而言,當向每個源塊應用FEC編碼并且然后應用基于子流的遞送時,那么每個源塊的總的編碼數據被劃分為子流,使得在每個子流中包括每個源塊的編碼的大致相同的數量,其中,如果FEC編碼是系統性的,則每個源塊的編碼數據包括每個源塊的原始數據加上所生成的維修數據,并且其中,如果FEC編碼不是系統性的,則每個源塊的編碼數據可以包括維修數據。
基于子流遞送的主要思想之一是沿著可能的不同路徑并且通過可能的不同服務器來發(fā)送流的子流,以便實現多個期望目的。作為實例,可以有服務器,以下將其稱為頭端服務器(HES),其將內容流吸入到基于子流的遞送系統中,其中,HES執(zhí)行的一些處理是建立內容流的源塊結構、FEC編碼所述流、將編碼后的流劃分為子流、然后向其他服務器發(fā)送子流,以下將所述其他服務器稱為分布式服務器(DS),其可以分布在不同的數據中心或者在不同的網絡位置中。可以在圖14中看到其實例。在圖14中,DS1430中的每一個從HES 1410接收編碼內容流1420的不同分段。DS執(zhí)行 的一些處理包括當內容流的子流在它們到接收器的路徑上經過時高速緩存
所述內容流的子流,從接收器接受對于來自特定內容流的子流的請求,并 且例如根據對于特定子流的接收器請求或者根據接收器訂閱向接收器發(fā)送 子流。子流傳送的特殊情況包括不進一步劃分的原始的編碼流。
在基于子流的遞送系統中的多個接收器可以請求并接收在同一開始位 置開始的同一內容分段的子流,其中,可以向不同的DS發(fā)送對于不同的子 流的請求,并且在這種情況下,可以從不同的DS向同一接收器發(fā)送具有相 同的開始位置的同一編碼流的幾個不同子流??梢栽趫D15中看到其實例。 在圖15中,接收器1530從各個DS 1510、 1520請求內容流。在這種情況 下,DS 1520中的一個不響應來自接收器的請求,而其他的DS 1510向接收 器發(fā)送子流。如果響應的DS向接收器發(fā)送足夠的數據來完成完全恢復使用 FEC編碼的內容流,則接收器有可能完全恢復使用FEC編碼的內容流。
作為實例,可以在HES吸入原始的1 Mbps的內容流,HES當內容流 通過時形成源塊結構,并且增加與在原始流中存在的源數據一樣多的維修 數據(100%維修),將2 Mbps的編碼流劃分為100 Kbps的子流,并且向 20個不同的DS發(fā)送結果產生的20個子流。想要播放從流中特定位置開始 的內容流的接收器可以向20個DS中的12個發(fā)出請求,以向DS具有的子 流請求在指定開始位置開始的內容。作為響應,所有12個DS同時向接收 器發(fā)送從指定的開始點開始的、它們具有的編碼流的子流,從而,12個DS 中的每一個以100Kbps的速度向接收器發(fā)送,因此總的速度是1.2Mbps。
剛才描述的基于子流的遞送系統具有幾個優(yōu)點,可以在本發(fā)明的實施 例中找到這些優(yōu)點中一些或者全部,包括1)內容的自然負荷平衡,將普 通與不普通混合,具有用于服務帶寬容量和在服務器上的存儲容量的自然 負載平衡益處;2)路徑故障彈性,即, 一個路徑故障后仍然存在接收器正 在從其他路徑接收的足夠數據,使得仍然可以使用FEC解碼來完全地恢復 內容流;3)相對于DS崩潰、DS盤故障等的強壯性;4)從多個DS相對 于單個服務器的數據發(fā)送提供了保持向接收器的匯集發(fā)送速度的更大可 能,并且在接收器處沒有緩沖不足。特別是如果使用TCP或者HTTP來從 DS向接收器發(fā)送子流的情況,但是如果使用UDP來從DS向接收器發(fā)送子
35流,這甚至也成立;以及,5)在整個系統中的單個故障點在HES的吸入點
和在接收器,并且不必在其他地方。
組合動態(tài)交織方法和基于子流的遞送方法
本文所述的動態(tài)交織方法和基于子流的遞送方法可以被組合以提供更 多益處,即在組合的解決方案中可以發(fā)現兩種方法的所有優(yōu)點。例如,使
用動態(tài)交織方法,當向系統中吸入內容流時,可以通過HES來執(zhí)行內容流 的源塊結構和FEC編碼。可以使用子流方法來在HES處生成FEC編碼流 的子流,并且這些子流然后可以被發(fā)送到不同的DS用于存儲。當接收器想 要從在流中的特定位置接收內容流時,接收器可以對向接收器發(fā)送子流的 所有DS發(fā)送適當的動態(tài)交織參數,并且所述DS將根據這些參數向接收器 發(fā)送子流。所述接收器可以將來自源塊的子流的分組置于一起,以重建要 播放的原始內容流。動態(tài)交織方法允許在流傳送期間增加預留緩沖和交織 深度,提供對于突發(fā)性分組丟失和網絡抖動的優(yōu)越保護,同時向接收器提 供迅速的信道移到時間。在這個示例性解決方案中的DS不必執(zhí)行FEC編 碼,并且它們還可以在分布式路徑上從網絡的不同部分向接收器遞送內容 流,從而提高遞送的服務器多樣性和路徑多樣性,由此提高對于服務器和 網絡故障的可靠性和強壯性。
另夕卜,在這個實例中每個源塊的保護量可以在HES和DS之間比在DS 和接收器之間高得多。例如,可以從HES向20個DS生成和發(fā)送20個子 流,然而可以僅僅需要IO個子流來恢復原始內容流(100%的保護量),接 收器可以僅僅例如從20個DS中的12個請求12個子流,即20%的保護量, 其允許即使DS中的一個發(fā)生故障并且在來自接收器將從其接收子流的、剩 余的11個DS的所有路徑上總計有至多10%的分組丟失的情況下,接收器 仍然能夠恢復原始內容流。
如上所述的示例性解決方案具有另外的屬性對于被包含在具有20個 DS中的超過12個的列表的接收器中的適當邏輯,當接收器正從其接收子 流的所述12個DS中的一個發(fā)生故障時,接收器可以自動地檢測到這一點, 并且從接收器當前未從其接收子流的其他DS中的一個請求另一個子流,由 此從接收11個子流恢復到從12個不同的DS接收12個子流,提高了流的可靠性。
在組合動態(tài)交織方法和子流方法所需要的方法中的改變較小。例如, 用于在編碼塊中擴展數據點以確定動態(tài)交織方法的發(fā)送時間的方法需要被 增強,使得每個DS可以決定如何在編碼流帶子內的編碼塊區(qū)域上均勻地擴 展它具有的在編碼塊中的每個子流的數據(參見圖7)??梢砸元毩⒂谟善?br>
他DS作出的決定的方式來進行由DS所作出的均勻擴展數據的決定,使得 來自向發(fā)送器發(fā)送的所有DS的編碼塊內的所有子流的數據的合計擴展在 編碼流帶子內的編碼塊區(qū)域中很均勻(參見圖7)。
作為組合它們所需要的方法中的改變的另一個實例,增加對于每個分 組發(fā)送的信息是有益的,使得當接收器向將向其發(fā)送子流的DS指定在流中 的特定位置時,DS可以以下述方式全部解譯它們將向接收器發(fā)送的子流的 特定位置與向接收器發(fā)送同一內容的子流的所有其他DS的解譯一致。本 領域內的技術人員可以認識到,這些和可能的一些其他的較小改變允許組 合交織流傳送方法和基于子流的遞送方法來提供更多益處。
雖然己經相對于示例性實施例描述了本發(fā)明,本領域內的技術人員將 會認識到多種修改是可能的,并且本領域內的技術人員的這樣的認識可以 來自于對本公開的閱讀。例如,可以使用硬件部件、軟件部件和/或其組合 來實現本文描述的處理。因此,雖然已經相對于示例性實施例描述了本發(fā) 明,可以意識到,本發(fā)明意欲涵蓋在所附的權利要求的范圍中的所有修改 和等同內容。
權利要求
1、在包括至少一個發(fā)送器和至少一個接收器的通信系統中的一種用于發(fā)送內容流的方法,包括形成在接收器和第一發(fā)送器之間的連接;在所述接收器處接收從所述第一發(fā)送器發(fā)送的第一內容流,其中,所述第一內容流包含初始交織量;以及在所述第一內容流的發(fā)送期間獨立于所述第一內容流的源塊結構來調整在所述第一內容流中包含的所述交織量。
2、 根據權利要求1所述的方法,其中,所述第一內容流中的所述初始 交織量被配置為使得在所述第一內容流中沒有初始交織。
3、 根據權利要求1所述的方法,其中,將所述第一內容流中的所述交 織量從所述初始量調整到穩(wěn)定狀態(tài)量。
4、 根據權利要求3所述的方法,其中,所述第一內容流中的所述交織 在所述初始量和所述穩(wěn)定狀態(tài)量之間線性地過渡。
5、 根據權利要求1所述的方法,其中,根據時間來調整所述第一內容 流中包含的所述交織量。
6、 根據權利要求1所述的方法,其中,根據在所述第一內容流的播放 速度和所述第一內容流的發(fā)送速度之間的差來調整所述第一內容流中包含 的所述交織量。
7、 根據權利要求1所述的方法,其中,根據在所述接收器處經歷的數 據丟失量來調整所述第一內容流中包含的所述交織量。
8、 根據權利要求1所述的方法,其中,在所述第一內容流的發(fā)送期間所述第一內容流的所述源塊結構不發(fā)生改變。
9、 根據權利要求1所述的方法,還包括 建立來自所述第一 內容流的內容的預留緩沖。
10、 根據權利要求9所述的方法,其中,與對所述第一內容流中的所 述交織量進行的任何調整并發(fā)地建立所述預留緩沖。
11、 根據權利要求1所述的方法,還包括 形成在所述接收器和第二發(fā)送器之間的第二連接;在所述接收器處接收從連接到所述接收器的所述第二發(fā)送器發(fā)送的第 二內容流,其中,所述第二內容流包含初始交織量;在所述第二內容流的發(fā)送期間獨立于所述第二內容流的源塊結構來調整被遞送到所述接收器的所述第二內容流中包含的交織量;以及以將所述第一內容流和所述第二內容流的合計發(fā)送速度保持為大致穩(wěn) 定的方式在所述第一 內容流和所述第二內容流之間過渡。
12、 根據權利要求ll所述的方法,其中,根據在所述第一內容流和所 述第二內容流這兩個流中包含的所述交織量來隨著時間執(zhí)行在所述第一內 容流和所述第二內容流之間的所述過渡。
13、 在通過信道發(fā)送數據的發(fā)送器中的一種用于發(fā)送內容流的方法, 包括形成在發(fā)送器和接收器之間的連接;向所述接收器發(fā)送內容流,其中,所述內容流包含初始交織量;以及 在所述內容流的發(fā)送期間獨立于所述內容流的源塊結構來調整在所述 內容流中包含的所述交織量。
14、 在通過信道接收數據的接收器中的一種用于接收內容流的方法, 包括形成在接收器和第一發(fā)送器之間的連接;接收從所述第一發(fā)送器發(fā)送的第一內容流,其中,所述第一內容流包 含能夠在所述內容流的發(fā)送期間獨立于所述內容流的源塊結構而調整的初 始交織量。
15、 在包括至少一個發(fā)送器和至少一個接收器的通信系統中的一種用于發(fā)送內容流的方法,包括形成在接收器和多個發(fā)送器之間的連接; 在所述接收器處接收從所述多個發(fā)送器發(fā)送的內容流,其中,每個發(fā) 送器向所述接收器發(fā)送所述內容流的不同子流,并且每個子流包含初始交織量;以及在內容子流的發(fā)送期間獨立于所述內容子流的源塊結構來調整在每個 內容子流中包含的所述交織量。
16、 根據權利要求15所述的方法,其中,在所述內容子流的發(fā)送期間 所述內容子流的所述源塊結構不發(fā)生改變。
17、 根據權利要求15所述的方法,其中,在每個內容子流中包含的交 織量獨立于在其它內容子流中包含的交織量。
全文摘要
一種通信系統可以提供動態(tài)交織流的方法,包括下述方法用于當發(fā)送流時獨立于任何源塊結構來動態(tài)地引入更大的交織量,以比未引入交織時在原始流中在更大時段上擴展在信道中的丟失或者誤差;所述通信系統當使用FEC編碼時提供了對于分組丟失或者分組損壞的優(yōu)越保護,提供了對于網絡抖動的優(yōu)越保護,并且允許將內容移到時間和內容過渡時間減小到最小的內容過渡時間??梢詫⒘鲃澐譃樽恿鳎ㄟ^網絡沿著不同的路徑向接收器遞送子流,并且在接收器處同時接收從可能的不同服務器發(fā)送的不同子流。當與FEC編碼結合使用時,所述方法包括遞送來自可能的不同服務器的每個源塊的編碼的部分。
文檔編號H03M7/00GK101675594SQ200880012335
公開日2010年3月17日 申請日期2008年4月16日 優(yōu)先權日2007年4月16日
發(fā)明者J·J·克利什, L·維奇薩諾, M·盧比, M·沃森, P·帕克扎德 申請人:數字源泉公司