動的ストリームインターリービングおよびサブストリームベースの配信
【課題】複数のストリームを動的にインターリーブする方法を提供する。
【解決手段】受信機と第1の送信機との間のコネクションを形成することと、第1の送信機から送信された、インターリービングの初期量を含む第1のコンテンツストリームを受信機で受信することと、第1のコンテンツストリームのソースブロック構造とは関係なく、第1のコンテンツストリームの伝送中に、第1のコンテンツストリームに含まれるインターリービングの量を調整することと、第1のコンテンツストリーム内の現在の伝送位置に基づいて、インターリービングの量をインターリービングの初期量から増加させる、を含む。
【解決手段】受信機と第1の送信機との間のコネクションを形成することと、第1の送信機から送信された、インターリービングの初期量を含む第1のコンテンツストリームを受信機で受信することと、第1のコンテンツストリームのソースブロック構造とは関係なく、第1のコンテンツストリームの伝送中に、第1のコンテンツストリームに含まれるインターリービングの量を調整することと、第1のコンテンツストリーム内の現在の伝送位置に基づいて、インターリービングの量をインターリービングの初期量から増加させる、を含む。
【発明の詳細な説明】
【優先権の主張】
【0001】
本出願は、2007年4月16日出願の「Dynamic Stream Interleaving and Sub-Stream Based Delivery」という名称の米国特許仮出願第60/912145号明細書の利益を主張する。本出願の内容は、すべての目的でその全体が参照により本明細書に組み込まれる。
【0002】
また、本開示は、すべての目的で、全部本書内で記載のように、参照により以下の同出願人による出願/特許を組み込む。
【0003】
Lubyによる米国特許第6,307,487号明細書(以下「Luby I」と呼ぶ)
Shokrollahiらによる米国特許第7,068,729号明細書(以下「Shokrollahi I」と呼ぶ)
Lubyらによる2006年6月9日出願の「Forward Error-Correcting (FEC) Coding and Streaming」という名称の米国特許出願第11/423,391号明細書(以下「Luby II」と呼ぶ)
Watsonらによる2007年2月13日出願の「Streaming and Buffering Using Variable FEC Overhead and Protection Periods」という名称の米国特許出願第11/674,625号明細書(以下「Watson」と呼ぶ)
【技術分野】
【0004】
本発明は、ストリーミング品質配信、コンテンツザッピング時間(content zapping time)、ストリームの拡張可能な分散配信、およびFEC符号化の使用を、あらゆる側面において向上させ、ストリーミングソリューションを向上させることに関する。ストリーミングは、オンデマンドのプレイリストコンテンツまたはライブプレゼンテーションの、一定のまたは可変のビットレートでの音声、映像、およびデータのストリーミングを含む。
【背景技術】
【0005】
インターネット、セルラーおよび無線ネットワーク、電力線ネットワーク、および他の多くのネットワークなど、パケットベースのネットワークを介して高品質の音声および映像が配信されることがますます一般的になるにつれて、ストリーミングメディア配信は、ますます重要になりつつある。配信されたストリーミングメディアの品質は、元のコンテンツの品質、元のコンテンツの符号化品質、映像を復号し表示する受信装置の能力、受信機で受信された信号の適時性および品質などを含めて、いくつかの要因に依存する。認められる良いストリーミングメディア経験を作り出すために、受信機で受信された信号のトランスポートおよび適時性は、特に重要である。良いトランスポートは、送信機から送信されたものに比べて、受信機で受信されたストリームの忠実度を提供し、一方、適時性は、そのコンテンツの最初の要求後、受信機がコンテンツの再生をどれだけ迅速に開始できるかを表す。
【0006】
最近では、伝送中、ストリーミングメディアの保護のために、順方向誤り訂正(FEC)符号の使用を考えることが一般的な方法になっている。3GPP、3GPP2およびDVBなどのグループによって標準化されたものなど、インターネットおよび無線ネットワークなどを例として含むパケットネットワークを介して送信されるとき、ソースストリームは、生成されたように、あるいは使用可能なように、パケットに入れられ、したがって、パケットは、ソースまたはコンテンツストリームを、生成された順または使用可能になる順に受信機に運ぶために使用される。
【0007】
これらのタイプのシナリオへのFEC符号の一般的な適用では、符号器は、リペアパケット(repair packet)の作成にFEC符号を使用し、リペアパケットは、次いで、ソースストリームを含む元のソースパケットに加えて送信される。リペアパケットは、ソースパケットの損失が起こると、失われたソースパケットに含まれるデータを回復するために、受信したリペアパケットを使用することができるという特性を有する。リペアパケットは、完全に紛失した、失われたソースパケットの内容を回復するために使用することができるが、リペアパケットは、完全に受信されたリペアパケット、または部分的に受信されたリペアパケットでさえ、部分的なパケット損失の発生から回復するために使用することもできる。したがって、全部または部分的に失われたソースパケットを回復するために、全部または部分的に受信されたリペアパケットを使用することができる。
【0008】
さらに他の例では、例えば、ビットの値が反転され得るなど、送信データに他のタイプの破損が起こる可能性があり、したがって、こうした破損を修正し、できるだけ正確なソースパケットの回復を提供するために、リペアパケットを使用することができる。他の例では、ソースストリームは、必ずしも個別のパケットで送信されるわけではなく、代わりに、例えば連続するビットストリームとして送信され得る。
【0009】
ソースストリームの保護を提供するために使用することができるFEC符号の例が数多くある。リードソロモン符号は、通信システムにおける誤りおよび消去訂正のためのよく知られている符号である。例えば、パケットデータネットワークを介した消去訂正の場合、リードソロモン符号のよく知られている効率的な実装は、L.Rizzoによる「Effective Erasure Codes for Reliable Computer Communication Protocols」、Computer Communication Review, 27(2):24-36 (April 1997)(以下「Rizzo」)およびBloemerらによる「An XOR-Based Erasure-Resilient Coding Scheme」、Technical Report TR-95-48, International Computer Science Institute, Berkeley, California (1995)(以下「XOR−Reed−Solomon」)他に記載されているように、CauchyまたはVandermonde行列を使用する。
【0010】
FEC符号の他の例には、例えばLDPC符号、Luby Iに記載されているものなどの連鎖反応符号(chain reaction code)、およびShokrollahi Iのマルチステージ連鎖反応符号(multi-stage chain reaction code)などがある。
【0011】
リードソロモン符号の変形のFEC復号プロセスの例は、RizzoおよびXOR−Reed−Solomonに記載されている。これらの例では、十分なソースおよびリペアデータパケットが受信された後で復号が適用される。復号プロセスは、計算量が多い可能性があり、使用可能なCPUリソースに応じて、ブロック内のメディアに要する時間の長さに対して、終了するのにかなりの時間がかかり得る。受信機は、メディアストリームの受信の開始とメディアの再生との間に要する遅延を計算するとき、復号に必要なこの時間長を考慮に入れる必要がある。復号によるこの遅延は、ユーザによって、特定のメディアストリームの要求と再生の開始との間の遅延として知覚される。したがって、この遅延を最低限に抑えることが望ましい。
【0012】
多くの用途では、パケットは、FECプロセスが適用されるシンボルにさらに細分される。パケットは、1つまたは複数のシンボル(または1つ未満のシンボルであるが、通常、シンボルはパケットにわたって分割されない)を含み得る。シンボルは、任意のサイズを有し得るが、シンボルのサイズは、多くてもパケットのサイズに等しいことが多い。ソースシンボルとは、送信されるデータを符号化するシンボルである。リペアシンボルとは、ソースシンボルに加えて、ソースシンボルから直接または間接的に生成されるシンボルである(すなわち、ソースシンボルのすべてが使用可能であり、リペアシンボルが使用不可である場合、送信されるデータは、完全に回復することができる)。
【0013】
符号化操作が、あるブロック内のシンボルに依存し、そのブロックにないシンボルとは無関係であり得るという点で、一部のFEC符号は、ブロックベースである。ブロックベースの符号化では、FEC符号器は、あるブロック内のソースシンボルからそのブロックのリペアシンボルを生成することができ、次いで次のブロックに進み、符号化されている現在のブロックのもの以外のソースシンボルを参照する必要はない。伝送では、ソースシンボルを備えるソースブロックは、符号化されたシンボル(いくつかのソースシンボル、いくつかのリペアシンボル、またはその両方とすることができる)を含む符号化されたブロックによって表すことができる。リペアシンボルの存在と共に、すべてのソースシンボルがすべての符号化されたブロックで必要というわけではない。
【0014】
一部のFEC符号、特にリードソロモン符号では、符号化および復号の時間は、ソースブロック当たりの符号化シンボルの数が増えるにつれて増加して非現実的になる。したがって、実際には、特に、リードソロモン符号化または復号プロセスがカスタムハードウェアによって実行される一般的な場合には、ソースブロック当たり生成することができる符号化シンボルの総数に、実用上の上限(255がいくつかの用途でのおおよその実用上の制限)があることが多い。例えば、パケット損失からストリームを保護するためのDVB−H標準の一部として含まれるリードソロモン符号を使用するMPE−FECプロセスは、ソースブロック当たり合計255個のリードソロモン符号化シンボルに制限されたセル方式の電話内の専用ハードウェアに実装される。シンボルを別々のパケットペイロードに入れる必要があることが多いため、これによって、符号化されるソースブロックの最大長に実用上の上限が設けられる。例えば、パケットペイロードが1024バイト以下に制限され、各パケットが1つの符号化シンボルを運ぶ場合、符号化ソースブロックは、多くて255KB(キロバイト)とすることができ、これは、当然、ソースブロック自体のサイズの上限でもある。
【0015】
ソースストリーミングレートについていけるほど十分速くソースブロックを復号することができること、FEC復号によってもたらされる復号待ち時間を最低限に抑えることができること、FEC復号中の任意の時点で受信装置上の使用可能なほんのわずかなCPUのみを使用することができることなど、他の関心事が問題である。
【0016】
他の問題は、ストリームの再生を開始する機能を含む。例えば、パーソナルコンピュータを使用して受信したオーディオおよびビデオストリームを復号及びレンダリングし、コンピュータ画面にビデオを表示し、内蔵スピーカを介して音声を再生したり、または他の例として、セットトップボックスを使用して受信した音声および映像ストリームを復号及びレンダリングし、テレビ表示装置に映像を表示し、ステレオシステムを介して音声を再生したり、などである。第1の問題は、ストリームとして配信された新しいコンテンツをユーザが見ることを決めたときと、コンテンツが再生開始したときとの間の遅延を最低限に抑えることであり、以下「コンテンツザッピング時間」と呼ぶ。コンテンツザッピングの一例は、ユーザが、第1のストリームを介して配信された第1のコンテンツを見ており、次いでユーザが、第2のストリームを介して配信された第2のコンテンツを見ることを決め、第2のコンテンツを見始めるためにアクションを開始するときである。第2のストリームは、第1のストリームと同じかまたは異なるサーバセットから送信され得る。コンテンツザッピングの別の例は、ユーザがあるWebサイトを見ており、ブラウザウィンドウ内のリンクをクリックすることによって、第1のストリームを介して配信された第1のコンテンツを見始めることを決めたときである。コンテンツザッピングの別の例は、ユーザが、同じコンテンツストリーム内で順方向または逆方向のいずれかの新しい位置に移動して表示を開始したいときである。使用可能な様々なコンテンツを検索して試写する際に高品質の高速コンテンツサーフィン経験をユーザにとって可能にするためには、コンテンツザッピング時間を最低限に抑えることが、映像を見る上で重要である。高品質の高速コンテンツサーフィン経験は、ユーザが消費するコンテンツの量と正の相関を有することが多い。
【0017】
コンテンツザッピング時間の主な誘因は、基礎を成すFEC構造である場合がしばしばある。別の問題は、あるコンテンツの再生の終わりと、別のコンテンツの再生の開始との間の時間のギャップを最低限に抑えることであり、ほとんどまたはまったく停止することなく連続することが好ましい。例えば、あるコンテンツが放送番組であり、次のコンテンツが広告である場合、または逆の場合、それらの再生の間の長いギャップ(以下「コンテンツ遷移時間(content transition time)」と呼ぶ)は、望ましくない。
【0018】
明らかに、コンテンツ遷移時間を最低限に抑えると共に、遷移周辺の期間中の受信機へのストリームのレートを最低限に抑えることが望ましい。
【0019】
別の問題は、パケットをドロップする可能性があり、パケットの配信にかかる時間量の広範な変動をもたらす可能性がある、インターネットなどのベストエフォート型の配信ネットワークを使用するとき、配信されたストリームの品質を最大にすると共に、帯域幅などのネットワークリソースの使用量を最低限に抑えることである。
【0020】
別の問題は、受信機に配信されるストリームの品質に悪影響を与えること無く、システムの構成要素が故障することが可能である、頑強で拡張可能なストリーミング配信ソリューションを提供することである。
【0021】
インターリービングは、断続的なパケット損失など、チャネルの不完全性に対する優れた保護を提供するために使用することができる。例えば、パケット損失は、ある程度バースト的であることが多く、したがって、より長い期間にわたってソースブロックを分配することが有利となり得る。一部のFEC符号では、大きいソースブロックの本来の使用は、実用的であるが、リードソロモン符号など、他のFEC符号では、使用することができるソースブロックのサイズの実用上の制限があることが多い。したがって、より長い時間にわたってソースブロックに関連付けられているパケットの伝送を分配するために、異なるソースブロックについての符号化シンボルを含むパケットの送信をインターリーブすることが有利となり得る。
【0022】
以前に、上述した問題の一部に対処する方法が紹介されている。例えば、いくつかの新規のFECソースブロックの形成およびインターリービングの方法がLuby IIに記載されている。いくつかのインターリービング方法は、インターリービングの量が全ストリームについて固定されているという意味で、静的である。したがって、時として、こうした方法によって提供される保護の品質に影響を与えるインターリービングの量と、コンテンツザッピング時間との間のトレードオフがあり、すなわち、より多い量のインターリービングは、より良いストリーム保護を提供するが、より長いコンテンツザッピング時間を提供し、このトレードオフは、受信機へのストリーミングの全継続時間の間、固定された方法で決定される。
【0023】
例えば、Watsonに記載されている一部の方法など、ストリーム送信プロセスの大部分の間、短いコンテンツザッピング時間およびより多い量のインターリービングを提供する方法がいくつかある。Watsonに記載されている方法の一部は、短い初期ソースブロックから徐々により長いソースブロックに動的に遷移し、遷移期間中、コンテンツストリーミングレートよりわずかに速いレートで送信する。こうした方法は、短いコンテンツザッピング時間を提供すると共に、ストリームが進むにつれて提供される保護の品質の強化を可能にする。例えば、Watsonに記載されている方法の一部を適用する1つの方法は、ソースブロック構造を決定し、ストリームが送信されている間にFEC符号化を実行することであり、すなわち、短−長ソースブロック構造は、それらがアクセスされる各点で、個々の受信機に送信されながら決定され、FEC符号化され、したがって、ソースブロック構造の形成およびFEC符号化は、受信機ごとに一意に実行され、各受信機に送信されるストリームは、一意である。しかし、時として、ストリームの配信に関係なく、例えば、受信機に関係なく、コンテンツが表示されるときおよびコンテンツストリームにおいて表示を開始する場所に関係なく、およびどの順でストリーム内のデータが配信されるかに関係なく決定されるコンテンツストリームのソースブロック構造を有することが望ましい。これは、コンテンツストリームが複数のサーバから単一の受信機に配信される場合、特に重要である。
【0024】
したがって、改良されたプロセスおよび装置を有することが望まれる。
【発明の概要】
【0025】
本発明の態様による符号器、復号器、および通信システムの実施形態は、複数のストリームを動的にインターリーブする方法を提供し、該方法は、任意のソースブロック構造とは関係なく、ストリームが送信されるとき、より多くの量のインターリービングを動的に導入するための方法を含む。これらの方法のいくつかの利点は、チャネルの損失または誤りを、インターリービングが導入されなかった場合よりかなり長い期間にわたって元のストリーム内で分配し、FEC符号化と共に使用するとき、パケット損失またはパケット破損に対する優れた保護を提供し、ネットワークジッタに対する優れた保護を提供し、コンテンツザッピング時間およびコンテンツ遷移時間を最小値に低減することができることである。これらの方法のいくつかの追加の利点は、あるコンテンツのストリーミングから別のコンテンツのストリーミングへの遷移を含めて、送信ストリーミングレートを平滑化すること、および最小のコンテンツ遷移時間を含む。
【0026】
本発明の態様による符号器、復号器、および通信システムの実施形態は、データのストリームを複数のサブストリームに分割し、ネットワークを介して、異なるパスに沿って、該複数のサブストリームを受信機に配信し、受信機で、潜在的に異なる複数のサーバから送信された異なる複数のサブストリームを同時に受信することを提供することもできる。FEC符号化と共に使用されるとき、これらの方法は、潜在的に異なる複数のサーバから各ソースブロックの符号化の部分を配信することを含む。これらの方法のいくつかの利点は、改良されたコンテンツザッピング時間、サーバ障害およびパス障害に対する頑強性、ディスク障害に対する頑強性、パケットの損失および/または破損に対する改良された頑強性、ストリーミング配信ソリューション全体の改良された拡張可能性、および複数のサーバ間での改良されたコンテンツの格納とストリーミングレートとの均衡化を含む。
【0027】
本発明の態様による符号器、復号器、および通信システムの実施形態は、動的インターリーブとサブストリームの配信との結合も提供し得る。例えば、動的インターリーブを使用して、ソースブロック構造およびFEC符号化を決定することができ、符号化されたストリームを、複数のサブストリームに分割することができ、動的インターリーブを使用して、サブストリームの組合せを受信機に配信して、最低コンテンツザッピング時間を提供する頑強なストリーミング配信システムを提供することができる。これらの結合方法の利点は、動的インターリーブおよびサブストリーム配信の利点の組合せである。
【0028】
以下の詳細な説明を添付の図面と併せ読めば、本発明の本質および利点をよりよく理解できよう。
【図面の簡単な説明】
【0029】
【図1】本発明の一実施形態による通信システムを示すブロック図。
【図2】コンテンツザッピング時間を示す図。
【図3A】コンテンツザッピング時間の構成要素を例示する図。
【図3B】復号中のFECについてのCPU使用率を例示する図。
【図4】コンテンツストリームのソースブロック構造およびソースブロックごとの対応するコンテンツストリームレートの表現を例示する図。
【図5】図4のコンテンツストリームに対応する符号化ブロック構造を例示する図。
【図6】基本的な送信器の方法に対応する受信機およびコンテンツザッピング時間を例示する図。
【図7】ストリーム送信のテープ方法を例示する図。
【図8】ストリーム送信のテープ方法による静的インターリービングを例示する図。
【図9】静的インターリービングの送信器の方法に対応する受信機およびコンテンツザッピング時間を例示する図。
【図10】新しいストリームが受信機に送信されるときの動的インターリービングの送信機の方法を例示する図。
【図11】動的インターリービングの送信機の方法での、受信機によって経験されるコンテンツザッピング時間および長期保護期間を例示する図。
【図12】動的インターリービングの送信機の方法での、2つの連続するコンテンツセグメント間のコンテンツ遷移を例示する図。
【図13】動的インターリービングの送信機の方法での、2つの非連続のコンテンツセグメント間のコンテンツ遷移を例示する図。
【図14】ヘッドエンドサーバからサブストリームベースの配信方法で使用される分散された様々なサーバに分散される符号化コンテンツストリームを例示する図。
【図15】サブストリームベースの配信方法において、受信機が、分散された様々なサーバにコンテンツストリームを要求し、こうしたサーバの一部から符号化コンテンツストリームを受信することを例示する図。
【発明を実施するための形態】
【0030】
実施形態は、伝送がネットワークなどを介する場合、任意のソースブロック構造とは関係なく、ストリームが送信されるとき、より多くの量のインターリービングを動的に導入する方法を含めて、ストリームを動的にインターリーブする新規の方法を提示する。また、実施形態は、データのストリームを複数のサブストリームに分割し、ネットワークを介して、異なるパスに沿って、該複数のサブストリームを受信機に配信し、受信機で、潜在的に異なる複数のサーバから送信された異なる複数のサブストリームを同時に受信する新規の方法も提示する。FEC符号化と共に使用されるとき、これらの方法は、潜在的に異なる複数のサーバから各ソースブロックの符号化の部分を配信することを含む。また、実施形態は、動的インターリービングをサブストリームの配信と結合する新規の方法も提示する。
【0031】
以下、本明細書における説明を簡単にするために、データを運ぶネットワークは、パケットベースと仮定し、本明細書に記載されたプロセスおよび方法を、連続するビットストリームネットワークなど、他のタイプの送信ネットワークに適用できる方法を当業者が容易に理解できることを認識されたい。以下、本明細書における説明を簡単にするために、FEC符号は、失われたパケットまたはパケット内の失われた部分的なデータに対する保護を提供すると仮定し、本明細書に記載されたプロセスおよび方法を、ビットフリップなど、他のタイプのデータ送信の破損に適用できる方法を当業者が容易に理解できることを認識されたい。この説明において、符号化すべきデータ(ソースデータ)は、(単一ビットまでの)任意の長さのものであるが、データの異なる部分について異なる長さのものとすることができる等しい長さの複数の「シンボル」に分割されていると仮定する。
【0032】
シンボルは、パケットでデータネットワークを介して運ぶことができ、各パケットには、整数のシンボルが明示的に入れられ、または暗に含まれる。いくつかの場合、ソースパケットは、シンボル長の倍数ではないことが可能であり、この場合、パケット内の最後のシンボルは、切り捨てることができる。この場合、FEC符号化の目的で、この最後のシンボルは、これらのビットがパケットで運ばれない場合でも、依然として、受信機が切り捨てられた最後のこのシンボルを充填して完全なシンボルとすることができるように、例えば、ゼロ値のビットなど、固定されたパターンのビットで埋められるものと暗黙的に見なされる。他の実施形態において、固定されたパターンのビットは、パケットに入れることができ、それによって、シンボルを、パケットのものと等しい長さまで効果的に埋めることができる。シンボルのサイズは、しばしばビットで測定することができ、この場合、シンボルは、Mビットのサイズを有し、シンボルは、2~M(2のM乗)個のシンボルのアルファベットから選択される。非2進数も企図されるが、2進数は、より一般的に使用されるので、好ましい。
【0033】
ストリーミングとの使用を考慮されるFEC符号は、一般に、システマチックFEC符号であり、すなわち、ソースブロックのソースシンボルがソースブロックの符号化の一部として含まれ、したがって、ソースシンボルが送信される。当業者であれば認識するように、本明細書に記載された方法およびプロセスは、システマチックではないFEC符号にも十分等しく適用される。システマチックFEC符号器は、ソースシンボルのソースブロックから、いくつかのリペアシンボルを生成し、少なくともいくつかのソースシンボルとリペアシンボルとの組合せは、ソースブロックを表す、チャネルを介して送信される符号化シンボルである。いくつかのFEC符号は、例えば「情報付加符号(information additive code)」や「ファウンテンコード(fountain code)」など、必要なだけのリペアシンボルを効率的に生成するのに有用であり、これらの符号の例には、「連鎖反応符号」および「マルチステージ連鎖反応符号」などがある。リードソロモン符号など他のFEC符号は、実際に、ソースブロックごとに制限された数のリペアシンボルを生成することしかできない。
【0034】
シンボルを運ぶための他の多くの方法があり、以下の説明は、簡単にするために、パケットの方法を使用するが、これは、限定的または包括的であるものではない。以下の説明の文脈で、「パケット」という用語は、単一単位のデータとして何が送信されるかを文字通り意味することに制約されるものではない。代わりに、単一単位のデータとして送信され得る、またはされ得ない、シンボルおよび部分的シンボルの論理的なグループ分けを定義する、より広い概念を含むものとする。
【0035】
また、例えば、以下に記載する方法が等しく適用される、伝送においてその値を変えるシンボルや、他の方法で破損されるシンボルなど、シンボルの損失以外のデータの破損の形態もある。したがって、以下の記載は、しばしばシンボルの損失について説明しているが、方法は、他のタイプの破損、およびFEC誤り訂正符号など、FEC消去符号を超えた他のタイプのFEC符号にも十分等しく適用される。
【0036】
<FEC符号例>
図1は、連鎖反応FEC符号化を使用する通信システム100のブロック図である。通信システム100には、入力ファイル101、または入力ストリーム105が入力シンボルジェネレータ110に提供される。入力シンボルジェネレータ110は、入力ファイルまたはストリームから1つまたは複数の入力シンボル系列(IS(0),IS(1),IS(2),・・・)を生成し、各入力シンボルは、値および位置を有する(図1に括弧内の数字として示されている)。入力シンボルの可能な値、すなわちそのアルファベットは、各入力シンボルが入力ファイルのM個分のビットを符号化するように、一般に、200万個のシンボルのアルファベットである。Mの値は、一般に、通信システム100の使用によって決定されるが、汎用システムは、Mを使用によって変えることができるように、入力シンボルジェネレータ110のためにシンボルサイズの入力を含み得る。入力シンボルジェネレータ110の出力は、符号器115に提供される。
【0037】
キージェネレータ120は、符号器115によって生成される出力シンボルごとにキーを生成する。各キーは、Luby IまたはShokrollahi Iに記載されている方法、またはキーがこれによって生成されたか、他のキージェネレータによって生成されたかにかかわらず、同じ入力ファイルまたはストリーム内のデータのブロックのために生成されたキーの大半が一意であることを保証する任意の同等の方法のうちの1つに従って生成することができる。例えば、キージェネレータ120は、カウンタ125の出力、一意のストリーム識別子130、および/またはランダムジェネレータ135の出力の組合せを使用して、各キーを生成することができる。キージェネレータ120の出力は、符号器115に提供される。他の例では、例えば、一部のストリーミングの用途では、キーの組を固定し、ストリーム内のデータのブロックごとに、再度、再利用することができる。一般的な実施形態では、生成することができるキーの数は、入力ファイルまたはストリームのサイズや他の特徴ではなく、キージェネレータの解像度によって指示される。例えば、入力がしばしば1000シンボル程度以下であると予想される場合、キーの解像度は、32ビットとすることができ、それによって、最高40億個の一意のキーが可能になる。これらの相対数の1つの結果は、キーに従って符号化する符号器は、4000個のシンボルの入力について、40億個の一意の出力シンボルを生成することができ得ることである。実際問題として、ほとんどの通信システムが、シンボルの0.999999部を失うことはないため、約40億個の出力シンボルを生成する必要はなく、したがって、可能なキーの数は、事実上無制限として扱うことができ、繰り返す必要がなく、キーの2つの独立した選択が同じキーを掴む可能性は、無視できるほど小さい。しかし、それが何らかの理由のためにそうである場合、キーを使用するプロセスがまるでキーの無限の提供があるかのように振る舞うことができるように、キージェネレータの解像度を増やすことができる。
【0038】
キージェネレータ120によって提供された各キーIから、符号器115は、入力シンボルジェネレータによって提供される入力シンボルから、値B(I)の出力シンボルを生成する。
【0039】
各出力シンボルの値は、そのキーと、本明細書において出力シンボルの「関連入力シンボル」または単にその「関連」と呼ぶ1つまたは複数の入力シンボルの何らかの関数とに基づいて生成される。しかし常にではないが、一般に、Mは、入力シンボルおよび出力シンボルについて同じであり、すなわち、これらはいずれも、同じビット数分符号化する。いくつかの実施形態では、関連を選択するために、入力シンボル数Kが符号器によって使用される。例えば、入力がストリームであり、Kがストリームにおける各ブロック間で変わり得る場合など、Kが前もってわからない場合、Kは、単に推定値とすることができる。値Kは、入力シンボルにストレージを割り振るために、符号器115によって使用することもできる。
【0040】
符号器115は、出力シンボルを送信モジュール140に提供し、キージェネレータ120は、こうした各出力シンボルのキーを送信モジュール140に提供する。送信モジュール140は、出力シンボルを送信し、使用されるキーイング方法に応じて、送信モジュール140は、送信された出力シンボルのキーについての何らかのデータを、チャネル145を介して受信モジュール150に送信することもできる。チャネル145は、消去チャネルと仮定されるが、これは、通信システム100の適切な操作のための必要条件ではない。送信モジュール140が出力シンボルおよびそのキーについての任意の必要なデータをチャネル145に送信するよう構成され、受信モジュール150がシンボルおよびそのキーについての潜在的な何らかのデータをチャネル145から受信するように構成されている限り、モジュール140、145および150は、任意の適したハードウェア構成要素、ソフトウェア構成要素、物理媒体、またはその任意の組合せとすることができる。Kの値は、関連を決定するために使用される場合、チャネル145を介して送信することができ、または、符号器115および復号器155の合意によって前もって設定することができる。
【0041】
チャネル145は、テレビ送信機からテレビ受信機へのインターネットまたはブロードキャストリンクを介したパス、またはある地点から別の地点への電話接続など、リアルタイムチャネルとすることができ、または、チャネル145は、CD−ROM、ディスクドライブ、Webサイトなどのストレージチャネルとすることができる。チャネル145は、ある人物が入力ファイルを電話回線を介してパーソナルコンピュータからインターネットサービスプロバイダ(ISP)に送信し、入力ファイルがWebサーバに格納され、その後インターネットを介して受信者に送信されるときに形成されるチャネルなど、リアルタイムチャネルおよびストレージチャネルの組合せとすることさえできる。
【0042】
チャネル145がパケットネットワークを備える場合、通信システム100は、任意の2つ以上のパケットの相対的順序がチャネル145を介して送信中に保持されると仮定することができない場合がある。したがって、出力シンボルのキーは、上述したキーイング方式のうちの1つまたは複数を使用して決定され、必ずしも出力シンボルが受信モジュール150を出る順序によって決定されるわけではない。
【0043】
受信モジュール150は、出力シンボルを復号器155に提供し、これらの出力シンボルのキーについて受信モジュール150が受信する任意のデータは、キーリジェネレータ160に提供される。キーリジェネレータ160は、受信された出力シンボルのキーを再度生成し、これらのキーを復号器155に提供する。復号器155は、対応する出力シンボルと共に、キーリジェネレータ160によって提供されるキーを使用して、入力シンボルを回復する(この場合も、IS(0),IS(1),IS(2),・・・)。復号器155は、回復した入力シンボルを入力ファイルリアセンブラ165に提供し、これは、入力ファイル101のコピー170または入力ストリーム105のコピー175を生成する。
【0044】
メディアストリーミングの用途
メディアストリーミングの用途で使用するとき、ソースメディアストリームを形成するソースパケットは、時として、ソースブロックと呼ばれるグループに集められる。例えば、ソースブロックは、一定の時間長に及ぶソースパケット群とすることができ、例えば、リードソロモン消去符号は、これらのソースブロックに別々に適用されて、ソースブロックの元のソースパケットと共に、受信機に送信されるリペアパケットを生成することができる。
【0045】
送信機では、ソースパケットが到着するにつれて、ソースストリームをソースブロックに連続的に分割することができ、ソースブロックごとにリペアパケットが生成され、送信される。時として、特に、ライブまたは対話型のストリーミングの用途の場合、FEC符号の使用によって追加された合計エンドツーエンド遅延を最低限に抑えることが好ましく、したがって、FECソリューションの設計全体を、送信される前にソースパケットの遅延が送信機でできるだけ小さくなるようにし、1つのソースブロックに対しすべてのソースパケットおよびリペアパケットができるだけ小さい合計遅延で送信されるようにすると好ましい場合もある。また、FEC符号化ストリームのレートができるだけスムーズであることが好ましい。すなわち、FEC符号化ストリームレートにある変動ができるだけ小さいか、または少なくとも、元のソースストリームにすでに存在する任意の変動の拡大がないことが好ましい。というのは、これによって、FEC符号化ストリームの帯域幅の使用量がより予測可能になり、ネットワークおよび場合によっては競合する他のストリームへの影響が最低限に抑えられるからである。また、あるソースブロックについて複数のパケットで送信されたデータが、そのソースブロックについて複数のパケットが送信される期間にわたってできるだけ一様に分配されると好ましい。というのは、これは、バースト損失に対して最適な保護を提供するからである。また、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えるような方法でソースブロックが構築されることも好ましい。また、受信機でのロジックができるだけ簡単であることも好ましい。
【0046】
受信機で、パケットが失われた、または誤りを含んで(例えば、CRC検査を使用して検出し、破棄することができる)受信された場合、十分なリペアパケットが受信されていると仮定して、リペアパケットを使用して、失われたソースパケットを回復することができる。
【0047】
いくつかの用途では、パケットは、FECプロセスが適用される複数のシンボルにさらに細分される。いくつかのFEC符号、特にリードソロモン符号では、符号化および復号の時間は、ソースブロック当たりの符号化シンボルの数が増えるにつれて増加して非現実的になり、ソースブロック当たり生成することができる符号化シンボルの総数に上限があることが多い。シンボルは、別々のパケットペイロードに入れられるため、これによって、ソースブロックの符号化の最大長に実用上の上限が設けられ、また、当然、ソースブロック自体のサイズにも上限が設けられる。
【0048】
いくつかの用途では、長い期間にわたって保護が提供されるとき、またはメディアストリーミングレートが高いとき、最大ソースブロックサイズを超えるデータに対する保護を提供することが有利となり得る。これらの場合、最大ソースブロックサイズより短いソースブロックを使用し、次いで、異なるソースブロックからのソースパケットをインターリーブすることは、送信される個々のソースブロックからの複数のソースパケットがより長い期間にわたって分配されるソリューションを提供する。他の用途では、短いコンテンツザッピング時間が望ましく、ソースブロック構造がインターリービング方法とは関係なく決定される場合、コンテンツが受信機によってアクセスされたときは、最初に、より短いソースブロックを使用して、それらを順次的に送信し、次いでコンテンツストリーミングが続くにつれて、ソースブロックの送信をより長い時間間隔にわたって分配するためにインターリービング量を増やして、バースト的損失に対する保護のレベルを増やすことが望ましい。
【0049】
他の問題は、例えばソースストリーミングレートについていけるほど十分速くソースブロックを復号し、FEC復号によってもたらされる復号待ち時間を最低限に抑え、FEC復号中の任意の時点で受信装置上の使用可能なCPUのわずかな部分のみを使用することができることである。したがって、各ソースブロックのFEC復号を時間にわたってできるだけ等しく分配することができるようにし、FEC復号待ち時間を最低限に抑えるソースブロックインターリービングを使用することが望ましい。
【0050】
本明細書に記載された様々な実施形態は、これらの利点のうちの1つまたは複数を提供する。
【0051】
<ストリーミングおよびFEC符号>
ソースストリームのFEC保護を提供する目的で、ソースストリームは、1つまたは複数の論理的ストリームの組合せとすることができ、その例には、音声RTPストリームと映像RTPストリームとの組合せ、MIKEYストリームとRTPストリームとの組合せ、2つ以上の映像ストリームの組合せ、および制御RTCPトラフィックとRTPストリームとの組合せなどがある。ソースストリームが、例えばソースビットストリーム、ソースシンボルストリーム、またはソースパケットストリームのフォーマットで送信機に到着すると、送信機は、該ストリームを複数のソースブロックにバッファリングし、該複数のソースブロックからリペアストリームを生成することができる。送信機は、ソースストリームおよびリペアストリームをスケジューリングし、例えば、パケットネットワークを介して送信されるべきパケットで送信することができる。FEC符号化ストリームは、結合されたソースおよびリペアストリームである。FEC受信機は、例えば、損失またはビットフリップによって破損された可能性があるFEC符号化ストリームを受信する。FEC受信機は、ソースストリームの元のソースブロックを再構築しようと試み、元のソースストリームをスケジューリングし、受信機で使用できるようにする。
【0052】
多くの用途の場合、ソースブロック構造は、例えば、GOP構造および/またはH.264AVC映像ストリームのフレーム構造など、基礎を成すストリームの構造と共に決定される。これらの用途のいくつかでは、ソースブロック構造は、パケットのストリーム送信順の前に、および/またはパケットのストリーム送信順とは関係なく決定され、この場合、パケットのストリーム送信順は、受信機が、ストリームを受信するために、いつどこでストリームにアクセスするかに依存し得る。こうした用途では、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えることができるようにするために、各ソースブロックがストリームからの連続する1組のソースパケットを備えるように、ソースブロック構造が決定されることが好ましい。
【0053】
いくつかの用途では、ソースブロック構造の形成およびストリームのFEC符号化は、ストリームの送信前に行われることが好ましい。この1つの理由は、ストリームが多くの受信機に送信される可能性があり、したがって、ソースブロック構造の形成およびFEC符号化がすべての受信機について1回行われるからであり、これは、拡張性の利益をいくつか提供する。
【0054】
ストリーミングの用途では、ソースストリームと、通常最適化することが重要ないくつかの主要メトリクスを保護するためのFEC符号の使用方法の設計への入力であるいくつかの主要パラメータがある。
【0055】
ソースブロック構造の設計における1つの可能な主要入力パラメータは、ソースブロック継続時間である。あるソースブロックのソースブロック継続時間は、ソースブロックが順次、すなわち、インターリーブされずに送信され、通常の速度で、すなわち、本質的に通常の再生速度で送信される場合、そのソースブロックから生成されるシンボルが送信されることになる継続時間として定義することができる。あるいは、ソースブロック継続時間は、ソースブロックによって表される映像の再生時間になるように定義することができる。いくつかの場合、これら2つの定義は、一致するが、一致しない場合もある。しかし、簡単にするために、本明細書における説明では、どの定義を意味するかを指定することなく、2つの定義が一致すると簡単に仮定して、ソースブロック継続時間を使用する。2つの定義が一致しない場合でさえ、またソースブロックがその再生レートよりかなり速く送信され得る一部の場合でさえ、本明細書に記載した方法およびプロセスがソースブロック継続時間のいずれかの定義に関することを、当業者であれば認識されよう。さらに、例えば、ソースブロック内のシンボル数、およびソースブロックのシンボルサイズを指定することによって、ソースブロックのサイズまたは再生時間を指定する他の方法があることを、当業者であれば認識されよう。
【0056】
ソースブロック送信が、いくつかのソースブロックからの複数のパケットの送信と他のいくつかのソースブロックからの複数のパケットの送信をインターリーブするかどうかにかかわらず、ソースブロックの保護期間はソースブロックが送信される期間である。ソースブロックインターリービングが使用されない場合、保護期間は、一般に、ソースブロック継続時間に等しいが、保護期間は、インターリービングが使用されるときのソースブロック継続時間より長く、時として、かなり長い可能性があることに留意されたい。
【0057】
ソースブロックの保護量は、該ソースブロック内のソースシンボルの数の分数または割合として表される、該ソースブロックで送信されるFECリペアシンボルの数である。例えば、保護量が20%であり、ソースブロック内に10,000個のソースシンボルがある場合、該ソースブロックから生成されたリペアシンボルは2,000個ある。保護量は、相対的な概念であり、すなわち、同じソースブロックの保護量は、ソースブロックがどこから送信されるか、およびソースブロックがどこに送信されるかによって変わり得る。例えば、ソースブロックは、保護量50%で第1のサーバから別のサーバに送信される可能性があり、一方で、同じソースブロックは、保護量10%で第2のサーバから受信機に送信される可能性がある。
【0058】
ソースブロック継続時間およびソースブロック当たりの保護量は、ソースブロックによって変わり得る。例えば、ソースブロックが、あるソースストリームのいくつかのソースパケット間にまたがらないことが好ましいとき、例えば、第1のパケットがMPEG2ビデオストリームにおけるGroup of Pictures(GOP)の最後のパケットであり、第2の連続するパケットが次のGOPの最初のパケットであるとき、ソースブロックは、第1のパケットの後に終了し、新しいソースブロックが第2のパケットで開始することがある。これによって、FEC符号化ブロックをビデオ符号化ブロックに揃えることができ、これは、受信機でのビデオバッファリングとFECバッファリングとの組合せを最低限に抑える可能性のために、受信機待ち時間またはチャネルザッピング時間を最低限に抑えることができるという利点を含めて、多くの利点があり得る。他の用途では、様々な理由のために、連続する各ソースブロックについて、同じソースブロック継続時間および/またはソースブロックサイズを常に維持することが有利であり得る。以下の説明の一部では、簡単にするために、ソースブロック継続時間および保護量は、その後の各ソースブロックについて同じと仮定される。当業者には、本開示を読んだ後、これは、限定的ではないことが明らかであるはずである。というのは、本開示を読むと、保護量またはソースブロック継続時間のいずれか、またはその両方がソースブロックによって変わるとき、およびソースブロックサイズが変わるとき、本明細書に記載されたプロセスおよび方法をどのように適用するかも容易に決定することができるからである。
【0059】
以降の説明の一部を簡単にするために、ソースシンボルが受信される第1のソースブロックにおいて、ソースシンボル損失がなく、その後の各ソースブロックにおいて、符号化シンボルの損失が、多くてもFEC復号が成功することを可能にする最大値であることを前提として、時として、元のストリームの複数のソースシンボルが、安定したレートで、ソースブロック形成およびFEC符号化を行うための送信機に到着し、いったんFEC受信機が、まず受信機でソースシンボルを使用できるようにすると、その後のソースシンボルは、FEC受信機によって、同じ安定したレートで使用可能になると仮定される。この簡素化の仮定は、引き続き説明するプロセスおよび方法の動作または設計に固有ではなく、決してこれらのプロセスをこの仮定に制限するものではなく、単に、プロセスおよび方法の特性の説明の一部を簡単にするためのツールとして導入される。例えば、様々なレートストリームでは、対応する条件は、ソースシンボルが、送信機に到着するのと同じレート、またはそれに近いレートで、FEC受信機によって使用可能になることである。いくつかの用途では、コンテンツザッピング時間を最低限に抑えるために、受信機で復号されたソースシンボルをできるだけ早くビデオプレーヤに配信することが好ましく、こうした場合、ソースシンボルは、複数のソースブロックのバーストで配信され得る。いくつかの用途では、ソースブロックの形成、FEC符号化、および送信のステップを2つ以上の異なるステップに分けることが望ましい。例えば、後述するように、ソースブロックの形成およびFEC符号化は、1つのサーバで行うことができ、符号化ストリームは、次いで、複数のサブストリームに分割され、次いで、該複数のサブストリームは、1つまたは複数の分散サーバに送信され、ローカルにキャッシュされ、その後、該複数のサブストリームの一部またはすべては、1つまたは複数の分散サーバのうちのいくつかから受信機に送信される。
【0060】
最低限に抑えることが重要ないくつかの主要メトリクスは、送信機によってもたらされる待ち時間である送信機待ち時間を含む。送信機待ち時間を最低限に抑えることは、ライブビデオストリーミングなどのいくつかの用途、またはテレビ会議など対話型の用途で望ましい。送信機待ち時間を最低限に抑えるのを助ける総合的な設計の1つの態様は、送信機が、あるストリームの最初のソースブロック(群)の符号化シンボルを連続する順序で受信機に送信することである。送信機待ち時間を最低限に抑える他の設計の態様については後述する。
【0061】
別の重要なメトリクスは、コンテンツザッピング時間である。図2に示すように、これは、受信機がストリームに加わり、またはストリームを要求したときと、FEC受信機が最初にストリームからソースシンボルを使用可能にしたときまでの間の時間である。一般に、例えば、ビデオストリームの再生の場合など、ストリームに受信機が参加したときと、ストリームが最初に受信機で使用可能になり始めたときとの間の時間量を最低限に抑えるため、コンテンツザッピング時間を最低限に抑えることが望ましい。コンテンツザッピング時間を最低限に抑える1つの重要な態様は、送信機が最初のソースブロックの符号化シンボルの元の送信順を維持することであるが、後述するように、コンテンツザッピング時間に大きい影響を与える他の多くの重要な設計態様がある。
【0062】
コンテンツザッピング時間は、一般に複数の成分を備える。図3Aおよび図3Bに、連続した複数のソースブロックに分割されるストリームについてのこれらの成分の一例が示されており、ここではインターリービングは使用されていない。図3Aは、保護期間当たりの単一ソースブロックを示し、この例は、ソースブロックの先頭で受信機がストリームに参加する場合を示す。この例では、コンテンツザッピング時間の2つの成分は、保護期間およびFEC復号待ち時間である。ソースブロックの受信機保護期間は、受信機がソースブロックから受信した符号化シンボルをバッファリングしている時間である。送信機保護期間および受信機保護期間は、送信機と受信機との間のチャネルが、各ビット、バイト、シンボル、パケットが送信機から受信機に移動するためにかかる時間量においてどんな変動も有していない場合、同じであることに留意されたい。したがって、実際には、配信におけるネットワークタイミングの変動のために、送信機保護期間は、同じソースブロックについて、受信機保護期間と異なり得る。
【0063】
ここでの説明を簡単にするために、送信機保護期間および受信機保護期間は、ソースブロックごとに同じである(および「保護期間」は、送信機保護期間および受信機保護期間について同意語として使用される)と仮定するが、これは、常にそうでならなければいけないというわけではない。言い換えれば、ネットワーク配信時間がすべてのデータについて同じであるという仮定がある。当業者であれば、本開示を読んだ後、ネットワーク配信の変動のために、送信機保護期間と受信機保護期間との差を考慮に入れるために、必要な変更を、本明細書に記載した方法および装置に加えることができる。
【0064】
コンテンツザッピング時間の保護期間成分は、不可避である。というのは、第1のソースブロックにおいて、任意のソースシンボルの損失がない場合でさえ、その後のソースブロックにおける符号化シンボルの損失があるとき、すべてのその後のソースシンボルのスムーズなソースシンボルの配信を確実にするために、少なくとも保護期間の間、ソースシンボルを使用可能にするのを送らせる必要が依然としてあるからである。保護期間中、ソースブロックのFEC復号の一部、ほとんど、またはすべては、符号化シンボルの受信と同時に起こり得る。保護期間の最後に、ソースブロックの第1のソースシンボルがFEC受信機から使用可能になる前に起こる追加のFEC復号がある可能性があり、この期間は、図3Aにおいて、FEC復号待ち時間と表記されている。さらに、第1のソースシンボルが使用可能になった後でさえ、ソースブロックの第2のソースシンボルおよびその後のソースシンボルが使用可能になる前に行われる追加のFEC復号があり得る。簡単にするために、この追加のFEC復号は、図3Aには示されておらず、この例では、第1のものの後のすべてのソースシンボルを十分速いレートで復号するのに十分使用可能なCPUリソースがあると仮定する。
【0065】
コンテンツザッピング時間の別の可能な成分は、受信機がストリームに加わることを要求したときと、そのストリームの第1のパケットが受信機に到着したときとの間の時間とすることができる。この時間量は、可変であり、受信機と、そのストリームのパケットの1つまたは複数の送信機との間の往復時間に依存し得る。コンテンツザッピング時間のこの成分は、本明細書には詳しく記載されていないが、時として、これは、考慮されるべきコンテンツザッピング時間の重要な誘因であり得ること、およびコンテンツザッピング時間のこの潜在的な誘因を考慮に入れるために、本明細書に記載した方法およびプロセスを容易に変更できることを当業者であれば認識されよう。
【0066】
図3Bは、図3Aに示される例に対応し得る2つの潜在的なFEC復号のCPU使用率曲線を示す。図3Bに示される2つの曲線のうちの1つにおいて、FEC復号に使用されるCPU使用率は、各時点において同じであり、すなわち、CPU使用率は、一様に分散される。各時点で同じ量のCPUリソースを予測的に使用し、ソースブロック全体を復号するのに、同じ量の総CPUリソースが必要とされると仮定して、最大CPUリソースを最低限に抑えるため、これは、望ましいCPU使用率曲線である。図3Bに示した2つの曲線のうちの他方では、FEC復号に使用されるCPU使用率は、各時点で同じではなく、特に、ソースブロックの符号化シンボルの受信の最後に向かう、およびその直後でのCPU使用率は、他の時点よりかなり高い。CPUリソース使用量が、他のプロセス、例えばビデオプレーヤなどもCPUに負担をかける時点であり得るある時点でスパイクし、したがって、例えば、映像ストリームの再生におけるトラブルをもたらす可能性を引き起こすため、これは、望ましいCPU使用率曲線ではない。したがって、ストリームを保護するFECソリューションの設計は、FEC復号器ができるだけ時間にわたってスムーズで一様にCPUを使用するソリューションを提供することである。一例として、設計基準は、符号化シンボル損失の最悪の場合のパターン下のFEC復号プロセスにおいて、任意の時点の最大CPU使用率がある閾値を下回ること、例えば、各100ミリ秒の間隔にわたってCPUの多くて10%を使用することであり得る。
【0067】
いくつかのストリーミングの用途では、受信機がソースブロックの途中でストリームに加わってしまった場合、元の送信順およびソースパケットの配信速度が最初に送信機によって維持される限り、コンテンツザッピング時間は、ソースブロック継続時間と、その第1の部分的ソースブロックからのソースシンボルの損失がないときの復号待ち時間とを加算したのと同じほど小さくなり得る。他のビデオストリーミングの用途では、送信機は常に、GOPの先頭から受信機にストリームを送信し始め、この場合、ソースブロックの先頭は、GOPの先頭に揃えられることが好ましい。したがって、コンテンツザッピング遅延を最低限に抑えるために、送信機が、最初のソースブロックのソースシンボルの元の送信順を維持することが望ましい。
【0068】
FECエンドツーエンド待ち時間を最低限に抑えるために、FECストリーミングソリューションを使用することもできる。FECエンドツーエンド待ち時間は、ライブストリーミングの用途の場合、ソースパケットがFEC符号化の適用前に送信機でのストリーミングの用意ができているときと、FEC復号の適用後、受信側での再生に使用可能であるときとの間にFECの使用によってもたらされる最悪の場合の全待ち時間である。オンデマンドのストリーミングまたはプレイリストコンテンツストリーミングなど、他のタイプのストリーミングの用途の場合、FECエンドツーエンド待ち時間は、大きな問題ではない。
【0069】
すべてのタイプのストリーミングの用途では、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えることが重要である。同時に、ストリームの送信レートを最低限に抑えること、すなわち、コンテンツザッピング中およびコンテンツ遷移中も含めて、常に送信レートを制約して、コンテンツストリーミングレートをほんのわずか上回るようにすることが重要である。
【0070】
FECストリーミングソリューションは、FECが使用されるとき、送信レートの変動を最低限に抑えるために使用することもできる。この1つの利点は、パケットネットワーク内で、ストリームの送信レートのピークと他のトラフィックのピークとが、制限された容量のネットワークにおける地点で一致するとき、送信レートが変動するストリームが、輻輳またはバッファオーバーフローが原因のパケット損失をより受けやすいことである。少なくとも、FEC符号化ストリームのレートの変動は、元のソースストリームのレートの変動より悪くないものとし、より多くのFEC保護が元のソースストリームに適用されると、FEC符号化ストリームのレートの変動がより小さくなることが好ましい。特別な場合として、元のストリームが一定のレートで送信する場合、FEC符号化ストリームができるだけ定数に近いレートで送信されることが好ましい。
【0071】
その後の各ソースブロックの最後の符号化シンボルが受信されるときが時間にわたってできるだけ一様に分配されるという特性は、望ましい特性である。あるソースブロックの最後の符号化シンボルが受信されたときは、ソースブロックの復号についてのすべての情報がFEC復号器から使用可能であるときであり、これは、一般に、FEC復号器が所定の復号待ち時間バジェット内で復号を終えるために、最も激しく働く必要があるという最悪の場合の損失条件下のときである。したがって、ソースブロックの最後の符号化シンボルの受信を一様に分配することによって、FEC復号のためのCPUの使用をスムーズにすることができる。
【0072】
FECストリーミングソリューションは、FEC受信機でできるだけ簡単なロジックを提供するものとする。FEC受信機を、制限された計算、メモリ、および他のリソース機能を備える装置に構築することができるため、これは、多くの状況で重要である。さらに、いくつかの場合、伝送時にシンボルのかなりの損失または破損がある可能性があり、したがって、FEC受信機は、条件が向上したとき、ストリームの受信が続く場所を理解するためのコンテキストがほとんどあるいはまったくない、破局的損失または破損シナリオから回復しなければならない場合がある。したがって、FEC受信機ロジックが簡単で頑強であればあるほど、FEC受信機は、迅速かつ確実に、回復を開始し、FEC符号化ストリームの受信からソースストリームのソースシンボルを再度使用可能にすることができる。
【0073】
ソースブロックのリペアパケットを送信するのは、ソースブロックのソースパケット前、後、または混合のいずれでもよく、本明細書で説明するように、それぞれの戦略に利点がある。
【0074】
FECストリーミングソリューションの包括的な望ましい特徴のうちの一部は、以下を含む。
【0075】
1.短いコンテンツザッピング時間。
【0076】
2.短いコンテンツ遷移時間。
【0077】
3.常に送信ストリームレートを制約して、すなわち、コンテンツストリームレートをほんのわずか上回るようにするものとする。
【0078】
4.送信ストリームレートは、スムーズであるものとし、少なくともコンテンツストリームレートと同じぐらいスムーズであるものとする。
【0079】
5.FEC符号化が使用されるとき、ソースブロックの形成およびFEC符号化を、あるストリームに実行することができ、同じ符号化ストリームを、場合によっては異なる時に多くの受信機に送信することができる。
【0080】
6.FEC符号化が使用されるとき、特に、損失が本質的に多少バースト的であるとき、必要な最低限の保護量を有する小さいソースブロック継続時間を使用して、パケット損失に対する保護を高いものとする。
【0081】
7.FEC符号化が使用されるとき、複数のソースブロックは、1つのストリームの隣接した部分を含むものとする。
【0082】
8.ライブストリーミングの用途のFEC符号化のとき、FECエンドツーエンド待ち時間は、小さいものとする。
【0083】
9.FEC符号化が使用されるとき、FEC復号は、CPU使用率をスムーズに分配するものとする。
【0084】
<FEC符号化ストリームの基本的な送信>
本セクションでは、送信機が、FEC符号化することができるストリームのパケットの送信の時間を決める基本的な方法およびプロセスを説明する。kをソースブロックにおけるソースシンボルの数とし、Tをそのソースブロックについてのソースブロック継続時間とし、pを分数として表される保護量とすると、そのソースブロックについて、p*k個のリペアシンボルが送信される。k、Tおよびpの値は、各ソースブロックが形成されているときに、動的に決定することができ、したがって、そのソースブロックのソースシンボルのほとんどまたはすべてがプロセスに到着したとき、ソースブロックのkおよびTの値は、ソースブロックの形成プロセスのみに知られるようにし、pの値は、ソースブロックのすべてのソースシンボルがソースブロック形成プロセスに到着した後、または個別のプロセスによって決定することができる。また、ソースブロック形成プロセスは、異なるソースブロックごとにシンボルサイズを変え得る。したがって、特定のソースブロックのこれらのパラメータの多くまたはすべては、そのソースブロックのデータを受信中のソースブロック形成プロセスに知られている可能性がある。
【0085】
以下のプロセスでは、インターリービングを使用しない基本的な送信機について説明する。簡単にするために、この基本的な送信機について、ソースブロック形成プロセスがストリームにすでに適用されており、それが連続するソースブロックに分割されており、こうしたソースブロックの各個がk個のソースシンボルを含み、T秒のソースブロック継続時間で、こうしたソースブロックごとに、p*k個のリペアシンボルがすでに生成されていると仮定する。
【0086】
受信機がストリームを特定のソースブロックからの開始を要求する(または受信機からの明示的な開始要求によってストリームを先行送信させる)と、基本的な送信機は、T秒の期間にわたって、要求されたソースブロックの(1+p)*k個の符号化シンボルの送信を開始し、その後、要求されたソースブロックの後、次のソースブロックの符号化シンボルを送信する、といった具合である。
【0087】
基本的な送信機は、以下の特性を有する。
【0088】
1.保護期間はTであり、これは、ソースブロック継続時間と同じである。
【0089】
2.送信されたソースブロックのシンボルは、T秒の期間にわたって一様に分配される。これは、一定の継続時間のバースト停止(burst outage)があるとき、損失に対して提供される保護のレベルは、シンボルの送信中に停止が起こるときに依存しないことを含意し、これは望ましい。
【0090】
3.送信機は、シンボルの全体的な送信レートの変動をもたらさない。特に、ソースシンボルの元の送信レートが一定である場合、すべてのシンボルの送信レートは、依然として一定であり、送信機でのソースシンボルの元の到着レートが可変であるとき、少なくともソースブロック当たりのシンボルの一定の送信レートが変動を減衰させる。これは、望ましい特性である。
【0091】
4.コンテンツザッピング時間は、Tと同じぐらい小さくすることができる。これは、(すべてのソースブロックがk個のソースシンボルを含むと仮定すると)(1+p)*k個のシンボルの最低バッファリングを含意し、これは、所与の保護期間について可能な最低値であり、したがって望ましい。
【0092】
基本的な送信機が有する1つの特性は、コンテンツザッピング時間は、少なくとも1保護期間分の時間であり、保護期間は、バースト的損失に対する保護の品質に直接関係するということである。したがって、保護期間とコンテンツザッピング時間との間で行う必要がある妥協がある場合がある。例えば、1秒未満のコンテンツザッピング時間を有することが望ましく、一方で、一時的なネットワーク停止、または数10あるいは数100ミリ秒程度、およびいくつかの場合では数秒続く可能性がある、バースト的パケット損失をもたらす他のタイプの断続的なネットワーク問題に対してより良い保護を提供するために、数秒にまたがる保護期間を有すると共に、同時に10%などの適度に小さい保護量を使用することも望ましい。コンテンツザッピング時間よりかなり大きい保護期間を有することができることが望ましく、これは、次のセクションで説明するインターリービング方法が提供する多くの利点のうちの1つである。
【0093】
<ストリームインターリービング>
このセクションでは、データのストリームをとり、送信プロセスで、ある部分が他の部分より多く遅延するように、差分時間遅延をデータストリームの異なる部分に適用するための新規の方法およびプロセスについて説明する。これらの方法およびプロセスのうちのより重要な態様のうちの1つは、データストリームが送信されるときに、ストリームの異なる部分に含まれる遅延の量を動的に調整するための手段である。
【0094】
コンテンツザッピング時間を最低限に抑え、ストリームのより良い保護を提供するために、ソースブロックをGroup of Pictures(GOP)構造またはビデオストリームの他のフレーム構造に揃えることがしばしば好ましい。いくつかの用途では、インターリービングプロセスが、ソースブロック形成プロセスとは関係なく、場合によっては、異なる時間に行われる、または場合によっては、異なる場所で行われることができることが望ましい。いくつかの場合、例えばFEC符号化が使用されないために、たとえソースブロック形成プロセスが使用されなくても、例えば、ストリームを介してバースト的誤りをより均等に分配するために、場合によっては、インターリービングプロセスが望ましい。当業者であれば認識されるように、本明細書に記載した方法は、ソースブロック形成およびFEC符号化が使用されないときでさえも適用される。
【0095】
いくつかの場合、各ソースブロックのシンボルをソースブロック継続時間より長い保護期間にわたって分配することができるように、送信機が異なるソースブロックからシンボルの送信をインターリーブするのを可能にするための利点があり得る。これを行う1つの理由は、時間に依存した損失(例えば、バースト的損失)に対して、より良い保護が提供されるからであり、すなわち、ソースブロックの保護期間が大きくなるにつれて、一定の継続時間のバースト損失に対して保護を提供するのに、より小さい保護量が必要とされるからである。ソースブロック継続時間は、t秒とすることができ、ソースブロックの望ましい保護期間は、p秒とすることができ、この場合、p>>tである。インターリービングを使用する送信機の他の望ましい特性は、以下を含む。(1)ソースパケットがソースブロック内の元の順で送信される、(2)その後の各ソースブロックの最後の符号化シンボルが受信される時間は、時間にわたってできるだけ一様に分配される。
【0096】
FEC符号化が使用されるとき、ソースブロックの符号化シンボルの送信を静的にインターリーブする方法が導入され、ストリームが送信されるにつれてインターリービングの量を動的に調整する方法が導入され、一般には、ストリームの送信の開始時にはインターリービングがほとんどあるいはまったくなく、したがって、ソースブロック継続時間とほぼ同じ保護期間で、ストリームの送信が進むにつれて、ますます多くのインターリービングがスムーズに導入され、したがって、保護期間は、ソースブロック継続時間よりかなり長くなるまで増大する。これによって、コンテンツザッピング時間を、受信機で最低限に抑えると共に、送信が進むにつれてバースト的損失または破損に対する保護をますます増やすことができる。記載した方法の他の利点は、ストリームの送信が進むにつれて、ますます多くのネットワークジッタに対して徐々に保護を行うことができることである。
【0097】
以下の説明を簡単にするために、ストリームの送信前にソースブロック形成およびFEC符号化プロセスが行われると仮定する。これは、方法の限定ではなく、当業者であれば認識されるように、ソースブロックを形成し、これらのソースブロックにFEC符号化を実行し、後述するようにストリームを送信するプロセスは、同時に行うことができ、一部の場合、これは、有利である。さらに、いくつかの用途では、ソースブロック形成、FEC符号化プロセス、およびストリームのインターリーブ式の送信について後述する方法は、動的に独立していてよく、すなわち、ソースブロックがどのように形成され、FEC符号化されるかは、いくつかの場合、送信ストリーム戦略に依存し得る。
【0098】
<ストリーム送信のテープ(tape)方法>
新しいインターリービング方法を説明するために、以下のストリーム送信のテープ方法を述べることが有用である。図4は、ソースブロック構造がすでに決定されているコンテンツストリームの例示的な図である。各ソースブロック405(1),405(2),・・・について、幅410(1),410(2),・・・は、そのソースブロックのコンテンツ再生継続時間を示し、各ソースブロックの高さ415(1),415(2)は、各コンテンツストリームソースブロックの平均再生レートを示し、この例では、異なるソースブロックは、異なる再生レートを有する。
【0099】
図5は、図4に対応する符号化ブロック構造を示しており、すなわち、FEC符号化が各ソースブロックに適用されて、ソースブロックごとに追加のリペアデータ510(1),510(2),・・・を生成し、符号化ブロックを形成する。510(1),510(2),・・・の高さ515(1),515(2),・・・は、各符号化ブロックにおけるソースブロックごとに生成された追加のリペアデータの量を示し、すなわち、対応するソースブロックと同じ継続時間にわたって符号化ブロックが送信される場合、高さは、符号化ソースブロックの平均送信レートを示す。この図は、例示にすぎず、これに限定するものではなく、例えば、符号化ブロックごとに生成されたリペアデータの量は、符号化ブロックごとに送信された量よりかなり大きくてもよく、符号化ブロックごとに送信された量は、受信機によって変わり得る。さらに、図5は、符号化ソースブロック内のソースシンボルおよびリペアシンボルの順序の表示を示唆するものではない。
【0100】
図6は、基本的な送信機の方法に対応する受信機によるコンテンツザッピング時間経験を示す例示的な図である。コンテンツザッピング時間605の複数の成分のいくつかは、受信機が、第1のソースブロックを復号するのに十分なだけ、ストリームの第1の符号化ブロックを受信するためにかかる時間610、受信機が第1の符号化ブロック620の受信された部分から第1のソースブロックを復号するためにかかる時間、およびネットワークジッタ、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間を吸収するために確保される予備バッファ時間630を含む。
【0101】
ストリームを送信するテープ方法について説明しており、類似の方法を生成する同等の説明や、本明細書に記載される方法の変形を生成するこの説明の変形が多く存在することを当業者であれば認識されよう。図7は、図5に示される符号化ブロック構造に対応するテープ方法の一例を示す。該テープ方法において、データのストリームの送信は、ストリームがテープ705として送信されることを表すことによって示され、ここでは、テープのX軸に沿った各位置710が符号化ブロック構造における異なる時点に対応し、テープの高さは、常に同じであり、例えば、テープに沿ったその時点での符号化ソースブロックのレートに関係なく、名目上高さ1など、常に同じである。テープによって表されるストリームの送信は、テープの最上部725からテープの最下部730に至る移動線720(1),720(2)によって示すことができる。一表現において、時間にわたる線720(1),720(2)の移動は、ストリームの符号化ブロックからのデータの送信順を表す。テープ内の各点740(1),740(2),・・・は、送信すべきストリームデータ片を表し、例えば、各点は、符号化ブロックの符号化シンボルのパケットを表し、または各点は、符号化ブロックの個々の符号化シンボルを表し得る。符号化ブロック750(1),750(2),・・・に対応する領域内に含まれる点は、その符号化ブロックに関連付けられるデータを表す。
【0102】
ストリームを送信するテープ方法による送信のプロセスは、ストリームが送信されるにつれて、時間にわたってテープを横切って線720(1),720(2)をスィープ(sweep)することによって表され、線が点をスィープするたびに、その点に対応するストリームのデータが送信される。図7は、送信プロセスにおける異なる2つの時点での線を示し、線720(1)は、第1の時刻におけるその構成であり、線720(2)は、第2の時刻におけるその構成である。したがって、送信プロセスは、第1の時刻と第2の時刻との間の時間間隔中、720(1),720(2)、725および730によって囲まれた領域内の点に関連付けられているすべてのデータを送信する。各符号化ブロック内の点の分散は、その重さに従って、その符号化ブロックについて、テープエリア内で一様に分散されることが好ましく、例えば、ランダムに分散される、または疑似ランダムに分散される、または点の重さがその点によって表されるデータの量である場合、各点の重さに従って点が一様に分散されることを確実にするプロセスによって決定論的に分散される。
【0103】
上述したように、線720は、直線であるが、当業者であれば認識するように、多くの変形があり、例えば、線は、曲線でもよく、または連続する線セグメント系列を備えていてもよい。また、線は、送信プロセス中に横切ってスィープするとき、その形状を変えてもよい。テープ送信方法は他にもいくつかの変形があり、そのなかには、変形テープが同じ高さのものではなく、代わりに、その高さは、テープのその位置710でのストリームのレートに従って変わるようにテープを表すことを含む。
【0104】
以下で詳述されるように、送信プロセス中、テープにわたる線の移動を指定する様々な方法がある。
【0105】
<静的インターリービング方法>
ストリームを送信するテープ方法は、FEC符号化が使用されるかどうかにかかわらず、またソースブロック構造が使用されるかどうかにかかわらず、任意のタイプのコンテンツストリームまたは符号化コンテンツストリームについて、任意の深さの静的インターリービングを達成するために使用することができる。説明上、ソースブロック構造は、すでに定義されており、FEC符号化が使用されると仮定する。
【0106】
ストリームを送信するテープ方法を使用した所与の量の静的インターリービングを達成する1つの方法について、一例により図7を参照して説明する。この例では、各符号化ブロックは、時間量Dごとに他の隣接する符号化ブロックでインターリーブされ、すなわち、インターリービング深さはDである。この例では、ストリームを要求するとき、受信機は、位置XおよびDの値を伝える。次いで、送信機での送信プロセスは、最初に線720とテープの最下部730とが位置X−Dで交差し、最初に線720とテープの最上部725とが位置Xで交差するように線720を構成し、次いで、送信プロセスが、ストリームの再生レートと同じレートで、時間を順方向に線720をスィープする、すなわち、送信プロセス開始後の時刻tで、線720とテープの最下部730とが位置X−D+tで交差し、線720とテープの最上部725とが位置X+tで交差するように、線720が横切ってスィープしていることによって説明される。
【0107】
静的インターリービング方法のこの説明において、新しく要求されたストリームを受信機に送信するために該方法が使用されている場合、ストリームにおいて、受信機で再生が開始する位置にXがあることが有利であり、例えば、Xは、符号化ブロックの先頭の位置、またはXは、ビデオストリームにおけるGOPの先頭の位置であり、符号化ブロックの先頭は、GOPの先頭に揃えられる。さらに、こうした場合、一般に、受信機は、符号化ブロックのある一部分のみを受信し、部分的に受信された符号化ブロックを完全に復号するのに十分ではない可能性が高いため、送信機が、テープに沿って位置Xの前に、受信機に任意のデータを送信しないことが有利である。
【0108】
図8は、送信機が先に説明した静的インターリービング方法を使用しているとき、送信されたストリームの形状を例示する例示的な図である。この場合、静的インターリービング方法は、図5に示された符号化ストリームに対応する、図7に示されるテープに適用される。この例では、受信機は、Xの値を、図7における第1の符号化ブロック750(1)の開始の位置と指定し、したがって、この例では、位置Xの前に、テープに沿って送信されるべきデータはない。この例では、受信機は、Dの値も指定し、これは、10秒などの値とすることができる。このプロセスに従って送信機によって送信された結果として得られたストリームは、図8に示され、この場合、850(1),850(2),・・・のエリアは、それぞれ図5の405(1)+510(1)、405(2)+510(2),・・・などのエリアと同じである。図8に示すような送信レートは、図5に示すような元のコンテンツレートの平滑化されたバージョンであることに留意されたい。
【0109】
図9は、上述した静的インターリービング方法に対応する受信機によって経験されるコンテンツザッピング時間を示す例示的な図である。コンテンツザッピング時間905の成分の一部は、受信機が、第1のソースブロックを復号するのに十分なだけストリームの第1の符号化ブロックを受信するためにかかる時間であって、ソースブロック継続時間とインターリービング深さDとの合計である時間910、受信機が第1の符号化ブロック920の受信された部分から第1のソースブロックを復号するためにかかる時間、および予想されるネットワークジッタ遅延、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間のために確保される予備バッファ時間930を含む。保護期間は、この場合、ソースブロック継続時間+インターリービング深さDであり、ソースブロック継続時間よりかなり大きくなり得るため、コンテンツザッピング時間905は、記載したように、この方法を使用すると、ソースブロック継続時間よりかなり大きくなり得ることに留意されたい。
【0110】
<動的インターリービング方法>
ストリームを送信するテープ方法は、FEC符号化が使用されるかどうかにかかわらず、またソースブロック構造が使用されるかどうかにかかわらず、任意のタイプのコンテンツストリームまたは符号化コンテンツストリームについて、任意のペースの任意のインターリービング深さで、動的インターリービングを達成するために使用することができる。説明上、ソースブロック構造は、すでに定義されており、FEC符号化が使用されると仮定する。
【0111】
ストリームを送信するテープ方法を使用し、インターリービング無しで開始して、所与のインターリービング深さまで進む動的インターリービングを達成する1つの方法について、一例を図7を参照して説明する。この方法の一般的な使用では、第1の符号化ブロックは、わずかのインターリービングで送信され、次いで、インターリービング深さDが達成されるまで、徐々に、時間が経つにつれて、他の隣接する符号化ブロックでその後の符号化ブロックがますますスムーズにインターリーブされる。しかし、この方法の他の使用についても、以下で説明し、当業者であれば認識されるように、他の様々な変形もある。方法のパラメータを表すこの例の方法では、ストリームを要求すると、受信機は、線720についての最初の上部位置UI、線720についての最初の下部位置LI、線720についての最後の上部位置UF、線720についての最後の下部位置LF、および時間値Tを伝える。簡単にするために、以下、UF≧UI、LF≧LI、UF≧LF、UI≧LI、T≧0と仮定する。一般に、必要に応じて受信機でのデータが常に使用可能であることを確実にするのを助けるために、UF≧UI+TおよびLF≧LI+Tであることが好ましい。以下、この例で説明するように、UF、UI、LF、LI、およびTのこれらの値は、インターリービングが動的に調整されるにつれて、コンテンツの予備バッファを受信機でスムーズに増加することができるようにする。
【0112】
送信機での送信方法は、パラメータLI、UI、LF、UF、およびTを使用して以下のようにテープ方法を実行する。まず、図7の線720は、最初に送信時刻t=0で、最初に線720とテープの最下部730とが位置LIで交差し、最初に線720とテープの最上部725とが位置UIで交差し、次いで、送信時刻t=0からt=Tまでの間、時刻tで、線720とテープの最下部730とが位置t*(LF−LI)/T+LIで交差し、時刻tで、線720とテープの最上部725とが位置t*(UF−UI)/T+UIで交差するように、線720がテープを横切ってスィープされるように構成される。次いで、送信時刻t>Tのすべてにおいて、時刻tで、線720とテープの最下部730とが位置t−T+LFで交差し、時刻tで、線720とテープの最上部725とが位置t−T+UFで交差するように、線720がテープを横切ってスィープされ、すなわち、t>Tの場合、インターリービングは、静的であり、D=UF−LFのインターリービング深さが使用される。
【0113】
<新しく要求されたストリームについての動的インターリービング方法>
動的インターリービング方法の一使用例は、受信機に新しく要求されたストリームを送信することである。一例として、図10に示されるように、初期値はすべて、同じ値I=UI=LIに設定することができ、すなわち、最初は、インターリービングがなく、受信機がコンテンツストリームを再生し始める位置Sは、S=Iを満たす。これにより、位置S以降のコンテンツの全テープが受信機に送信されたことが確実になる。図10に示されるように、好ましくは、S=UI=LIであり、この場合Sは、それが再生され得るコンテンツストリームにおける位置であり、例えば、Sは、その開始がGOPの開始に揃えられる符号化ブロックの開始である。さらに、T≦LF−Sであることが有利である。これにより確実になるのは、受信機がコンテンツレートでコンテンツを再生する場合、コンテンツの送信が、少なくとも受信機でのコンテンツの再生と同じ速さのレートでのものであり、R=LF−S−T秒の予備バッファ時間がスムーズに増加し、受信機への送信開始から送信時刻Tで静的インターリービングに到達するにつれて続き、この場合、予備バッファは、ネットワークジッタ、変化するソースブロック継続時間、および復号時間を吸収することができることである。インターリービング量は、インターリービング無しからD=UF−LF秒のインターリービングまで、スムーズに増加する。
【0114】
動的インターリービング方法の特定の例として、受信機がごく最初からコンテンツにアクセスしており、定常状態で、5秒の予備バッファに到達し、定常状態で10秒のインターリービング深さが望まれ、送信のレートは、インターリービングおよび予備バッファが増加している期間中、符号化ストリームレートの約10%以上と仮定する。次いで、パラメータの可能な設定は、所望の開始位置であるS=UI=LI、T=100秒、LF=S+T+5秒、およびUF=LF+10秒である。したがって、この例で、コンテンツストリームレートが1Mbpsであり、10%の保護量が使用される場合、符号化ストリームレートは、1.1Mbpsとなる。次いで、ストリームの100+(5+15)/2=110秒が最初の100秒内で送信されるため、前に説明したパラメータ設定を使用した動的インターリービング方法を使用した送信の最初の100秒間、送信レートは、約1.21Mbpsとなる。100秒の送信の後、予備バッファは、5秒、インターリービング深さは、10となり、次いで、送信レートは、その後、1.1Mbpsとなることになる。100秒のストリーミングが行われる直前の2、3秒の間、送信レートは、1.21Mbpsレートから1.1Mbpsレートにスムーズに遷移する。最初に、送信レートは、符号化ストリームレートに従い、インターリービング深さおよび予備バッファがスムーズに増えるにつれて、送信レートは、平滑化され、ますます厳密に平均符号化ストリームレートと一致するようになることにも留意されたい。
【0115】
上述した動的インターリービング方法に対応する受信機によって経験されるコンテンツザッピング時間について、図11を参照して説明する。コンテンツザッピング時間1105の成分の一部は、受信機が第1のソースブロックを復号するのに十分なだけ、ストリームの第1の符号化ブロックを受信するためにかかる時間1110、受信機が第1の符号化ブロック1120の受信された部分から第1のソースブロックを復号するためにかかる時間、および予想されるネットワークジッタ遅延、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間のために確保される初期予備バッファ時間1130を含む。
【0116】
動的インターリービングを使用するとき、予備バッファは時間が経つにつれて増加するため、動的インターリービングを使用するとき、初期予備バッファ時間1130は、ストリーム送信の全継続時間の間、予備バッファサイズが固定される場合よりかなり短くなり得る。例えば、基本的なストリーム送信機を使用すると、最高2秒までの長期ネットワークジッタに対してバッファリングするために、予備バッファサイズは、2秒に設定することができる。一方、動的インターリービング式の送信方法では、ストリーム送信の最初の2、3秒の間、ネットワークジッタがわずかである可能性があり、その時点では、予備バッファは、かなり増加しているため、初期予備バッファ時間1130は、例えば200ミリ秒など、かなり短い何らかの値に設定することができる。
【0117】
動的インターリービングを使用したとき、各ソースブロックの保護期間が徐々に増加するため、初期ソースブロック継続時間は、動的インターリービングを使用したとき、保護期間がストリーム送信の全継続時間の間そのソースブロック継続時間であるときよりかなり短くなり得る。例えば、基本的なストリーム送信機を使用すると、ソースブロック継続時間は、5秒に設定することができ、保護量は、500ミリ秒の短いバースト的パケット損失から保護するために、20%に設定することができる。一方、動的インターリーブ式の送信方法では、ソースブロック継続時間は、約500ミリ秒など、かなり短い何らかの値に設定することができ、保護量は、こうしたバーストに対する同じレベルの保護を提供するために、約5%など、かなり小さい値に設定することができる。というのは、ストリームを送信する最初の2、3秒の間、こうしたバーストが起こる可能性は低く、その時点では、保護期間は、こうしたバーストから保護するために、実質的に、例えば、元のソースブロック継続時間+10秒のインターリービング深さまで増加している。
【0118】
したがって、全体的に、動的インターリービング方法を使用すると、例えば、1秒未満のコンテンツザッピング時間など、コンテンツザッピング時間は短くてよく、これに対して、同じネットワーク条件において、基本的なストリーム送信方法を使用すると、数秒であり、さらに、動的インターリービング方法は、ネットワークジッタおよびバースト的パケット損失に対して優れた長期保護を提供することができる。
【0119】
パラメータの指定方法には多くの変形がある。例えば、テープにおける初期開始位置を指定する代わりに、インターリービングの初期量、インターリービングの最後の量、および初期インターリービングから最後のインターリービングまでスムーズに遷移する期間を指定することができる。あるいは、初期インターリービングから最後のインターリービングまでスムーズに遷移する期間を指定する代わりに、遷移を行うためのコンテンツストリームレートに対するレートを指定することができる。変形の別の例として、追加のパラメータを送信機が知っておく、または受信機によって指定することができ、例えば、受信機は、受信機がコンテンツの再生を開始する開始位置Sを明示的に信号で伝えることができる。
【0120】
当業者であれば認識されるように、動的インターリービング方法の多くの変形がある。例えば、受信機が損失をあまり経験していないために、例えば送信機は、符号化ブロックの一部またはすべてからの符号化データの一部をフィルタにかけて除去し、個々の受信機に送信しないことを決定することができる。別の変形として、ソースブロック構造を事前に決定することができる。しかし、送信プロセスが動作するにつれて、FEC符号化が動作して、個々の受信機のために符号化ブロックを生成していたり、以前の受信機より大きい保護量を必要とする受信機に遭遇するにつれて、時として、一部の符号化ブロックのためにリペアシンボルの大量供給を生成したりしている。
【0121】
しばしば好ましい別の変形として、受信機は、動的インターリービング方法の初期パラメータの設定を制御することができ、サーバまたは複数のサーバのセットは、動的インターリービング方法の最後の対象パラメータを決定することができる。例えば、受信機は、コンテンツストリームが2秒のインターリービング深さおよび1秒の予備バッファで開始されると指定することができ、次いでサーバは、20秒のインターリービング深さおよび10秒の予備バッファが送信の最初の2分で達成されるように送信することを決定することができる。サーバまたはサーバ群に動的インターリービング方法の最後のパラメータを指示させる1つの利点は、コンテンツストリームの現在の時間以降の部分は、使用不可であるライブストリーミングをサポートするにははるかに容易であるので、サーバは、動的インターリービングパラメータを所与の制約下で使える最後の設定に導くことができることである。サーバに最後のパラメータを指示させる利点の別の例は、サーバが、いくつかの場合、ストリーム内の基本的に同じ位置からの同じコンテンツストリームが提供されている複数のクライアントのパラメータを、最終的に受信機の多くが同じ最終パラメータに導かれるように調整することができ、これによって、同じ時点に、同じパケットが、コンテンツストリームからこれらの受信機のすべてに送信されるため、受信機にパケットを送信する際のサーバ効率につながることである。
【0122】
<コンテンツセグメント遷移の動的インターリービング方法>
動的インターリービング方法の一使用例は、受信機がコンテンツセグメントリスト内のあるコンテンツセグメントから次のコンテンツセグメントに遷移するとき、例えば、ある番組の一エピソードの一セグメントから広告に遷移し、次いで、その番組の次のセグメントに戻るときなどであり、この場合、すべての遷移は、任意の受信機の対話無しに行われる。複数の差分コンテンツセグメントは、異なる送信機によって送信することができ、例えば、番組エピソードの複数のセグメントは、コンテンツサーバによって受信機に送信することができ、一方で、間に入る広告は、広告サーバによって受信機に送信することができる。
【0123】
第1の例は、受信機が上述した動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを見ており、第1の送信機が、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間送信しているときである。次いで、動的インターリービング方法を使用して、以下のように、第2のコンテンツセグメントへのスムーズな遷移を達成することができる。
【0124】
1.第1のコンテンツセグメントの送信の終了前D+R秒に、第1のセグメントの送信レートは、D秒の期間にわたって符号化ストリームレートからゼロまで直線的に低減し、その時点で、第1の送信機は、第1のセグメントについての送信を停止する。
【0125】
2.第1のコンテンツセグメントが再生を終了する前のD+R秒で、受信機は、UI=0、LI=−D、UF=0、LF=−D、T=0のパラメータで、第2のサーバに第2のコンテンツセグメントを要求する。ネットワーク待ち時間が無いと仮定すると、第2のサーバは、第2のコンテンツセグメントのストリームの送信を開始し、送信の最初のD秒にわたってレートを直線的に増加させ、その後、送信が符号化ストリームレートになる。
【0126】
3.第1のコンテンツセグメントが再生を終了したとき、第2のコンテンツの予備バッファは、R秒に増加しており、インターリーブ深さは、D秒に増加している。この時点で、第2のコンテンツの再生を開始することができる。
【0127】
したがって、第1のコンテンツセグメントから第2のコンテンツセグメントへの遷移は、受信機での受信レートを符号化ストリームレートに保ち、すなわち、遷移にわたる結合されたレートが、1つのコンテンツセグメントが連続して送信されているのと同じになるように、第1のコンテンツセグメントの送信レートが直線的に減少している間、第2のコンテンツセグメントの送信レートが直線的に増加する。さらに、第2のストリームの予備バッファ保護およびインターリーブ保護は、定常状態での第1のストリームの場合と同じである。図12は、この例である。
【0128】
第1のコンテンツセグメントの送信の終了に比べて、第2のコンテンツセグメントのストリームの送信の開始時について、タイミングがわずかにはずれていたとしても、減少レートおよび増加レートがなだらかな直線であるため、ストリーミングレートの正味の誤りは、軽微である。例えば、2つのストリームの間の遷移のタイミングに500ミリ秒の誤りがあり、インターリービング深さが10秒である場合、ストリーミングレートの誤りは、多くて5%である。これは、第2のコンテンツセグメントのパラメータを上述したより少し控えめに、すなわち、これらの値を単に第1のストリームと同じに保持しようとする代わりに、予備バッファおよびインターリーブ時間を少し多く増やそうとするように設定することができ、その結果のコンテンツセグメント遷移間の結合されたストリーミングレートの増加は、軽微になることも意味している。
【0129】
コンテンツセグメント遷移の第2の例は、受信機が上述した動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを見ており、しかし、第1の送信機が、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間送信していないときである。次いで、第2のコンテンツセグメントへのスムーズな遷移は、動的インターリービング方法を使用して、以下のように達成することができ、この場合、受信機が行うことは、第1のストリームから第2のストリームへの遷移は、2つのコンテンツセグメントが共に連結され、1つのサーバによって送信されるかのように、パラメータを設定し、また第2のストリームを要求することである。当業者であれば、動的インターリービング方法を使用して、このタイプの遷移を達成する方法の詳細を考え出すことができる。
【0130】
コンテンツセグメント遷移の第3の例は、上記の動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを受信機が見ており、そして、第1のコンテンツセグメントの再生が受信機で終了したときと、第2のコンテンツセグメントの再生が始まるときとの間の期間にギャップがあるときである。例えば、これは、再生を終了する番組の一エピソードの第1のセグメントがあり、次いで例えば期間30秒の非ストリーミング広告が続き、番組の当該エピソードの第2のコンテンツセグメントの即座の再生が続くときの好ましい挙動であり得る。この場合、動的インターリービング方法は、以下のように使用することができ、簡単にするために、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間、第1のコンテンツセグメントが受信機に送信されていると仮定する。この場合、上記の第1の例の場合のように、受信機は、パラメータUI=0、LI=−D、UF=0、LF=−D、T=0で、第1のコンテンツセグメントの再生終了前に、第2のコンテンツセグメントD+R秒の要求を送信する。これにより、第2のサーバは、第1のサーバから送信されている第1のコンテンツセグメントのレートと結合されたときの総合レートが単一の送信ストリームのレートになるレートで、第2のコンテンツセグメントの送信を開始する。次いで、第1のコンテンツセグメントが受信機での再生をちょうど終了したとき、受信機は、第2のコンテンツセグメントのストリームの送信を停止するよう第2のサーバに信号で伝え、受信機への送信レートがすぐにゼロになる。次いで、約30秒のギャップが生じる。ギャップの最後に、受信機は、第2のコンテンツセグメントの再生をすぐに開始すると同時に、パラメータUI=D+R、LI=R、UF=D+R、LF=R、T=0で、第2のコンテンツについての第2のサーバへの送信開始要求を送信する。これによって、第2のサーバは、ギャップの直前にそれが終えたところから、第2のコンテンツの送信を続ける。全体的な効果は、スケジュールされた時間に第2のコンテンツをすぐに再生すること、そして同時に、2つのコンテンツセグメントの再生中、遷移中のすべての時点における受信機への結合された送信レートは、1つの符号化ストリームレートと同じであり、2つのコンテンツセグメントのいずれも再生されていないとき、送信レートはゼロである。図13は、この例である。
【0131】
当業者であれば認識されるように、上述した動的インターリービング方法の他の多くの使用および変形がある。
【0132】
<サブストリームベースの配信方法>
サブストリームベースの配信は、FEC符号化ストリームをとり、それを複数のサブストリームに分割するための方法であり、ここで各サブストリームには、例えば、ほぼ等しい量の各符号化ブロックが含まれるように分割される。例えば、符号化ストリームは、40のサブストリームに分割することができ、各サブストリームは、各ソースブロックの約5%から成り、したがって、この例では、FEC符号化を使用して各ソースブロックについて生成されたリペアデータの量は、当該ソースブロックのサイズにほぼ等しい。より一般的には、FEC符号化が各ソースブロックに適用され、次いで、サブストリームベースの配信が適用されるとき、各サブストリームに含まれる各ソースブロックの符号化の量がほぼ等しくなるように、各ソースブロックについての合計符号化データが複数のサブストリームに分割される。ここで、FEC符号化がシステマチックである場合、各ソースブロックの符号化データは、各ソースブロックの元のデータ+生成されたリペアデータを含むことがあり、FEC符号化がシステマチックでない場合、各ソースブロックの符号化データは、リペアデータを含むことがある。
【0133】
サブストリームベースの配信の主な概念のうちの1つは、いくつかの所望の目的を達成するために、潜在的に異なるパスに沿って、潜在的に異なるサーバを介して、ストリームの複数のサブストリームを送信することである。一例として、コンテンツストリームをサブストリームベースの配信システムに取り入れる、以下ヘッドエンドサーバ(HES:Hed-End Server)と呼ぶサーバがあり、HESが行うプロセスの一部は、コンテンツストリームのソースブロック構造を生成すること、ストリームのFEC符号化、符号化ストリームを複数のサブストリームに分割すること、次いで、該複数のサブストリームを、異なる複数のデータセンター内または個別の複数のネットワーク位置に分散され得る、以下分散サーバ(DS:Distributer Server)と呼ぶ他のサーバに送信することである。この一例は、図14で見ることができる。図14では、DS1430のそれぞれは、HES1410から符号化コンテンツストリーム1420の異なるセグメントを受信する。DSが実行するプロセスの一部には、コンテンツストリームのサブストリームが受信機へ向かって通過するときにキャッシュすること、受信機からの特定のコンテンツストリームのサブストリームの要求を受け付けること、サブストリームを、例えば、特定のサブストリームについての受信機の要求に基づいて、または受信機の申し込みに基づいて、受信機に送信することが含まれる。サブストリーミングの特別な場合は、それ以上分割されない元の符号化ストリームを含む。
【0134】
サブストリームベースの配信システムにおける受信機は、同じ開始位置で開始する同じコンテンツセグメントについてのサブストリームを要求し、受信することができ、ここで、該要求は、異なるサブストリームごとに異なるDSに送信することができ、この場合、同じ開始位置を有する同じ符号化ストリームのいくつかの異なるサブストリームを、異なるDSから同じ受信機に送信することができる。この一例は、図15で見ることができる。図15において、受信機1530は、様々なDS1510、1520にコンテンツストリームを要求する。この例では、DS1520のうちの1つは、受信機からの要求に応答せず、他のDS1510は、受信機にサブストリームを送信する。応答するDSがこれを達成するのに十分なデータを受信機に送信する場合、受信機は、FEC符号化を使用して、コンテンツストリームを完全に回復することが可能であり得る。
【0135】
一例として、元の1Mbpsのコンテンツストリームを、HESで取り入れることができ、HESは、コンテンツストリームが通過するとき、ソースブロック構造を形成し、元のストリームにソースデータがあるのと同じ量のリペアデータを追加し(100%リペア)、2Mbpsの符号化ストリームを100Kbpsの複数のサブストリームに分割し、結果として得られた20個のサブストリームを20個の異なるDSに送信する。ストリーム内の特定の位置から開始するコンテンツストリームを再生したい受信機は、20個のDSのうちの12個に要求を送信し、指定された開始位置で開始するコンテンツについてDSが有するサブストリームを要求することができる。これに応答して、全12個のDSは、指定された開始点から開始する、符号化ストリームについてそれらが有するサブストリームを受信機に同時に送信し、したがって、12個のDSのそれぞれは、合計レートが1.2Mbpsであるように、受信機に、100Kbpsのレートで送信する。
【0136】
前に説明したように、サブストリームベースの配信システムには、いくつかの利点があり、そのうちの一部または全部は、以下を含めて、本発明の実施形態で見ることができる。1)人気のあるものと無いものとを結合し、サーバに帯域幅容量およびストレージ容量を提供する自然な負荷バランシングの利点を有する、コンテンツの自然な負荷バランシング、2)パス障害の回復力、すなわち、1つのパスが低下し、コンテンツストリームがFEC復号を使用して依然として完全に埋め合わせることができるように、受信機が他のパスから受信している十分なデータが依然としてあること、3)DSクラッシュ、DSディスク障害などに対する頑強さ、4)複数のDSからデータを送信することは、単一サーバから送信する場合に比べて、総送信レートが受信機に維持され、受信機にバッファの欠乏が発生しない確率をより大きく提供する。これは特に、DSから受信機へのサブストリームの送信に、TCPまたはHTTPが使用される場合に該当するが、これは、UDPが、DSから受信機にサブストリームを送信するために使用される場合でさえも該当し、5)システム全体における単一障害点は、HESおよび受信機の入口点にあり、他にある必要はない。
【0137】
<動的インターリービング方法とサブストリームベースの配信方法との結合>
本明細書に記載した動的インターリービング方法およびサブストリームベースの配信方法は、結合してかなりの利点を得ることができる。すなわち、両方の方法のすべての利点は、結合されたソリューションに見られる。例えば、コンテンツストリームがシステムに取り入れられるとき、動的インターリービング方法を使用して、コンテンツストリームのソースブロック構造およびFEC符号化を、HESによって実行することができる。サブストリーム方法は、HESでFEC符号化ストリームの複数のサブストリームを生成するために使用することができ、これらのサブストリームは、次いで異なるDSに送信されて格納することができる。受信機がストリーム内の特定の位置からコンテンツストリームを受信することを望むとき、受信機は、適切な動的インターリービングパラメータを、サブストリームを受信機に送信するすべてのDSに送信することができ、当該DSは、これらのパラメータに従って、サブストリームを受信機に送信する。受信機は、ソースブロックのサブストリームからのパケットをひとまとめにして、再生するために、元のコンテンツストリームを再度作成することができる。動的インターリービング方法によって、予備バッファおよびインターリービング深さは、ストリーミング中に増加させることができ、バースト的パケット損失およびネットワークジッタに優れた保護を提供すると共に、受信機に迅速なチャネルザッピング時間を提供する。この例のソリューションにおけるDSは、FEC符号化を行う必要はなく、それにもかかわらず、ネットワークの異なる部分から分散パスを介してコンテンツストリームを受信機に配信することができ、したがって、配信におけるサーバの多様性およびパスの多様性を増加させ、それによって、サーバおよびネットワーク障害への信頼性および頑強性を増加させる。
【0138】
さらに、各ソースブロックの保護量は、複数のDSと受信機との間より、この例のHESと複数のDSとの間で、かなり高い可能性がある。例えば、20個のサブストリームが生成されて、HESから20個のDSに送信することができるが、元のコンテンツストリームを回復するのに10個のサブストリームしか必要ではないし(100%の保護量)、受信機は、20個のDSのうちの12個から例えば12個のサブストリームしか要求しない(100%の保護量)。100%の保護量は、すなわち、当該DSのうちの1つが故障して、受信機がサブストリームを受信する残りの11個のDSからすべてのパスを介して総合的に10%にも及ぶパケット損失があるとしても、依然として元のコンテンツストリームを回復することができる。
【0139】
上記で概説したソリューション例には、20個のDSのうちの12個を超えるDSのリストを有する受信機に適切な論理を組み込んでおけば、受信機がサブストリームを受信している12個のDSのうちの1つが故障したとき、受信機は、これを自動的に検出し、受信機が現在サブストリームを受信していない他のDSのうちの1つに、別のサブストリームを要求することができ、それによって、11個のサブストリームのバックアップを受信することから、異なる12個のDSからの12個のサブストリームを受信することへと、ストリームの信頼性を増すという追加の特性がある。
【0140】
動的インターリービング方法およびサブストリーム方法を結合するために必要な方法の変更は、比較的軽微である。例えば、動的インターリービング方法の送信時間を決定するために、符号化ブロック内に複数のデータ点を分配する方法を強化して、各DSが、符号化ブロック内のサブストリームごとに、それが有するデータを、符号化ストリームテープ内の符号化ブロックエリアにわたって一様に分配する方法を決定することができるようにする必要がある(図7参照)。データを一様に分配するという、DSによって行われる決定を、他のDSによる決定とは関係ない方法で行い、受信機に送信しているすべてのDSの符号化ブロック内のすべてのサブストリームからのデータの総分配が、符号化ストリームテープ内の符号化ブロックエリアにわたってまったく一様になるようにすることができる(図7参照)。
【0141】
それらを結合するのに必要な方法の変更の別の例として、各パケットで送信された情報を増大して、受信機がそれにサブストリームを送信するDSにストリーム内の特定の位置を指定するとき、すべてのDSが、同じコンテンツのサブストリームを受信機に送信する他のすべてのDSの解釈と一致する方法で、それらが受信機に送信するサブストリームの特定の位置を解釈することができるようにすることが有利である。当業者であれば認識されるように、これらおよび潜在的にいくつかの他の軽微の変更によって、インターリーブでのストリーミング方法およびサブストリームベースの配信方法を結合して、より大きい利益を得ることができる。
【0142】
本発明は、実施形態例を参照して説明してきたが、多数の変更が可能であることを当業者であれば認識され、こうした当業者の認識は、本開示を読むことによってもたらされる。例えば、本明細書に記載したプロセスは、ハードウェア構成要素、ソフトウェア構成要素、および/またはその組合せを使用して実装され得る。したがって、本発明は、実施形態例を参照して記載されているが、本発明は、以下の特許請求の範囲内に含まれるすべての変更および均等物をカバーするものとすることを理解されたい。
【優先権の主張】
【0001】
本出願は、2007年4月16日出願の「Dynamic Stream Interleaving and Sub-Stream Based Delivery」という名称の米国特許仮出願第60/912145号明細書の利益を主張する。本出願の内容は、すべての目的でその全体が参照により本明細書に組み込まれる。
【0002】
また、本開示は、すべての目的で、全部本書内で記載のように、参照により以下の同出願人による出願/特許を組み込む。
【0003】
Lubyによる米国特許第6,307,487号明細書(以下「Luby I」と呼ぶ)
Shokrollahiらによる米国特許第7,068,729号明細書(以下「Shokrollahi I」と呼ぶ)
Lubyらによる2006年6月9日出願の「Forward Error-Correcting (FEC) Coding and Streaming」という名称の米国特許出願第11/423,391号明細書(以下「Luby II」と呼ぶ)
Watsonらによる2007年2月13日出願の「Streaming and Buffering Using Variable FEC Overhead and Protection Periods」という名称の米国特許出願第11/674,625号明細書(以下「Watson」と呼ぶ)
【技術分野】
【0004】
本発明は、ストリーミング品質配信、コンテンツザッピング時間(content zapping time)、ストリームの拡張可能な分散配信、およびFEC符号化の使用を、あらゆる側面において向上させ、ストリーミングソリューションを向上させることに関する。ストリーミングは、オンデマンドのプレイリストコンテンツまたはライブプレゼンテーションの、一定のまたは可変のビットレートでの音声、映像、およびデータのストリーミングを含む。
【背景技術】
【0005】
インターネット、セルラーおよび無線ネットワーク、電力線ネットワーク、および他の多くのネットワークなど、パケットベースのネットワークを介して高品質の音声および映像が配信されることがますます一般的になるにつれて、ストリーミングメディア配信は、ますます重要になりつつある。配信されたストリーミングメディアの品質は、元のコンテンツの品質、元のコンテンツの符号化品質、映像を復号し表示する受信装置の能力、受信機で受信された信号の適時性および品質などを含めて、いくつかの要因に依存する。認められる良いストリーミングメディア経験を作り出すために、受信機で受信された信号のトランスポートおよび適時性は、特に重要である。良いトランスポートは、送信機から送信されたものに比べて、受信機で受信されたストリームの忠実度を提供し、一方、適時性は、そのコンテンツの最初の要求後、受信機がコンテンツの再生をどれだけ迅速に開始できるかを表す。
【0006】
最近では、伝送中、ストリーミングメディアの保護のために、順方向誤り訂正(FEC)符号の使用を考えることが一般的な方法になっている。3GPP、3GPP2およびDVBなどのグループによって標準化されたものなど、インターネットおよび無線ネットワークなどを例として含むパケットネットワークを介して送信されるとき、ソースストリームは、生成されたように、あるいは使用可能なように、パケットに入れられ、したがって、パケットは、ソースまたはコンテンツストリームを、生成された順または使用可能になる順に受信機に運ぶために使用される。
【0007】
これらのタイプのシナリオへのFEC符号の一般的な適用では、符号器は、リペアパケット(repair packet)の作成にFEC符号を使用し、リペアパケットは、次いで、ソースストリームを含む元のソースパケットに加えて送信される。リペアパケットは、ソースパケットの損失が起こると、失われたソースパケットに含まれるデータを回復するために、受信したリペアパケットを使用することができるという特性を有する。リペアパケットは、完全に紛失した、失われたソースパケットの内容を回復するために使用することができるが、リペアパケットは、完全に受信されたリペアパケット、または部分的に受信されたリペアパケットでさえ、部分的なパケット損失の発生から回復するために使用することもできる。したがって、全部または部分的に失われたソースパケットを回復するために、全部または部分的に受信されたリペアパケットを使用することができる。
【0008】
さらに他の例では、例えば、ビットの値が反転され得るなど、送信データに他のタイプの破損が起こる可能性があり、したがって、こうした破損を修正し、できるだけ正確なソースパケットの回復を提供するために、リペアパケットを使用することができる。他の例では、ソースストリームは、必ずしも個別のパケットで送信されるわけではなく、代わりに、例えば連続するビットストリームとして送信され得る。
【0009】
ソースストリームの保護を提供するために使用することができるFEC符号の例が数多くある。リードソロモン符号は、通信システムにおける誤りおよび消去訂正のためのよく知られている符号である。例えば、パケットデータネットワークを介した消去訂正の場合、リードソロモン符号のよく知られている効率的な実装は、L.Rizzoによる「Effective Erasure Codes for Reliable Computer Communication Protocols」、Computer Communication Review, 27(2):24-36 (April 1997)(以下「Rizzo」)およびBloemerらによる「An XOR-Based Erasure-Resilient Coding Scheme」、Technical Report TR-95-48, International Computer Science Institute, Berkeley, California (1995)(以下「XOR−Reed−Solomon」)他に記載されているように、CauchyまたはVandermonde行列を使用する。
【0010】
FEC符号の他の例には、例えばLDPC符号、Luby Iに記載されているものなどの連鎖反応符号(chain reaction code)、およびShokrollahi Iのマルチステージ連鎖反応符号(multi-stage chain reaction code)などがある。
【0011】
リードソロモン符号の変形のFEC復号プロセスの例は、RizzoおよびXOR−Reed−Solomonに記載されている。これらの例では、十分なソースおよびリペアデータパケットが受信された後で復号が適用される。復号プロセスは、計算量が多い可能性があり、使用可能なCPUリソースに応じて、ブロック内のメディアに要する時間の長さに対して、終了するのにかなりの時間がかかり得る。受信機は、メディアストリームの受信の開始とメディアの再生との間に要する遅延を計算するとき、復号に必要なこの時間長を考慮に入れる必要がある。復号によるこの遅延は、ユーザによって、特定のメディアストリームの要求と再生の開始との間の遅延として知覚される。したがって、この遅延を最低限に抑えることが望ましい。
【0012】
多くの用途では、パケットは、FECプロセスが適用されるシンボルにさらに細分される。パケットは、1つまたは複数のシンボル(または1つ未満のシンボルであるが、通常、シンボルはパケットにわたって分割されない)を含み得る。シンボルは、任意のサイズを有し得るが、シンボルのサイズは、多くてもパケットのサイズに等しいことが多い。ソースシンボルとは、送信されるデータを符号化するシンボルである。リペアシンボルとは、ソースシンボルに加えて、ソースシンボルから直接または間接的に生成されるシンボルである(すなわち、ソースシンボルのすべてが使用可能であり、リペアシンボルが使用不可である場合、送信されるデータは、完全に回復することができる)。
【0013】
符号化操作が、あるブロック内のシンボルに依存し、そのブロックにないシンボルとは無関係であり得るという点で、一部のFEC符号は、ブロックベースである。ブロックベースの符号化では、FEC符号器は、あるブロック内のソースシンボルからそのブロックのリペアシンボルを生成することができ、次いで次のブロックに進み、符号化されている現在のブロックのもの以外のソースシンボルを参照する必要はない。伝送では、ソースシンボルを備えるソースブロックは、符号化されたシンボル(いくつかのソースシンボル、いくつかのリペアシンボル、またはその両方とすることができる)を含む符号化されたブロックによって表すことができる。リペアシンボルの存在と共に、すべてのソースシンボルがすべての符号化されたブロックで必要というわけではない。
【0014】
一部のFEC符号、特にリードソロモン符号では、符号化および復号の時間は、ソースブロック当たりの符号化シンボルの数が増えるにつれて増加して非現実的になる。したがって、実際には、特に、リードソロモン符号化または復号プロセスがカスタムハードウェアによって実行される一般的な場合には、ソースブロック当たり生成することができる符号化シンボルの総数に、実用上の上限(255がいくつかの用途でのおおよその実用上の制限)があることが多い。例えば、パケット損失からストリームを保護するためのDVB−H標準の一部として含まれるリードソロモン符号を使用するMPE−FECプロセスは、ソースブロック当たり合計255個のリードソロモン符号化シンボルに制限されたセル方式の電話内の専用ハードウェアに実装される。シンボルを別々のパケットペイロードに入れる必要があることが多いため、これによって、符号化されるソースブロックの最大長に実用上の上限が設けられる。例えば、パケットペイロードが1024バイト以下に制限され、各パケットが1つの符号化シンボルを運ぶ場合、符号化ソースブロックは、多くて255KB(キロバイト)とすることができ、これは、当然、ソースブロック自体のサイズの上限でもある。
【0015】
ソースストリーミングレートについていけるほど十分速くソースブロックを復号することができること、FEC復号によってもたらされる復号待ち時間を最低限に抑えることができること、FEC復号中の任意の時点で受信装置上の使用可能なほんのわずかなCPUのみを使用することができることなど、他の関心事が問題である。
【0016】
他の問題は、ストリームの再生を開始する機能を含む。例えば、パーソナルコンピュータを使用して受信したオーディオおよびビデオストリームを復号及びレンダリングし、コンピュータ画面にビデオを表示し、内蔵スピーカを介して音声を再生したり、または他の例として、セットトップボックスを使用して受信した音声および映像ストリームを復号及びレンダリングし、テレビ表示装置に映像を表示し、ステレオシステムを介して音声を再生したり、などである。第1の問題は、ストリームとして配信された新しいコンテンツをユーザが見ることを決めたときと、コンテンツが再生開始したときとの間の遅延を最低限に抑えることであり、以下「コンテンツザッピング時間」と呼ぶ。コンテンツザッピングの一例は、ユーザが、第1のストリームを介して配信された第1のコンテンツを見ており、次いでユーザが、第2のストリームを介して配信された第2のコンテンツを見ることを決め、第2のコンテンツを見始めるためにアクションを開始するときである。第2のストリームは、第1のストリームと同じかまたは異なるサーバセットから送信され得る。コンテンツザッピングの別の例は、ユーザがあるWebサイトを見ており、ブラウザウィンドウ内のリンクをクリックすることによって、第1のストリームを介して配信された第1のコンテンツを見始めることを決めたときである。コンテンツザッピングの別の例は、ユーザが、同じコンテンツストリーム内で順方向または逆方向のいずれかの新しい位置に移動して表示を開始したいときである。使用可能な様々なコンテンツを検索して試写する際に高品質の高速コンテンツサーフィン経験をユーザにとって可能にするためには、コンテンツザッピング時間を最低限に抑えることが、映像を見る上で重要である。高品質の高速コンテンツサーフィン経験は、ユーザが消費するコンテンツの量と正の相関を有することが多い。
【0017】
コンテンツザッピング時間の主な誘因は、基礎を成すFEC構造である場合がしばしばある。別の問題は、あるコンテンツの再生の終わりと、別のコンテンツの再生の開始との間の時間のギャップを最低限に抑えることであり、ほとんどまたはまったく停止することなく連続することが好ましい。例えば、あるコンテンツが放送番組であり、次のコンテンツが広告である場合、または逆の場合、それらの再生の間の長いギャップ(以下「コンテンツ遷移時間(content transition time)」と呼ぶ)は、望ましくない。
【0018】
明らかに、コンテンツ遷移時間を最低限に抑えると共に、遷移周辺の期間中の受信機へのストリームのレートを最低限に抑えることが望ましい。
【0019】
別の問題は、パケットをドロップする可能性があり、パケットの配信にかかる時間量の広範な変動をもたらす可能性がある、インターネットなどのベストエフォート型の配信ネットワークを使用するとき、配信されたストリームの品質を最大にすると共に、帯域幅などのネットワークリソースの使用量を最低限に抑えることである。
【0020】
別の問題は、受信機に配信されるストリームの品質に悪影響を与えること無く、システムの構成要素が故障することが可能である、頑強で拡張可能なストリーミング配信ソリューションを提供することである。
【0021】
インターリービングは、断続的なパケット損失など、チャネルの不完全性に対する優れた保護を提供するために使用することができる。例えば、パケット損失は、ある程度バースト的であることが多く、したがって、より長い期間にわたってソースブロックを分配することが有利となり得る。一部のFEC符号では、大きいソースブロックの本来の使用は、実用的であるが、リードソロモン符号など、他のFEC符号では、使用することができるソースブロックのサイズの実用上の制限があることが多い。したがって、より長い時間にわたってソースブロックに関連付けられているパケットの伝送を分配するために、異なるソースブロックについての符号化シンボルを含むパケットの送信をインターリーブすることが有利となり得る。
【0022】
以前に、上述した問題の一部に対処する方法が紹介されている。例えば、いくつかの新規のFECソースブロックの形成およびインターリービングの方法がLuby IIに記載されている。いくつかのインターリービング方法は、インターリービングの量が全ストリームについて固定されているという意味で、静的である。したがって、時として、こうした方法によって提供される保護の品質に影響を与えるインターリービングの量と、コンテンツザッピング時間との間のトレードオフがあり、すなわち、より多い量のインターリービングは、より良いストリーム保護を提供するが、より長いコンテンツザッピング時間を提供し、このトレードオフは、受信機へのストリーミングの全継続時間の間、固定された方法で決定される。
【0023】
例えば、Watsonに記載されている一部の方法など、ストリーム送信プロセスの大部分の間、短いコンテンツザッピング時間およびより多い量のインターリービングを提供する方法がいくつかある。Watsonに記載されている方法の一部は、短い初期ソースブロックから徐々により長いソースブロックに動的に遷移し、遷移期間中、コンテンツストリーミングレートよりわずかに速いレートで送信する。こうした方法は、短いコンテンツザッピング時間を提供すると共に、ストリームが進むにつれて提供される保護の品質の強化を可能にする。例えば、Watsonに記載されている方法の一部を適用する1つの方法は、ソースブロック構造を決定し、ストリームが送信されている間にFEC符号化を実行することであり、すなわち、短−長ソースブロック構造は、それらがアクセスされる各点で、個々の受信機に送信されながら決定され、FEC符号化され、したがって、ソースブロック構造の形成およびFEC符号化は、受信機ごとに一意に実行され、各受信機に送信されるストリームは、一意である。しかし、時として、ストリームの配信に関係なく、例えば、受信機に関係なく、コンテンツが表示されるときおよびコンテンツストリームにおいて表示を開始する場所に関係なく、およびどの順でストリーム内のデータが配信されるかに関係なく決定されるコンテンツストリームのソースブロック構造を有することが望ましい。これは、コンテンツストリームが複数のサーバから単一の受信機に配信される場合、特に重要である。
【0024】
したがって、改良されたプロセスおよび装置を有することが望まれる。
【発明の概要】
【0025】
本発明の態様による符号器、復号器、および通信システムの実施形態は、複数のストリームを動的にインターリーブする方法を提供し、該方法は、任意のソースブロック構造とは関係なく、ストリームが送信されるとき、より多くの量のインターリービングを動的に導入するための方法を含む。これらの方法のいくつかの利点は、チャネルの損失または誤りを、インターリービングが導入されなかった場合よりかなり長い期間にわたって元のストリーム内で分配し、FEC符号化と共に使用するとき、パケット損失またはパケット破損に対する優れた保護を提供し、ネットワークジッタに対する優れた保護を提供し、コンテンツザッピング時間およびコンテンツ遷移時間を最小値に低減することができることである。これらの方法のいくつかの追加の利点は、あるコンテンツのストリーミングから別のコンテンツのストリーミングへの遷移を含めて、送信ストリーミングレートを平滑化すること、および最小のコンテンツ遷移時間を含む。
【0026】
本発明の態様による符号器、復号器、および通信システムの実施形態は、データのストリームを複数のサブストリームに分割し、ネットワークを介して、異なるパスに沿って、該複数のサブストリームを受信機に配信し、受信機で、潜在的に異なる複数のサーバから送信された異なる複数のサブストリームを同時に受信することを提供することもできる。FEC符号化と共に使用されるとき、これらの方法は、潜在的に異なる複数のサーバから各ソースブロックの符号化の部分を配信することを含む。これらの方法のいくつかの利点は、改良されたコンテンツザッピング時間、サーバ障害およびパス障害に対する頑強性、ディスク障害に対する頑強性、パケットの損失および/または破損に対する改良された頑強性、ストリーミング配信ソリューション全体の改良された拡張可能性、および複数のサーバ間での改良されたコンテンツの格納とストリーミングレートとの均衡化を含む。
【0027】
本発明の態様による符号器、復号器、および通信システムの実施形態は、動的インターリーブとサブストリームの配信との結合も提供し得る。例えば、動的インターリーブを使用して、ソースブロック構造およびFEC符号化を決定することができ、符号化されたストリームを、複数のサブストリームに分割することができ、動的インターリーブを使用して、サブストリームの組合せを受信機に配信して、最低コンテンツザッピング時間を提供する頑強なストリーミング配信システムを提供することができる。これらの結合方法の利点は、動的インターリーブおよびサブストリーム配信の利点の組合せである。
【0028】
以下の詳細な説明を添付の図面と併せ読めば、本発明の本質および利点をよりよく理解できよう。
【図面の簡単な説明】
【0029】
【図1】本発明の一実施形態による通信システムを示すブロック図。
【図2】コンテンツザッピング時間を示す図。
【図3A】コンテンツザッピング時間の構成要素を例示する図。
【図3B】復号中のFECについてのCPU使用率を例示する図。
【図4】コンテンツストリームのソースブロック構造およびソースブロックごとの対応するコンテンツストリームレートの表現を例示する図。
【図5】図4のコンテンツストリームに対応する符号化ブロック構造を例示する図。
【図6】基本的な送信器の方法に対応する受信機およびコンテンツザッピング時間を例示する図。
【図7】ストリーム送信のテープ方法を例示する図。
【図8】ストリーム送信のテープ方法による静的インターリービングを例示する図。
【図9】静的インターリービングの送信器の方法に対応する受信機およびコンテンツザッピング時間を例示する図。
【図10】新しいストリームが受信機に送信されるときの動的インターリービングの送信機の方法を例示する図。
【図11】動的インターリービングの送信機の方法での、受信機によって経験されるコンテンツザッピング時間および長期保護期間を例示する図。
【図12】動的インターリービングの送信機の方法での、2つの連続するコンテンツセグメント間のコンテンツ遷移を例示する図。
【図13】動的インターリービングの送信機の方法での、2つの非連続のコンテンツセグメント間のコンテンツ遷移を例示する図。
【図14】ヘッドエンドサーバからサブストリームベースの配信方法で使用される分散された様々なサーバに分散される符号化コンテンツストリームを例示する図。
【図15】サブストリームベースの配信方法において、受信機が、分散された様々なサーバにコンテンツストリームを要求し、こうしたサーバの一部から符号化コンテンツストリームを受信することを例示する図。
【発明を実施するための形態】
【0030】
実施形態は、伝送がネットワークなどを介する場合、任意のソースブロック構造とは関係なく、ストリームが送信されるとき、より多くの量のインターリービングを動的に導入する方法を含めて、ストリームを動的にインターリーブする新規の方法を提示する。また、実施形態は、データのストリームを複数のサブストリームに分割し、ネットワークを介して、異なるパスに沿って、該複数のサブストリームを受信機に配信し、受信機で、潜在的に異なる複数のサーバから送信された異なる複数のサブストリームを同時に受信する新規の方法も提示する。FEC符号化と共に使用されるとき、これらの方法は、潜在的に異なる複数のサーバから各ソースブロックの符号化の部分を配信することを含む。また、実施形態は、動的インターリービングをサブストリームの配信と結合する新規の方法も提示する。
【0031】
以下、本明細書における説明を簡単にするために、データを運ぶネットワークは、パケットベースと仮定し、本明細書に記載されたプロセスおよび方法を、連続するビットストリームネットワークなど、他のタイプの送信ネットワークに適用できる方法を当業者が容易に理解できることを認識されたい。以下、本明細書における説明を簡単にするために、FEC符号は、失われたパケットまたはパケット内の失われた部分的なデータに対する保護を提供すると仮定し、本明細書に記載されたプロセスおよび方法を、ビットフリップなど、他のタイプのデータ送信の破損に適用できる方法を当業者が容易に理解できることを認識されたい。この説明において、符号化すべきデータ(ソースデータ)は、(単一ビットまでの)任意の長さのものであるが、データの異なる部分について異なる長さのものとすることができる等しい長さの複数の「シンボル」に分割されていると仮定する。
【0032】
シンボルは、パケットでデータネットワークを介して運ぶことができ、各パケットには、整数のシンボルが明示的に入れられ、または暗に含まれる。いくつかの場合、ソースパケットは、シンボル長の倍数ではないことが可能であり、この場合、パケット内の最後のシンボルは、切り捨てることができる。この場合、FEC符号化の目的で、この最後のシンボルは、これらのビットがパケットで運ばれない場合でも、依然として、受信機が切り捨てられた最後のこのシンボルを充填して完全なシンボルとすることができるように、例えば、ゼロ値のビットなど、固定されたパターンのビットで埋められるものと暗黙的に見なされる。他の実施形態において、固定されたパターンのビットは、パケットに入れることができ、それによって、シンボルを、パケットのものと等しい長さまで効果的に埋めることができる。シンボルのサイズは、しばしばビットで測定することができ、この場合、シンボルは、Mビットのサイズを有し、シンボルは、2~M(2のM乗)個のシンボルのアルファベットから選択される。非2進数も企図されるが、2進数は、より一般的に使用されるので、好ましい。
【0033】
ストリーミングとの使用を考慮されるFEC符号は、一般に、システマチックFEC符号であり、すなわち、ソースブロックのソースシンボルがソースブロックの符号化の一部として含まれ、したがって、ソースシンボルが送信される。当業者であれば認識するように、本明細書に記載された方法およびプロセスは、システマチックではないFEC符号にも十分等しく適用される。システマチックFEC符号器は、ソースシンボルのソースブロックから、いくつかのリペアシンボルを生成し、少なくともいくつかのソースシンボルとリペアシンボルとの組合せは、ソースブロックを表す、チャネルを介して送信される符号化シンボルである。いくつかのFEC符号は、例えば「情報付加符号(information additive code)」や「ファウンテンコード(fountain code)」など、必要なだけのリペアシンボルを効率的に生成するのに有用であり、これらの符号の例には、「連鎖反応符号」および「マルチステージ連鎖反応符号」などがある。リードソロモン符号など他のFEC符号は、実際に、ソースブロックごとに制限された数のリペアシンボルを生成することしかできない。
【0034】
シンボルを運ぶための他の多くの方法があり、以下の説明は、簡単にするために、パケットの方法を使用するが、これは、限定的または包括的であるものではない。以下の説明の文脈で、「パケット」という用語は、単一単位のデータとして何が送信されるかを文字通り意味することに制約されるものではない。代わりに、単一単位のデータとして送信され得る、またはされ得ない、シンボルおよび部分的シンボルの論理的なグループ分けを定義する、より広い概念を含むものとする。
【0035】
また、例えば、以下に記載する方法が等しく適用される、伝送においてその値を変えるシンボルや、他の方法で破損されるシンボルなど、シンボルの損失以外のデータの破損の形態もある。したがって、以下の記載は、しばしばシンボルの損失について説明しているが、方法は、他のタイプの破損、およびFEC誤り訂正符号など、FEC消去符号を超えた他のタイプのFEC符号にも十分等しく適用される。
【0036】
<FEC符号例>
図1は、連鎖反応FEC符号化を使用する通信システム100のブロック図である。通信システム100には、入力ファイル101、または入力ストリーム105が入力シンボルジェネレータ110に提供される。入力シンボルジェネレータ110は、入力ファイルまたはストリームから1つまたは複数の入力シンボル系列(IS(0),IS(1),IS(2),・・・)を生成し、各入力シンボルは、値および位置を有する(図1に括弧内の数字として示されている)。入力シンボルの可能な値、すなわちそのアルファベットは、各入力シンボルが入力ファイルのM個分のビットを符号化するように、一般に、200万個のシンボルのアルファベットである。Mの値は、一般に、通信システム100の使用によって決定されるが、汎用システムは、Mを使用によって変えることができるように、入力シンボルジェネレータ110のためにシンボルサイズの入力を含み得る。入力シンボルジェネレータ110の出力は、符号器115に提供される。
【0037】
キージェネレータ120は、符号器115によって生成される出力シンボルごとにキーを生成する。各キーは、Luby IまたはShokrollahi Iに記載されている方法、またはキーがこれによって生成されたか、他のキージェネレータによって生成されたかにかかわらず、同じ入力ファイルまたはストリーム内のデータのブロックのために生成されたキーの大半が一意であることを保証する任意の同等の方法のうちの1つに従って生成することができる。例えば、キージェネレータ120は、カウンタ125の出力、一意のストリーム識別子130、および/またはランダムジェネレータ135の出力の組合せを使用して、各キーを生成することができる。キージェネレータ120の出力は、符号器115に提供される。他の例では、例えば、一部のストリーミングの用途では、キーの組を固定し、ストリーム内のデータのブロックごとに、再度、再利用することができる。一般的な実施形態では、生成することができるキーの数は、入力ファイルまたはストリームのサイズや他の特徴ではなく、キージェネレータの解像度によって指示される。例えば、入力がしばしば1000シンボル程度以下であると予想される場合、キーの解像度は、32ビットとすることができ、それによって、最高40億個の一意のキーが可能になる。これらの相対数の1つの結果は、キーに従って符号化する符号器は、4000個のシンボルの入力について、40億個の一意の出力シンボルを生成することができ得ることである。実際問題として、ほとんどの通信システムが、シンボルの0.999999部を失うことはないため、約40億個の出力シンボルを生成する必要はなく、したがって、可能なキーの数は、事実上無制限として扱うことができ、繰り返す必要がなく、キーの2つの独立した選択が同じキーを掴む可能性は、無視できるほど小さい。しかし、それが何らかの理由のためにそうである場合、キーを使用するプロセスがまるでキーの無限の提供があるかのように振る舞うことができるように、キージェネレータの解像度を増やすことができる。
【0038】
キージェネレータ120によって提供された各キーIから、符号器115は、入力シンボルジェネレータによって提供される入力シンボルから、値B(I)の出力シンボルを生成する。
【0039】
各出力シンボルの値は、そのキーと、本明細書において出力シンボルの「関連入力シンボル」または単にその「関連」と呼ぶ1つまたは複数の入力シンボルの何らかの関数とに基づいて生成される。しかし常にではないが、一般に、Mは、入力シンボルおよび出力シンボルについて同じであり、すなわち、これらはいずれも、同じビット数分符号化する。いくつかの実施形態では、関連を選択するために、入力シンボル数Kが符号器によって使用される。例えば、入力がストリームであり、Kがストリームにおける各ブロック間で変わり得る場合など、Kが前もってわからない場合、Kは、単に推定値とすることができる。値Kは、入力シンボルにストレージを割り振るために、符号器115によって使用することもできる。
【0040】
符号器115は、出力シンボルを送信モジュール140に提供し、キージェネレータ120は、こうした各出力シンボルのキーを送信モジュール140に提供する。送信モジュール140は、出力シンボルを送信し、使用されるキーイング方法に応じて、送信モジュール140は、送信された出力シンボルのキーについての何らかのデータを、チャネル145を介して受信モジュール150に送信することもできる。チャネル145は、消去チャネルと仮定されるが、これは、通信システム100の適切な操作のための必要条件ではない。送信モジュール140が出力シンボルおよびそのキーについての任意の必要なデータをチャネル145に送信するよう構成され、受信モジュール150がシンボルおよびそのキーについての潜在的な何らかのデータをチャネル145から受信するように構成されている限り、モジュール140、145および150は、任意の適したハードウェア構成要素、ソフトウェア構成要素、物理媒体、またはその任意の組合せとすることができる。Kの値は、関連を決定するために使用される場合、チャネル145を介して送信することができ、または、符号器115および復号器155の合意によって前もって設定することができる。
【0041】
チャネル145は、テレビ送信機からテレビ受信機へのインターネットまたはブロードキャストリンクを介したパス、またはある地点から別の地点への電話接続など、リアルタイムチャネルとすることができ、または、チャネル145は、CD−ROM、ディスクドライブ、Webサイトなどのストレージチャネルとすることができる。チャネル145は、ある人物が入力ファイルを電話回線を介してパーソナルコンピュータからインターネットサービスプロバイダ(ISP)に送信し、入力ファイルがWebサーバに格納され、その後インターネットを介して受信者に送信されるときに形成されるチャネルなど、リアルタイムチャネルおよびストレージチャネルの組合せとすることさえできる。
【0042】
チャネル145がパケットネットワークを備える場合、通信システム100は、任意の2つ以上のパケットの相対的順序がチャネル145を介して送信中に保持されると仮定することができない場合がある。したがって、出力シンボルのキーは、上述したキーイング方式のうちの1つまたは複数を使用して決定され、必ずしも出力シンボルが受信モジュール150を出る順序によって決定されるわけではない。
【0043】
受信モジュール150は、出力シンボルを復号器155に提供し、これらの出力シンボルのキーについて受信モジュール150が受信する任意のデータは、キーリジェネレータ160に提供される。キーリジェネレータ160は、受信された出力シンボルのキーを再度生成し、これらのキーを復号器155に提供する。復号器155は、対応する出力シンボルと共に、キーリジェネレータ160によって提供されるキーを使用して、入力シンボルを回復する(この場合も、IS(0),IS(1),IS(2),・・・)。復号器155は、回復した入力シンボルを入力ファイルリアセンブラ165に提供し、これは、入力ファイル101のコピー170または入力ストリーム105のコピー175を生成する。
【0044】
メディアストリーミングの用途
メディアストリーミングの用途で使用するとき、ソースメディアストリームを形成するソースパケットは、時として、ソースブロックと呼ばれるグループに集められる。例えば、ソースブロックは、一定の時間長に及ぶソースパケット群とすることができ、例えば、リードソロモン消去符号は、これらのソースブロックに別々に適用されて、ソースブロックの元のソースパケットと共に、受信機に送信されるリペアパケットを生成することができる。
【0045】
送信機では、ソースパケットが到着するにつれて、ソースストリームをソースブロックに連続的に分割することができ、ソースブロックごとにリペアパケットが生成され、送信される。時として、特に、ライブまたは対話型のストリーミングの用途の場合、FEC符号の使用によって追加された合計エンドツーエンド遅延を最低限に抑えることが好ましく、したがって、FECソリューションの設計全体を、送信される前にソースパケットの遅延が送信機でできるだけ小さくなるようにし、1つのソースブロックに対しすべてのソースパケットおよびリペアパケットができるだけ小さい合計遅延で送信されるようにすると好ましい場合もある。また、FEC符号化ストリームのレートができるだけスムーズであることが好ましい。すなわち、FEC符号化ストリームレートにある変動ができるだけ小さいか、または少なくとも、元のソースストリームにすでに存在する任意の変動の拡大がないことが好ましい。というのは、これによって、FEC符号化ストリームの帯域幅の使用量がより予測可能になり、ネットワークおよび場合によっては競合する他のストリームへの影響が最低限に抑えられるからである。また、あるソースブロックについて複数のパケットで送信されたデータが、そのソースブロックについて複数のパケットが送信される期間にわたってできるだけ一様に分配されると好ましい。というのは、これは、バースト損失に対して最適な保護を提供するからである。また、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えるような方法でソースブロックが構築されることも好ましい。また、受信機でのロジックができるだけ簡単であることも好ましい。
【0046】
受信機で、パケットが失われた、または誤りを含んで(例えば、CRC検査を使用して検出し、破棄することができる)受信された場合、十分なリペアパケットが受信されていると仮定して、リペアパケットを使用して、失われたソースパケットを回復することができる。
【0047】
いくつかの用途では、パケットは、FECプロセスが適用される複数のシンボルにさらに細分される。いくつかのFEC符号、特にリードソロモン符号では、符号化および復号の時間は、ソースブロック当たりの符号化シンボルの数が増えるにつれて増加して非現実的になり、ソースブロック当たり生成することができる符号化シンボルの総数に上限があることが多い。シンボルは、別々のパケットペイロードに入れられるため、これによって、ソースブロックの符号化の最大長に実用上の上限が設けられ、また、当然、ソースブロック自体のサイズにも上限が設けられる。
【0048】
いくつかの用途では、長い期間にわたって保護が提供されるとき、またはメディアストリーミングレートが高いとき、最大ソースブロックサイズを超えるデータに対する保護を提供することが有利となり得る。これらの場合、最大ソースブロックサイズより短いソースブロックを使用し、次いで、異なるソースブロックからのソースパケットをインターリーブすることは、送信される個々のソースブロックからの複数のソースパケットがより長い期間にわたって分配されるソリューションを提供する。他の用途では、短いコンテンツザッピング時間が望ましく、ソースブロック構造がインターリービング方法とは関係なく決定される場合、コンテンツが受信機によってアクセスされたときは、最初に、より短いソースブロックを使用して、それらを順次的に送信し、次いでコンテンツストリーミングが続くにつれて、ソースブロックの送信をより長い時間間隔にわたって分配するためにインターリービング量を増やして、バースト的損失に対する保護のレベルを増やすことが望ましい。
【0049】
他の問題は、例えばソースストリーミングレートについていけるほど十分速くソースブロックを復号し、FEC復号によってもたらされる復号待ち時間を最低限に抑え、FEC復号中の任意の時点で受信装置上の使用可能なCPUのわずかな部分のみを使用することができることである。したがって、各ソースブロックのFEC復号を時間にわたってできるだけ等しく分配することができるようにし、FEC復号待ち時間を最低限に抑えるソースブロックインターリービングを使用することが望ましい。
【0050】
本明細書に記載された様々な実施形態は、これらの利点のうちの1つまたは複数を提供する。
【0051】
<ストリーミングおよびFEC符号>
ソースストリームのFEC保護を提供する目的で、ソースストリームは、1つまたは複数の論理的ストリームの組合せとすることができ、その例には、音声RTPストリームと映像RTPストリームとの組合せ、MIKEYストリームとRTPストリームとの組合せ、2つ以上の映像ストリームの組合せ、および制御RTCPトラフィックとRTPストリームとの組合せなどがある。ソースストリームが、例えばソースビットストリーム、ソースシンボルストリーム、またはソースパケットストリームのフォーマットで送信機に到着すると、送信機は、該ストリームを複数のソースブロックにバッファリングし、該複数のソースブロックからリペアストリームを生成することができる。送信機は、ソースストリームおよびリペアストリームをスケジューリングし、例えば、パケットネットワークを介して送信されるべきパケットで送信することができる。FEC符号化ストリームは、結合されたソースおよびリペアストリームである。FEC受信機は、例えば、損失またはビットフリップによって破損された可能性があるFEC符号化ストリームを受信する。FEC受信機は、ソースストリームの元のソースブロックを再構築しようと試み、元のソースストリームをスケジューリングし、受信機で使用できるようにする。
【0052】
多くの用途の場合、ソースブロック構造は、例えば、GOP構造および/またはH.264AVC映像ストリームのフレーム構造など、基礎を成すストリームの構造と共に決定される。これらの用途のいくつかでは、ソースブロック構造は、パケットのストリーム送信順の前に、および/またはパケットのストリーム送信順とは関係なく決定され、この場合、パケットのストリーム送信順は、受信機が、ストリームを受信するために、いつどこでストリームにアクセスするかに依存し得る。こうした用途では、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えることができるようにするために、各ソースブロックがストリームからの連続する1組のソースパケットを備えるように、ソースブロック構造が決定されることが好ましい。
【0053】
いくつかの用途では、ソースブロック構造の形成およびストリームのFEC符号化は、ストリームの送信前に行われることが好ましい。この1つの理由は、ストリームが多くの受信機に送信される可能性があり、したがって、ソースブロック構造の形成およびFEC符号化がすべての受信機について1回行われるからであり、これは、拡張性の利益をいくつか提供する。
【0054】
ストリーミングの用途では、ソースストリームと、通常最適化することが重要ないくつかの主要メトリクスを保護するためのFEC符号の使用方法の設計への入力であるいくつかの主要パラメータがある。
【0055】
ソースブロック構造の設計における1つの可能な主要入力パラメータは、ソースブロック継続時間である。あるソースブロックのソースブロック継続時間は、ソースブロックが順次、すなわち、インターリーブされずに送信され、通常の速度で、すなわち、本質的に通常の再生速度で送信される場合、そのソースブロックから生成されるシンボルが送信されることになる継続時間として定義することができる。あるいは、ソースブロック継続時間は、ソースブロックによって表される映像の再生時間になるように定義することができる。いくつかの場合、これら2つの定義は、一致するが、一致しない場合もある。しかし、簡単にするために、本明細書における説明では、どの定義を意味するかを指定することなく、2つの定義が一致すると簡単に仮定して、ソースブロック継続時間を使用する。2つの定義が一致しない場合でさえ、またソースブロックがその再生レートよりかなり速く送信され得る一部の場合でさえ、本明細書に記載した方法およびプロセスがソースブロック継続時間のいずれかの定義に関することを、当業者であれば認識されよう。さらに、例えば、ソースブロック内のシンボル数、およびソースブロックのシンボルサイズを指定することによって、ソースブロックのサイズまたは再生時間を指定する他の方法があることを、当業者であれば認識されよう。
【0056】
ソースブロック送信が、いくつかのソースブロックからの複数のパケットの送信と他のいくつかのソースブロックからの複数のパケットの送信をインターリーブするかどうかにかかわらず、ソースブロックの保護期間はソースブロックが送信される期間である。ソースブロックインターリービングが使用されない場合、保護期間は、一般に、ソースブロック継続時間に等しいが、保護期間は、インターリービングが使用されるときのソースブロック継続時間より長く、時として、かなり長い可能性があることに留意されたい。
【0057】
ソースブロックの保護量は、該ソースブロック内のソースシンボルの数の分数または割合として表される、該ソースブロックで送信されるFECリペアシンボルの数である。例えば、保護量が20%であり、ソースブロック内に10,000個のソースシンボルがある場合、該ソースブロックから生成されたリペアシンボルは2,000個ある。保護量は、相対的な概念であり、すなわち、同じソースブロックの保護量は、ソースブロックがどこから送信されるか、およびソースブロックがどこに送信されるかによって変わり得る。例えば、ソースブロックは、保護量50%で第1のサーバから別のサーバに送信される可能性があり、一方で、同じソースブロックは、保護量10%で第2のサーバから受信機に送信される可能性がある。
【0058】
ソースブロック継続時間およびソースブロック当たりの保護量は、ソースブロックによって変わり得る。例えば、ソースブロックが、あるソースストリームのいくつかのソースパケット間にまたがらないことが好ましいとき、例えば、第1のパケットがMPEG2ビデオストリームにおけるGroup of Pictures(GOP)の最後のパケットであり、第2の連続するパケットが次のGOPの最初のパケットであるとき、ソースブロックは、第1のパケットの後に終了し、新しいソースブロックが第2のパケットで開始することがある。これによって、FEC符号化ブロックをビデオ符号化ブロックに揃えることができ、これは、受信機でのビデオバッファリングとFECバッファリングとの組合せを最低限に抑える可能性のために、受信機待ち時間またはチャネルザッピング時間を最低限に抑えることができるという利点を含めて、多くの利点があり得る。他の用途では、様々な理由のために、連続する各ソースブロックについて、同じソースブロック継続時間および/またはソースブロックサイズを常に維持することが有利であり得る。以下の説明の一部では、簡単にするために、ソースブロック継続時間および保護量は、その後の各ソースブロックについて同じと仮定される。当業者には、本開示を読んだ後、これは、限定的ではないことが明らかであるはずである。というのは、本開示を読むと、保護量またはソースブロック継続時間のいずれか、またはその両方がソースブロックによって変わるとき、およびソースブロックサイズが変わるとき、本明細書に記載されたプロセスおよび方法をどのように適用するかも容易に決定することができるからである。
【0059】
以降の説明の一部を簡単にするために、ソースシンボルが受信される第1のソースブロックにおいて、ソースシンボル損失がなく、その後の各ソースブロックにおいて、符号化シンボルの損失が、多くてもFEC復号が成功することを可能にする最大値であることを前提として、時として、元のストリームの複数のソースシンボルが、安定したレートで、ソースブロック形成およびFEC符号化を行うための送信機に到着し、いったんFEC受信機が、まず受信機でソースシンボルを使用できるようにすると、その後のソースシンボルは、FEC受信機によって、同じ安定したレートで使用可能になると仮定される。この簡素化の仮定は、引き続き説明するプロセスおよび方法の動作または設計に固有ではなく、決してこれらのプロセスをこの仮定に制限するものではなく、単に、プロセスおよび方法の特性の説明の一部を簡単にするためのツールとして導入される。例えば、様々なレートストリームでは、対応する条件は、ソースシンボルが、送信機に到着するのと同じレート、またはそれに近いレートで、FEC受信機によって使用可能になることである。いくつかの用途では、コンテンツザッピング時間を最低限に抑えるために、受信機で復号されたソースシンボルをできるだけ早くビデオプレーヤに配信することが好ましく、こうした場合、ソースシンボルは、複数のソースブロックのバーストで配信され得る。いくつかの用途では、ソースブロックの形成、FEC符号化、および送信のステップを2つ以上の異なるステップに分けることが望ましい。例えば、後述するように、ソースブロックの形成およびFEC符号化は、1つのサーバで行うことができ、符号化ストリームは、次いで、複数のサブストリームに分割され、次いで、該複数のサブストリームは、1つまたは複数の分散サーバに送信され、ローカルにキャッシュされ、その後、該複数のサブストリームの一部またはすべては、1つまたは複数の分散サーバのうちのいくつかから受信機に送信される。
【0060】
最低限に抑えることが重要ないくつかの主要メトリクスは、送信機によってもたらされる待ち時間である送信機待ち時間を含む。送信機待ち時間を最低限に抑えることは、ライブビデオストリーミングなどのいくつかの用途、またはテレビ会議など対話型の用途で望ましい。送信機待ち時間を最低限に抑えるのを助ける総合的な設計の1つの態様は、送信機が、あるストリームの最初のソースブロック(群)の符号化シンボルを連続する順序で受信機に送信することである。送信機待ち時間を最低限に抑える他の設計の態様については後述する。
【0061】
別の重要なメトリクスは、コンテンツザッピング時間である。図2に示すように、これは、受信機がストリームに加わり、またはストリームを要求したときと、FEC受信機が最初にストリームからソースシンボルを使用可能にしたときまでの間の時間である。一般に、例えば、ビデオストリームの再生の場合など、ストリームに受信機が参加したときと、ストリームが最初に受信機で使用可能になり始めたときとの間の時間量を最低限に抑えるため、コンテンツザッピング時間を最低限に抑えることが望ましい。コンテンツザッピング時間を最低限に抑える1つの重要な態様は、送信機が最初のソースブロックの符号化シンボルの元の送信順を維持することであるが、後述するように、コンテンツザッピング時間に大きい影響を与える他の多くの重要な設計態様がある。
【0062】
コンテンツザッピング時間は、一般に複数の成分を備える。図3Aおよび図3Bに、連続した複数のソースブロックに分割されるストリームについてのこれらの成分の一例が示されており、ここではインターリービングは使用されていない。図3Aは、保護期間当たりの単一ソースブロックを示し、この例は、ソースブロックの先頭で受信機がストリームに参加する場合を示す。この例では、コンテンツザッピング時間の2つの成分は、保護期間およびFEC復号待ち時間である。ソースブロックの受信機保護期間は、受信機がソースブロックから受信した符号化シンボルをバッファリングしている時間である。送信機保護期間および受信機保護期間は、送信機と受信機との間のチャネルが、各ビット、バイト、シンボル、パケットが送信機から受信機に移動するためにかかる時間量においてどんな変動も有していない場合、同じであることに留意されたい。したがって、実際には、配信におけるネットワークタイミングの変動のために、送信機保護期間は、同じソースブロックについて、受信機保護期間と異なり得る。
【0063】
ここでの説明を簡単にするために、送信機保護期間および受信機保護期間は、ソースブロックごとに同じである(および「保護期間」は、送信機保護期間および受信機保護期間について同意語として使用される)と仮定するが、これは、常にそうでならなければいけないというわけではない。言い換えれば、ネットワーク配信時間がすべてのデータについて同じであるという仮定がある。当業者であれば、本開示を読んだ後、ネットワーク配信の変動のために、送信機保護期間と受信機保護期間との差を考慮に入れるために、必要な変更を、本明細書に記載した方法および装置に加えることができる。
【0064】
コンテンツザッピング時間の保護期間成分は、不可避である。というのは、第1のソースブロックにおいて、任意のソースシンボルの損失がない場合でさえ、その後のソースブロックにおける符号化シンボルの損失があるとき、すべてのその後のソースシンボルのスムーズなソースシンボルの配信を確実にするために、少なくとも保護期間の間、ソースシンボルを使用可能にするのを送らせる必要が依然としてあるからである。保護期間中、ソースブロックのFEC復号の一部、ほとんど、またはすべては、符号化シンボルの受信と同時に起こり得る。保護期間の最後に、ソースブロックの第1のソースシンボルがFEC受信機から使用可能になる前に起こる追加のFEC復号がある可能性があり、この期間は、図3Aにおいて、FEC復号待ち時間と表記されている。さらに、第1のソースシンボルが使用可能になった後でさえ、ソースブロックの第2のソースシンボルおよびその後のソースシンボルが使用可能になる前に行われる追加のFEC復号があり得る。簡単にするために、この追加のFEC復号は、図3Aには示されておらず、この例では、第1のものの後のすべてのソースシンボルを十分速いレートで復号するのに十分使用可能なCPUリソースがあると仮定する。
【0065】
コンテンツザッピング時間の別の可能な成分は、受信機がストリームに加わることを要求したときと、そのストリームの第1のパケットが受信機に到着したときとの間の時間とすることができる。この時間量は、可変であり、受信機と、そのストリームのパケットの1つまたは複数の送信機との間の往復時間に依存し得る。コンテンツザッピング時間のこの成分は、本明細書には詳しく記載されていないが、時として、これは、考慮されるべきコンテンツザッピング時間の重要な誘因であり得ること、およびコンテンツザッピング時間のこの潜在的な誘因を考慮に入れるために、本明細書に記載した方法およびプロセスを容易に変更できることを当業者であれば認識されよう。
【0066】
図3Bは、図3Aに示される例に対応し得る2つの潜在的なFEC復号のCPU使用率曲線を示す。図3Bに示される2つの曲線のうちの1つにおいて、FEC復号に使用されるCPU使用率は、各時点において同じであり、すなわち、CPU使用率は、一様に分散される。各時点で同じ量のCPUリソースを予測的に使用し、ソースブロック全体を復号するのに、同じ量の総CPUリソースが必要とされると仮定して、最大CPUリソースを最低限に抑えるため、これは、望ましいCPU使用率曲線である。図3Bに示した2つの曲線のうちの他方では、FEC復号に使用されるCPU使用率は、各時点で同じではなく、特に、ソースブロックの符号化シンボルの受信の最後に向かう、およびその直後でのCPU使用率は、他の時点よりかなり高い。CPUリソース使用量が、他のプロセス、例えばビデオプレーヤなどもCPUに負担をかける時点であり得るある時点でスパイクし、したがって、例えば、映像ストリームの再生におけるトラブルをもたらす可能性を引き起こすため、これは、望ましいCPU使用率曲線ではない。したがって、ストリームを保護するFECソリューションの設計は、FEC復号器ができるだけ時間にわたってスムーズで一様にCPUを使用するソリューションを提供することである。一例として、設計基準は、符号化シンボル損失の最悪の場合のパターン下のFEC復号プロセスにおいて、任意の時点の最大CPU使用率がある閾値を下回ること、例えば、各100ミリ秒の間隔にわたってCPUの多くて10%を使用することであり得る。
【0067】
いくつかのストリーミングの用途では、受信機がソースブロックの途中でストリームに加わってしまった場合、元の送信順およびソースパケットの配信速度が最初に送信機によって維持される限り、コンテンツザッピング時間は、ソースブロック継続時間と、その第1の部分的ソースブロックからのソースシンボルの損失がないときの復号待ち時間とを加算したのと同じほど小さくなり得る。他のビデオストリーミングの用途では、送信機は常に、GOPの先頭から受信機にストリームを送信し始め、この場合、ソースブロックの先頭は、GOPの先頭に揃えられることが好ましい。したがって、コンテンツザッピング遅延を最低限に抑えるために、送信機が、最初のソースブロックのソースシンボルの元の送信順を維持することが望ましい。
【0068】
FECエンドツーエンド待ち時間を最低限に抑えるために、FECストリーミングソリューションを使用することもできる。FECエンドツーエンド待ち時間は、ライブストリーミングの用途の場合、ソースパケットがFEC符号化の適用前に送信機でのストリーミングの用意ができているときと、FEC復号の適用後、受信側での再生に使用可能であるときとの間にFECの使用によってもたらされる最悪の場合の全待ち時間である。オンデマンドのストリーミングまたはプレイリストコンテンツストリーミングなど、他のタイプのストリーミングの用途の場合、FECエンドツーエンド待ち時間は、大きな問題ではない。
【0069】
すべてのタイプのストリーミングの用途では、コンテンツザッピング時間およびコンテンツ遷移時間を最低限に抑えることが重要である。同時に、ストリームの送信レートを最低限に抑えること、すなわち、コンテンツザッピング中およびコンテンツ遷移中も含めて、常に送信レートを制約して、コンテンツストリーミングレートをほんのわずか上回るようにすることが重要である。
【0070】
FECストリーミングソリューションは、FECが使用されるとき、送信レートの変動を最低限に抑えるために使用することもできる。この1つの利点は、パケットネットワーク内で、ストリームの送信レートのピークと他のトラフィックのピークとが、制限された容量のネットワークにおける地点で一致するとき、送信レートが変動するストリームが、輻輳またはバッファオーバーフローが原因のパケット損失をより受けやすいことである。少なくとも、FEC符号化ストリームのレートの変動は、元のソースストリームのレートの変動より悪くないものとし、より多くのFEC保護が元のソースストリームに適用されると、FEC符号化ストリームのレートの変動がより小さくなることが好ましい。特別な場合として、元のストリームが一定のレートで送信する場合、FEC符号化ストリームができるだけ定数に近いレートで送信されることが好ましい。
【0071】
その後の各ソースブロックの最後の符号化シンボルが受信されるときが時間にわたってできるだけ一様に分配されるという特性は、望ましい特性である。あるソースブロックの最後の符号化シンボルが受信されたときは、ソースブロックの復号についてのすべての情報がFEC復号器から使用可能であるときであり、これは、一般に、FEC復号器が所定の復号待ち時間バジェット内で復号を終えるために、最も激しく働く必要があるという最悪の場合の損失条件下のときである。したがって、ソースブロックの最後の符号化シンボルの受信を一様に分配することによって、FEC復号のためのCPUの使用をスムーズにすることができる。
【0072】
FECストリーミングソリューションは、FEC受信機でできるだけ簡単なロジックを提供するものとする。FEC受信機を、制限された計算、メモリ、および他のリソース機能を備える装置に構築することができるため、これは、多くの状況で重要である。さらに、いくつかの場合、伝送時にシンボルのかなりの損失または破損がある可能性があり、したがって、FEC受信機は、条件が向上したとき、ストリームの受信が続く場所を理解するためのコンテキストがほとんどあるいはまったくない、破局的損失または破損シナリオから回復しなければならない場合がある。したがって、FEC受信機ロジックが簡単で頑強であればあるほど、FEC受信機は、迅速かつ確実に、回復を開始し、FEC符号化ストリームの受信からソースストリームのソースシンボルを再度使用可能にすることができる。
【0073】
ソースブロックのリペアパケットを送信するのは、ソースブロックのソースパケット前、後、または混合のいずれでもよく、本明細書で説明するように、それぞれの戦略に利点がある。
【0074】
FECストリーミングソリューションの包括的な望ましい特徴のうちの一部は、以下を含む。
【0075】
1.短いコンテンツザッピング時間。
【0076】
2.短いコンテンツ遷移時間。
【0077】
3.常に送信ストリームレートを制約して、すなわち、コンテンツストリームレートをほんのわずか上回るようにするものとする。
【0078】
4.送信ストリームレートは、スムーズであるものとし、少なくともコンテンツストリームレートと同じぐらいスムーズであるものとする。
【0079】
5.FEC符号化が使用されるとき、ソースブロックの形成およびFEC符号化を、あるストリームに実行することができ、同じ符号化ストリームを、場合によっては異なる時に多くの受信機に送信することができる。
【0080】
6.FEC符号化が使用されるとき、特に、損失が本質的に多少バースト的であるとき、必要な最低限の保護量を有する小さいソースブロック継続時間を使用して、パケット損失に対する保護を高いものとする。
【0081】
7.FEC符号化が使用されるとき、複数のソースブロックは、1つのストリームの隣接した部分を含むものとする。
【0082】
8.ライブストリーミングの用途のFEC符号化のとき、FECエンドツーエンド待ち時間は、小さいものとする。
【0083】
9.FEC符号化が使用されるとき、FEC復号は、CPU使用率をスムーズに分配するものとする。
【0084】
<FEC符号化ストリームの基本的な送信>
本セクションでは、送信機が、FEC符号化することができるストリームのパケットの送信の時間を決める基本的な方法およびプロセスを説明する。kをソースブロックにおけるソースシンボルの数とし、Tをそのソースブロックについてのソースブロック継続時間とし、pを分数として表される保護量とすると、そのソースブロックについて、p*k個のリペアシンボルが送信される。k、Tおよびpの値は、各ソースブロックが形成されているときに、動的に決定することができ、したがって、そのソースブロックのソースシンボルのほとんどまたはすべてがプロセスに到着したとき、ソースブロックのkおよびTの値は、ソースブロックの形成プロセスのみに知られるようにし、pの値は、ソースブロックのすべてのソースシンボルがソースブロック形成プロセスに到着した後、または個別のプロセスによって決定することができる。また、ソースブロック形成プロセスは、異なるソースブロックごとにシンボルサイズを変え得る。したがって、特定のソースブロックのこれらのパラメータの多くまたはすべては、そのソースブロックのデータを受信中のソースブロック形成プロセスに知られている可能性がある。
【0085】
以下のプロセスでは、インターリービングを使用しない基本的な送信機について説明する。簡単にするために、この基本的な送信機について、ソースブロック形成プロセスがストリームにすでに適用されており、それが連続するソースブロックに分割されており、こうしたソースブロックの各個がk個のソースシンボルを含み、T秒のソースブロック継続時間で、こうしたソースブロックごとに、p*k個のリペアシンボルがすでに生成されていると仮定する。
【0086】
受信機がストリームを特定のソースブロックからの開始を要求する(または受信機からの明示的な開始要求によってストリームを先行送信させる)と、基本的な送信機は、T秒の期間にわたって、要求されたソースブロックの(1+p)*k個の符号化シンボルの送信を開始し、その後、要求されたソースブロックの後、次のソースブロックの符号化シンボルを送信する、といった具合である。
【0087】
基本的な送信機は、以下の特性を有する。
【0088】
1.保護期間はTであり、これは、ソースブロック継続時間と同じである。
【0089】
2.送信されたソースブロックのシンボルは、T秒の期間にわたって一様に分配される。これは、一定の継続時間のバースト停止(burst outage)があるとき、損失に対して提供される保護のレベルは、シンボルの送信中に停止が起こるときに依存しないことを含意し、これは望ましい。
【0090】
3.送信機は、シンボルの全体的な送信レートの変動をもたらさない。特に、ソースシンボルの元の送信レートが一定である場合、すべてのシンボルの送信レートは、依然として一定であり、送信機でのソースシンボルの元の到着レートが可変であるとき、少なくともソースブロック当たりのシンボルの一定の送信レートが変動を減衰させる。これは、望ましい特性である。
【0091】
4.コンテンツザッピング時間は、Tと同じぐらい小さくすることができる。これは、(すべてのソースブロックがk個のソースシンボルを含むと仮定すると)(1+p)*k個のシンボルの最低バッファリングを含意し、これは、所与の保護期間について可能な最低値であり、したがって望ましい。
【0092】
基本的な送信機が有する1つの特性は、コンテンツザッピング時間は、少なくとも1保護期間分の時間であり、保護期間は、バースト的損失に対する保護の品質に直接関係するということである。したがって、保護期間とコンテンツザッピング時間との間で行う必要がある妥協がある場合がある。例えば、1秒未満のコンテンツザッピング時間を有することが望ましく、一方で、一時的なネットワーク停止、または数10あるいは数100ミリ秒程度、およびいくつかの場合では数秒続く可能性がある、バースト的パケット損失をもたらす他のタイプの断続的なネットワーク問題に対してより良い保護を提供するために、数秒にまたがる保護期間を有すると共に、同時に10%などの適度に小さい保護量を使用することも望ましい。コンテンツザッピング時間よりかなり大きい保護期間を有することができることが望ましく、これは、次のセクションで説明するインターリービング方法が提供する多くの利点のうちの1つである。
【0093】
<ストリームインターリービング>
このセクションでは、データのストリームをとり、送信プロセスで、ある部分が他の部分より多く遅延するように、差分時間遅延をデータストリームの異なる部分に適用するための新規の方法およびプロセスについて説明する。これらの方法およびプロセスのうちのより重要な態様のうちの1つは、データストリームが送信されるときに、ストリームの異なる部分に含まれる遅延の量を動的に調整するための手段である。
【0094】
コンテンツザッピング時間を最低限に抑え、ストリームのより良い保護を提供するために、ソースブロックをGroup of Pictures(GOP)構造またはビデオストリームの他のフレーム構造に揃えることがしばしば好ましい。いくつかの用途では、インターリービングプロセスが、ソースブロック形成プロセスとは関係なく、場合によっては、異なる時間に行われる、または場合によっては、異なる場所で行われることができることが望ましい。いくつかの場合、例えばFEC符号化が使用されないために、たとえソースブロック形成プロセスが使用されなくても、例えば、ストリームを介してバースト的誤りをより均等に分配するために、場合によっては、インターリービングプロセスが望ましい。当業者であれば認識されるように、本明細書に記載した方法は、ソースブロック形成およびFEC符号化が使用されないときでさえも適用される。
【0095】
いくつかの場合、各ソースブロックのシンボルをソースブロック継続時間より長い保護期間にわたって分配することができるように、送信機が異なるソースブロックからシンボルの送信をインターリーブするのを可能にするための利点があり得る。これを行う1つの理由は、時間に依存した損失(例えば、バースト的損失)に対して、より良い保護が提供されるからであり、すなわち、ソースブロックの保護期間が大きくなるにつれて、一定の継続時間のバースト損失に対して保護を提供するのに、より小さい保護量が必要とされるからである。ソースブロック継続時間は、t秒とすることができ、ソースブロックの望ましい保護期間は、p秒とすることができ、この場合、p>>tである。インターリービングを使用する送信機の他の望ましい特性は、以下を含む。(1)ソースパケットがソースブロック内の元の順で送信される、(2)その後の各ソースブロックの最後の符号化シンボルが受信される時間は、時間にわたってできるだけ一様に分配される。
【0096】
FEC符号化が使用されるとき、ソースブロックの符号化シンボルの送信を静的にインターリーブする方法が導入され、ストリームが送信されるにつれてインターリービングの量を動的に調整する方法が導入され、一般には、ストリームの送信の開始時にはインターリービングがほとんどあるいはまったくなく、したがって、ソースブロック継続時間とほぼ同じ保護期間で、ストリームの送信が進むにつれて、ますます多くのインターリービングがスムーズに導入され、したがって、保護期間は、ソースブロック継続時間よりかなり長くなるまで増大する。これによって、コンテンツザッピング時間を、受信機で最低限に抑えると共に、送信が進むにつれてバースト的損失または破損に対する保護をますます増やすことができる。記載した方法の他の利点は、ストリームの送信が進むにつれて、ますます多くのネットワークジッタに対して徐々に保護を行うことができることである。
【0097】
以下の説明を簡単にするために、ストリームの送信前にソースブロック形成およびFEC符号化プロセスが行われると仮定する。これは、方法の限定ではなく、当業者であれば認識されるように、ソースブロックを形成し、これらのソースブロックにFEC符号化を実行し、後述するようにストリームを送信するプロセスは、同時に行うことができ、一部の場合、これは、有利である。さらに、いくつかの用途では、ソースブロック形成、FEC符号化プロセス、およびストリームのインターリーブ式の送信について後述する方法は、動的に独立していてよく、すなわち、ソースブロックがどのように形成され、FEC符号化されるかは、いくつかの場合、送信ストリーム戦略に依存し得る。
【0098】
<ストリーム送信のテープ(tape)方法>
新しいインターリービング方法を説明するために、以下のストリーム送信のテープ方法を述べることが有用である。図4は、ソースブロック構造がすでに決定されているコンテンツストリームの例示的な図である。各ソースブロック405(1),405(2),・・・について、幅410(1),410(2),・・・は、そのソースブロックのコンテンツ再生継続時間を示し、各ソースブロックの高さ415(1),415(2)は、各コンテンツストリームソースブロックの平均再生レートを示し、この例では、異なるソースブロックは、異なる再生レートを有する。
【0099】
図5は、図4に対応する符号化ブロック構造を示しており、すなわち、FEC符号化が各ソースブロックに適用されて、ソースブロックごとに追加のリペアデータ510(1),510(2),・・・を生成し、符号化ブロックを形成する。510(1),510(2),・・・の高さ515(1),515(2),・・・は、各符号化ブロックにおけるソースブロックごとに生成された追加のリペアデータの量を示し、すなわち、対応するソースブロックと同じ継続時間にわたって符号化ブロックが送信される場合、高さは、符号化ソースブロックの平均送信レートを示す。この図は、例示にすぎず、これに限定するものではなく、例えば、符号化ブロックごとに生成されたリペアデータの量は、符号化ブロックごとに送信された量よりかなり大きくてもよく、符号化ブロックごとに送信された量は、受信機によって変わり得る。さらに、図5は、符号化ソースブロック内のソースシンボルおよびリペアシンボルの順序の表示を示唆するものではない。
【0100】
図6は、基本的な送信機の方法に対応する受信機によるコンテンツザッピング時間経験を示す例示的な図である。コンテンツザッピング時間605の複数の成分のいくつかは、受信機が、第1のソースブロックを復号するのに十分なだけ、ストリームの第1の符号化ブロックを受信するためにかかる時間610、受信機が第1の符号化ブロック620の受信された部分から第1のソースブロックを復号するためにかかる時間、およびネットワークジッタ、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間を吸収するために確保される予備バッファ時間630を含む。
【0101】
ストリームを送信するテープ方法について説明しており、類似の方法を生成する同等の説明や、本明細書に記載される方法の変形を生成するこの説明の変形が多く存在することを当業者であれば認識されよう。図7は、図5に示される符号化ブロック構造に対応するテープ方法の一例を示す。該テープ方法において、データのストリームの送信は、ストリームがテープ705として送信されることを表すことによって示され、ここでは、テープのX軸に沿った各位置710が符号化ブロック構造における異なる時点に対応し、テープの高さは、常に同じであり、例えば、テープに沿ったその時点での符号化ソースブロックのレートに関係なく、名目上高さ1など、常に同じである。テープによって表されるストリームの送信は、テープの最上部725からテープの最下部730に至る移動線720(1),720(2)によって示すことができる。一表現において、時間にわたる線720(1),720(2)の移動は、ストリームの符号化ブロックからのデータの送信順を表す。テープ内の各点740(1),740(2),・・・は、送信すべきストリームデータ片を表し、例えば、各点は、符号化ブロックの符号化シンボルのパケットを表し、または各点は、符号化ブロックの個々の符号化シンボルを表し得る。符号化ブロック750(1),750(2),・・・に対応する領域内に含まれる点は、その符号化ブロックに関連付けられるデータを表す。
【0102】
ストリームを送信するテープ方法による送信のプロセスは、ストリームが送信されるにつれて、時間にわたってテープを横切って線720(1),720(2)をスィープ(sweep)することによって表され、線が点をスィープするたびに、その点に対応するストリームのデータが送信される。図7は、送信プロセスにおける異なる2つの時点での線を示し、線720(1)は、第1の時刻におけるその構成であり、線720(2)は、第2の時刻におけるその構成である。したがって、送信プロセスは、第1の時刻と第2の時刻との間の時間間隔中、720(1),720(2)、725および730によって囲まれた領域内の点に関連付けられているすべてのデータを送信する。各符号化ブロック内の点の分散は、その重さに従って、その符号化ブロックについて、テープエリア内で一様に分散されることが好ましく、例えば、ランダムに分散される、または疑似ランダムに分散される、または点の重さがその点によって表されるデータの量である場合、各点の重さに従って点が一様に分散されることを確実にするプロセスによって決定論的に分散される。
【0103】
上述したように、線720は、直線であるが、当業者であれば認識するように、多くの変形があり、例えば、線は、曲線でもよく、または連続する線セグメント系列を備えていてもよい。また、線は、送信プロセス中に横切ってスィープするとき、その形状を変えてもよい。テープ送信方法は他にもいくつかの変形があり、そのなかには、変形テープが同じ高さのものではなく、代わりに、その高さは、テープのその位置710でのストリームのレートに従って変わるようにテープを表すことを含む。
【0104】
以下で詳述されるように、送信プロセス中、テープにわたる線の移動を指定する様々な方法がある。
【0105】
<静的インターリービング方法>
ストリームを送信するテープ方法は、FEC符号化が使用されるかどうかにかかわらず、またソースブロック構造が使用されるかどうかにかかわらず、任意のタイプのコンテンツストリームまたは符号化コンテンツストリームについて、任意の深さの静的インターリービングを達成するために使用することができる。説明上、ソースブロック構造は、すでに定義されており、FEC符号化が使用されると仮定する。
【0106】
ストリームを送信するテープ方法を使用した所与の量の静的インターリービングを達成する1つの方法について、一例により図7を参照して説明する。この例では、各符号化ブロックは、時間量Dごとに他の隣接する符号化ブロックでインターリーブされ、すなわち、インターリービング深さはDである。この例では、ストリームを要求するとき、受信機は、位置XおよびDの値を伝える。次いで、送信機での送信プロセスは、最初に線720とテープの最下部730とが位置X−Dで交差し、最初に線720とテープの最上部725とが位置Xで交差するように線720を構成し、次いで、送信プロセスが、ストリームの再生レートと同じレートで、時間を順方向に線720をスィープする、すなわち、送信プロセス開始後の時刻tで、線720とテープの最下部730とが位置X−D+tで交差し、線720とテープの最上部725とが位置X+tで交差するように、線720が横切ってスィープしていることによって説明される。
【0107】
静的インターリービング方法のこの説明において、新しく要求されたストリームを受信機に送信するために該方法が使用されている場合、ストリームにおいて、受信機で再生が開始する位置にXがあることが有利であり、例えば、Xは、符号化ブロックの先頭の位置、またはXは、ビデオストリームにおけるGOPの先頭の位置であり、符号化ブロックの先頭は、GOPの先頭に揃えられる。さらに、こうした場合、一般に、受信機は、符号化ブロックのある一部分のみを受信し、部分的に受信された符号化ブロックを完全に復号するのに十分ではない可能性が高いため、送信機が、テープに沿って位置Xの前に、受信機に任意のデータを送信しないことが有利である。
【0108】
図8は、送信機が先に説明した静的インターリービング方法を使用しているとき、送信されたストリームの形状を例示する例示的な図である。この場合、静的インターリービング方法は、図5に示された符号化ストリームに対応する、図7に示されるテープに適用される。この例では、受信機は、Xの値を、図7における第1の符号化ブロック750(1)の開始の位置と指定し、したがって、この例では、位置Xの前に、テープに沿って送信されるべきデータはない。この例では、受信機は、Dの値も指定し、これは、10秒などの値とすることができる。このプロセスに従って送信機によって送信された結果として得られたストリームは、図8に示され、この場合、850(1),850(2),・・・のエリアは、それぞれ図5の405(1)+510(1)、405(2)+510(2),・・・などのエリアと同じである。図8に示すような送信レートは、図5に示すような元のコンテンツレートの平滑化されたバージョンであることに留意されたい。
【0109】
図9は、上述した静的インターリービング方法に対応する受信機によって経験されるコンテンツザッピング時間を示す例示的な図である。コンテンツザッピング時間905の成分の一部は、受信機が、第1のソースブロックを復号するのに十分なだけストリームの第1の符号化ブロックを受信するためにかかる時間であって、ソースブロック継続時間とインターリービング深さDとの合計である時間910、受信機が第1の符号化ブロック920の受信された部分から第1のソースブロックを復号するためにかかる時間、および予想されるネットワークジッタ遅延、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間のために確保される予備バッファ時間930を含む。保護期間は、この場合、ソースブロック継続時間+インターリービング深さDであり、ソースブロック継続時間よりかなり大きくなり得るため、コンテンツザッピング時間905は、記載したように、この方法を使用すると、ソースブロック継続時間よりかなり大きくなり得ることに留意されたい。
【0110】
<動的インターリービング方法>
ストリームを送信するテープ方法は、FEC符号化が使用されるかどうかにかかわらず、またソースブロック構造が使用されるかどうかにかかわらず、任意のタイプのコンテンツストリームまたは符号化コンテンツストリームについて、任意のペースの任意のインターリービング深さで、動的インターリービングを達成するために使用することができる。説明上、ソースブロック構造は、すでに定義されており、FEC符号化が使用されると仮定する。
【0111】
ストリームを送信するテープ方法を使用し、インターリービング無しで開始して、所与のインターリービング深さまで進む動的インターリービングを達成する1つの方法について、一例を図7を参照して説明する。この方法の一般的な使用では、第1の符号化ブロックは、わずかのインターリービングで送信され、次いで、インターリービング深さDが達成されるまで、徐々に、時間が経つにつれて、他の隣接する符号化ブロックでその後の符号化ブロックがますますスムーズにインターリーブされる。しかし、この方法の他の使用についても、以下で説明し、当業者であれば認識されるように、他の様々な変形もある。方法のパラメータを表すこの例の方法では、ストリームを要求すると、受信機は、線720についての最初の上部位置UI、線720についての最初の下部位置LI、線720についての最後の上部位置UF、線720についての最後の下部位置LF、および時間値Tを伝える。簡単にするために、以下、UF≧UI、LF≧LI、UF≧LF、UI≧LI、T≧0と仮定する。一般に、必要に応じて受信機でのデータが常に使用可能であることを確実にするのを助けるために、UF≧UI+TおよびLF≧LI+Tであることが好ましい。以下、この例で説明するように、UF、UI、LF、LI、およびTのこれらの値は、インターリービングが動的に調整されるにつれて、コンテンツの予備バッファを受信機でスムーズに増加することができるようにする。
【0112】
送信機での送信方法は、パラメータLI、UI、LF、UF、およびTを使用して以下のようにテープ方法を実行する。まず、図7の線720は、最初に送信時刻t=0で、最初に線720とテープの最下部730とが位置LIで交差し、最初に線720とテープの最上部725とが位置UIで交差し、次いで、送信時刻t=0からt=Tまでの間、時刻tで、線720とテープの最下部730とが位置t*(LF−LI)/T+LIで交差し、時刻tで、線720とテープの最上部725とが位置t*(UF−UI)/T+UIで交差するように、線720がテープを横切ってスィープされるように構成される。次いで、送信時刻t>Tのすべてにおいて、時刻tで、線720とテープの最下部730とが位置t−T+LFで交差し、時刻tで、線720とテープの最上部725とが位置t−T+UFで交差するように、線720がテープを横切ってスィープされ、すなわち、t>Tの場合、インターリービングは、静的であり、D=UF−LFのインターリービング深さが使用される。
【0113】
<新しく要求されたストリームについての動的インターリービング方法>
動的インターリービング方法の一使用例は、受信機に新しく要求されたストリームを送信することである。一例として、図10に示されるように、初期値はすべて、同じ値I=UI=LIに設定することができ、すなわち、最初は、インターリービングがなく、受信機がコンテンツストリームを再生し始める位置Sは、S=Iを満たす。これにより、位置S以降のコンテンツの全テープが受信機に送信されたことが確実になる。図10に示されるように、好ましくは、S=UI=LIであり、この場合Sは、それが再生され得るコンテンツストリームにおける位置であり、例えば、Sは、その開始がGOPの開始に揃えられる符号化ブロックの開始である。さらに、T≦LF−Sであることが有利である。これにより確実になるのは、受信機がコンテンツレートでコンテンツを再生する場合、コンテンツの送信が、少なくとも受信機でのコンテンツの再生と同じ速さのレートでのものであり、R=LF−S−T秒の予備バッファ時間がスムーズに増加し、受信機への送信開始から送信時刻Tで静的インターリービングに到達するにつれて続き、この場合、予備バッファは、ネットワークジッタ、変化するソースブロック継続時間、および復号時間を吸収することができることである。インターリービング量は、インターリービング無しからD=UF−LF秒のインターリービングまで、スムーズに増加する。
【0114】
動的インターリービング方法の特定の例として、受信機がごく最初からコンテンツにアクセスしており、定常状態で、5秒の予備バッファに到達し、定常状態で10秒のインターリービング深さが望まれ、送信のレートは、インターリービングおよび予備バッファが増加している期間中、符号化ストリームレートの約10%以上と仮定する。次いで、パラメータの可能な設定は、所望の開始位置であるS=UI=LI、T=100秒、LF=S+T+5秒、およびUF=LF+10秒である。したがって、この例で、コンテンツストリームレートが1Mbpsであり、10%の保護量が使用される場合、符号化ストリームレートは、1.1Mbpsとなる。次いで、ストリームの100+(5+15)/2=110秒が最初の100秒内で送信されるため、前に説明したパラメータ設定を使用した動的インターリービング方法を使用した送信の最初の100秒間、送信レートは、約1.21Mbpsとなる。100秒の送信の後、予備バッファは、5秒、インターリービング深さは、10となり、次いで、送信レートは、その後、1.1Mbpsとなることになる。100秒のストリーミングが行われる直前の2、3秒の間、送信レートは、1.21Mbpsレートから1.1Mbpsレートにスムーズに遷移する。最初に、送信レートは、符号化ストリームレートに従い、インターリービング深さおよび予備バッファがスムーズに増えるにつれて、送信レートは、平滑化され、ますます厳密に平均符号化ストリームレートと一致するようになることにも留意されたい。
【0115】
上述した動的インターリービング方法に対応する受信機によって経験されるコンテンツザッピング時間について、図11を参照して説明する。コンテンツザッピング時間1105の成分の一部は、受信機が第1のソースブロックを復号するのに十分なだけ、ストリームの第1の符号化ブロックを受信するためにかかる時間1110、受信機が第1の符号化ブロック1120の受信された部分から第1のソースブロックを復号するためにかかる時間、および予想されるネットワークジッタ遅延、ソースブロック継続時間の変動、およびストリームの受信中に受信された符号化ブロックの部分からのソースブロックの復号時間のために確保される初期予備バッファ時間1130を含む。
【0116】
動的インターリービングを使用するとき、予備バッファは時間が経つにつれて増加するため、動的インターリービングを使用するとき、初期予備バッファ時間1130は、ストリーム送信の全継続時間の間、予備バッファサイズが固定される場合よりかなり短くなり得る。例えば、基本的なストリーム送信機を使用すると、最高2秒までの長期ネットワークジッタに対してバッファリングするために、予備バッファサイズは、2秒に設定することができる。一方、動的インターリービング式の送信方法では、ストリーム送信の最初の2、3秒の間、ネットワークジッタがわずかである可能性があり、その時点では、予備バッファは、かなり増加しているため、初期予備バッファ時間1130は、例えば200ミリ秒など、かなり短い何らかの値に設定することができる。
【0117】
動的インターリービングを使用したとき、各ソースブロックの保護期間が徐々に増加するため、初期ソースブロック継続時間は、動的インターリービングを使用したとき、保護期間がストリーム送信の全継続時間の間そのソースブロック継続時間であるときよりかなり短くなり得る。例えば、基本的なストリーム送信機を使用すると、ソースブロック継続時間は、5秒に設定することができ、保護量は、500ミリ秒の短いバースト的パケット損失から保護するために、20%に設定することができる。一方、動的インターリーブ式の送信方法では、ソースブロック継続時間は、約500ミリ秒など、かなり短い何らかの値に設定することができ、保護量は、こうしたバーストに対する同じレベルの保護を提供するために、約5%など、かなり小さい値に設定することができる。というのは、ストリームを送信する最初の2、3秒の間、こうしたバーストが起こる可能性は低く、その時点では、保護期間は、こうしたバーストから保護するために、実質的に、例えば、元のソースブロック継続時間+10秒のインターリービング深さまで増加している。
【0118】
したがって、全体的に、動的インターリービング方法を使用すると、例えば、1秒未満のコンテンツザッピング時間など、コンテンツザッピング時間は短くてよく、これに対して、同じネットワーク条件において、基本的なストリーム送信方法を使用すると、数秒であり、さらに、動的インターリービング方法は、ネットワークジッタおよびバースト的パケット損失に対して優れた長期保護を提供することができる。
【0119】
パラメータの指定方法には多くの変形がある。例えば、テープにおける初期開始位置を指定する代わりに、インターリービングの初期量、インターリービングの最後の量、および初期インターリービングから最後のインターリービングまでスムーズに遷移する期間を指定することができる。あるいは、初期インターリービングから最後のインターリービングまでスムーズに遷移する期間を指定する代わりに、遷移を行うためのコンテンツストリームレートに対するレートを指定することができる。変形の別の例として、追加のパラメータを送信機が知っておく、または受信機によって指定することができ、例えば、受信機は、受信機がコンテンツの再生を開始する開始位置Sを明示的に信号で伝えることができる。
【0120】
当業者であれば認識されるように、動的インターリービング方法の多くの変形がある。例えば、受信機が損失をあまり経験していないために、例えば送信機は、符号化ブロックの一部またはすべてからの符号化データの一部をフィルタにかけて除去し、個々の受信機に送信しないことを決定することができる。別の変形として、ソースブロック構造を事前に決定することができる。しかし、送信プロセスが動作するにつれて、FEC符号化が動作して、個々の受信機のために符号化ブロックを生成していたり、以前の受信機より大きい保護量を必要とする受信機に遭遇するにつれて、時として、一部の符号化ブロックのためにリペアシンボルの大量供給を生成したりしている。
【0121】
しばしば好ましい別の変形として、受信機は、動的インターリービング方法の初期パラメータの設定を制御することができ、サーバまたは複数のサーバのセットは、動的インターリービング方法の最後の対象パラメータを決定することができる。例えば、受信機は、コンテンツストリームが2秒のインターリービング深さおよび1秒の予備バッファで開始されると指定することができ、次いでサーバは、20秒のインターリービング深さおよび10秒の予備バッファが送信の最初の2分で達成されるように送信することを決定することができる。サーバまたはサーバ群に動的インターリービング方法の最後のパラメータを指示させる1つの利点は、コンテンツストリームの現在の時間以降の部分は、使用不可であるライブストリーミングをサポートするにははるかに容易であるので、サーバは、動的インターリービングパラメータを所与の制約下で使える最後の設定に導くことができることである。サーバに最後のパラメータを指示させる利点の別の例は、サーバが、いくつかの場合、ストリーム内の基本的に同じ位置からの同じコンテンツストリームが提供されている複数のクライアントのパラメータを、最終的に受信機の多くが同じ最終パラメータに導かれるように調整することができ、これによって、同じ時点に、同じパケットが、コンテンツストリームからこれらの受信機のすべてに送信されるため、受信機にパケットを送信する際のサーバ効率につながることである。
【0122】
<コンテンツセグメント遷移の動的インターリービング方法>
動的インターリービング方法の一使用例は、受信機がコンテンツセグメントリスト内のあるコンテンツセグメントから次のコンテンツセグメントに遷移するとき、例えば、ある番組の一エピソードの一セグメントから広告に遷移し、次いで、その番組の次のセグメントに戻るときなどであり、この場合、すべての遷移は、任意の受信機の対話無しに行われる。複数の差分コンテンツセグメントは、異なる送信機によって送信することができ、例えば、番組エピソードの複数のセグメントは、コンテンツサーバによって受信機に送信することができ、一方で、間に入る広告は、広告サーバによって受信機に送信することができる。
【0123】
第1の例は、受信機が上述した動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを見ており、第1の送信機が、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間送信しているときである。次いで、動的インターリービング方法を使用して、以下のように、第2のコンテンツセグメントへのスムーズな遷移を達成することができる。
【0124】
1.第1のコンテンツセグメントの送信の終了前D+R秒に、第1のセグメントの送信レートは、D秒の期間にわたって符号化ストリームレートからゼロまで直線的に低減し、その時点で、第1の送信機は、第1のセグメントについての送信を停止する。
【0125】
2.第1のコンテンツセグメントが再生を終了する前のD+R秒で、受信機は、UI=0、LI=−D、UF=0、LF=−D、T=0のパラメータで、第2のサーバに第2のコンテンツセグメントを要求する。ネットワーク待ち時間が無いと仮定すると、第2のサーバは、第2のコンテンツセグメントのストリームの送信を開始し、送信の最初のD秒にわたってレートを直線的に増加させ、その後、送信が符号化ストリームレートになる。
【0126】
3.第1のコンテンツセグメントが再生を終了したとき、第2のコンテンツの予備バッファは、R秒に増加しており、インターリーブ深さは、D秒に増加している。この時点で、第2のコンテンツの再生を開始することができる。
【0127】
したがって、第1のコンテンツセグメントから第2のコンテンツセグメントへの遷移は、受信機での受信レートを符号化ストリームレートに保ち、すなわち、遷移にわたる結合されたレートが、1つのコンテンツセグメントが連続して送信されているのと同じになるように、第1のコンテンツセグメントの送信レートが直線的に減少している間、第2のコンテンツセグメントの送信レートが直線的に増加する。さらに、第2のストリームの予備バッファ保護およびインターリーブ保護は、定常状態での第1のストリームの場合と同じである。図12は、この例である。
【0128】
第1のコンテンツセグメントの送信の終了に比べて、第2のコンテンツセグメントのストリームの送信の開始時について、タイミングがわずかにはずれていたとしても、減少レートおよび増加レートがなだらかな直線であるため、ストリーミングレートの正味の誤りは、軽微である。例えば、2つのストリームの間の遷移のタイミングに500ミリ秒の誤りがあり、インターリービング深さが10秒である場合、ストリーミングレートの誤りは、多くて5%である。これは、第2のコンテンツセグメントのパラメータを上述したより少し控えめに、すなわち、これらの値を単に第1のストリームと同じに保持しようとする代わりに、予備バッファおよびインターリーブ時間を少し多く増やそうとするように設定することができ、その結果のコンテンツセグメント遷移間の結合されたストリーミングレートの増加は、軽微になることも意味している。
【0129】
コンテンツセグメント遷移の第2の例は、受信機が上述した動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを見ており、しかし、第1の送信機が、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間送信していないときである。次いで、第2のコンテンツセグメントへのスムーズな遷移は、動的インターリービング方法を使用して、以下のように達成することができ、この場合、受信機が行うことは、第1のストリームから第2のストリームへの遷移は、2つのコンテンツセグメントが共に連結され、1つのサーバによって送信されるかのように、パラメータを設定し、また第2のストリームを要求することである。当業者であれば、動的インターリービング方法を使用して、このタイプの遷移を達成する方法の詳細を考え出すことができる。
【0130】
コンテンツセグメント遷移の第3の例は、上記の動的インターリービング方法を使用して第1の送信機によって送信されている第1のコンテンツセグメントを受信機が見ており、そして、第1のコンテンツセグメントの再生が受信機で終了したときと、第2のコンテンツセグメントの再生が始まるときとの間の期間にギャップがあるときである。例えば、これは、再生を終了する番組の一エピソードの第1のセグメントがあり、次いで例えば期間30秒の非ストリーミング広告が続き、番組の当該エピソードの第2のコンテンツセグメントの即座の再生が続くときの好ましい挙動であり得る。この場合、動的インターリービング方法は、以下のように使用することができ、簡単にするために、完全にインターリービング深さDおよび予備バッファ時間Rが増加するのに十分長い間、第1のコンテンツセグメントが受信機に送信されていると仮定する。この場合、上記の第1の例の場合のように、受信機は、パラメータUI=0、LI=−D、UF=0、LF=−D、T=0で、第1のコンテンツセグメントの再生終了前に、第2のコンテンツセグメントD+R秒の要求を送信する。これにより、第2のサーバは、第1のサーバから送信されている第1のコンテンツセグメントのレートと結合されたときの総合レートが単一の送信ストリームのレートになるレートで、第2のコンテンツセグメントの送信を開始する。次いで、第1のコンテンツセグメントが受信機での再生をちょうど終了したとき、受信機は、第2のコンテンツセグメントのストリームの送信を停止するよう第2のサーバに信号で伝え、受信機への送信レートがすぐにゼロになる。次いで、約30秒のギャップが生じる。ギャップの最後に、受信機は、第2のコンテンツセグメントの再生をすぐに開始すると同時に、パラメータUI=D+R、LI=R、UF=D+R、LF=R、T=0で、第2のコンテンツについての第2のサーバへの送信開始要求を送信する。これによって、第2のサーバは、ギャップの直前にそれが終えたところから、第2のコンテンツの送信を続ける。全体的な効果は、スケジュールされた時間に第2のコンテンツをすぐに再生すること、そして同時に、2つのコンテンツセグメントの再生中、遷移中のすべての時点における受信機への結合された送信レートは、1つの符号化ストリームレートと同じであり、2つのコンテンツセグメントのいずれも再生されていないとき、送信レートはゼロである。図13は、この例である。
【0131】
当業者であれば認識されるように、上述した動的インターリービング方法の他の多くの使用および変形がある。
【0132】
<サブストリームベースの配信方法>
サブストリームベースの配信は、FEC符号化ストリームをとり、それを複数のサブストリームに分割するための方法であり、ここで各サブストリームには、例えば、ほぼ等しい量の各符号化ブロックが含まれるように分割される。例えば、符号化ストリームは、40のサブストリームに分割することができ、各サブストリームは、各ソースブロックの約5%から成り、したがって、この例では、FEC符号化を使用して各ソースブロックについて生成されたリペアデータの量は、当該ソースブロックのサイズにほぼ等しい。より一般的には、FEC符号化が各ソースブロックに適用され、次いで、サブストリームベースの配信が適用されるとき、各サブストリームに含まれる各ソースブロックの符号化の量がほぼ等しくなるように、各ソースブロックについての合計符号化データが複数のサブストリームに分割される。ここで、FEC符号化がシステマチックである場合、各ソースブロックの符号化データは、各ソースブロックの元のデータ+生成されたリペアデータを含むことがあり、FEC符号化がシステマチックでない場合、各ソースブロックの符号化データは、リペアデータを含むことがある。
【0133】
サブストリームベースの配信の主な概念のうちの1つは、いくつかの所望の目的を達成するために、潜在的に異なるパスに沿って、潜在的に異なるサーバを介して、ストリームの複数のサブストリームを送信することである。一例として、コンテンツストリームをサブストリームベースの配信システムに取り入れる、以下ヘッドエンドサーバ(HES:Hed-End Server)と呼ぶサーバがあり、HESが行うプロセスの一部は、コンテンツストリームのソースブロック構造を生成すること、ストリームのFEC符号化、符号化ストリームを複数のサブストリームに分割すること、次いで、該複数のサブストリームを、異なる複数のデータセンター内または個別の複数のネットワーク位置に分散され得る、以下分散サーバ(DS:Distributer Server)と呼ぶ他のサーバに送信することである。この一例は、図14で見ることができる。図14では、DS1430のそれぞれは、HES1410から符号化コンテンツストリーム1420の異なるセグメントを受信する。DSが実行するプロセスの一部には、コンテンツストリームのサブストリームが受信機へ向かって通過するときにキャッシュすること、受信機からの特定のコンテンツストリームのサブストリームの要求を受け付けること、サブストリームを、例えば、特定のサブストリームについての受信機の要求に基づいて、または受信機の申し込みに基づいて、受信機に送信することが含まれる。サブストリーミングの特別な場合は、それ以上分割されない元の符号化ストリームを含む。
【0134】
サブストリームベースの配信システムにおける受信機は、同じ開始位置で開始する同じコンテンツセグメントについてのサブストリームを要求し、受信することができ、ここで、該要求は、異なるサブストリームごとに異なるDSに送信することができ、この場合、同じ開始位置を有する同じ符号化ストリームのいくつかの異なるサブストリームを、異なるDSから同じ受信機に送信することができる。この一例は、図15で見ることができる。図15において、受信機1530は、様々なDS1510、1520にコンテンツストリームを要求する。この例では、DS1520のうちの1つは、受信機からの要求に応答せず、他のDS1510は、受信機にサブストリームを送信する。応答するDSがこれを達成するのに十分なデータを受信機に送信する場合、受信機は、FEC符号化を使用して、コンテンツストリームを完全に回復することが可能であり得る。
【0135】
一例として、元の1Mbpsのコンテンツストリームを、HESで取り入れることができ、HESは、コンテンツストリームが通過するとき、ソースブロック構造を形成し、元のストリームにソースデータがあるのと同じ量のリペアデータを追加し(100%リペア)、2Mbpsの符号化ストリームを100Kbpsの複数のサブストリームに分割し、結果として得られた20個のサブストリームを20個の異なるDSに送信する。ストリーム内の特定の位置から開始するコンテンツストリームを再生したい受信機は、20個のDSのうちの12個に要求を送信し、指定された開始位置で開始するコンテンツについてDSが有するサブストリームを要求することができる。これに応答して、全12個のDSは、指定された開始点から開始する、符号化ストリームについてそれらが有するサブストリームを受信機に同時に送信し、したがって、12個のDSのそれぞれは、合計レートが1.2Mbpsであるように、受信機に、100Kbpsのレートで送信する。
【0136】
前に説明したように、サブストリームベースの配信システムには、いくつかの利点があり、そのうちの一部または全部は、以下を含めて、本発明の実施形態で見ることができる。1)人気のあるものと無いものとを結合し、サーバに帯域幅容量およびストレージ容量を提供する自然な負荷バランシングの利点を有する、コンテンツの自然な負荷バランシング、2)パス障害の回復力、すなわち、1つのパスが低下し、コンテンツストリームがFEC復号を使用して依然として完全に埋め合わせることができるように、受信機が他のパスから受信している十分なデータが依然としてあること、3)DSクラッシュ、DSディスク障害などに対する頑強さ、4)複数のDSからデータを送信することは、単一サーバから送信する場合に比べて、総送信レートが受信機に維持され、受信機にバッファの欠乏が発生しない確率をより大きく提供する。これは特に、DSから受信機へのサブストリームの送信に、TCPまたはHTTPが使用される場合に該当するが、これは、UDPが、DSから受信機にサブストリームを送信するために使用される場合でさえも該当し、5)システム全体における単一障害点は、HESおよび受信機の入口点にあり、他にある必要はない。
【0137】
<動的インターリービング方法とサブストリームベースの配信方法との結合>
本明細書に記載した動的インターリービング方法およびサブストリームベースの配信方法は、結合してかなりの利点を得ることができる。すなわち、両方の方法のすべての利点は、結合されたソリューションに見られる。例えば、コンテンツストリームがシステムに取り入れられるとき、動的インターリービング方法を使用して、コンテンツストリームのソースブロック構造およびFEC符号化を、HESによって実行することができる。サブストリーム方法は、HESでFEC符号化ストリームの複数のサブストリームを生成するために使用することができ、これらのサブストリームは、次いで異なるDSに送信されて格納することができる。受信機がストリーム内の特定の位置からコンテンツストリームを受信することを望むとき、受信機は、適切な動的インターリービングパラメータを、サブストリームを受信機に送信するすべてのDSに送信することができ、当該DSは、これらのパラメータに従って、サブストリームを受信機に送信する。受信機は、ソースブロックのサブストリームからのパケットをひとまとめにして、再生するために、元のコンテンツストリームを再度作成することができる。動的インターリービング方法によって、予備バッファおよびインターリービング深さは、ストリーミング中に増加させることができ、バースト的パケット損失およびネットワークジッタに優れた保護を提供すると共に、受信機に迅速なチャネルザッピング時間を提供する。この例のソリューションにおけるDSは、FEC符号化を行う必要はなく、それにもかかわらず、ネットワークの異なる部分から分散パスを介してコンテンツストリームを受信機に配信することができ、したがって、配信におけるサーバの多様性およびパスの多様性を増加させ、それによって、サーバおよびネットワーク障害への信頼性および頑強性を増加させる。
【0138】
さらに、各ソースブロックの保護量は、複数のDSと受信機との間より、この例のHESと複数のDSとの間で、かなり高い可能性がある。例えば、20個のサブストリームが生成されて、HESから20個のDSに送信することができるが、元のコンテンツストリームを回復するのに10個のサブストリームしか必要ではないし(100%の保護量)、受信機は、20個のDSのうちの12個から例えば12個のサブストリームしか要求しない(100%の保護量)。100%の保護量は、すなわち、当該DSのうちの1つが故障して、受信機がサブストリームを受信する残りの11個のDSからすべてのパスを介して総合的に10%にも及ぶパケット損失があるとしても、依然として元のコンテンツストリームを回復することができる。
【0139】
上記で概説したソリューション例には、20個のDSのうちの12個を超えるDSのリストを有する受信機に適切な論理を組み込んでおけば、受信機がサブストリームを受信している12個のDSのうちの1つが故障したとき、受信機は、これを自動的に検出し、受信機が現在サブストリームを受信していない他のDSのうちの1つに、別のサブストリームを要求することができ、それによって、11個のサブストリームのバックアップを受信することから、異なる12個のDSからの12個のサブストリームを受信することへと、ストリームの信頼性を増すという追加の特性がある。
【0140】
動的インターリービング方法およびサブストリーム方法を結合するために必要な方法の変更は、比較的軽微である。例えば、動的インターリービング方法の送信時間を決定するために、符号化ブロック内に複数のデータ点を分配する方法を強化して、各DSが、符号化ブロック内のサブストリームごとに、それが有するデータを、符号化ストリームテープ内の符号化ブロックエリアにわたって一様に分配する方法を決定することができるようにする必要がある(図7参照)。データを一様に分配するという、DSによって行われる決定を、他のDSによる決定とは関係ない方法で行い、受信機に送信しているすべてのDSの符号化ブロック内のすべてのサブストリームからのデータの総分配が、符号化ストリームテープ内の符号化ブロックエリアにわたってまったく一様になるようにすることができる(図7参照)。
【0141】
それらを結合するのに必要な方法の変更の別の例として、各パケットで送信された情報を増大して、受信機がそれにサブストリームを送信するDSにストリーム内の特定の位置を指定するとき、すべてのDSが、同じコンテンツのサブストリームを受信機に送信する他のすべてのDSの解釈と一致する方法で、それらが受信機に送信するサブストリームの特定の位置を解釈することができるようにすることが有利である。当業者であれば認識されるように、これらおよび潜在的にいくつかの他の軽微の変更によって、インターリーブでのストリーミング方法およびサブストリームベースの配信方法を結合して、より大きい利益を得ることができる。
【0142】
本発明は、実施形態例を参照して説明してきたが、多数の変更が可能であることを当業者であれば認識され、こうした当業者の認識は、本開示を読むことによってもたらされる。例えば、本明細書に記載したプロセスは、ハードウェア構成要素、ソフトウェア構成要素、および/またはその組合せを使用して実装され得る。したがって、本発明は、実施形態例を参照して記載されているが、本発明は、以下の特許請求の範囲内に含まれるすべての変更および均等物をカバーするものとすることを理解されたい。
【特許請求の範囲】
【請求項1】
少なくとも1つの送信機および少なくとも1つの受信機を含む通信システムにおける、コンテンツストリームを送信する方法であって、
受信機と第1の送信機との間のコネクションを形成することと、
前記第1の送信機から送信された、インターリービングの初期量を含む第1のコンテンツストリームを前記受信機で受信することと、
前記第1のコンテンツストリームのソースブロック構造とは関係なく、前記第1のコンテンツストリームの伝送中に、前記第1のコンテンツストリームに含まれる前記インターリービングの量を調整することと、
を含む方法。
【請求項2】
前記第1のコンテンツストリーム内の前記インターリービングの初期量は、前記第1のコンテンツストリームに初期インターリービングがないように構成される請求項1記載の方法。
【請求項3】
前記第1のコンテンツストリーム内の前記インターリービングの量は、前記初期量から定常状態量に調整される請求項1記載の方法。
【請求項4】
前記第1のコンテンツストリーム内の前記インターリービングは、前記初期量と前記定常状態量との間を直線的に遷移する請求項3記載の方法。
【請求項5】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、時間の関数として調整される請求項1記載の方法。
【請求項6】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、前記第1のコンテンツストリームの再生レートと、前記第1のコンテンツストリームの伝送レートとの間の差の関数として調整される請求項1記載の方法。
【請求項7】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、前記受信機で経験されるデータ損失の量の関数として調整される請求項1記載の方法。
【請求項8】
前記第1のコンテンツストリームの伝送中、前記第1のコンテンツストリームの前記ソースブロック構造は変化しない請求項1記載の方法。
【請求項9】
前記第1のコンテンツストリームからコンテンツの予備バッファを構築すること、
をさらに含む請求項1記載の方法。
【請求項10】
前記予備バッファは、前記第1のコンテンツストリーム内の前記インターリービングの量に行われる任意の調整と同時に構築される請求項9記載の方法。
【請求項11】
前記受信機と第2の送信機との間の第2のコネクションを形成することと、
前記受信機に接続された前記第2の送信機から送信された、インターリービングの初期量を含む第2のコンテンツストリームを前記受信機で受信すること、
前記第2のコンテンツストリームの前記ソースブロック構造とは関係なく、前記第2のコンテンツストリームの伝送中に、前記受信機に配信される前記第2のコンテンツストリームに含まれる前記インターリービングの量を調整することと、
前記第1のコンテンツストリームと前記第2のコンテンツストリームとの間を、前記コンテンツストリームの総伝送レートがほぼ同じレベルを維持するように遷移することと、
をさらに含む請求項1記載の方法。
【請求項12】
前記第1のコンテンツストリームと前記第2のコンテンツストリームとの間の前記遷移は、前記2つのストリームに含まれる前記インターリービングの量の関数として、時間の経過にともない実行される請求項11記載の方法。
【請求項13】
チャネルを通じてデータを送信する送信機において、コンテンツストリームを送信する方法であって、
送信機と受信機との間のコネクションを形成することと、
インターリービングの初期量を含むコンテンツストリームを前記受信機に送信することと、
前記コンテンツストリームのソースブロック構造とは関係なく、前記コンテンツストリームの伝送中に、前記コンテンツストリームに含まれる前記インターリービングの量を調整することと、
を含む方法。
【請求項14】
チャネルを通じてデータを受信する受信機において、コンテンツストリームを受信する方法であって、
受信機と第1の送信機との間のコネクションを形成することと、
前記第1の送信機から送信された第1のコンテンツストリームであって、前記コンテンツストリームのソースブロック構造とは関係なく、前記コンテンツストリームの伝送中に調整することができるインターリービングの初期量を含む前記第1のコンテンツストリームを受信することと、
を含む方法。
【請求項15】
少なくとも1つの送信機および少なくとも1つの受信機を含む通信システムにおける、コンテンツストリームを送信する方法であって、
受信機と複数の送信機との間のコネクションを形成すること、
前記複数の送信機から送信されたコンテンツストリームを前記受信機で受信すること、ここで、各送信機は、前記受信機に前記コンテンツストリームの異なるサブストリームを送信し、各サブストリームは、インターリービングの初期量を含み、及び
前記コンテンツサブストリームのソースブロック構造とは関係なく、前記コンテンツサブストリームの伝送中に、各コンテンツサブストリームに含まれる前記インターリービングの量を調整すること、
を含む方法。
【請求項16】
前記コンテンツサブストリームの伝送中、前記コンテンツサブストリームの前記ソースブロック構造は変化しない請求項15記載の方法。
【請求項17】
各コンテンツサブストリームに含まれる前記インターリービングの量は、他のコンテンツサブストリームに含まれる前記インターリービングの量とは関係ない請求項15記載の方法。
【請求項1】
少なくとも1つの送信機および少なくとも1つの受信機を含む通信システムにおける、コンテンツストリームを送信する方法であって、
受信機と第1の送信機との間のコネクションを形成することと、
前記第1の送信機から送信された、インターリービングの初期量を含む第1のコンテンツストリームを前記受信機で受信することと、
前記第1のコンテンツストリームのソースブロック構造とは関係なく、前記第1のコンテンツストリームの伝送中に、前記第1のコンテンツストリームに含まれる前記インターリービングの量を調整することと、
を含む方法。
【請求項2】
前記第1のコンテンツストリーム内の前記インターリービングの初期量は、前記第1のコンテンツストリームに初期インターリービングがないように構成される請求項1記載の方法。
【請求項3】
前記第1のコンテンツストリーム内の前記インターリービングの量は、前記初期量から定常状態量に調整される請求項1記載の方法。
【請求項4】
前記第1のコンテンツストリーム内の前記インターリービングは、前記初期量と前記定常状態量との間を直線的に遷移する請求項3記載の方法。
【請求項5】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、時間の関数として調整される請求項1記載の方法。
【請求項6】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、前記第1のコンテンツストリームの再生レートと、前記第1のコンテンツストリームの伝送レートとの間の差の関数として調整される請求項1記載の方法。
【請求項7】
前記第1のコンテンツストリームに含まれる前記インターリービングの量は、前記受信機で経験されるデータ損失の量の関数として調整される請求項1記載の方法。
【請求項8】
前記第1のコンテンツストリームの伝送中、前記第1のコンテンツストリームの前記ソースブロック構造は変化しない請求項1記載の方法。
【請求項9】
前記第1のコンテンツストリームからコンテンツの予備バッファを構築すること、
をさらに含む請求項1記載の方法。
【請求項10】
前記予備バッファは、前記第1のコンテンツストリーム内の前記インターリービングの量に行われる任意の調整と同時に構築される請求項9記載の方法。
【請求項11】
前記受信機と第2の送信機との間の第2のコネクションを形成することと、
前記受信機に接続された前記第2の送信機から送信された、インターリービングの初期量を含む第2のコンテンツストリームを前記受信機で受信すること、
前記第2のコンテンツストリームの前記ソースブロック構造とは関係なく、前記第2のコンテンツストリームの伝送中に、前記受信機に配信される前記第2のコンテンツストリームに含まれる前記インターリービングの量を調整することと、
前記第1のコンテンツストリームと前記第2のコンテンツストリームとの間を、前記コンテンツストリームの総伝送レートがほぼ同じレベルを維持するように遷移することと、
をさらに含む請求項1記載の方法。
【請求項12】
前記第1のコンテンツストリームと前記第2のコンテンツストリームとの間の前記遷移は、前記2つのストリームに含まれる前記インターリービングの量の関数として、時間の経過にともない実行される請求項11記載の方法。
【請求項13】
チャネルを通じてデータを送信する送信機において、コンテンツストリームを送信する方法であって、
送信機と受信機との間のコネクションを形成することと、
インターリービングの初期量を含むコンテンツストリームを前記受信機に送信することと、
前記コンテンツストリームのソースブロック構造とは関係なく、前記コンテンツストリームの伝送中に、前記コンテンツストリームに含まれる前記インターリービングの量を調整することと、
を含む方法。
【請求項14】
チャネルを通じてデータを受信する受信機において、コンテンツストリームを受信する方法であって、
受信機と第1の送信機との間のコネクションを形成することと、
前記第1の送信機から送信された第1のコンテンツストリームであって、前記コンテンツストリームのソースブロック構造とは関係なく、前記コンテンツストリームの伝送中に調整することができるインターリービングの初期量を含む前記第1のコンテンツストリームを受信することと、
を含む方法。
【請求項15】
少なくとも1つの送信機および少なくとも1つの受信機を含む通信システムにおける、コンテンツストリームを送信する方法であって、
受信機と複数の送信機との間のコネクションを形成すること、
前記複数の送信機から送信されたコンテンツストリームを前記受信機で受信すること、ここで、各送信機は、前記受信機に前記コンテンツストリームの異なるサブストリームを送信し、各サブストリームは、インターリービングの初期量を含み、及び
前記コンテンツサブストリームのソースブロック構造とは関係なく、前記コンテンツサブストリームの伝送中に、各コンテンツサブストリームに含まれる前記インターリービングの量を調整すること、
を含む方法。
【請求項16】
前記コンテンツサブストリームの伝送中、前記コンテンツサブストリームの前記ソースブロック構造は変化しない請求項15記載の方法。
【請求項17】
各コンテンツサブストリームに含まれる前記インターリービングの量は、他のコンテンツサブストリームに含まれる前記インターリービングの量とは関係ない請求項15記載の方法。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−31173(P2013−31173A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−162865(P2012−162865)
【出願日】平成24年7月23日(2012.7.23)
【分割の表示】特願2010−504224(P2010−504224)の分割
【原出願日】平成20年4月16日(2008.4.16)
【出願人】(501114844)デジタル ファウンテン, インコーポレイテッド (25)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2012−162865(P2012−162865)
【出願日】平成24年7月23日(2012.7.23)
【分割の表示】特願2010−504224(P2010−504224)の分割
【原出願日】平成20年4月16日(2008.4.16)
【出願人】(501114844)デジタル ファウンテン, インコーポレイテッド (25)
【Fターム(参考)】
[ Back to top ]