JP5788442B2 - データストリームに対するブロックパーティショニング - Google Patents

データストリームに対するブロックパーティショニング Download PDF

Info

Publication number
JP5788442B2
JP5788442B2 JP2013167912A JP2013167912A JP5788442B2 JP 5788442 B2 JP5788442 B2 JP 5788442B2 JP 2013167912 A JP2013167912 A JP 2013167912A JP 2013167912 A JP2013167912 A JP 2013167912A JP 5788442 B2 JP5788442 B2 JP 5788442B2
Authority
JP
Japan
Prior art keywords
data stream
block
stream
data
cumulative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013167912A
Other languages
English (en)
Other versions
JP2014014107A (ja
Inventor
パヤム・パクザド
マイケル・ジー.・ルビー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2014014107A publication Critical patent/JP2014014107A/ja
Application granted granted Critical
Publication of JP5788442B2 publication Critical patent/JP5788442B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4383Accessing a communication channel
    • H04N21/4384Accessing a communication channel involving operations to reduce the access time, e.g. fast-tuning for reducing channel switching latency

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

関連出願に対する相互参照
本出願は、「データストリームに対する最適なブロックパーティショニング方法」と題し、2009年2月13日に出願された米国仮出願番号第61/152,551号の利益を主張し、この出願は、本出願の譲受人に譲渡され、すべての目的のためにここに参照により明示的に組み込まれている。
背景
本開示は、メディアまたはデータのストリーミングに関連し、特に、ブロックパーティショニングに関連する。
ストリーミングアプリケーションでは、受信したデータを最小量の遅延で使用できることが重要であることが多い。例えば、メディアをストリーミングするときに、受信機は、可能な限り早くメディアの再生を開始できる必要があり、データの不十分さの予測できるイベントが原因で、後にストリーム中で再生が中断されるべきではない。ストリーミングアプリケーションにおける別の重要な制約は、ストリームを送るために使用する送信帯域幅を最小に、または、減少させる必要性である。例えば、利用可能な帯域幅が制限され、より広い帯域幅で送ることはより費用がかかり、または、データの競合フローが利用可能な帯域幅を共有するので、この必要性が生じ得る。
多くのストリーミングアプリケーションでは、データストリームは、受信機においてどのようにデータストリームを消費し得るかを決定する基礎となる構造を有している。例えば、ビデオストリーミングの際に、データストリームは、データのフレームのシーケンスを含んでいてもよい。特定の時点でビデオフレームを表示するために、それぞれのフレーム中のデータを使用する。ここで、ビデオフレームを表示することは、データストリームを消費すると考える。効率的なビデオ圧縮のために、データのフレームは、類似して見えるビデオフレームに表示する、データの他のフレームに依存することができる。フレームに対するデータの送信順序は、フレームの表示順序とは異なっているかもしれない。すなわち、フレームに対するデータは、典型的に、直接的におよび間接的に、このフレームに対するデータが依存しているフレームのデータをすべて送った後に送られる。これらのタイプのストリーミングアプリケーションにおいて、データストリームの中断のない消費を提供するために、連続ビデオフレームの表示は、非常に固定された時間間隔で(例えば、秒当たり24フレームで)間隔をあける必要があり、フレームを表示するのに必要な、ストリーム中のすべてのデータは、そのフレームに対する表示時間より前に受信機に到達している必要がある。したがって、受信機におけるデータの消費モデルと組み合わせたデータストリームの基礎となる構造は、データストリームの中断のない消費のためにいつ、データが受信機に到達する必要があるかを決定する。
ストリーミングアプリケーションでは、データのオリジナルストリームをブロックにパーティションすることが効果的であることが多い。例えば、パケット損失があるリンクを通してストリーミングするとき、パケット損失またはエラーに対する保護を提供するために、前方誤り訂正(FEC)コードを、それぞれのブロックに適用することができる。別の例として、危険に曝されたリンクを通してのストリームの送信を安全にするために、暗号化スキームをそれぞれのブロックに適用することができる。このようなシチュエーションでは、あるブロックの目的を満たすブロックにストリームをパーティションすることが効果的であり、例えば、FECを適用するときには、FEC送信に対する付加的な帯域幅を使用する犠牲を払って可能な最大保護を提供できることが効果的であり、または、暗号化を適用するときには、受信機における解読のための処理要件を分散することが効果的である。
これらのアプリケーションでは、データストリームは、受信機におけるブロック全体の単位での消費に対して利用可能であるケースが多い。すなわち、ブロック内のデータは、そのブロックを含むすべてのデータが受信機において利用可能になるまで、受信機における消費に対して利用可能ではない。したがって、ブロックパーティショニング方法は、データストリームの中断のない消費を達成するとともに、データストリームの送信および消費の他の態様を達成するのに必要な、スタートアップ遅延および送信帯域幅に影響を与えることがある。
必要とされているものは、データストリームの中断のない消費を達成するために、最小スタートアップ遅延を達成し、最小送信帯域幅を使用すると同時に、ブロックの目的を満たすブロックパーティショニング方法である。
いくつかのストリーミングアプリケーションでは、ストリーム内の多数のスターティングポイントのうちのいずれか1つからのデータストリームを消費することに、受信機が加わったり開始できることが必要とされるかもしれない。したがって、上記の目的を満たして、ストリーム内の多数のスターティングポイントのうちのいずれか1つからのデータストリームの消費を受信機が開始することもできるブロックパーティショニング方法もまた必要とされているものである。
概要
開示にしたがった、送信機から受信機にデータストリームを供給する例示的な方法は、データストリームの基礎となる構造を決定することと;(1)送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、(2)データストリームを送るのに必要な送信帯域幅を減少させることと、(3)データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的を決定することと;少なくとも1つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信することとを含む。
このような方法の実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する例示的な方法は、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定することと;データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第1のセット中に存在するまで、次の連続ブロックの候補開始位置の第1のセットを反復して決定することと;データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定することと;最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、(1)データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットと、(2)現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第2のセットと、の共通部分を決定することと;共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定することと;データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定することとを含む。
このような方法の実施形態は、以下の特徴のうちの1つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され、データストリームを供給する通信リンクが、累積リンク容量関数によって規定され;累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積リンク容量関数とターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する例示的な方法は、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割することと;複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと;複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと;データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定することとを含み、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
データストリームを供給する例示的なサーバは、データストリームの基礎となる構造を決定するように構成され、(1)送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、(2)データストリームを送るのに必要な送信帯域幅を減少させることと、(3)データストリームのブロックが、予め定められたブロック制約を満たすことを保証することのグループから選択された、少なくとも1つの目的を決定するように構成されているプロセッサと;プロセッサに結合され、少なくとも1つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信するように構成されている送信機とを具備する。
このようなサーバの実施形態は、以下の特徴のうちの1つ以上を含んでいてもよい。予め定められたブロック制約が、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む。データストリームが、ビデオコンテンツを含み、データストリームのブロックが、ユーザデータグラムプロトコルを使用して送信される。
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する例示的なサーバは、データストリームの最初のブロックの開始位置を規定するようにと;最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットを反復して決定することによって、データストリームの最後のブロックを決定するようにと;データストリームの最後のブロックのエンドポイントを規定するようにと;最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、第1のセットと、現在のブロックに続く次の連続ブロックの候補開始位置の第2のセットとの共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを反復して規定するようにと;データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定するように構成されているプロセッサを具備する。
このようなサーバの実施形態は、以下の特徴のうちの1つ以上を備えていてもよい。サーバは、プロセッサに結合され、候補開始位置の第1のセットを記憶するメモリを備える。サーバは、プロセッサに結合され、データストリームとして供給されることになるコンテンツを記憶する記憶デバイスを備える。データストリームは、累積ストリームサイズ関数によって規定され、データストリームを供給する通信リンクが、累積リンク容量関数によって規定され;累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され;ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積リンク容量関数とターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する例示的なサーバは、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割するようにと;複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと;複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと;データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定するように構成されているプロセッサを備え、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
例示的なコンピュータプログラムプロダクトは、データストリームの基礎となる構造をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と;(1)送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、(2)データストリームを送るのに必要な送信帯域幅を減少させることと、(3)データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と;送信機から受信機にデータストリームを供給するためのブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備し、ブロックパーティションは、データストリームのブロックの送信および受信が、少なくとも1つの目的と、基礎となる構造とに一致していることを保証する。
このようなコンピュータプログラムプロダクトの実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
例示的なコンピュータプログラムプロダクトは、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と;データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第1のセット中に存在するまで、次の連続ブロックの候補開始位置の第1のセットを反復して、プロセッサに決定させ、現在のブロックとして、データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と;データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と;最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、(1)データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットと、(2)現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第2のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と;共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と;データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備する。
このようなコンピュータプログラムプロダクトの実施形態は、以下の特徴のうちの1つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され;データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積リンク容量関数とターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
例示的なコンピュータプログラムプロダクトが、それぞれの探索ポイントが、データストリーム中のポイントであり、受信機が、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、特定の探索ポイントの一方側のデータが、特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有するデータストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と;複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的にプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と;複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と;データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備する。
送信機から受信機にデータストリームを供給するように構成されている例示的な装置は、データストリームの基礎となる構造を決定する手段と;(1)送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、(2)データストリームを送るのに必要な送信帯域幅を減少させることと、(3)データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的を決定する手段と;少なくとも1つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信する手段とを具備する。
このような装置の実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている例示的な装置は、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定する手段と;データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第1のセット中に存在するまで、次の連続ブロックの候補開始位置の第1のセットを反復して決定して、現在のブロックとして、データストリームの最後のブロックを規定する手段と;データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定する手段と;最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、(1)データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットと、(2)現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第2のセットとの共通部分を決定する手段と、共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定する手段と、データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定する手段とを具備する。
このような装置の実施形態は、以下の特徴のうちの1つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され;データストリームを供給する通信リンクが、累積リンク容量関数によって規定され;累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され;累積リンク容量関数とターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するように構成されている例示的な装置は、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割する手段と;複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と;複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と;データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定する手段とを具備し、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
ここで記述したブロックパーティショニング方法によって提供される能力は、以下を含む。ここで記述したブロックパーティショニング方法は、実現するのに計算効率がよい。ストリームされることになるデータの、所定の基礎となる送信順序および消費構造に対して、ここで記述したブロックパーティショニング方法は、ブロックされたデータストリームを受信する受信機におけるスタートアップ遅延が最小である方法でデータストリームをパーティションする。さらに、ここで記述したブロックパーティショニング方法により提供されるブロック構造に基づいてエンコードするブロックFECコードとともにブロックパーティショニング方法を使用するときに、ストリームの破損に対する所定のレベルの保護を提供するのに必要な付加的な送信帯域幅が、最小である。データストリーム内の任意のポイントから始まるデータストリームを受信機が受信するとき、または、データストリーム内の任意のポイントから始まるデータストリームを要求するときでさえも、これらの利益を達成することができる。データストリームレートが経時的に可変であるときでさえも、これらの利益を達成することができる。
図1は、可変ビットレート(VBR)データストリームの、瞬間的なおよび平均提示レートを図示しているプロットである。 図2は、スタートアップ遅延とリンク容量との間の典型的なトレードオフの曲線を図示しているプロットである。 図3は、累積ストリームサイズ(CSS)関数および累積リンク容量(CLC)関数の例を図示しているプロットである。 図4は、単一のデータストリームに対する、2つのブロック化された累積ストリームサイズ(BCSS)関数の例を図示しているプロットである。 図5は、固定された送信帯域幅に対するスタートアップ遅延を減少させる幾何学的解釈を図示しているプロットである。 図6は、固定されたスタートアップ遅延に対する送信帯域幅を減少させる幾何学的解釈を図示しているプロットである。 図7は、固定されたスタートアップ遅延および固定された送信帯域幅に対するデータストリームのエンコーディング品質を向上させる幾何学的解釈を図示しているプロットである。 図8は、データストリームのブロックに対する1セットの可能な開始位置を決定するためのプロジェクション演算の幾何学的解釈を図示しているプロットである。 図9は、データストリームを供給するブロックパーティションを決定するプロセスのブロックフロー図である。 図10は、データストリームのブロックに対する不可能な開始位置の幾何学的解釈を図示しているプロットである。 図11は、データストリーム中の複数のスターティングポイントに対する実効スタートアップ遅延の例を図示しているプロットである。 図12は、複数のスターティングポイントを有するデータストリームを供給するグローバルブロックパーティションを決定するプロセスのブロックフロー図である。
詳細な説明
ここで記述した技術は、送信機から受信機にデータストリームを供給するためのメカニズムを提供し、データストリームのブロックの送信および受信は、データストリームの基礎となる構造と、データストリームを供給するために決定された1つ以上の目的とに一致している。データストリームを供給する目的は、送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと;データストリームを送るのに必要な送信帯域幅を減少させることと;データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとを含む。データストリームを供給するためのグローバルブロックパーティションを決定するための技術も記述する。ここで、データストリームは、複数の可能性ある探索ポイントを有し、受信機は、最大スタートアップ遅延内でデータストリームを消費するのを開始できる。他の実施形態は、開示および特許請求の範囲の範囲内である。
リアルタイムストリーミングアプリケーションに対しては、送信機が、受信機において受信され、最小量の遅延で消費されることになるデータのストリームを供給する。1つのアプリケーションはメディアストリーミングであり、メディアコンテンツは、ストリーミングが開始した直後に、表示または提示されることが予想される。本開示は、メディアストリーミングからの例を含むが、引き起こされる問題およびここで記述した方法の範囲は、メディアアプリケーションの範囲を超えて適用可能であり、データがストリーミングされている間、データのストリームが中断しないで消費されることになる任意のリアルタイムストリーミングアプリケーションを含む。とはいえ、参照を容易にするために、本開示は、一般的に、メディアストリーミングアプリケーションに適用される専門用語を含んでいる。特に明記しない限り、データストリームの、「消費」という用語や、「提示」という用語や、「表示」という用語は、以下では、区別なく使用している。特に明記しない限り、参照を容易にするために、以下では、データのサイズはビットの単位で表現し、時間は秒の単位で表現し、レートは秒当たりのビットの単位で表している。
開示した技術を使用できる多くの環境が存在する。1つの例は、データストリームが多くの受信機に対して同時に利用可能であるブロードキャスト/マルチキャストネットワークを通した、受信機に対するオーディオ/ストリーミングビデオである。この例では、受信機が、さまざまな時点で、ストリームに加わること、または、ストリームを離れることがあるので、受信機がストリームに加わるときと、消費のためにビデオが最初に利用可能なときとの間のスタートアップ時間を、減少させることまたは最小限にすることは重要である。例えば、ビデオストリームを見ることを開始するようにユーザが最初に要求したときに、ユーザがストリームを見るように要求した後にビデオが受信機デバイスの表示スクリーン上に現れるのにどのくらいかかるかは、ユーザによって認識されるように、提供されるサービスの品質に対して極めて重要であり、スタートアップ時間は、この時間に対して寄与するものである。別の例として、ユーザが1つのストリームを見ていて、「チャネルを変更」して、異なるストリームを見ようと決めたときに、最初のビデオが受信機デバイスの表示スクリーン上に現れるのを止めて、第2のストリームが受信機デバイスで表示され始めるのにどのくらいかかるかは、ユーザによって認識されるように、提供されるサービスの品質に対して極めて重要であり、スタートアップ時間は、この時間に対して寄与するものである。別の例は、個々の受信機がデータストリームを要求するユニキャストネットワークを通したオーディオ/ビデオストリーミングであり、例えば、エンドユーザがビデオストリームをサンプリングし、ストリームの異なる部分を見ようとあちこちにジャンピングすることに応答して、ストリーム内の異なるポイントにおいてストリームを消費することを開始するように要求するかもしれない。基礎となるパケット転送プロトコルは、ユーザデータグラムプロトコル(UDP)によるムービングピクチャエキスパートグループ−2(MPEG−2)、UDPによるリアルタイム転送プロトコル(RTP)、ハイパーテキスト転送プロトコル/送信制御プロトコル(HTTP/TCP)、UDPによるデータグラム輻輳制御プロトコル(DCCP)、またはさまざまな他の転送プロトコルのうちの任意のものであってもよい。これらのケースのすべてでは、ストリーム内での破損から保護するために、例えば、UDPまたはRTPを使用しているときにパケット損失から保護するために、または、「向上したブロック−要求ストリーミングシステム」と題する、2009年9月22日に提出された米国仮出願番号61/244,767号中でより詳細に記述したように、HTTPを使用しているときに時間損失から保護するために、FECエンコーディングを使用してストリームを保護することが重要であることが多い。この米国仮出願は、すべての目的のためにここでの参照により明確にここに組み込まれている。
例えば、データストリームが、MPEG−2ビデオエンコーディング、あるいは、H.263またはH.264ビデオエンコーディングであるときや、データストリームが、オーディオデータとビデオデータとを組み合わせたものであるときに、基礎となる、データ送信および消費構造は、極めて複雑であるかもしれない。さらに、これらの例では、ストリーム内でのデータ送信順序は、データ消費構造とは異なることが多い。例えば、ピクチャのグループ(GOP)に対する典型的な消費順序は、I−B−B−B−P−B−B−B−Pであるかもしれず、ここでは、Iは、I−フレームまたはイントラコード化されたフレームのことを指し、Pは、P−フレームまたは予測エンコードされたフレームのことを指し、Bは、B−フレームまたは双方向予測されエンコードされたフレームのことを指す。この例では、P−フレームは、I−フレームに依存しており、B−フレームは、周囲のI−フレームとP−フレームとに依存している。代わりに、このシーケンスに対する送信順序は、I−P−B−B−B−P−B−B−Bであるかもしれない。すなわち、たとえ、P−フレームに依存している3つのB−フレームの後にP−フレームが表示されるとしても、この例におけるそれぞれのP−フレームは、これらの3つのB−フレームの前に送られる。したがって、ブロックパーティショニング方法は、さまざまな送信順序と消費構造とを考慮に入れることが可能である必要がある。ここで記述した方法を適用できるさまざまな異なるタイプのデータストリームが存在する。例えば、テレメトリーデータストリームや、遠隔ビークルまたはデバイスを動作させるためのコマンドおよび制御で使用するデータストリームや、ここでリストアップした余りにも多すぎる構造を持つさまざまな他のタイプのデータストリームのようなものがある。ここで記述したブロックパーティショニング方法は、異なる送信構造および消費構造を有する任意の数の異なるタイプのデータストリームに適用する。オリジナルデータを、必ずしも、本質的にストリームであると考える必要さえない。例えば、高い解像度マップに対するデータを、異なる解像度の階層に編成してもよく、データストリームの最初の部分が到達し、消費されるときに、低い解像度での、ストリームのクイックな表示を可能にする送信順序および消費順序で編成してエンドユーザにストリームとして送ってもよく、そして、マップの表示は、データストリームの付加的な部分が到達し、消費されるときに、次第に改良され、更新される。
ここで記述したブロックパーティショニング方法を使用してもよい環境は、リアルタイムストリーミングを含み、リアルタイムストリーミングでは、可能な限り少ない計算リソースを使用して発生させるように、データストリームの部分に方法をクイックに適用できることが重要である。ブロックパーティショニング方法は、既に処理されたコンテンツのオンデマンドストリーミングにも適用することができ、オンデマンドストリーミングでは、データがストリームされる前に、データストリーム全体が処理に対して利用可能であるかもしれない。ブロックパーティショニング方法を適用するために利用可能な計算リソースが制限されていることや、方法が適用される多量のデータストリームが存在することがあるので、ブロックパーティショニング方法を計算効率がよい方法で適用できることも、オンデマンドストリーミングケースには重要である。
多くの異なるプラットフォームは、発信元から宛先にデータをストリーミングすることをサポートすることができる。発信元は、コンピュータ、サーバ、クライアント、無線ブロードキャストタワー、ワイヤレス送信機、ネットワーク使用可能なデバイス等とすることができる。宛先は、コンピュータ、サーバ、クライアント、無線受信機、テレビ、ワイヤレスデバイス、電話機、ネットワーク使用可能なデバイス等とすることができる。発信元および宛先は、ワイヤード、ワイヤレスのうちの1つ以上である(ノイズがないまたは損失の多い)チャネルによって、あるいは、(例えば、ストリームが、発信元として記憶装置中に記憶されている場合や、記憶装置を形成するデバイスまたは媒体から、宛先として読み取られる場合には)時間的なチャネルによって分けることができる。
他のハードウェア、ソフトウェア、ファームウェア等を使用することができる。これらのプラットフォームは、ここで記述した演算の方法を具現化する命令にしたがってプログラム化することができる。
ストリーミングアプリケーションでは、データは、複数の連続的なブロックにパーティションされる必要があることがあり、それぞれのブロックは、そのブロックを復元するのに十分なデータが受信機において受信されたときにデコード可能である。例えば、それぞれのブロックは、パケット損失またはエラーから保護するために、FECコードを使用してエンコードすることができる。別の例として、セキュリティのために、それぞれのブロックは暗号化することができる。
ブロック上には制約が存在することが多い。FECエンコードされたブロックの例に対しては、より短いブロックが提供するのは、より消去の少ない保護であり、より短いブロックは、ネットワークを通したバースト的なパケット損失またはエラーに脆弱である。したがって、少なくとも、指定された最小サイズのFECブロックをエンコードすることが好ましいことが多い。データストリーム内のブロック境界の位置の特定の選択を、以下では、「ブロックパーティション」と呼ぶ。最小ブロックサイズのような、指定されたブロック制約に適合するブロックパーティションを「実現可能な」パーティションと呼ぶ。
多くのアプリケーションは、可変ビットレート(VBR)性質のものであるデータストリームを使用する。ビデオストリーミングケースでは、例えば、ビデオのハイアクション部分には、エンコードするために、より多くのデータが必要であり、その結果、リアルタイムで送信するためには、ビデオの静止部分よりもより広い帯域幅が必要である。例えば、VBRエンコーディングを使用すると、秒ごとにエンコードされる、ビデオのデータ量が、ビデオの異なる部分で劇的に変わることがある。表示されるビデオの品質に関してビデオ全体をエンコードするのに必要とされるデータ量によって測定されるように、VBRは、大抵、一定ビットレート(CBR)エンコーディングよりも、さらに一層の効率的なビデオのエンコーディングを提供する。さらに、最新のビデオエンコーディング技術は、参照方法を伴う。ここで、エンコーディング効率性のために、いくつかのフレームは、他のフレームに関して差分的に記述される。参照されるフレームは、差分的に記述されるフレームよりも、はるかに大きく、フレームごとのレベルにおけるビットレートでの変動に寄与する。
データストリームのVBR性質は、データストリームの消費に関する。すなわち、VBR性質は、中断のない消費を保証する、受信機におけるデータ消費のレートでの変動性を示す。例えば、消費のレートが、秒当たり500万ビット(Mbps)となることがある一方で、消費のレートは、1Mbpsとなることもある。VBR性質のデータストリームは、固定量の送信帯域幅を使用して、依然として送信することができる。例えば、送信機は、3Mbpsの不変のビットレートでVBR性質のデータストリームを送ることができる。したがって、データストリームは、データストリームが消費されるレートよりもゆっくりなレートで受信機に到達するときもあれば、データストリームが消費されるレートよりも速いレートで受信機に到達するときもある。
図1は、例示的なVBRストリームに対する瞬間的な消費または提示レート110を図示しており、そして、破線の横線を使用して、提示平均ビットレート(ABR)120を図示している。
所定のデータストリームに対しては、データストリームの送信を送信機が始めるときと、ストリームの中断のない提示を受信機が開始できるときとの間の遅延(以下では「スタートアップ遅延」と呼ぶ)と、ストリーミングに使用されるリンクの容量との間にはトレードオフが存在する。受信機が、リンク容量で、または、リンク容量を下回ってストリームを受信し続ける場合に、受信機が、ストリームの何らかの部分を消費、提示、または表示する必要があるときまでに、受信機がその部分を受信することになるとすれば、受信機は、ストリームの「中断のない提示」を提供することができる。所定のデータストリームに対しては、中断のない提示を保証する、リンク容量とスタートアップ遅延との組み合わせを、「達成可能な」ペアと呼ぶ。
データストリームの平均ビットレートと比較してリンク容量が非常に大きい場合には、受信機は、データの大きな部分を非常に少ない時間量で受信することができ、消費レートまたは提示レートよりもより高いレートで受信し続けるだろう。このシナリオでは、非常に少ないスタートアップ遅延を達成することができる。別のシナリオでは、ストリームの平均ビットレートと比較してリンク容量が非常に小さい場合には、データストリームに対するデータの大半が受信されるまで、受信機は、提示を開始することはできないだろう。この時間より前に、受信機が開始する場合には、受信機は、データストリームの中間で消費または提示を中断する必要があるだろう。したがって、スタートアップ遅延が大きくなるかもしれない。
所定のデータストリームに対しては、リンク容量とスタートアップ遅延との間のトレードオフは、ほとんどすべての実用的アプリケーションに対して、図2中に図示しているように、凸減少関数である。
所定のデータストリームに対して、それぞれの実現可能なブロックパーティションは、特定の容量対遅延のトレードオフ曲線に対応している。
ここで記述する装置、システム、および方法は、達成可能である、リンク容量とスタートアップ遅延との組み合わせを決定し、特定の達成可能なペアを保証する実現可能なブロックパーティションを見出す。
データストリームの標準的な表現
ここで、装置、システム、および方法を記述するのを容易にするために、データストリームの提示時間の基礎となる構造は、標準的な形態で表現することができる。データストリームに対する固定されたデータ送信順序を仮定している。ストリーム中での提示時間tをその引数として取り、時間tまでのストリーム、および、時間tを含むストリームを提示するために受信される必要があるデータストリームの初期の部分の(ビットでの)サイズを戻す、「累積ストリームサイズ」関数L(t)(以下ではCSS関数と呼ぶ)を規定する。記述を容易にするために、データストリームの最初の部分が受信機において提示されたときに、提示時間はゼロであると仮定する。したがって、L(t)は、データストリームを提示するのを受信機が最初に開始した後の時間t内に受信され提示される必要があるデータストリームの初期のビット数を表している。
いくつかのケースでは、ビットの提示が行われる提示時間は、実質的に、継続的であることがあるのに対し、他のケースでは、ビットの提示が行われる提示時間は、時間的に離散的なポイントであることがあり、時間を通して間隔が均一にあけられていることがある。時間的に間隔が均一にあけられた提示時間の例は、正確に、秒当たり24フレームでプレイアウトされることになっているビデオストリームである。このケースでは、ビットは、均一に間隔があけられた1/24秒の間隔で消費される。他のフレームレートが可能であり、秒当たり24フレームのレートは、単なる例である。
CSS関数は、データストリームに適用される任意のブロックパーティショニング方法の選択と無関係とすることができ、提示時間tの非減少関数である。すなわち、t1<t2であるときにはいつでも、データストリームの初期のL(t2)ビットは、t2まで提示するのに十分である。t2は、t1までの提示を含むので、L(t2)≧L(t1)である。CSS関数の代替的な解釈は、その逆数L-1(s)によるものであり、その逆数L-1(s)は、データストリームのその初期の部分のサイズsによって識別される、データストリームのそれぞれの初期の部分に対して、データストリームのその初期の部分の提示可能な持続時間の量を与える。この逆関数も非減少関数である。
例として、次の3つのタイプのフレーム;他のフレームを何ら参照しない、イントラ(I)フレームまたはキーフレームと;過去に提示されたI−フレームおよびP−フレームを参照することができる予測(P)フレームと;過去に提示されたI−フレームおよびP−フレームと、将来に提示されるI−フレームおよびP−フレームとの両方とも参照することができる双方向性(B)フレームとで、ムービングピクチャエキスパートグループ(MPEG)標準規格にしたがってエンコードされるビデオストリームを考える。GoP内のフレームのサンプルパターンは、以下:I1−B2−P3−B4−P5−B6−P7−B8−P9−...−Pnのようにすることができ、ここで、それぞれのフレームの後のインデックスは、そのフレームの提示順序を表す。例えば、ビデオが、固定されたフレームレートで提示されることになる場合、それぞれのインデックスは、それぞれの連続提示時間の間に発生する固定量の時間を表す。例として、フレームレートが秒当たり24フレームである場合、それぞれのフレームは、前のフレームの後に、1/24秒提示することになる。したがって、インデックス1を持つフレームの提示時間はゼロであり、その後にインデックス付けされているそれぞれのフレームiの提示時間は、この例では、(i−1)/24秒である。MPEGの例をここで挙げたが、本開示の主題事項はこれに限定されない。
典型的に、ビデオデータストリーム中のフレームの送信順序は、デコーディング順序である。なぜなら、このことが、中断のない提示を可能にするために、どのくらいのデータストリームを受信する必要があるかに影響を与えずに、受信機においてビデオをデコードするのに必要なバッファ空間の量を最小にするからである。先の例示を続けて、それぞれのB−フレームが、隣接するP−フレームのみ参照すると仮定すると、先のパターンに対するデコーディング順序(したがって、送信順序)は、I1−P3−B2−P5−B4−P7−B6−P9−B8...である。
インデックスiを持つフレームのビットのサイズを、s(i)によって示すと、このデータストリームの例に対するCSS関数は、
Figure 0005788442
である。
先の例では、提示時間は、離散的であり、CSS関数L(t)は、これらの離散的なポイント上でのみ規定することができる。しかしながら、本開示全体を通して記述する連続的なケースとの一貫性のために、L(t)は、L(t)の先の規定にしたがった、連続的な時間引数tの関数として与えられる。したがって、t1およびt2が、ストリームに対する2つの連続した離散的な提示時間である場合に、すべてのt1≦t<t2に対して、L(t)=L(t1)と規定する。
CSS関数は、一般的に、ストリームについてのすべての関連する提示時間情報を捕捉している。この関連する提示時間情報は、ストリームの瞬間的な提示レートの何らかの変動と、予め規定された送信順序でのサンプル間の可能性ある提示依存性とを含む。CSS関数によって、それぞれのデータストリームを表すことができる。リンク容量およびスタートアップ遅延の達成可能なペアを決定する技術は、任意のCSS関数から開発することができ、所定のデータストリームの特定のCSS関数に適用できる。
ストリーミングリンク容量を表すために、類似した関数を規定することができる。「累積リンク容量」関数(以下では、CLC関数と呼ぶ)は、非減少関数C(t)であり、非減少関数C(t)は、送信時間tまでリンクアップを通して送信することができるデータの最大量である、送信時間tにおける値を有する。すなわち、C(t)は、送信時間0から時間tまでの瞬間的なリンク容量の積分である。同様に、リンクを通してsビットのデータストリームを送信するのに必要な時間として、C-1(s)を規定する。
(例えば、秒当たりのビットの単位での)rの固定容量を有するリンクに対しては、勾配rのある線のようにC(t)表すことができる。すなわち、送信時間tに対してC(t)=r×tである。
CLC関数C(t)を有するリンク上で、ストリーム中のすべての提示時間tに対してL(t)≦C(t+d)である場合には、スタートアップ遅延dより後に、CSS関数L(t)有するストリームの中断のない提示が可能である。これは、それぞれの送信時間(t+d)において、受信機が、スタートアップ遅延の始まりからd秒後にデータを提示するのを開始した後の最初のt秒内に、データストリームの初期の部分の少なくともL(t)ビットを受信している必要があるからである。しかしながら、この条件は、ブロッキングを使用する場合に、以下で記述するブロックパーティショニング方法上での付加的な制約を考慮に入れていない。
図3は、d=5/24秒で、かつr=96000ビット/秒の、先の条件の図示的解釈を示している。ここで、CLC関数C(t+d)320に対応している線は、CSS関数L(t)310の曲線よりも常に上にある。ステップは、先の例に対応している特定のデータストリームCSSを図示している。ここで、s(l)=10,000ビットであり、s(2)=2,000ビットであり、s(3)=6,000ビットであり、s(4)=1,500ビットであり、s(5)=5,000ビットであり、s(6)=3,000ビットであり、s(7)=7,000ビットであり、s(8)=2,500ビットであり、s(9)=8,000ビットである。したがって、このデータストリームの例に対するCSS関数L(t)310は、
Figure 0005788442
である。
ブロックパーティショニングによるデータストリームの標準的な表現
データストリームがブロックにパーティションされるときには、例えば、ブロックごとのベースでFECまたは暗号化をストリームに適用することになるので、しばしば、ブロック全体を受信したときにだけ、データストリームのブロックを提示または消費できることがある。したがって、ブロックパーティショニング方法は、データストリームへの適用は、結果的に、(以下ではBCSS関数と呼ぶ)「ブロック累積ストリームサイズ」関数B(t)を有するブロック化されたデータストリームになることが多い。BCSS関数B(t)は、引数として、ストリーム中での提示時間tを有しており、時間tまでのストリーム、および、時間tを含むストリームを提示するために受信される必要があるデータストリームの初期の部分の(ビットでの)サイズを返す。データストリームの一部分は、ブロックベースで提示する必要がある。すなわち、データがその一部であるブロック全体がいったん到達すると、データを提示することができる。
提示のためにデータが利用可能である必要があるときに関する付加的な制約をブロック構造が追加することを除いて、BCSS関数B(t)は、CSS関数L(t)に類似している。したがって、データストリームのBCSS関数B(t)は、ブロックパーティショニング方法をデータストリームに適用することから結果として生じるブロック構造にかかわらず、同じデータストリームに対してCSS関数L(t)よりも、常に上のままである。データストリームの中断のない提示をサポートするために必要とされる、達成可能なスタートアップ遅延およびリンク帯域幅の点で、可能な限りデータストリームに対してCSS関数L(t)よりも少し上であるBCSS関数B(t)を有することが好ましい。CSS関数L(t)に可能な限り近くて、ブロック制約を満たしているBCSS関数B(t)を生じさせるブロックパーティショニング方法を使用することは、以下で記述するブロックパーティショニング技術の目的のうちの1つである。
BCSS関数B(t)でブロック構造を生成させるために、ブロックパーティショニング方法が適用されているデータストリームを考える。CLC関数C(t)を持つリンク上で、ストリーム中でのすべての提示時間tに対してB(t)≦C(t+d)である場合に、スタートアップ遅延dより後にストリームの中断のない提示が可能である。
図4中では、同じデータストリームに対する、BCSS関数の2つの例、B1(t)410およびB2(t)420を示している。先に説明した例に対して、BCSS関数B1(t)410は、最初のブロックパーティション{{I1,P3,B2,P5},{B4,P7},{B6,P9,B8}}に対応しているのに対し、BCSS関数B2(t)420は、第2のブロックパーティション{{I1,P3,B2},{P5,B4},{P7,B6},{P9,B8}}に対応している。BCSS関数B2(t)420は、BCSS関数B1(t)410よりも下のままであるので、双方の関数がブロック制約を満たしている場合には、BCSS関数B2(t)420はBCSS関数B1(t)410より好ましい。例えば、CLC関数C(t+d)430は、BCSS関数B1(t)410に対してではなく、BCSS関数B2(t)420に対して中断のない提示を提供することがきる。
リンク容量およびスタートアップ遅延の達成可能なペアの決定
先に説明したように、一定容量rを持つリンクに対しては、勾配rの線のように、CLC関数C(t)を表すことができる。一定容量rに対しては、容量とスタートアップ遅延との間の好ましいトレードオフ、または、容量とスタートアップ遅延との間の最適なトレードオフを見出すという問題には、シンプルな幾何学的ソリューションがある。3つの異なる設計基準に適合する概念の3つの変形を、挙げる。
1−既知の容量rを有するリンクに対しては、そして、CSS関数L(t)520によって記述される固定ストリームに対しては、減少した量または最小量のスタートアップ遅延を見出すことができる。図5中に図示しているように、線と曲線とが接触するまで、L(t)520に対する曲線の上に、(すなわち、候補CLC関数510を表している)勾配rの線をスライドさせることによって、これを達成する。CLC関数C(t+d)530を表している、スライドさせた線のx切片は、リンク容量rに対する減少した達成可能なスタートアップ遅延d540を与える。CLC関数C(t+d)530は、何らかの実現可能なブロックパーティションに対する下限である。
2−スタートアップ遅延d上でのターゲット制約に対しては、そして、CSS関数L(t)620によって記述される固定ストリームに対しては、ストリームの中断のない提示をサポートするために必要とされる減少したリンク容量または最小リンク容量を見出すことができる。図6中で図示しているように、候補CLC関数610を表している線のx切片は、(−d)で固定されており、L(t)620に対する曲線にこの線が接触するまで、線を回転させる。CLC関数C(t+d)630を表している、回転させた線の勾配は、要求されるスタートアップ遅延dに対する減少した達成可能なリンク容量である。CLC関数C(t+d)630は、何らかの実現可能なブロックパーティションに対する下限である。
3−既知の容量rを有するリンクと、スタートアップ遅延d上でのターゲット制約とに対しては、中断のない提示のためにサポートできる、コンテンツの最高品質エンコーディングを選択することができる。ストリームのエンコーディングに対する候補CSS関数710は、品質パラメータθでLθ(t)として示すことができる。勾配rでx切片−dの線は固定されており、線はCLC関数C(t+d)730を表している。図7中に図示しているように、Lθ(t)7l0が、CLC関数C(t+d)730より下のままであることを保証しながら、品質パラメータθが増加される。最高の達成可能な品質パラメータθを決定した後に、CSS関数L(t)720を規定することができる。CSS関数L(t)720は、任意の実現可能なブロックパーティションに対する上限である。
最小ブロックサイズ制約を満たすブロックパーティショニング方法
先に説明したように、それぞれのブロックに対して最小サイズ制約がある実用的な理由が存在し得る。この最小ブロックサイズをmと示す。ブロックサイズ制約の下で、リンク容量およびスタートアップ遅延の達成可能なペアを決定するための、そして所定のペアを達成する実現可能なブロックパーティションを決定するための、効率的な方法を提供するように、先に説明した技術は拡張することができる。例えば、発信元デバイスおよび/または宛先デバイス中に、あるいは使用できる特殊用途ハードウェア中に、これらの方法はプログラム化することができる。
dというスタートアップ遅延が決まっていると仮定すると、任意の送信時間t>dに対しては、受信機は、提示時間(t−d)までにストリームに提示できる必要がある。ブロックbの可能性ある開始位置を示すsに対して、ここで、sは、ブロックbの最初のビットまでの、および、ブロックbの最初のビットを含むデータストリームの初期の部分のビット数であり、ブロックbが実現可能であることを保証する、ブロックbにすぐに続くブロックの可能性ある開始位置を決定する方法を記述する。
図8を参照すると、所定のCSS関数L(t)810を持つデータストリームと、CLC関数C(t+d)820を持つリンクとに対して、ブロックbが実現可能であることを保証する、位置sで開始するブロックbのすぐ後に続くブロックに対する、可能性ある開始位置のセットとして、PC(s)830によって示しているsのC−プロジェクションを規定する。したがって、
Figure 0005788442
として、PC(s)を規定する。
言葉で説明すると、PC(s)830は、(すなわち、最小ブロックサイズmのために)ストリーム中の位置(s+m)ビットで開始し、ストリームの送信の開始からの送信時間(L-1(s)+d)までに受信することができるデータの最大量まで拡張する(場合によっては、空の)間隔である。式(1)では、dは、送信の開始と提示時間ゼロとの間のスタートアップ時間であり、L-1(s)は、ブロックbの最初のビットに対する提示時間である。セットPC(s)830は空であるので、s+m>C(L-1(s)+d)である場合に、Sは、何らかの実現可能なブロックの開始とすることができない。図8中では、プロジェクション演算の幾何学的解釈を図示している。
一般的に、ブロックの可能性ある開始位置は、単一の位置よりも多いので、プロジェクション演算は、ストリーム中の位置のサブセットTのより一般的なケース:
Figure 0005788442
に拡張することができる。
所定の位置sから開始してn個のブロックが形成された後に、次のブロックの実現可能な開始位置のセットとして、nステッププロジェクションを規定する。それぞれの整数n>0に対して、n−ステッププロジェクションPC n(s)は、
Figure 0005788442
として再帰的に規定することができる。
逆プロジェクション演算子PC -1(s)を規定し、これは、後に続くブロックが位置sにおいて開始する任意のブロックのすべての実現可能な開始位置のセットである:
Figure 0005788442
式(4)の逆プロジェクションは、ストリーム中の位置のサブセットTに拡張することもできる:
Figure 0005788442
所定の制約に対して、データストリームの終了位置eまでのストリームの中断のない提示は、以下の式(6):
Figure 0005788442
が、何らかの正の数nに対して満たされた場合に実現可能である。式(6)では、それぞれのブロックはmの最小サイズを有しているので、nは、(1+e)/mを超えるはずはない。
実現可能なブロックパーティションを見出すために、以下のフォワードおよびバックワードのプロセスを使用することができる:
フォワードループ:
n=1〜(1+e)/mに対して:
C n(1)=PC(PC n-1(1))を計算および記憶。
Figure 0005788442
中断してバックワードループを開始。
終了。
フォワードループが実現可能なnを見出すのに成功しなかった場合には、ブロックパラメータの制約を達成するために、実現可能なブロックパーティションは存在しない。
フォワードループが、実現可能なnを見出すのに成功した場合には、バックワードループが実行される:
バックワードループ:
n=e+1を設定
1までダウンしていくi=n−1に対して
Figure 0005788442
を計算。構成により、これは、非空のセットである。
任意の値を、このセットから選び、Siに割り当てる。
終了。
フォワードおよびバックワードのプロセスを完了した後、S1,S2,...,Snが、それぞれのブロックのエンドポイントとして、実現可能なブロックパーティションを規定する。
図9を参照すると、ビットのデータストリームを送信機から受信機に供給するためのブロックパーティションを決定するプロセス900は、示しているステージを含んでいる。プロセス900は、実現可能なブロックパーティションを見出すための、先に提供したフォワードおよびバックワードのプロセスのステージを記述する。しかしながら、プロセス900は、例示に過ぎず、限定するものではない。プロセス900は、例えば、ステージを、追加、除去、または再構成することによって、変更することができる。
ステージ902では、プロセッサ(例えば、通信リンクの発信元の送信機側のプロセッサ)が、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定する。先に提供したフォワードおよびバックワードのプロセスのフォワードループを参照すると、ステージ902は、PC 0(1)={1}を設定することによって、データストリーム中の最初のビット位置として、最初のブロック、ブロック1の開始位置を規定する。
ステージ904では、データストリームの最初のビット位置において最初のブロックが開始するとした場合、プロセッサが、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットを反復して決定する。データストリームの最後の可能性あるブロックは、データストリームのサイズeと、データストリームのブロックに対する最小ブロックサイズmとから決定することができる。フォワードループを参照すると、ステージ904は、最初のブロック、ブロック1から、最後の可能性あるブロック、ブロックfloor[(1+e)/m]までに対して、PC n(1)=PC(PC n-1(1))を反復して決定する。候補開始位置の第1のセット、PC n(1)は、メモリ(例えば、通信リンクの発信元の送信機側のメモリ)中に記憶させることができる。
データストリームの最後のビット位置eより後の最初のビット位置が、次の連続ブロックに対して決定された候補開始位置の第1のセット中に存在するまで、ステージ904の反復決定は続く。このことが起こるときに反復は終了し、プロセッサが、現在のブロックとして、データストリームの最後のブロックを規定する。フォワードループを参照すると、現在のブロック、ブロックnに対して、
Figure 0005788442
であるときにステージ904は反復を終了する。プロセッサは、ブロックnとして、データストリームの最後のブロックを規定する。
ステージ906では、プロセッサが、データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定する。先に提供したフォワードおよびバックワードのプロセスのバックワードループを参照すると、ステージ906は、Sn=e+1を規定する。
ステージ908では、最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、プロセッサが、現在のブロックに続く次の連続ブロックの候補開始位置の2つのセットの共通部分を決定する。第1のセットは、データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置のセットである。フォワードループを参照すると、データストリーム中のブロックに対する第1のセットを、ステージ904において計算した。ステージ904において、第1のセットを記憶した場合、現ステージで共通部分を決定するために、第1のセットを取り出すことができる。第2のセットは、次の連続ブロックのエンドポイントにおいて次の連続ブロックのすぐ後に続くブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置のセットである。バックワードループを参照すると、データストリームのブロックi=n−1からデータストリームのブロックi=1までダウンしていくそれぞれのブロックに対して、ステージ908は、
Figure 0005788442
を最初に決定する。
ステージ908を続けると、現在のブロックに対して、プロセッサが、共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定する。バックワードループを参照すると、現在のブロック(すなわち、ブロックi)に対して、その後、ステージ908は、
Figure 0005788442
中のビット位置として、Siを規定する。
ステージ910では、プロセッサが、データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定する。
先のプロセスは、フォワードループに対しては、完了するために、多くても(1+e)/mステップを取り、バックワードループに対しては、((1+e)/m)−1ステップを取る。プロセスには、フォワードプロジェクションPC n(1)の記憶のために十分なメモリが必要である。
それぞれのPC n(1)は、提示時間の、間隔または間隔の集合である。この事実は、非常に効率的な態様で、フォワードプロジェクションセットの計算および記憶を可能にする。特に、間隔[s1,s2]のプロジェクションは、簡単に、
Figure 0005788442
である。
式(7)では、オリジナル間隔[s1,s2]のエンドポイントによって課せられる、下限値と上限値とによって右側における間隔を規定する。しかしながら、送信完了時間C-1(s)−dが最小ブロックサイズmに対する提示制約時間L-1(s−m)を超える任意のストリーム位置sは、ブロックの開始位置とすることができない。式(7)中の減算されたセットは、これらの不可能な開始位置のセットである。図10中では、ブロックに対する不可能な開始位置のセット{s:L-1(s−m)<C-1(s)−d}の幾何学的解釈を図示している。
先に説明したように、間隔のプロジェクションは、間隔の集合である。L(t)+mのシフトさせた曲線が、CLC関数C(t+d)を表している線と交差する回数によって、集合中の間隔の数を決定する。ここで、それぞれのC-1(s)−dは、提示時間tに対応している。特に、CSS関数L(t)の大部分の滑らかな曲線に対して、L(t)+mのシフトさせた曲線と、CLC関数C(t+d)を表している線は、1回よりも多く交差していないので、間隔のプロジェクションは、単一の間隔のままである。したがって、それぞれのプロジェクションを、間隔の2つのエンドポイントをプロジェクティングすることまで減少させることができ、これにより、計算をスピードアップさせることができ、必要とされるメモリ記憶を減少させることができる。
実現可能なブロックパーティションの決定
所定のCSS関数L(t)および固定送信帯域幅rに対しては、BCSS関数B(t)でのブロックパーティションが、スタートアップ遅延dlで達成可能である場合に、L(t)の曲線と、C(t+d)を表している線との間のエリアは、dの増加とともにもっぱら増加するので、ブロックパーティションは、何らかのより大きいスタートアップ遅延d2に対して達成可能なままである。同様に、固定されているスタートアップ遅延dに対しては、BCSS関数B(t)でのブロックパーティションが、容量r1を有するリンク上で達成可能である場合に、L(t)の曲線と、C(t+d)=r×(t+d)を表している線との間のエリアもまた、rの増加とともにもっぱら増加するので、ブロックパーティションは、より大きい容量r2を有するリンク上でも達成可能である。
加えて、ブロックパーティショニング方法に課されている実現可能性制約が、最適化パラメータに関する類似した「単調性」条件を満たしている場合に−すなわち、ブロックパーティションが、最適化パラメータの値xlおよびx2に対して実現可能であるときにはいつでも、ブロックパーティションが、その間のすべての値にも実現可能である場合に−、上述した方法をバイナリサーチと組み合わせて、スタートアップ遅延と、送信帯域幅と、エンコーディング品質との、最良または最適な実現可能な組み合わせを効率的に決定することができる。
単調な実現可能性制約の例は、ブロックの最小サイズおよび/またはブロックの最大サイズに関する制約である。実現可能性は、最適化パラメータである送信帯域幅に依存しているので、非単調な制約の例は、ブロックの最小送信持続時間上の制限である。そのケースでは、帯域幅が増加すると、いくつかのブロックの送信持続時間を実現可能性制約よりも下に減少させる可能性がある。
以下で説明する技術は、上記の意味で実現可能性制約が単調であると仮定している。ブロックパーティショニング方法を決定するための、関心のある3つのシナリオを記述する。
第1のシナリオでは、CSS関数L(t)を有するストリームおよびCLC関数C(t)を有するリンクとした場合に、ストリームの中断のない提示のための減少したスタートアップ遅延または最小スタートアップ遅延で、実現可能なブロックパーティショニング方法を決定する。
スタートアップ遅延に対して、最小値d0および最大値dlを示す。ここで、dlは、達成可能であると仮定する。例えば、d0は、0に設定することができ、または、d0は、スタートアップ遅延に対する制約のない下限に設定することができる。図5を参照して、この決定を、上述した。最大値d1は、スタートアップ遅延に対する最大の許容値に設定することができる。バイナリサーチは、下記のように実行できる。
dが実現可能でない間、または、小さい許容差εに対して、(d1−d0)>εである間、
d =(d0+d1)/2を設定
スタートアップ遅延dで、制約のない実現可能なブロックパーティションを決定するために、フォワードおよびバックワードのプロセスのフォワードループをラン
dが実現可能なである場合には、
d1=dを設定
さもなければ、d0=dを設定
を実行
dは、最良または最適な実現可能なスタートアップ遅延のε内にある。実現可能なブロックパーティショニングを見出すために、フォワードおよびバックワードのプロセスのバックワードループをランする。
第2のシナリオでは、スタートアップ遅延dであるとした場合、CSS関数L(t)によって表されるデータストリームの中断のない提示を保証する、減少した送信帯域幅または最小送信帯域幅で、実現可能なブロックパーティショニング方法を決定する。減少したリンク容量または最小リンク容量は、減少した送信帯域幅または最小送信帯域幅に変換する。
送信帯域幅に対して、最小値r0および最大値r1を示す。例えば、r0は、0に設定することができ、または、r0は、リンク容量に対する制約のない下限に設定することができる。この決定を、図6を参照して上述した。最大値r1は、リンクの容量に対する最大の許容値に設定することができる。最良または最適な実現可能な送信帯域幅のε内のレートrと、対応する実現可能なブロックパーティションとを見出すために、第1のシナリオのバイナリサーチに類似しているバイナリサーチを実行する。
第3のシナリオでは、CLC関数C(t)を有するリンクと固定スタートアップ遅延dとした場合には、実現可能なブロックパーティショニング方法は、中断することなく提示できるデータストリームの最高品質のエンコーディングで決定される。
図7を参照して先に説明したように、エンコーディングの品質は、変数
Figure 0005788442
でパラメータ化され、ここで、Θは、データストリームのすべての可能性あるエンコーディングのセットである。Lθ(t)は、品質θでのエンコーディングのCSS関数を示す。
実現可能性制約の単調性に加えて、このシナリオにおいてバイナリサーチを使用するために、ストリームのエンコーディングも単調であると仮定する。すなわち、より高い品質を持つθ2に対してθ1<θ2であるときにはいつでも、提示時間tのすべての値に対してLθ1(t)≦Lθ2(t)であると仮定する。最高品質エンコーディングを見出すために、第1のシナリオおよび第2のシナリオのバイナリサーチに類似したバイナリサーチを実行する。それぞれの反復において、バイナリサーチは、候補の順序付けされたサブセット中の中間品質変数θでエンコーディングの達成可能性をテストする。有限セットΘを仮定すると、n=log(|Θ|)反復の後に、バイナリサーチは終了する。
先に説明した単調性条件のうちのいずれか1つを満たしていない場合、制約のない実現可能なブロックパーティションを決定するためのフォワードおよびバックワードのプロセスのフォワードループは、最高品質エンコーディングを見出すために、ΘのエレメントのO(|Θ|)上でランさせる必要があるだろう。
複数のスターティングポイントを持つデータストリームに対するブロックパーティショニング方法
ストリーミングアプリケーションにより、ストリーム内の(以下では「探索ポイント」と呼ぶ)複数の異なるスターティングポイントにおけるデータを受信機が要求および消費することが可能になるかもしれない。例えば、ビデオストリーミングアプリケーションでは、ストリームの中間からユーザがビデオを観ることができること、例えば、既に観た部分をスキップすること、または、観逃した部分をレビューするために巻き戻すことができることが好ましい。予め規定された探索ポイントのうちのいずれか1つにおいてストリームを開始するために、帯域幅およびスタートアップ遅延の制約を観測すべきである。
典型的に、データストリームのブロックパーティショニングは、進行中に、および、異なるスターティングポイントに対するユーザの要求に応答して、変更することができない。単一の最良または最適なブロックパーティショニング方法が、すべての可能性ある探索ポイントに対する帯域幅およびスタートアップ遅延制約上に、同時的な保証を提供することが好ましいだろう。
1つの可能性あるソリューションは、先に説明した技術を使用して、ストリームの始まりから開始するために帯域幅および遅延の制約を最適化する、ストリーム全体に関するブロックパーティションを見出して、その後、他のすべての可能性ある探索ポイントに対して達成可能な帯域幅対スタートアップ遅延ペアを再計算することである。この情報は、それぞれの所望のスターティングポイントに対して使用されることになる、ストリームについての付加的なメタデータとして、受信機に通信することができる。
しかしながら、このブロックパーティショニングソリューションは、始まりからのストリーミングに対してのみ最適であるだろう。同じ送信帯域幅に対しては、受信機は、異なる探索ポイントから開始するために、完全に異なるスタートアップ遅延時間を必要とする可能性があり、これは、望ましくない条件であるかもしれない。
先の懸念事項に対処する別のソリューションは、すべての探索ポイントに対して同時に、所定の送信帯域幅とともに、所定の最大スタートアップ遅延を保証する最良または最適なブロックパーティショニング方法を決定することであるだろう。この最良または最適なブロックパーティショニング方法を決定するための効率的な方法を記述する。
0<t1<...<tnを、データストリーム内の(提示時間単位での)すべての可能性ある探索ポイントとする。簡単にするために、データストリーム中のデコーディング依存は、それぞれの探索ポイントにわたって分けられていると仮定する。すなわち、それぞれの探索ポイントtiに対して、以下の2つの条件が当てはまる位置g(ti)がデータストリーム中に存在している。その位置g(ti)までのストリームを受信している受信機は、提示時間tiまでにストリームを提示することができる;位置g(ti)から先のストリームの受信を開始する受信機は、提示時間tiから先のストリームを提示することができる。ビデオコーディングの状況では、この条件を「閉じられたGoP」構造と呼び、探索ポイントにわたってのフレーム間の参照は存在しない。それぞれのg(ti)を含み、後続するg(ti)は含めない、それぞれのg(ti)から開始し、後続するg(ti)までのデータストリームの部分を、「探索ブロック」として示す。
それぞれの探索ブロックの始まりにおいて、新しい発信元ブロック(すなわち、データストリームのブロック)が開始する。これがケースでない場合に、探索ポイントtiにおいて開始するために、受信機は、時間tiから先の提示に必要とされないデータを受信してデコードする必要があるだろう。これにより、スタートアップ遅延が増加する可能性がある。それぞれの探索ブロックの始まりにおいて、新しい発信元ブロックが開始すると仮定すると、グローバルブロックパーティショニングは、個々の探索ブロックを通して、より小さいパーティショニングに細分割することができる。
例では、それぞれの探索ポイントにおいて開始して、固定容量rを持つリンクを通してストリーミングし、dのスタートアップ遅延より後に中断なくストリームを提示することができる場合に、特定のブロックパーティションが決定される。それぞれの探索ブロックに対するブロックパーティショニングのアプリケーションは、他の探索ブロックから独立して、同じ条件(すなわち、スタートアップ遅延dの後の中断のない提示)を満たす必要がある。しかしながら、いくつかの探索ブロックの送信は、これらの対応する提示持続時間よりも、より多くの時間がかかることがある。そのケースでは、連続的な提示のために、次の探索ブロックの送信は、その開始提示時間に関して、その探索ポイントから受信機がストリーミングを開始した場合に送信が開始していただろう時間よりも後の時間において開始するだろう。言い換えると、次の探索ブロックは、オリジナル遅延dよりもまったく小さい実効スタートアップ遅延で提示可能でなければならないだろう。このシチェーションを、図11中の第1の探索ブロック1110で説明する。遅延diは、次の探索ブロックi+1に対する先頭開始遅延として使用できる、探索ブロックiからの過剰遅延として見ることができる。以下の修正されたブロックパーティショニング技術は、この条件を取り扱う。
図11にさらに関連して、図12を参照すると、複数の探索ポイントを有しているデータストリームを供給するためのグローバルブロックパーティションを決定するプロセス1200は、示しているステージを含む。グローバルCSS関数L(t)によって、データストリームを規定する。それぞれの探索ポイントは、受信機が予め定められたスタートアップ遅延d内にデータストリームを消費し始めることができるデータストリーム中のポイントである。しかしながら、プロセス1200は、例示のみであり、限定するものではない。例えば、ステージを追加、除去、または再構成させることによって、プロセス1200を変えることができる。
ステージ1202では、プロセッサ(例えば、通信リンク上の発信元の送信機側のプロセッサ)が、データストリームを複数の探索ブロックに分割し、それぞれの探索ブロックは各ローカルCSS関数によって規定されている。オリジナルの、グローバルCSS関数L(t)によって規定されたデータストリームは、探索ブロックに細分割される。それぞれの探索ブロックi=1,2,...,nに対して、ローカルCSS関数Li(t)=L(t+ti-1)−L(ti-1)を提示時間0≦t≦piについて規定し、ここで、pi=ti−ti-1は、探索ブロックiの提示持続時間である。
探索ブロックのそれぞれのエンドポイントは、探索ポイント、データストリームのスタートポイント、または、データストリームのエンドポイントとなり得る。特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコーディングされている。
ステージ1204では、プロセッサが、複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延dより少ないまたは予め定められたスタートアップ遅延dに等しい各実効スタートアップ遅延を再帰的に規定する。それぞれの探索ブロックに対する実効スタートアップ遅延は、i=1,2,...,nに対して、および、d0=dで、下記:
Figure 0005788442
のように再帰的に規定される。式(8)では、Pi+di-1は、探索ブロックiの送信の開始から探索ブロックi+1の提示の開始までの時間を示している。減算される項C-1(Li(pi))は、探索ブロックiの送信持続時間である。差、Pi+di-1−C-1(Li(pi))は、次の探索ブロックi+1に対する先頭の開始遅延として潜在的に使用することができる累積した過剰遅延である。しかしながら、それぞれの探索ブロックは、dの最大スタートアップ遅延で独立的に提示可能である必要があるので、実効スタートアップ遅延を、dの最小のものと、累積した過剰遅延として決定する。
図11は、実効スタートアップ遅延が、オリジナルターゲット遅延dよりも小さい、または、オリジナルターゲット遅延dに等しい場合の、2つのシナリオの例を図示している。
言葉で説明すると、それぞれの探索ブロックに対する実効スタートアップ遅延は(すなわち、ストリーミングがその探索ブロックにおいて開始するときのケースに対しては)、多くてもdであるが、前の探索ブロックの送信が、前の探索ブロックの対応する提示持続時間を超えて延びる場合には、実効スタートアップ遅延はdよりも小さくなるだろう。
それぞれの探索ブロックiに対して、diのスタートアップ遅延での中断のない提示のための実現可能なローカルブロックパーティショニングが存在する場合には、多くてもdのスタートアップ遅延での、探索ポイントのうちの任意のものから開始する中断のない提示を同時に保証する実現可能なローカルブロックパーティショニングが存在する。
図12のステージ1206では、プロセッサは、複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する。
実現可能なグローバルブロックブロックパーティショニングを決定するための上述した技術は、スタートアップ遅延上のオリジナルの制約dから、上述したように計算された、修正された実効スタートアップ遅延diと、そのローカルCSS関数Li(t)とで、それぞれの探索ブロックi上で使用することができる。
ステージ1208では、プロセッサは、データストリーム中の複数の探索ブロックのそれぞれの探索ブロックの各ローカルブロックパーティションとして、グローバルブロックパーティションを決定する。
実現可能なグローバルブロックパーティショニングを決定するための先の技術は、データストリーム全体を通して、1つのフォワードループと1つのバックワードループにより効率的に実行されることに留意されたい;この意味では、複数の探索ポイントによって課せられる付加的な制約は、技術の効率性に影響を与えない。
記述に関する考慮すべき事項
ここでの開示に関連して記述した、さまざまな例示的な論理ブロック、モジュール、および回路は、汎用プロセッサや、デジタルシグナルプロセッサ(DSP)や、特定用途向け集積回路(ASIC)や、フィールドプログラマブルゲートアレイ(FPGA)や、または他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは、ここに記述した機能を行うように設計されたこれらの任意のものを組み合わせたもので、実現されるか、あるいは行われてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替実施形態では、プロセッサは、何らかの従来のプロセッサ、制御装置、マイクロ制御装置、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスを組み合わせたものとして、例えば、DSPとマイクロプロセッサを組み合わせたものとして、複数のマイクロプロセッサとして、DSPコアを備えた1つ以上のマイクロプロセッサとして、あるいは、他の何らかのこのような構成として実現することができる。
ここでの開示に関連して記述した方法またはアルゴリズムのブロックは、ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、あるいは、2つのものを組み合わせたもので直接的に具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバルディスク、CD−ROM,または技術的に知られている他の何らかの形態の記憶媒体中に存在していてもよい。プロセッサが記憶媒体から情報を読み取ったり、記憶媒体に情報を書き込んだりできるように、例示的な記憶媒体は、プロセッサに結合されている。代替実施形態では、記憶媒体は、プロセッサと一体化していてもよい。プロセッサおよび記憶媒体は、ASIC中に存在していてもよい。ASICは、ユーザ端末中に存在していてもよい。代替実施形態では、プロセッサおよび記憶媒体は、ディスクリートコンポーネントとしてユーザ端末中に存在していてもよい。
1つ以上の例示的な設計では、記述した機能は、ハードウェア、プロセスによって実行されるソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実現してもよい。プロセッサによって実行されるソフトウェアで実現する場合、機能は、1つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に記憶してもよく、あるいは、1つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に送信してもよい。コンピュータ読み取り可能媒体は、1つの場所から別の場所へのコンピュータプログラムの移送を促進する何らかの媒体を含むコンピュータ記憶媒体および通信媒体の双方を含む。記憶媒体は、汎用コンピュータまたは特殊用途コンピュータによってアクセスできる何らかの利用可能な物理媒体であってもよい。例示によると、コンピュータ読み取り可能媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは汎用コンピュータまたは特殊用途コンピュータ、もしくは、汎用プロセッサまたは特殊用途プロセッサによってアクセスでき、命令またはデータ構成の形態で所望のプログラムコード手段を運ぶまたは記憶するために使用できる他の何らかの媒体を含むことができるが、これらに限定されない。また、あらゆる接続は、コンピュータ読み取り可能媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブルや、光ファイバケーブルや、撚り対や、デジタル加入者線(DSL)や、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用している、ウェブサイト、サーバ、あるいは、他の遠隔ソースから送信された場合、同軸ケーブル、光ファイバケーブル、撚り対、DSL、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。ここで使用したようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク(登録商標)、光ディスク、デジタル汎用ディスク(DVD)、フロッピ(登録商標)ディスク、ブルーレイ(登録商標)ディスクを含むが、一般的に、ディスク(disk)は、データを磁気的に再生する一方で、ディスク(disc)はデータをレーザによって光学的に再生する。先のものを組み合わせたものもまた、コンピュータ読み取り可能媒体の範囲内に含められる。
先の説明は、何らかの当業者が、記述した装置、システム、および方法を作り、または使用できるように提供されている。開示に対するさまざまな改良は、当業者に容易に明らかになるであろう。また、ここで規定した一般的な原理は、本開示の精神または範囲を逸脱することなく、他のバリエーションに適用されてもよい。したがって、本開示は、ここで記述した例および設計に限定されるものではないが、ここで開示した原理および新規な特徴と矛盾しない最も広範囲に一致させるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
〔1〕送信機から受信機にデータストリームを供給する方法において、
前記データストリームの基礎となる構造を決定することと、
(1)前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、(2)前記データストリームを送るのに必要な送信帯域幅を減少させることと、(3)前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的を決定することと、
前記少なくとも1つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信することとを含む方法。
〔2〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔1〕記載の方法。
〔3〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する方法において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定することと、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第1のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第1のセットを反復して決定し、前記現在のブロックとして、前記データストリームの最後のブロックを規定することと、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定することと、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
(1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第1のセットと、(2)前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第2のセットと、の共通部分を決定することと、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントを規定することと、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定することとを含む方法。
〔4〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔3〕記載の方法。
〔5〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔3〕記載の方法。
〔6〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔3〕記載の方法。
〔7〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔3〕記載の方法。
〔8〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する方法において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記データストリームを複数の探索ブロックに分割することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定することとを含み、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている方法。
〔9〕データストリームを供給するサーバにおいて、
前記データストリームの基礎となる構造を決定するように構成され、(1)送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、(2)前記データストリームを送るのに必要な送信帯域幅を減少させることと、(3)前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的を決定するように構成されているプロセッサと、
前記プロセッサに結合され、前記少なくとも1つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信するように構成されている送信機とを具備するサーバ。
〔10〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔9〕記載のサーバ。
〔11〕前記データストリームは、ビデオコンテンツを含み、前記データストリームの前記ブロックは、ユーザデータグラムプロトコルを使用して送信される〔9〕記載のサーバ。
〔12〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するサーバにおいて、
前記データストリームの最初のブロックの開始位置を規定するようにと、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第1のセットを反復して決定することによって、前記データストリームの最後のブロックを決定するようにと、前記データストリームの前記最後のブロックのエンドポイントを規定するようにと、前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、前記第1のセットと、前記現在のブロックに続く次の連続ブロックの候補開始位置の第2のセットとの共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを反復して規定するようにと、前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定するように構成されているプロセッサを具備するサーバ。
〔13〕前記プロセッサに結合され、前記候補開始位置の第1のセットを記憶するメモリをさらに具備する〔12〕記載のサーバ。
〔14〕前記プロセッサに結合され、前記データストリームとして供給されることになるコンテンツを記憶する記憶デバイスをさらに具備する〔12〕記載のサーバ。
〔15〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔12〕記載のサーバ。
〔16〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔12〕記載のサーバ。
〔17〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔12〕記載のサーバ。
〔18〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するサーバにおいて、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと、前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定するように構成されているプロセッサを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされているサーバ。
〔19〕コンピュータプログラムプロダクトにおいて、
データストリームの基礎となる構造をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
(1)送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、(2)前記データストリームを送るのに必要な送信帯域幅を減少させることと、(3)前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記送信機から前記受信機に前記データストリームを供給するためのブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備し、
前記ブロックパーティションは、前記データストリームの前記ブロックの送信および受信が、前記少なくとも1つの目的と、前記基礎となる構造とに一致していることを保証するコンピュータプログラムプロダクト。
〔20〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔19〕記載のコンピュータプログラムプロダクト。
〔21〕コンピュータプログラムプロダクトにおいて、
データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第1のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第1のセットを反復して、プロセッサに決定させ、前記現在のブロックとして、前記データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
(1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第1のセットと、(2)前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第2のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備するコンピュータプログラムプロダクト。
〔22〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔21〕記載のコンピュータプログラムプロダクト。
〔23〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔21〕記載のコンピュータプログラムプロダクト。
〔24〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔21〕記載のコンピュータプログラムプロダクト。
〔25〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔21〕記載のコンピュータプログラムプロダクト。
〔26〕コンピュータプログラムプロダクトにおいて、
それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有するデータストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的にプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備するコンピュータプログラムプロダクト。
〔27〕送信機から受信機にデータストリームを供給するように構成されている装置において、
前記データストリームの基礎となる構造を決定する手段と、
(1)前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、(2)前記データストリームを送るのに必要な送信帯域幅を減少させることと、(3)前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも1つの目的を決定する手段と、
前記少なくとも1つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信する手段とを具備する装置。
〔28〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔27〕記載の装置。
〔29〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている装置において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定する手段と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第1のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第1のセットを反復して決定して、前記現在のブロックとして、前記データストリームの最後のブロックを規定する手段と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定する手段と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
(1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の前記第1のセットと、(2)前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第2のセットと、の共通部分を決定する手段と、
前記共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを規定する手段と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定する手段とを具備する装置。
〔30〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔29〕記載の装置。
〔31〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔29〕記載の装置。
〔32〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔29〕記載の装置。
〔33〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔29〕記載の装置。
〔34〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するように構成されている装置において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定する手段とを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている装置。

Claims (21)

  1. 送信機のプロセッサを使用して、前記送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する方法において、
    前記プロセッサにより、前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定することと、
    前記プロセッサにより、前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの最後のビット位置より後の最初のビット位置が、候補開始位置の第1のセット中に存在するまで、前記データストリームの1つ以上のブロックに対して、前記候補開始位置の第1のセットを決定することと、
    前記プロセッサにより、前記データストリームの最後のビット位置より後の前記最初のビット位置として、前記データストリームの最後のブロックのエンドポイントを規定することと、
    前記プロセッサにより、(1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する前記候補開始位置の第1のセットと、(2)後続するブロックのエンドポイントにおいて前記後続するブロックにすぐに続くブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する候補開始位置の第2のセットと、の共通部分を決定することと、
    前記プロセッサにより、前記データストリームの1つ以上のブロックに対するエンドポイントとして、前記決定した共通部分から1つ以上のビット位置を選択することと、
    前記プロセッサにより、前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定することとを含み、
    ブロックベースの計算を構築するために前記ブロックパーティションを使用し、前記ブロックベースの計算は1つのブロックからのデータに依存し、他のブロックからのデータから独立している計算である方法。
  2. 前記データストリームのブロックの最大数は、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項1記載の方法。
  3. 前記データストリームは、累積ストリームサイズに関係し、前記データストリームを供給する通信リンクは、累積リンク容量に関係し、
    前記累積ストリームサイズと前記累積リンク容量とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
    前記累積リンク容量は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項1記載の方法。
  4. 前記データストリームは、累積ストリームサイズに関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積ストリームサイズと前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項1記載の方法。
  5. 前記データストリームを供給する通信リンクは、送信時間期間中に前記通信リンクを通して送信することができるデータの最大量を表す累積リンク容量に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積リンク容量と前記ターゲットスタートアップ遅延とが与えられた場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され請求項1記載の方法。
  6. 送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するサーバにおいて、
    前記データストリームの最初のブロックの開始位置を規定するようにと、
    前記データストリームの1つ以上のブロックに対して、候補開始位置の第1のセットを決定するようにと、
    前記データストリームの最後のブロックのエンドポイントを規定するようにと、
    前記データストリームの1つ以上のブロックに対する、前候補開始位置の第1のセットと、候補開始位置の第2のセットとの共通部分を決定するようにと、
    前記データストリームの1つ以上のブロックに対するエンドポイントとして、前記決定した共通部分から1つ以上のビット位置を選択するようにと、
    前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定するように構成されているプロセッサを具備し、
    ブロックベースの計算を構築するために前記ブロックパーティションを使用し、前記ブロックベースの計算は1つのブロックからのデータに依存し、他のブロックからのデータから独立している計算であるサーバ。
  7. 前記プロセッサに結合され、前記候補開始位置の第1のセットを記憶するメモリをさらに具備する請求項記載のサーバ。
  8. 前記プロセッサに結合され、前記データストリームとして供給されることになるコンテンツを記憶する記憶デバイスをさらに具備する請求項記載のサーバ。
  9. 前記データストリームは、累積ストリームサイズに関係し、前記データストリームを供給する通信リンクは、累積リンク容量に関係し、
    前記累積ストリームサイズと前記累積リンク容量とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは前記データストリーム中の提示時間までに前記データストリームを提示するために受信されなければならない、前記データストリームのビット数を表しており、
    前記累積リンク容量は、送信時間期間に前記通信リンクを通して送信することができるデータの最大量を表している請求項記載のサーバ。
  10. 前記データストリームは、累積ストリームサイズに関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積ストリームサイズと前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項記載のサーバ。
  11. 前記データストリームを供給する通信リンクは、累積リンク容量によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積リンク容量と前記ターゲットスタートアップ遅延とが与えられた場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
    前記累積リンク容量は、送信時間期間に前記通信リンクを通して送信することができるデータの最大量を表している請求項記載のサーバ。
  12. プロセッサ読み取り可能記憶媒体において、
    a)データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
    b)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの最後のビット位置より後の最初のビット位置が、候補開始位置の第1のセット中に存在するまで、前記データストリームの1つ以上のブロックに対して、前記候補開始位置の第1のセットをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
    c)前記データストリームの最後のビット位置より後の前記最初のビット位置として、前記データストリームの最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
    d)(1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する前記候補開始位置の第1のセットと、(2)後続するブロックのエンドポイントにおいて前記後続するブロックにすぐに続くブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する候補開始位置の第2のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
    e)前記データストリームの1つ以上のブロックに対するエンドポイントとして、前記決定した共通部分から1つ以上のビット位置をプロセッサに選択させるように構成されているプロセッサ読み取り可能な命令と、
    f)前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを含み、
    ブロックベースの計算を構築するために前記ブロックパーティションを使用し、前記ブロックベースの計算は1つのブロックからのデータに依存し、他のブロックからのデータから独立している計算であるプロセッサ読み取り可能記憶媒体。
  13. 前記データストリームのブロックの最大数は、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項12記載のプロセッサ読み取り可能記憶媒体。
  14. 前記データストリームは、累積ストリームサイズに関係し、前記データストリームを供給する通信リンクは、累積リンク容量に関係し、
    前記累積ストリームサイズと前記累積リンク容量とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
    前記累積リンク容量は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項12記載のプロセッサ読み取り可能記憶媒体。
  15. 前記データストリームは、累積ストリームサイズに関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積ストリームサイズと前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項12記載のプロセッサ読み取り可能記憶媒体。
  16. 前記データストリームを供給する通信リンクは、累積リンク容量に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積リンク容量と前記ターゲットスタートアップ遅延とが与えられた場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
    前記累積リンク容量は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項12記載のプロセッサ読み取り可能記憶媒体。
  17. 送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている装置において、
    前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定する手段と、
    前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの最後のビット位置より後の最初のビット位置が、候補開始位置の第1のセット中に存在するまで、前記データストリームの1つ以上のブロックに対して、前記候補開始位置の第1のセットを決定する手段と、
    前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの最後のブロックのエンドポイントを規定する手段と、
    (1)前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する前記候補開始位置の第1のセットと、(2)後続するブロックのエンドポイントにおいて前記後続するブロックにすぐに続くブロックが開始するとした場合の、前記データストリームの1つ以上のブロックに対する候補開始位置の第2のセットと、の共通部分を決定する手段と、
    前記データストリームの1つ以上のブロックに対するエンドポイントとして、前記決定した共通部分から1つ以上のビット位置を選択する手段と、
    前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定する手段とを具備し、
    ブロックベースの計算を構築するために前記ブロックパーティションを使用し、前記ブロックベースの計算は1つのブロックからのデータに依存し、他のブロックからのデータから独立している計算である装置。
  18. 前記データストリームのブロックの最大数は、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項17記載の装置。
  19. 前記データストリームは、累積ストリームサイズに関係し、前記データストリームを供給する通信リンクは、累積リンク容量に関係し、
    前記累積ストリームサイズと前記累積リンク容量とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
    前記累積リンク容量は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項17記載の装置。
  20. 前記データストリームは、累積ストリームサイズに関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積ストリームサイズと前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
    前記累積ストリームサイズは前記データストリーム中の選択された提示時間までに前記データストリームを提示するために受信されなければならない、前記データストリームのビット数を表している請求項17記載の装置。
  21. 前記データストリームを供給する通信リンクは、累積リンク容量に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
    前記累積リンク容量と前記ターゲットスタートアップ遅延とが与えられた場合に、1セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
    前記累積リンク容量は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項17記載の装置。
JP2013167912A 2009-02-13 2013-08-12 データストリームに対するブロックパーティショニング Expired - Fee Related JP5788442B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15255109P 2009-02-13 2009-02-13
US61/152,551 2009-02-13
US12/705,202 US20100211690A1 (en) 2009-02-13 2010-02-12 Block partitioning for a data stream
US12/705,202 2010-02-12

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011550303A Division JP2012518347A (ja) 2009-02-13 2010-02-13 データストリームに対するブロックパーティショニング

Publications (2)

Publication Number Publication Date
JP2014014107A JP2014014107A (ja) 2014-01-23
JP5788442B2 true JP5788442B2 (ja) 2015-09-30

Family

ID=42560848

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011550303A Withdrawn JP2012518347A (ja) 2009-02-13 2010-02-13 データストリームに対するブロックパーティショニング
JP2013167912A Expired - Fee Related JP5788442B2 (ja) 2009-02-13 2013-08-12 データストリームに対するブロックパーティショニング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011550303A Withdrawn JP2012518347A (ja) 2009-02-13 2010-02-13 データストリームに対するブロックパーティショニング

Country Status (6)

Country Link
US (1) US20100211690A1 (ja)
EP (1) EP2396968A1 (ja)
JP (2) JP2012518347A (ja)
CN (1) CN102318348B (ja)
TW (1) TW201110710A (ja)
WO (1) WO2010094003A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
JP4546246B2 (ja) 2002-10-05 2010-09-15 デジタル ファウンテン, インコーポレイテッド 連鎖的暗号化反応の系統的記号化および復号化
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
EP1743431A4 (en) 2004-05-07 2007-05-02 Digital Fountain Inc SYSTEM FOR DOWNLOADING AND RECORDING AND CONTINUOUS READING OF FILES
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7971129B2 (en) 2006-05-10 2011-06-28 Digital Fountain, Inc. Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9237101B2 (en) 2007-09-12 2016-01-12 Digital Fountain, Inc. Generating and communicating source identification information to enable reliable communications
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US8583054B2 (en) * 2010-12-25 2013-11-12 Intel Corporation Wireless display performance enhancement
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8560635B1 (en) * 2011-03-30 2013-10-15 Google Inc. User experience of content rendering with time budgets
US9646141B2 (en) * 2011-06-22 2017-05-09 Netflix, Inc. Fast start of streaming digital media playback with deferred license retrieval
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US20140089803A1 (en) * 2012-09-27 2014-03-27 John C. Weast Seek techniques for content playback
EP2907278B1 (en) 2012-10-11 2019-07-31 Samsung Electronics Co., Ltd. Apparatus and method for transmitting mmt packets in a broadcasting and communication system
US10366078B2 (en) * 2013-11-27 2019-07-30 The Regents Of The University Of California Data reduction methods, systems, and devices
US20170117433A1 (en) * 2014-04-03 2017-04-27 Trina Solar Energy Development Pte Ltd A hybrid all-back-contact solar cell and method of fabricating the same
KR20150128151A (ko) * 2014-05-08 2015-11-18 삼성전자주식회사 비디오 스트리밍 방법 및 이를 지원하는 전자 장치
US10929353B2 (en) 2015-04-29 2021-02-23 Box, Inc. File tree streaming in a virtual file system for cloud-based shared content
CN105245317A (zh) * 2015-10-20 2016-01-13 北京小鸟听听科技有限公司 一种数据传输方法、发送端、接收端和数据传输***
US11470131B2 (en) 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
CN111954007B (zh) * 2020-07-14 2022-03-25 烽火通信科技股份有限公司 Udp直播中vbr视频快速平滑发送方法与装置

Family Cites Families (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901319A (en) * 1988-03-18 1990-02-13 General Electric Company Transmission system with adaptive interleaving
US5379297A (en) * 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
JP2576776B2 (ja) * 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5566208A (en) * 1994-03-17 1996-10-15 Philips Electronics North America Corp. Encoder buffer having an effective size which varies automatically with the channel bit-rate
US5615741A (en) * 1995-01-31 1997-04-01 Baker Hughes Incorporated Packer inflation system
JP3651699B2 (ja) * 1995-04-09 2005-05-25 ソニー株式会社 復号化装置及び符号化復号化装置
US6012159A (en) * 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
US6044485A (en) * 1997-01-03 2000-03-28 Ericsson Inc. Transmitter method and transmission system using adaptive coding based on channel characteristics
US6011590A (en) * 1997-01-03 2000-01-04 Ncr Corporation Method of transmitting compressed information to minimize buffer space
US6014706A (en) * 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6175944B1 (en) * 1997-07-15 2001-01-16 Lucent Technologies Inc. Methods and apparatus for packetizing data for transmission through an erasure broadcast channel
US6178536B1 (en) * 1997-08-14 2001-01-23 International Business Machines Corporation Coding scheme for file backup and systems based thereon
US6195777B1 (en) * 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
JP3472115B2 (ja) * 1997-11-25 2003-12-02 Kddi株式会社 マルチチャンネルを用いるビデオデータ伝送方法及びその装置
US5870412A (en) * 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
US6849803B1 (en) * 1998-01-15 2005-02-01 Arlington Industries, Inc. Electrical connector
US6185265B1 (en) * 1998-04-07 2001-02-06 Worldspace Management Corp. System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload
US6067646A (en) * 1998-04-17 2000-05-23 Ameritech Corporation Method and system for adaptive interleaving
US6018359A (en) * 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6307487B1 (en) * 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) * 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6704370B1 (en) * 1998-10-09 2004-03-09 Nortel Networks Limited Interleaving methodology and apparatus for CDMA
US6637031B1 (en) * 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
US6223324B1 (en) * 1999-01-05 2001-04-24 Agere Systems Guardian Corp. Multiple program unequal error protection for digital audio broadcasting and other applications
US6226608B1 (en) * 1999-01-28 2001-05-01 Dolby Laboratories Licensing Corporation Data framing for adaptive-block-length coding system
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
US6785323B1 (en) * 1999-11-22 2004-08-31 Ipr Licensing, Inc. Variable rate coding for forward link
US6535920B1 (en) * 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
FI113124B (fi) * 1999-04-29 2004-02-27 Nokia Corp Tiedonsiirto
KR100416996B1 (ko) * 1999-05-10 2004-02-05 삼성전자주식회사 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법
JP4284774B2 (ja) * 1999-09-07 2009-06-24 ソニー株式会社 送信装置、受信装置、通信システム、送信方法及び通信方法
US6523147B1 (en) * 1999-11-11 2003-02-18 Ibiquity Digital Corporation Method and apparatus for forward error correction coding for an AM in-band on-channel digital audio broadcasting system
US6678855B1 (en) * 1999-12-02 2004-01-13 Microsoft Corporation Selecting K in a data transmission carousel using (N,K) forward error correction
US6694476B1 (en) * 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US7490344B2 (en) * 2000-09-29 2009-02-10 Visible World, Inc. System and method for seamless switching
US7072971B2 (en) * 2000-11-13 2006-07-04 Digital Foundation, Inc. Scheduling of multiple files for serving on a server
US7240358B2 (en) * 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
US7337231B1 (en) * 2000-12-18 2008-02-26 Nortel Networks Limited Providing media on demand
US6850736B2 (en) * 2000-12-21 2005-02-01 Tropian, Inc. Method and apparatus for reception quality indication in wireless communication
US7143433B1 (en) * 2000-12-27 2006-11-28 Infovalve Computing Inc. Video distribution system using dynamic segmenting of video data files
NO315887B1 (no) * 2001-01-04 2003-11-03 Fast Search & Transfer As Fremgangsmater ved overforing og soking av videoinformasjon
US20080059532A1 (en) * 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
US6868083B2 (en) * 2001-02-16 2005-03-15 Hewlett-Packard Development Company, L.P. Method and system for packet communication employing path diversity
US7010052B2 (en) * 2001-04-16 2006-03-07 The Ohio University Apparatus and method of CTCM encoding and decoding for a digital communication system
US6745364B2 (en) * 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US6677846B2 (en) * 2001-09-05 2004-01-13 Sulo Enterprises Modular magnetic tool system
EP1472847A1 (en) * 2002-01-30 2004-11-03 Koninklijke Philips Electronics N.V. Streaming multimedia data over a network having a variable bandwidth
FR2837332A1 (fr) * 2002-03-15 2003-09-19 Thomson Licensing Sa Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants
WO2003090391A1 (en) * 2002-04-15 2003-10-30 Nokia Corporation Rlp logical layer of a communication station
ES2445761T3 (es) * 2002-06-11 2014-03-05 Digital Fountain, Inc. Descodificación de códigos de reacción en cadena mediante inactivación
AU2003251964A1 (en) * 2002-07-16 2004-02-02 Nokia Corporation A method for random access and gradual picture refresh in video coding
US6985459B2 (en) * 2002-08-21 2006-01-10 Qualcomm Incorporated Early transmission and playout of packets in wireless communication systems
JP4460455B2 (ja) * 2002-10-30 2010-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 適応的順方向誤り制御スキーム
KR101044213B1 (ko) * 2002-11-18 2011-06-29 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 비디오 전송 방법
GB0226872D0 (en) * 2002-11-18 2002-12-24 British Telecomm Video transmission
US6897761B2 (en) * 2002-12-04 2005-05-24 Cts Corporation Ball grid array resistor network
US7324555B1 (en) * 2003-03-20 2008-01-29 Infovalue Computing, Inc. Streaming while fetching broadband video objects using heterogeneous and dynamic optimized segmentation size
US7610487B2 (en) * 2003-03-27 2009-10-27 Microsoft Corporation Human input security codes
US7266147B2 (en) * 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US20050041736A1 (en) * 2003-05-07 2005-02-24 Bernie Butler-Smith Stereoscopic television signal processing method, transmission system and viewer enhancements
US7391717B2 (en) * 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US20050028067A1 (en) * 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
IL157886A0 (en) * 2003-09-11 2009-02-11 Bamboo Mediacasting Ltd Secure multicast transmission
DE602004028849D1 (de) * 2003-10-14 2010-10-07 Panasonic Corp Datenumsetzer
US7650036B2 (en) * 2003-10-16 2010-01-19 Sharp Laboratories Of America, Inc. System and method for three-dimensional video coding
US7168030B2 (en) * 2003-10-17 2007-01-23 Telefonaktiebolaget Lm Ericsson (Publ) Turbo code decoder with parity information update
US8132215B2 (en) * 2003-10-27 2012-03-06 Panasonic Corporation Apparatus for receiving broadcast signal
EP1743431A4 (en) * 2004-05-07 2007-05-02 Digital Fountain Inc SYSTEM FOR DOWNLOADING AND RECORDING AND CONTINUOUS READING OF FILES
US20060037057A1 (en) * 2004-05-24 2006-02-16 Sharp Laboratories Of America, Inc. Method and system of enabling trick play modes using HTTP GET
US8112531B2 (en) * 2004-07-14 2012-02-07 Nokia Corporation Grouping of session objects
US7885337B2 (en) * 2004-08-23 2011-02-08 Qualcomm Incorporated Efficient video slicing
JP4405875B2 (ja) * 2004-08-25 2010-01-27 富士通株式会社 エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
KR20060065482A (ko) * 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
US20090222873A1 (en) * 2005-03-07 2009-09-03 Einarsson Torbjoern Multimedia Channel Switching
US7450064B2 (en) * 2005-03-22 2008-11-11 Qualcomm, Incorporated Methods and systems for deriving seed position of a subscriber station in support of unassisted GPS-type position determination in a wireless communication system
US8683066B2 (en) * 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US7676735B2 (en) * 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
US7644335B2 (en) * 2005-06-10 2010-01-05 Qualcomm Incorporated In-place transformations with applications to encoding and decoding various classes of codes
US20070006274A1 (en) * 2005-06-30 2007-01-04 Toni Paila Transmission and reception of session packets
US20070022215A1 (en) * 2005-07-19 2007-01-25 Singer David W Method and apparatus for media data transmission
WO2007029443A1 (ja) * 2005-09-09 2007-03-15 Matsushita Electric Industrial Co., Ltd. 画像処理方法、画像記録方法、画像処理装置および画像ファイルフォーマット
US8879856B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Content driven transcoder that orchestrates multimedia transcoding using content information
US20070078876A1 (en) * 2005-09-30 2007-04-05 Yahoo! Inc. Generating a stream of media data containing portions of media files using location tags
US7164370B1 (en) * 2005-10-06 2007-01-16 Analog Devices, Inc. System and method for decoding data compressed in accordance with dictionary-based compression schemes
CN100442858C (zh) * 2005-10-11 2008-12-10 华为技术有限公司 分组网络中多媒体实时传输的唇同步方法及其装置
ES2383230T3 (es) * 2006-01-05 2012-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Gestión de archivos contenedores de medios
EP1985022B1 (en) * 2006-02-08 2011-06-08 Thomson Licensing Decoding of raptor codes
JP5194465B2 (ja) * 2006-03-08 2013-05-08 Jfeスチール株式会社 塗装鋼板、加工品および薄型テレビ用パネルならびに塗装鋼板の製造方法
TWM302355U (en) * 2006-06-09 2006-12-11 Jia-Bau Jeng Fixation and cushion structure of knee joint
US9380096B2 (en) * 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9432433B2 (en) * 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US8209736B2 (en) * 2006-08-23 2012-06-26 Mediatek Inc. Systems and methods for managing television (TV) signals
US20080066136A1 (en) * 2006-08-24 2008-03-13 International Business Machines Corporation System and method for detecting topic shift boundaries in multimedia streams using joint audio, visual and text cues
JP2008109637A (ja) * 2006-09-25 2008-05-08 Toshiba Corp 動画像符号化装置及びその方法
WO2008054112A2 (en) * 2006-10-30 2008-05-08 Lg Electronics Inc. Methods of performing random access in a wireless communication system
CA2656144A1 (en) * 2007-01-11 2008-07-17 Panasonic Corporation Method for trick playing on streamed and encrypted multimedia
US8126062B2 (en) * 2007-01-16 2012-02-28 Cisco Technology, Inc. Per multi-block partition breakpoint determining for hybrid variable length coding
JP2008283571A (ja) * 2007-05-11 2008-11-20 Ntt Docomo Inc コンテンツ配信装置、コンテンツ配信システム、およびコンテンツ配信方法
KR20100030648A (ko) * 2007-06-26 2010-03-18 노키아 코포레이션 시간 레이어 스위칭 포인트들을 표시하는 시스템 및 방법
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
US9237101B2 (en) * 2007-09-12 2016-01-12 Digital Fountain, Inc. Generating and communicating source identification information to enable reliable communications
US8346959B2 (en) * 2007-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Client-controlled adaptive streaming
WO2009130561A1 (en) * 2008-04-21 2009-10-29 Nokia Corporation Method and device for video coding and decoding
US8638796B2 (en) * 2008-08-22 2014-01-28 Cisco Technology, Inc. Re-ordering segments of a large number of segmented service flows
US8325796B2 (en) * 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8743906B2 (en) * 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
US8918533B2 (en) * 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) * 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
KR20120010089A (ko) * 2010-07-20 2012-02-02 삼성전자주식회사 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
US9596447B2 (en) * 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9456015B2 (en) * 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
KR101737325B1 (ko) * 2010-08-19 2017-05-22 삼성전자주식회사 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치

Also Published As

Publication number Publication date
JP2012518347A (ja) 2012-08-09
EP2396968A1 (en) 2011-12-21
WO2010094003A1 (en) 2010-08-19
CN102318348B (zh) 2015-04-01
TW201110710A (en) 2011-03-16
JP2014014107A (ja) 2014-01-23
US20100211690A1 (en) 2010-08-19
CN102318348A (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
JP5788442B2 (ja) データストリームに対するブロックパーティショニング
KR101716071B1 (ko) 적응적 스트리밍 기법
TWI511544B (zh) 用於可調適視訊串流之技術
JP4980567B2 (ja) 動的なネットワーク損失状態に対する簡単な適応を備えたマルチメディアサーバ
EP2612495B1 (en) Adaptive streaming of video at different quality levels
CN107734332B (zh) 用于视频通信的参考帧管理方法和设备
JP5147278B2 (ja) 映像配信装置およびキーフレーム配信方法
US20180316949A1 (en) Video distribution, storage, and streaming over time-varying channels
JP2011512047A (ja) メタデータを使用してより低い複雑さの複数ビットレートビデオ符号化を実行する方法及び装置
CN113170086B (zh) 视频块组合优化
EP1719081B1 (en) Prioritising data elements of a data stream
JP2022516517A (ja) メディアタイトルのバッファ制約バージョンを生成する際の符号化演算の最適化
US9258622B2 (en) Method of accessing a spatio-temporal part of a video sequence of images
US20180184145A1 (en) Abr network profile selection engine
TW512635B (en) System for controlling data output to a network
US10002644B1 (en) Restructuring video streams to support random access playback
JP4361430B2 (ja) 双方向画像通信装置、その処理方法及びクライアント装置並びにプログラム
Aulí-Llinàs et al. FAST rate allocation through steepest descent for JPEG2000 video transmission
EP3123730B1 (en) Enhanced distortion signaling for mmt assets and isobmff with improved mmt qos descriptor having multiple qoe operating points
US11871079B2 (en) Client and a method for managing, at the client, a streaming session of a multimedia content
EP4312417A1 (en) Content delivery network (cdn) selection using performance metric
CN114902685B (zh) 用于发送和接收视频的方法和装置
US20240031420A1 (en) Content delivery network (cdn) selection using performance metric

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140930

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150729

R150 Certificate of patent or registration of utility model

Ref document number: 5788442

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees