(57)【要約】      （修正有）【課題】送信機から受信機にデータストリームが中断しないように供給する方法を提供する。【解決手段】データストリームの基礎となる構造を決定することと、（１）送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、（２）データストリームを送るのに必要な送信帯域幅を減少させることと、（３）データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定し、少なくとも１つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信する。【選択図】図９
2014014107.tif 000002
【特許請求の範囲】
【請求項１】
送信機から受信機にデータストリームを供給する方法において、
前記データストリームの基礎となる構造を決定することと、
（１）前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定することと、
前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信することとを含む方法。
【請求項２】
前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む請求項１記載の方法。
【請求項３】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する方法において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定することと、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定し、前記現在のブロックとして、前記データストリームの最後のブロックを規定することと、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定することと、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定することと、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントを規定することと、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定することとを含む方法。
【請求項４】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される請求項３記載の方法。
【請求項５】
前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される請求項３記載の方法。
【請求項６】
前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される請求項３記載の方法。
【請求項７】
前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される請求項３記載の方法。
【請求項８】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する方法において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記データストリームを複数の探索ブロックに分割することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定することとを含み、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている方法。
【請求項９】
データストリームを供給するサーバにおいて、
前記データストリームの基礎となる構造を決定するように構成され、（１）送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することのグループから選択された、少なくとも１つの目的を決定するように構成されているプロセッサと、
前記プロセッサに結合され、前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信するように構成されている送信機とを具備するサーバ。
【請求項１０】
前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む請求項９記載のサーバ。
【請求項１１】
前記データストリームは、ビデオコンテンツを含み、前記データストリームの前記ブロックは、ユーザデータグラムプロトコルを使用して送信される請求項９記載のサーバ。
【請求項１２】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するサーバにおいて、
前記データストリームの最初のブロックの開始位置を規定するようにと、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットを反復して決定することによって、前記データストリームの最後のブロックを決定するようにと、前記データストリームの前記最後のブロックのエンドポイントを規定するようにと、前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、前記第１のセットと、前記現在のブロックに続く次の連続ブロックの候補開始位置の第２のセットとの共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを反復して規定するようにと、前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定するように構成されているプロセッサを具備するサーバ。
【請求項１３】
前記プロセッサに結合され、前記候補開始位置の第１のセットを記憶するメモリをさらに具備する請求項１２記載のサーバ。
【請求項１４】
前記プロセッサに結合され、前記データストリームとして供給されることになるコンテンツを記憶する記憶デバイスをさらに具備する請求項１２記載のサーバ。
【請求項１５】
前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される請求項１２記載のサーバ。
【請求項１６】
前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される請求項１２記載のサーバ。
【請求項１７】
前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される請求項１２記載のサーバ。
【請求項１８】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するサーバにおいて、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと、前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定するように構成されているプロセッサを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされているサーバ。
【請求項１９】
コンピュータプログラムプロダクトにおいて、
データストリームの基礎となる構造をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
（１）送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記送信機から前記受信機に前記データストリームを供給するためのブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備し、
前記ブロックパーティションは、前記データストリームの前記ブロックの送信および受信が、前記少なくとも１つの目的と、前記基礎となる構造とに一致していることを保証するコンピュータプログラムプロダクト。
【請求項２０】
前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む請求項１９記載のコンピュータプログラムプロダクト。
【請求項２１】
コンピュータプログラムプロダクトにおいて、
データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して、プロセッサに決定させ、前記現在のブロックとして、前記データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備するコンピュータプログラムプロダクト。
【請求項２２】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される請求項２１記載のコンピュータプログラムプロダクト。
【請求項２３】
前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される請求項２１記載のコンピュータプログラムプロダクト。
【請求項２４】
前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される請求項２１記載のコンピュータプログラムプロダクト。
【請求項２５】
前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される請求項２１記載のコンピュータプログラムプロダクト。
【請求項２６】
コンピュータプログラムプロダクトにおいて、
それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有するデータストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的にプロセッサに規定させるように構成されているプロセッサ読み取り可能命令読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能命令読み取り可能な命令と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能命令読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備するコンピュータプログラムプロダクト。
【請求項２７】
送信機から受信機にデータストリームを供給するように構成されている装置において、
前記データストリームの基礎となる構造を決定する手段と、
（１）前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定する手段と、
前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信する手段とを具備する装置。
【請求項２８】
前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む請求項２７記載の装置。
【請求項２９】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている装置において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定する手段と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定して、前記現在のブロックとして、前記データストリームの最後のブロックを規定する手段と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定する手段と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の前記第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定する手段と、
前記共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを規定する手段と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定する手段とを具備する装置。
【請求項３０】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される請求項２９記載の装置。
【請求項３１】
前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される請求項２９記載の装置。
【請求項３２】
前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される請求項２９記載の装置。
【請求項３３】
前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される請求項２９記載の装置。
【請求項３４】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するように構成されている装置において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定する手段とを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている装置。
【発明の詳細な説明】
【関連出願に対する相互参照】
【０００１】
本出願は、「データストリームに対する最適なブロックパーティショニング方法」と題し、２００９年２月１３日に出願された米国仮出願番号第６１／１５２，５５１号の利益を主張し、この出願は、本出願の譲受人に譲渡され、すべての目的のためにここに参照により明示的に組み込まれている。
【背景】
【０００２】
本開示は、メディアまたはデータのストリーミングに関連し、特に、ブロックパーティショニングに関連する。
【０００３】
ストリーミングアプリケーションでは、受信したデータを最小量の遅延で使用できることが重要であることが多い。例えば、メディアをストリーミングするときに、受信機は、可能な限り早くメディアの再生を開始できる必要があり、データの不十分さの予測できるイベントが原因で、後にストリーム中で再生が中断されるべきではない。ストリーミングアプリケーションにおける別の重要な制約は、ストリームを送るために使用する送信帯域幅を最小に、または、減少させる必要性である。例えば、利用可能な帯域幅が制限され、より広い帯域幅で送ることはより費用がかかり、または、データの競合フローが利用可能な帯域幅を共有するので、この必要性が生じ得る。
【０００４】
多くのストリーミングアプリケーションでは、データストリームは、受信機においてどのようにデータストリームを消費し得るかを決定する基礎となる構造を有している。例えば、ビデオストリーミングの際に、データストリームは、データのフレームのシーケンスを含んでいてもよい。特定の時点でビデオフレームを表示するために、それぞれのフレーム中のデータを使用する。ここで、ビデオフレームを表示することは、データストリームを消費すると考える。効率的なビデオ圧縮のために、データのフレームは、類似して見えるビデオフレームに表示する、データの他のフレームに依存することができる。フレームに対するデータの送信順序は、フレームの表示順序とは異なっているかもしれない。すなわち、フレームに対するデータは、典型的に、直接的におよび間接的に、このフレームに対するデータが依存しているフレームのデータをすべて送った後に送られる。これらのタイプのストリーミングアプリケーションにおいて、データストリームの中断のない消費を提供するために、連続ビデオフレームの表示は、非常に固定された時間間隔で（例えば、秒当たり２４フレームで）間隔をあける必要があり、フレームを表示するのに必要な、ストリーム中のすべてのデータは、そのフレームに対する表示時間より前に受信機に到達している必要がある。したがって、受信機におけるデータの消費モデルと組み合わせたデータストリームの基礎となる構造は、データストリームの中断のない消費のためにいつ、データが受信機に到達する必要があるかを決定する。
【０００５】
ストリーミングアプリケーションでは、データのオリジナルストリームをブロックにパーティションすることが効果的であることが多い。例えば、パケット損失があるリンクを通してストリーミングするとき、パケット損失またはエラーに対する保護を提供するために、前方誤り訂正（ＦＥＣ）コードを、それぞれのブロックに適用することができる。別の例として、危険に曝されたリンクを通してのストリームの送信を安全にするために、暗号化スキームをそれぞれのブロックに適用することができる。このようなシチュエーションでは、あるブロックの目的を満たすブロックにストリームをパーティションすることが効果的であり、例えば、ＦＥＣを適用するときには、ＦＥＣ送信に対する付加的な帯域幅を使用する犠牲を払って可能な最大保護を提供できることが効果的であり、または、暗号化を適用するときには、受信機における解読のための処理要件を分散することが効果的である。
【０００６】
これらのアプリケーションでは、データストリームは、受信機におけるブロック全体の単位での消費に対して利用可能であるケースが多い。すなわち、ブロック内のデータは、そのブロックを含むすべてのデータが受信機において利用可能になるまで、受信機における消費に対して利用可能ではない。したがって、ブロックパーティショニング方法は、データストリームの中断のない消費を達成するとともに、データストリームの送信および消費の他の態様を達成するのに必要な、スタートアップ遅延および送信帯域幅に影響を与えることがある。
【０００７】
必要とされているものは、データストリームの中断のない消費を達成するために、最小スタートアップ遅延を達成し、最小送信帯域幅を使用すると同時に、ブロックの目的を満たすブロックパーティショニング方法である。
【０００８】
いくつかのストリーミングアプリケーションでは、ストリーム内の多数のスターティングポイントのうちのいずれか１つからのデータストリームを消費することに、受信機が加わったり開始できることが必要とされるかもしれない。したがって、上記の目的を満たして、ストリーム内の多数のスターティングポイントのうちのいずれか１つからのデータストリームの消費を受信機が開始することもできるブロックパーティショニング方法もまた必要とされているものである。
【概要】
【０００９】
開示にしたがった、送信機から受信機にデータストリームを供給する例示的な方法は、データストリームの基礎となる構造を決定することと；（１）送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、（２）データストリームを送るのに必要な送信帯域幅を減少させることと、（３）データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定することと；少なくとも１つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信することとを含む。
【００１０】
このような方法の実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
【００１１】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する例示的な方法は、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定することと；データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第１のセット中に存在するまで、次の連続ブロックの候補開始位置の第１のセットを反復して決定することと；データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定することと；最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、（１）データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットと、（２）現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定することと；共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定することと；データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定することとを含む。
【００１２】
このような方法の実施形態は、以下の特徴のうちの１つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され、データストリームを供給する通信リンクが、累積リンク容量関数によって規定され；累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積リンク容量関数とターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
【００１３】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する例示的な方法は、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割することと；複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと；複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと；データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定することとを含み、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
【００１４】
データストリームを供給する例示的なサーバは、データストリームの基礎となる構造を決定するように構成され、（１）送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、（２）データストリームを送るのに必要な送信帯域幅を減少させることと、（３）データストリームのブロックが、予め定められたブロック制約を満たすことを保証することのグループから選択された、少なくとも１つの目的を決定するように構成されているプロセッサと；プロセッサに結合され、少なくとも１つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信するように構成されている送信機とを具備する。
【００１５】
このようなサーバの実施形態は、以下の特徴のうちの１つ以上を含んでいてもよい。予め定められたブロック制約が、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む。データストリームが、ビデオコンテンツを含み、データストリームのブロックが、ユーザデータグラムプロトコルを使用して送信される。
【００１６】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する例示的なサーバは、データストリームの最初のブロックの開始位置を規定するようにと；最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットを反復して決定することによって、データストリームの最後のブロックを決定するようにと；データストリームの最後のブロックのエンドポイントを規定するようにと；最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、第１のセットと、現在のブロックに続く次の連続ブロックの候補開始位置の第２のセットとの共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを反復して規定するようにと；データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定するように構成されているプロセッサを具備する。
【００１７】
このようなサーバの実施形態は、以下の特徴のうちの１つ以上を備えていてもよい。サーバは、プロセッサに結合され、候補開始位置の第１のセットを記憶するメモリを備える。サーバは、プロセッサに結合され、データストリームとして供給されることになるコンテンツを記憶する記憶デバイスを備える。データストリームは、累積ストリームサイズ関数によって規定され、データストリームを供給する通信リンクが、累積リンク容量関数によって規定され；累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され；ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積リンク容量関数とターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
【００１８】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する例示的なサーバは、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割するようにと；複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと；複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと；データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定するように構成されているプロセッサを備え、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
【００１９】
例示的なコンピュータプログラムプロダクトは、データストリームの基礎となる構造をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と；（１）送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、（２）データストリームを送るのに必要な送信帯域幅を減少させることと、（３）データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と；送信機から受信機にデータストリームを供給するためのブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備し、ブロックパーティションは、データストリームのブロックの送信および受信が、少なくとも１つの目的と、基礎となる構造とに一致していることを保証する。
【００２０】
このようなコンピュータプログラムプロダクトの実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
【００２１】
例示的なコンピュータプログラムプロダクトは、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と；データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第１のセット中に存在するまで、次の連続ブロックの候補開始位置の第１のセットを反復して、プロセッサに決定させ、現在のブロックとして、データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と；データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と；最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、（１）データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットと、（２）現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第２のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と；共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と；データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能な媒体を具備する。
【００２２】
このようなコンピュータプログラムプロダクトの実施形態は、以下の特徴のうちの１つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され；データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積リンク容量関数とターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
【００２３】
例示的なコンピュータプログラムプロダクトが、それぞれの探索ポイントが、データストリーム中のポイントであり、受信機が、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、特定の探索ポイントの一方側のデータが、特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有するデータストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と；複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的にプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と；複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と；データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備する。
【００２４】
送信機から受信機にデータストリームを供給するように構成されている例示的な装置は、データストリームの基礎となる構造を決定する手段と；（１）送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと、（２）データストリームを送るのに必要な送信帯域幅を減少させることと、（３）データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定する手段と；少なくとも１つの目的と、基礎となる構造とに一致した、データストリームのブロックを送信する手段とを具備する。
【００２５】
このような装置の実施形態は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を予め定められたブロック制約が含むという特徴を含んでいてもよい。
【００２６】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている例示的な装置は、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定する手段と；データストリームの最初のビット位置において最初のブロックが開始するとした場合に、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、次の連続ブロックの候補開始位置の第１のセット中に存在するまで、次の連続ブロックの候補開始位置の第１のセットを反復して決定して、現在のブロックとして、データストリームの最後のブロックを規定する手段と；データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定する手段と；最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、（１）データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットと、（２）現在のブロックに続く次の連続ブロックのエンドポイントにおいて次の連続ブロックにすぐに続くブロックが開始するとした場合の、次の連続ブロックの候補開始位置の第２のセットとの共通部分を決定する手段と、共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定する手段と、データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定する手段とを具備する。
【００２７】
このような装置の実施形態は、以下の特徴のうちの１つ以上を含んでいてもよい。データストリームの最後の可能性あるブロックが、データストリームのサイズと、データストリームのブロックに対する最小ブロックサイズとから決定される。データストリームは、累積ストリームサイズ関数によって規定され；データストリームを供給する通信リンクが、累積リンク容量関数によって規定され；累積ストリームサイズ関数と累積リンク容量関数とした場合に、データストリームの中断のない提示のための減少したスタートアップ遅延で、ブロックパーティションが決定される。データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積ストリームサイズ関数とターゲットスタートアップ遅延とした場合に、データストリームの中断のない提示を保証する減少した送信帯域幅で、ブロックパーティションが決定される。データストリームを供給する通信リンクが、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、データストリームを供給するために決定され；累積リンク容量関数とターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、データストリームの中断のない提示を保証するデータストリームの最高品質エンコーディングで、ブロックパーティションが決定される。
【００２８】
ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するように構成されている例示的な装置は、データストリームが、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができ、データストリームを複数の探索ブロックに分割する手段と；複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延よりも少ないまたは予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と；複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で、各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と；データストリーム中の複数の探索ブロックのそれぞれの探索ブロックのローカルブロックパーティションとして、グローバルブロックパーティションを決定する手段とを具備し、それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコードされている。
【００２９】
ここで記述したブロックパーティショニング方法によって提供される能力は、以下を含む。ここで記述したブロックパーティショニング方法は、実現するのに計算効率がよい。ストリームされることになるデータの、所定の基礎となる送信順序および消費構造に対して、ここで記述したブロックパーティショニング方法は、ブロックされたデータストリームを受信する受信機におけるスタートアップ遅延が最小である方法でデータストリームをパーティションする。さらに、ここで記述したブロックパーティショニング方法により提供されるブロック構造に基づいてエンコードするブロックＦＥＣコードとともにブロックパーティショニング方法を使用するときに、ストリームの破損に対する所定のレベルの保護を提供するのに必要な付加的な送信帯域幅が、最小である。データストリーム内の任意のポイントから始まるデータストリームを受信機が受信するとき、または、データストリーム内の任意のポイントから始まるデータストリームを要求するときでさえも、これらの利益を達成することができる。データストリームレートが経時的に可変であるときでさえも、これらの利益を達成することができる。
【図面の簡単な説明】
【００３０】
【図１】図１は、可変ビットレート（ＶＢＲ）データストリームの、瞬間的なおよび平均提示レートを図示しているプロットである。
【図２】図２は、スタートアップ遅延とリンク容量との間の典型的なトレードオフの曲線を図示しているプロットである。
【図３】図３は、累積ストリームサイズ（ＣＳＳ）関数および累積リンク容量（ＣＬＣ）関数の例を図示しているプロットである。
【図４】図４は、単一のデータストリームに対する、２つのブロック化された累積ストリームサイズ（ＢＣＳＳ）関数の例を図示しているプロットである。
【図５】図５は、固定された送信帯域幅に対するスタートアップ遅延を減少させる幾何学的解釈を図示しているプロットである。
【図６】図６は、固定されたスタートアップ遅延に対する送信帯域幅を減少させる幾何学的解釈を図示しているプロットである。
【図７】図７は、固定されたスタートアップ遅延および固定された送信帯域幅に対するデータストリームのエンコーディング品質を向上させる幾何学的解釈を図示しているプロットである。
【図８】図８は、データストリームのブロックに対する１セットの可能な開始位置を決定するためのプロジェクション演算の幾何学的解釈を図示しているプロットである。
【図９】図９は、データストリームを供給するブロックパーティションを決定するプロセスのブロックフロー図である。
【図１０】図１０は、データストリームのブロックに対する不可能な開始位置の幾何学的解釈を図示しているプロットである。
【図１１】図１１は、データストリーム中の複数のスターティングポイントに対する実効スタートアップ遅延の例を図示しているプロットである。
【図１２】図１２は、複数のスターティングポイントを有するデータストリームを供給するグローバルブロックパーティションを決定するプロセスのブロックフロー図である。
【詳細な説明】
【００３１】
ここで記述した技術は、送信機から受信機にデータストリームを供給するためのメカニズムを提供し、データストリームのブロックの送信および受信は、データストリームの基礎となる構造と、データストリームを供給するために決定された１つ以上の目的とに一致している。データストリームを供給する目的は、送信機からデータストリームを受信するのを受信機が最初に開始するときと、中断しないでデータストリームのブロックの消費を受信機が開始できるときとの間のスタートアップ遅延を、基礎となる構造にしたがって減少させることと；データストリームを送るのに必要な送信帯域幅を減少させることと；データストリームのブロックが、予め定められたブロック制約を満たすことを保証することとを含む。データストリームを供給するためのグローバルブロックパーティションを決定するための技術も記述する。ここで、データストリームは、複数の可能性ある探索ポイントを有し、受信機は、最大スタートアップ遅延内でデータストリームを消費するのを開始できる。他の実施形態は、開示および特許請求の範囲の範囲内である。
【００３２】
リアルタイムストリーミングアプリケーションに対しては、送信機が、受信機において受信され、最小量の遅延で消費されることになるデータのストリームを供給する。１つのアプリケーションはメディアストリーミングであり、メディアコンテンツは、ストリーミングが開始した直後に、表示または提示されることが予想される。本開示は、メディアストリーミングからの例を含むが、引き起こされる問題およびここで記述した方法の範囲は、メディアアプリケーションの範囲を超えて適用可能であり、データがストリーミングされている間、データのストリームが中断しないで消費されることになる任意のリアルタイムストリーミングアプリケーションを含む。とはいえ、参照を容易にするために、本開示は、一般的に、メディアストリーミングアプリケーションに適用される専門用語を含んでいる。特に明記しない限り、データストリームの、「消費」という用語や、「提示」という用語や、「表示」という用語は、以下では、区別なく使用している。特に明記しない限り、参照を容易にするために、以下では、データのサイズはビットの単位で表現し、時間は秒の単位で表現し、レートは秒当たりのビットの単位で表している。
【００３３】
開示した技術を使用できる多くの環境が存在する。１つの例は、データストリームが多くの受信機に対して同時に利用可能であるブロードキャスト／マルチキャストネットワークを通した、受信機に対するオーディオ／ストリーミングビデオである。この例では、受信機が、さまざまな時点で、ストリームに加わること、または、ストリームを離れることがあるので、受信機がストリームに加わるときと、消費のためにビデオが最初に利用可能なときとの間のスタートアップ時間を、減少させることまたは最小限にすることは重要である。例えば、ビデオストリームを見ることを開始するようにユーザが最初に要求したときに、ユーザがストリームを見るように要求した後にビデオが受信機デバイスの表示スクリーン上に現れるのにどのくらいかかるかは、ユーザによって認識されるように、提供されるサービスの品質に対して極めて重要であり、スタートアップ時間は、この時間に対して寄与するものである。別の例として、ユーザが１つのストリームを見ていて、「チャネルを変更」して、異なるストリームを見ようと決めたときに、最初のビデオが受信機デバイスの表示スクリーン上に現れるのを止めて、第２のストリームが受信機デバイスで表示され始めるのにどのくらいかかるかは、ユーザによって認識されるように、提供されるサービスの品質に対して極めて重要であり、スタートアップ時間は、この時間に対して寄与するものである。別の例は、個々の受信機がデータストリームを要求するユニキャストネットワークを通したオーディオ／ビデオストリーミングであり、例えば、エンドユーザがビデオストリームをサンプリングし、ストリームの異なる部分を見ようとあちこちにジャンピングすることに応答して、ストリーム内の異なるポイントにおいてストリームを消費することを開始するように要求するかもしれない。基礎となるパケット転送プロトコルは、ユーザデータグラムプロトコル（ＵＤＰ）によるムービングピクチャエキスパートグループ−２（ＭＰＥＧ−２）、ＵＤＰによるリアルタイム転送プロトコル（ＲＴＰ）、ハイパーテキスト転送プロトコル／送信制御プロトコル（ＨＴＴＰ／ＴＣＰ）、ＵＤＰによるデータグラム輻輳制御プロトコル（ＤＣＣＰ）、またはさまざまな他の転送プロトコルのうちの任意のものであってもよい。これらのケースのすべてでは、ストリーム内での破損から保護するために、例えば、ＵＤＰまたはＲＴＰを使用しているときにパケット損失から保護するために、または、「向上したブロック−要求ストリーミングシステム」と題する、２００９年９月２２日に提出された米国仮出願番号６１／２４４，７６７号中でより詳細に記述したように、ＨＴＴＰを使用しているときに時間損失から保護するために、ＦＥＣエンコーディングを使用してストリームを保護することが重要であることが多い。この米国仮出願は、すべての目的のためにここでの参照により明確にここに組み込まれている。
【００３４】
例えば、データストリームが、ＭＰＥＧ−２ビデオエンコーディング、あるいは、Ｈ．２６３またはＨ．２６４ビデオエンコーディングであるときや、データストリームが、オーディオデータとビデオデータとを組み合わせたものであるときに、基礎となる、データ送信および消費構造は、極めて複雑であるかもしれない。さらに、これらの例では、ストリーム内でのデータ送信順序は、データ消費構造とは異なることが多い。例えば、ピクチャのグループ（ＧＯＰ）に対する典型的な消費順序は、Ｉ−Ｂ−Ｂ−Ｂ−Ｐ−Ｂ−Ｂ−Ｂ−Ｐであるかもしれず、ここでは、Ｉは、Ｉ−フレームまたはイントラコード化されたフレームのことを指し、Ｐは、Ｐ−フレームまたは予測エンコードされたフレームのことを指し、Ｂは、Ｂ−フレームまたは双方向予測されエンコードされたフレームのことを指す。この例では、Ｐ−フレームは、Ｉ−フレームに依存しており、Ｂ−フレームは、周囲のＩ−フレームとＰ−フレームとに依存している。代わりに、このシーケンスに対する送信順序は、Ｉ−Ｐ−Ｂ−Ｂ−Ｂ−Ｐ−Ｂ−Ｂ−Ｂであるかもしれない。すなわち、たとえ、Ｐ−フレームに依存している３つのＢ−フレームの後にＰ−フレームが表示されるとしても、この例におけるそれぞれのＰ−フレームは、これらの３つのＢ−フレームの前に送られる。したがって、ブロックパーティショニング方法は、さまざまな送信順序と消費構造とを考慮に入れることが可能である必要がある。ここで記述した方法を適用できるさまざまな異なるタイプのデータストリームが存在する。例えば、テレメトリーデータストリームや、遠隔ビークルまたはデバイスを動作させるためのコマンドおよび制御で使用するデータストリームや、ここでリストアップした余りにも多すぎる構造を持つさまざまな他のタイプのデータストリームのようなものがある。ここで記述したブロックパーティショニング方法は、異なる送信構造および消費構造を有する任意の数の異なるタイプのデータストリームに適用する。オリジナルデータを、必ずしも、本質的にストリームであると考える必要さえない。例えば、高い解像度マップに対するデータを、異なる解像度の階層に編成してもよく、データストリームの最初の部分が到達し、消費されるときに、低い解像度での、ストリームのクイックな表示を可能にする送信順序および消費順序で編成してエンドユーザにストリームとして送ってもよく、そして、マップの表示は、データストリームの付加的な部分が到達し、消費されるときに、次第に改良され、更新される。
【００３５】
ここで記述したブロックパーティショニング方法を使用してもよい環境は、リアルタイムストリーミングを含み、リアルタイムストリーミングでは、可能な限り少ない計算リソースを使用して発生させるように、データストリームの部分に方法をクイックに適用できることが重要である。ブロックパーティショニング方法は、既に処理されたコンテンツのオンデマンドストリーミングにも適用することができ、オンデマンドストリーミングでは、データがストリームされる前に、データストリーム全体が処理に対して利用可能であるかもしれない。ブロックパーティショニング方法を適用するために利用可能な計算リソースが制限されていることや、方法が適用される多量のデータストリームが存在することがあるので、ブロックパーティショニング方法を計算効率がよい方法で適用できることも、オンデマンドストリーミングケースには重要である。
【００３６】
多くの異なるプラットフォームは、発信元から宛先にデータをストリーミングすることをサポートすることができる。発信元は、コンピュータ、サーバ、クライアント、無線ブロードキャストタワー、ワイヤレス送信機、ネットワーク使用可能なデバイス等とすることができる。宛先は、コンピュータ、サーバ、クライアント、無線受信機、テレビ、ワイヤレスデバイス、電話機、ネットワーク使用可能なデバイス等とすることができる。発信元および宛先は、ワイヤード、ワイヤレスのうちの１つ以上である（ノイズがないまたは損失の多い）チャネルによって、あるいは、（例えば、ストリームが、発信元として記憶装置中に記憶されている場合や、記憶装置を形成するデバイスまたは媒体から、宛先として読み取られる場合には）時間的なチャネルによって分けることができる。
【００３７】
他のハードウェア、ソフトウェア、ファームウェア等を使用することができる。これらのプラットフォームは、ここで記述した演算の方法を具現化する命令にしたがってプログラム化することができる。
【００３８】
ストリーミングアプリケーションでは、データは、複数の連続的なブロックにパーティションされる必要があることがあり、それぞれのブロックは、そのブロックを復元するのに十分なデータが受信機において受信されたときにデコード可能である。例えば、それぞれのブロックは、パケット損失またはエラーから保護するために、ＦＥＣコードを使用してエンコードすることができる。別の例として、セキュリティのために、それぞれのブロックは暗号化することができる。
【００３９】
ブロック上には制約が存在することが多い。ＦＥＣエンコードされたブロックの例に対しては、より短いブロックが提供するのは、より消去の少ない保護であり、より短いブロックは、ネットワークを通したバースト的なパケット損失またはエラーに脆弱である。したがって、少なくとも、指定された最小サイズのＦＥＣブロックをエンコードすることが好ましいことが多い。データストリーム内のブロック境界の位置の特定の選択を、以下では、「ブロックパーティション」と呼ぶ。最小ブロックサイズのような、指定されたブロック制約に適合するブロックパーティションを「実現可能な」パーティションと呼ぶ。
【００４０】
多くのアプリケーションは、可変ビットレート（ＶＢＲ）性質のものであるデータストリームを使用する。ビデオストリーミングケースでは、例えば、ビデオのハイアクション部分には、エンコードするために、より多くのデータが必要であり、その結果、リアルタイムで送信するためには、ビデオの静止部分よりもより広い帯域幅が必要である。例えば、ＶＢＲエンコーディングを使用すると、秒ごとにエンコードされる、ビデオのデータ量が、ビデオの異なる部分で劇的に変わることがある。表示されるビデオの品質に関してビデオ全体をエンコードするのに必要とされるデータ量によって測定されるように、ＶＢＲは、大抵、一定ビットレート（ＣＢＲ）エンコーディングよりも、さらに一層の効率的なビデオのエンコーディングを提供する。さらに、最新のビデオエンコーディング技術は、参照方法を伴う。ここで、エンコーディング効率性のために、いくつかのフレームは、他のフレームに関して差分的に記述される。参照されるフレームは、差分的に記述されるフレームよりも、はるかに大きく、フレームごとのレベルにおけるビットレートでの変動に寄与する。
【００４１】
データストリームのＶＢＲ性質は、データストリームの消費に関する。すなわち、ＶＢＲ性質は、中断のない消費を保証する、受信機におけるデータ消費のレートでの変動性を示す。例えば、消費のレートが、秒当たり５００万ビット（Ｍｂｐｓ）となることがある一方で、消費のレートは、１Ｍｂｐｓとなることもある。ＶＢＲ性質のデータストリームは、固定量の送信帯域幅を使用して、依然として送信することができる。例えば、送信機は、３Ｍｂｐｓの不変のビットレートでＶＢＲ性質のデータストリームを送ることができる。したがって、データストリームは、データストリームが消費されるレートよりもゆっくりなレートで受信機に到達するときもあれば、データストリームが消費されるレートよりも速いレートで受信機に到達するときもある。
【００４２】
図１は、例示的なＶＢＲストリームに対する瞬間的な消費または提示レート１１０を図示しており、そして、破線の横線を使用して、提示平均ビットレート（ＡＢＲ）１２０を図示している。
【００４３】
所定のデータストリームに対しては、データストリームの送信を送信機が始めるときと、ストリームの中断のない提示を受信機が開始できるときとの間の遅延（以下では「スタートアップ遅延」と呼ぶ）と、ストリーミングに使用されるリンクの容量との間にはトレードオフが存在する。受信機が、リンク容量で、または、リンク容量を下回ってストリームを受信し続ける場合に、受信機が、ストリームの何らかの部分を消費、提示、または表示する必要があるときまでに、受信機がその部分を受信することになるとすれば、受信機は、ストリームの「中断のない提示」を提供することができる。所定のデータストリームに対しては、中断のない提示を保証する、リンク容量とスタートアップ遅延との組み合わせを、「達成可能な」ペアと呼ぶ。
【００４４】
データストリームの平均ビットレートと比較してリンク容量が非常に大きい場合には、受信機は、データの大きな部分を非常に少ない時間量で受信することができ、消費レートまたは提示レートよりもより高いレートで受信し続けるだろう。このシナリオでは、非常に少ないスタートアップ遅延を達成することができる。別のシナリオでは、ストリームの平均ビットレートと比較してリンク容量が非常に小さい場合には、データストリームに対するデータの大半が受信されるまで、受信機は、提示を開始することはできないだろう。この時間より前に、受信機が開始する場合には、受信機は、データストリームの中間で消費または提示を中断する必要があるだろう。したがって、スタートアップ遅延が大きくなるかもしれない。
【００４５】
所定のデータストリームに対しては、リンク容量とスタートアップ遅延との間のトレードオフは、ほとんどすべての実用的アプリケーションに対して、図２中に図示しているように、凸減少関数である。
【００４６】
所定のデータストリームに対して、それぞれの実現可能なブロックパーティションは、特定の容量対遅延のトレードオフ曲線に対応している。
【００４７】
ここで記述する装置、システム、および方法は、達成可能である、リンク容量とスタートアップ遅延との組み合わせを決定し、特定の達成可能なペアを保証する実現可能なブロックパーティションを見出す。
【００４８】
データストリームの標準的な表現
ここで、装置、システム、および方法を記述するのを容易にするために、データストリームの提示時間の基礎となる構造は、標準的な形態で表現することができる。データストリームに対する固定されたデータ送信順序を仮定している。ストリーム中での提示時間ｔをその引数として取り、時間ｔまでのストリーム、および、時間ｔを含むストリームを提示するために受信される必要があるデータストリームの初期の部分の（ビットでの）サイズを戻す、「累積ストリームサイズ」関数Ｌ（ｔ）（以下ではＣＳＳ関数と呼ぶ）を規定する。記述を容易にするために、データストリームの最初の部分が受信機において提示されたときに、提示時間はゼロであると仮定する。したがって、Ｌ（ｔ）は、データストリームを提示するのを受信機が最初に開始した後の時間ｔ内に受信され提示される必要があるデータストリームの初期のビット数を表している。
【００４９】
いくつかのケースでは、ビットの提示が行われる提示時間は、実質的に、継続的であることがあるのに対し、他のケースでは、ビットの提示が行われる提示時間は、時間的に離散的なポイントであることがあり、時間を通して間隔が均一にあけられていることがある。時間的に間隔が均一にあけられた提示時間の例は、正確に、秒当たり２４フレームでプレイアウトされることになっているビデオストリームである。このケースでは、ビットは、均一に間隔があけられた１／２４秒の間隔で消費される。他のフレームレートが可能であり、秒当たり２４フレームのレートは、単なる例である。
【００５０】
ＣＳＳ関数は、データストリームに適用される任意のブロックパーティショニング方法の選択と無関係とすることができ、提示時間ｔの非減少関数である。すなわち、ｔ1＜ｔ2であるときにはいつでも、データストリームの初期のＬ（ｔ2）ビットは、ｔ2まで提示するのに十分である。ｔ2は、ｔ1までの提示を含むので、Ｌ（ｔ2）≧Ｌ（ｔ1）である。ＣＳＳ関数の代替的な解釈は、その逆数Ｌ-1（ｓ）によるものであり、その逆数Ｌ-1（ｓ）は、データストリームのその初期の部分のサイズｓによって識別される、データストリームのそれぞれの初期の部分に対して、データストリームのその初期の部分の提示可能な持続時間の量を与える。この逆関数も非減少関数である。
【００５１】
例として、次の３つのタイプのフレーム；他のフレームを何ら参照しない、イントラ（Ｉ）フレームまたはキーフレームと；過去に提示されたＩ−フレームおよびＰ−フレームを参照することができる予測（Ｐ）フレームと；過去に提示されたＩ−フレームおよびＰ−フレームと、将来に提示されるＩ−フレームおよびＰ−フレームとの両方とも参照することができる双方向性（Ｂ）フレームとで、ムービングピクチャエキスパートグループ（ＭＰＥＧ）標準規格にしたがってエンコードされるビデオストリームを考える。ＧｏＰ内のフレームのサンプルパターンは、以下：Ｉ1−Ｂ2−Ｐ3−Ｂ4−Ｐ5−Ｂ6−Ｐ7−Ｂ8−Ｐ9−．．．−Ｐnのようにすることができ、ここで、それぞれのフレームの後のインデックスは、そのフレームの提示順序を表す。例えば、ビデオが、固定されたフレームレートで提示されることになる場合、それぞれのインデックスは、それぞれの連続提示時間の間に発生する固定量の時間を表す。例として、フレームレートが秒当たり２４フレームである場合、それぞれのフレームは、前のフレームの後に、１／２４秒提示することになる。したがって、インデックス１を持つフレームの提示時間はゼロであり、その後にインデックス付けされているそれぞれのフレームｉの提示時間は、この例では、（ｉ−１）／２４秒である。ＭＰＥＧの例をここで挙げたが、本開示の主題事項はこれに限定されない。
【００５２】
典型的に、ビデオデータストリーム中のフレームの送信順序は、デコーディング順序である。なぜなら、このことが、中断のない提示を可能にするために、どのくらいのデータストリームを受信する必要があるかに影響を与えずに、受信機においてビデオをデコードするのに必要なバッファ空間の量を最小にするからである。先の例示を続けて、それぞれのＢ−フレームが、隣接するＰ−フレームのみ参照すると仮定すると、先のパターンに対するデコーディング順序（したがって、送信順序）は、Ｉ1−Ｐ3−Ｂ2−Ｐ5−Ｂ4−Ｐ7−Ｂ6−Ｐ9−Ｂ8．．．である。
【００５３】
インデックスｉを持つフレームのビットのサイズを、ｓ（ｉ）によって示すと、このデータストリームの例に対するＣＳＳ関数は、
【数１】
2014014107.tif 000003
【００５４】
である。
【００５５】
先の例では、提示時間は、離散的であり、ＣＳＳ関数Ｌ（ｔ）は、これらの離散的なポイント上でのみ規定することができる。しかしながら、本開示全体を通して記述する連続的なケースとの一貫性のために、Ｌ（ｔ）は、Ｌ（ｔ）の先の規定にしたがった、連続的な時間引数ｔの関数として与えられる。したがって、ｔ1およびｔ2が、ストリームに対する２つの連続した離散的な提示時間である場合に、すべてのｔ1≦ｔ＜ｔ2に対して、Ｌ（ｔ）＝Ｌ（ｔ1）と規定する。
【００５６】
ＣＳＳ関数は、一般的に、ストリームについてのすべての関連する提示時間情報を捕捉している。この関連する提示時間情報は、ストリームの瞬間的な提示レートの何らかの変動と、予め規定された送信順序でのサンプル間の可能性ある提示依存性とを含む。ＣＳＳ関数によって、それぞれのデータストリームを表すことができる。リンク容量およびスタートアップ遅延の達成可能なペアを決定する技術は、任意のＣＳＳ関数から開発することができ、所定のデータストリームの特定のＣＳＳ関数に適用できる。
【００５７】
ストリーミングリンク容量を表すために、類似した関数を規定することができる。「累積リンク容量」関数（以下では、ＣＬＣ関数と呼ぶ）は、非減少関数Ｃ（ｔ）であり、非減少関数Ｃ（ｔ）は、送信時間ｔまでリンクアップを通して送信することができるデータの最大量である、送信時間ｔにおける値を有する。すなわち、Ｃ（ｔ）は、送信時間０から時間ｔまでの瞬間的なリンク容量の積分である。同様に、リンクを通してｓビットのデータストリームを送信するのに必要な時間として、Ｃ-1（ｓ）を規定する。
【００５８】
（例えば、秒当たりのビットの単位での）ｒの固定容量を有するリンクに対しては、勾配ｒのある線のようにＣ（ｔ）表すことができる。すなわち、送信時間ｔに対してＣ（ｔ）＝ｒ×ｔである。
【００５９】
ＣＬＣ関数Ｃ（ｔ）を有するリンク上で、ストリーム中のすべての提示時間ｔに対してＬ（ｔ）≦Ｃ（ｔ＋ｄ）である場合には、スタートアップ遅延ｄより後に、ＣＳＳ関数Ｌ（ｔ）有するストリームの中断のない提示が可能である。これは、それぞれの送信時間（ｔ＋ｄ）において、受信機が、スタートアップ遅延の始まりからｄ秒後にデータを提示するのを開始した後の最初のｔ秒内に、データストリームの初期の部分の少なくともＬ（ｔ）ビットを受信している必要があるからである。しかしながら、この条件は、ブロッキングを使用する場合に、以下で記述するブロックパーティショニング方法上での付加的な制約を考慮に入れていない。
【００６０】
図３は、ｄ＝５／２４秒で、かつｒ＝９６０００ビット／秒の、先の条件の図示的解釈を示している。ここで、ＣＬＣ関数Ｃ（ｔ＋ｄ）３２０に対応している線は、ＣＳＳ関数Ｌ（ｔ）３１０の曲線よりも常に上にある。ステップは、先の例に対応している特定のデータストリームＣＳＳを図示している。ここで、ｓ（ｌ）＝１０，０００ビットであり、ｓ（２）＝２，０００ビットであり、ｓ（３）＝６，０００ビットであり、ｓ（４）＝１，５００ビットであり、ｓ（５）＝５，０００ビットであり、ｓ（６）＝３，０００ビットであり、ｓ（７）＝７，０００ビットであり、ｓ（８）＝２，５００ビットであり、ｓ（９）＝８，０００ビットである。したがって、このデータストリームの例に対するＣＳＳ関数Ｌ（ｔ）３１０は、
【数２】
2014014107.tif 000004
【００６１】
である。
【００６２】
ブロックパーティショニングによるデータストリームの標準的な表現
データストリームがブロックにパーティションされるときには、例えば、ブロックごとのベースでＦＥＣまたは暗号化をストリームに適用することになるので、しばしば、ブロック全体を受信したときにだけ、データストリームのブロックを提示または消費できることがある。したがって、ブロックパーティショニング方法は、データストリームへの適用は、結果的に、（以下ではＢＣＳＳ関数と呼ぶ）「ブロック累積ストリームサイズ」関数Ｂ（ｔ）を有するブロック化されたデータストリームになることが多い。ＢＣＳＳ関数Ｂ（ｔ）は、引数として、ストリーム中での提示時間ｔを有しており、時間ｔまでのストリーム、および、時間ｔを含むストリームを提示するために受信される必要があるデータストリームの初期の部分の（ビットでの）サイズを返す。データストリームの一部分は、ブロックベースで提示する必要がある。すなわち、データがその一部であるブロック全体がいったん到達すると、データを提示することができる。
【００６３】
提示のためにデータが利用可能である必要があるときに関する付加的な制約をブロック構造が追加することを除いて、ＢＣＳＳ関数Ｂ（ｔ）は、ＣＳＳ関数Ｌ（ｔ）に類似している。したがって、データストリームのＢＣＳＳ関数Ｂ（ｔ）は、ブロックパーティショニング方法をデータストリームに適用することから結果として生じるブロック構造にかかわらず、同じデータストリームに対してＣＳＳ関数Ｌ（ｔ）よりも、常に上のままである。データストリームの中断のない提示をサポートするために必要とされる、達成可能なスタートアップ遅延およびリンク帯域幅の点で、可能な限りデータストリームに対してＣＳＳ関数Ｌ（ｔ）よりも少し上であるＢＣＳＳ関数Ｂ（ｔ）を有することが好ましい。ＣＳＳ関数Ｌ（ｔ）に可能な限り近くて、ブロック制約を満たしているＢＣＳＳ関数Ｂ（ｔ）を生じさせるブロックパーティショニング方法を使用することは、以下で記述するブロックパーティショニング技術の目的のうちの１つである。
【００６４】
ＢＣＳＳ関数Ｂ（ｔ）でブロック構造を生成させるために、ブロックパーティショニング方法が適用されているデータストリームを考える。ＣＬＣ関数Ｃ（ｔ）を持つリンク上で、ストリーム中でのすべての提示時間ｔに対してＢ（ｔ）≦Ｃ（ｔ＋ｄ）である場合に、スタートアップ遅延ｄより後にストリームの中断のない提示が可能である。
【００６５】
図４中では、同じデータストリームに対する、ＢＣＳＳ関数の２つの例、Ｂ1（ｔ）４１０およびＢ2（ｔ）４２０を示している。先に説明した例に対して、ＢＣＳＳ関数Ｂ1（ｔ）４１０は、最初のブロックパーティション｛｛Ｉ1，Ｐ3，Ｂ2，Ｐ5｝，｛Ｂ4，Ｐ7｝，｛Ｂ6，Ｐ9，Ｂ8｝｝に対応しているのに対し、ＢＣＳＳ関数Ｂ２（ｔ）４２０は、第２のブロックパーティション｛｛Ｉ1，Ｐ3，Ｂ2｝，｛Ｐ5，Ｂ4｝，｛Ｐ7，Ｂ6｝，｛Ｐ9，Ｂ8｝｝に対応している。ＢＣＳＳ関数Ｂ2（ｔ）４２０は、ＢＣＳＳ関数Ｂ1（ｔ）４１０よりも下のままであるので、双方の関数がブロック制約を満たしている場合には、ＢＣＳＳ関数Ｂ2（ｔ）４２０はＢＣＳＳ関数Ｂ1（ｔ）４１０より好ましい。例えば、ＣＬＣ関数Ｃ（ｔ＋ｄ）４３０は、ＢＣＳＳ関数Ｂ1（ｔ）４１０に対してではなく、ＢＣＳＳ関数Ｂ2（ｔ）４２０に対して中断のない提示を提供することがきる。
【００６６】
リンク容量およびスタートアップ遅延の達成可能なペアの決定
先に説明したように、一定容量ｒを持つリンクに対しては、勾配ｒの線のように、ＣＬＣ関数Ｃ（ｔ）を表すことができる。一定容量ｒに対しては、容量とスタートアップ遅延との間の好ましいトレードオフ、または、容量とスタートアップ遅延との間の最適なトレードオフを見出すという問題には、シンプルな幾何学的ソリューションがある。３つの異なる設計基準に適合する概念の３つの変形を、挙げる。
【００６７】
１−既知の容量ｒを有するリンクに対しては、そして、ＣＳＳ関数Ｌ（ｔ）５２０によって記述される固定ストリームに対しては、減少した量または最小量のスタートアップ遅延を見出すことができる。図５中に図示しているように、線と曲線とが接触するまで、Ｌ（ｔ）５２０に対する曲線の上に、（すなわち、候補ＣＬＣ関数５１０を表している）勾配ｒの線をスライドさせることによって、これを達成する。ＣＬＣ関数Ｃ（ｔ＋ｄ）５３０を表している、スライドさせた線のｘ切片は、リンク容量ｒに対する減少した達成可能なスタートアップ遅延ｄ５４０を与える。ＣＬＣ関数Ｃ（ｔ＋ｄ）５３０は、何らかの実現可能なブロックパーティションに対する下限である。
【００６８】
２−スタートアップ遅延ｄ上でのターゲット制約に対しては、そして、ＣＳＳ関数Ｌ（ｔ）６２０によって記述される固定ストリームに対しては、ストリームの中断のない提示をサポートするために必要とされる減少したリンク容量または最小リンク容量を見出すことができる。図６中で図示しているように、候補ＣＬＣ関数６１０を表している線のｘ切片は、（−ｄ）で固定されており、Ｌ（ｔ）６２０に対する曲線にこの線が接触するまで、線を回転させる。ＣＬＣ関数Ｃ（ｔ＋ｄ）６３０を表している、回転させた線の勾配は、要求されるスタートアップ遅延ｄに対する減少した達成可能なリンク容量である。ＣＬＣ関数Ｃ（ｔ＋ｄ）６３０は、何らかの実現可能なブロックパーティションに対する下限である。
【００６９】
３−既知の容量ｒを有するリンクと、スタートアップ遅延ｄ上でのターゲット制約とに対しては、中断のない提示のためにサポートできる、コンテンツの最高品質エンコーディングを選択することができる。ストリームのエンコーディングに対する候補ＣＳＳ関数７１０は、品質パラメータθでＬθ（ｔ）として示すことができる。勾配ｒでｘ切片−ｄの線は固定されており、線はＣＬＣ関数Ｃ（ｔ＋ｄ）７３０を表している。図７中に図示しているように、Ｌθ（ｔ）７ｌ０が、ＣＬＣ関数Ｃ（ｔ＋ｄ）７３０より下のままであることを保証しながら、品質パラメータθが増加される。最高の達成可能な品質パラメータθを決定した後に、ＣＳＳ関数Ｌ（ｔ）７２０を規定することができる。ＣＳＳ関数Ｌ（ｔ）７２０は、任意の実現可能なブロックパーティションに対する上限である。
【００７０】
最小ブロックサイズ制約を満たすブロックパーティショニング方法
先に説明したように、それぞれのブロックに対して最小サイズ制約がある実用的な理由が存在し得る。この最小ブロックサイズをｍと示す。ブロックサイズ制約の下で、リンク容量およびスタートアップ遅延の達成可能なペアを決定するための、そして所定のペアを達成する実現可能なブロックパーティションを決定するための、効率的な方法を提供するように、先に説明した技術は拡張することができる。例えば、発信元デバイスおよび／または宛先デバイス中に、あるいは使用できる特殊用途ハードウェア中に、これらの方法はプログラム化することができる。
【００７１】
ｄというスタートアップ遅延が決まっていると仮定すると、任意の送信時間ｔ＞ｄに対しては、受信機は、提示時間（ｔ−ｄ）までにストリームに提示できる必要がある。ブロックｂの可能性ある開始位置を示すｓに対して、ここで、ｓは、ブロックｂの最初のビットまでの、および、ブロックｂの最初のビットを含むデータストリームの初期の部分のビット数であり、ブロックｂが実現可能であることを保証する、ブロックｂにすぐに続くブロックの可能性ある開始位置を決定する方法を記述する。
【００７２】
図８を参照すると、所定のＣＳＳ関数Ｌ（ｔ）８１０を持つデータストリームと、ＣＬＣ関数Ｃ（ｔ＋ｄ）８２０を持つリンクとに対して、ブロックｂが実現可能であることを保証する、位置ｓで開始するブロックｂのすぐ後に続くブロックに対する、可能性ある開始位置のセットとして、ＰC（ｓ）８３０によって示しているｓのＣ−プロジェクションを規定する。したがって、
【数３】
2014014107.tif 000005
【００７３】
として、ＰC（ｓ）を規定する。
【００７４】
言葉で説明すると、ＰC（ｓ）８３０は、（すなわち、最小ブロックサイズｍのために）ストリーム中の位置（ｓ＋ｍ）ビットで開始し、ストリームの送信の開始からの送信時間（Ｌ-1（ｓ）＋ｄ）までに受信することができるデータの最大量まで拡張する（場合によっては、空の）間隔である。式（１）では、ｄは、送信の開始と提示時間ゼロとの間のスタートアップ時間であり、Ｌ-1（ｓ）は、ブロックｂの最初のビットに対する提示時間である。セットＰC（ｓ）８３０は空であるので、ｓ＋ｍ＞Ｃ（Ｌ-1（ｓ）＋ｄ）である場合に、Ｓは、何らかの実現可能なブロックの開始とすることができない。図８中では、プロジェクション演算の幾何学的解釈を図示している。
【００７５】
一般的に、ブロックの可能性ある開始位置は、単一の位置よりも多いので、プロジェクション演算は、ストリーム中の位置のサブセットＴのより一般的なケース：
【数４】
2014014107.tif 000006
【００７６】
に拡張することができる。
【００７７】
所定の位置ｓから開始してｎ個のブロックが形成された後に、次のブロックの実現可能な開始位置のセットとして、ｎステッププロジェクションを規定する。それぞれの整数ｎ＞０に対して、ｎ−ステッププロジェクションＰCn（ｓ）は、
【数５】
2014014107.tif 000007
【００７８】
として再帰的に規定することができる。
【００７９】
逆プロジェクション演算子ＰC-1（ｓ）を規定し、これは、後に続くブロックが位置ｓにおいて開始する任意のブロックのすべての実現可能な開始位置のセットである：
【数６】
2014014107.tif 000008
【００８０】
式（４）の逆プロジェクションは、ストリーム中の位置のサブセットＴに拡張することもできる：
【数７】
2014014107.tif 000009
【００８１】
所定の制約に対して、データストリームの終了位置ｅまでのストリームの中断のない提示は、以下の式（６）：
【数８】
2014014107.tif 000010
【００８２】
が、何らかの正の数ｎに対して満たされた場合に実現可能である。式（６）では、それぞれのブロックはｍの最小サイズを有しているので、ｎは、（１＋ｅ）／ｍを超えるはずはない。
【００８３】
実現可能なブロックパーティションを見出すために、以下のフォワードおよびバックワードのプロセスを使用することができる：
フォワードループ：
ｎ＝１〜（１＋ｅ）／ｍに対して：
ＰCn（１）＝ＰC（ＰCn-1（１））を計算および記憶。  
【数９】
2014014107.tif 000011
【００８４】
中断してバックワードループを開始。
【００８５】
終了。
【００８６】
フォワードループが実現可能なｎを見出すのに成功しなかった場合には、ブロックパラメータの制約を達成するために、実現可能なブロックパーティションは存在しない。
【００８７】
フォワードループが、実現可能なｎを見出すのに成功した場合には、バックワードループが実行される：
バックワードループ：
ｓn＝ｅ＋１を設定
１までダウンしていくｉ＝ｎ−１に対して
【数１０】
2014014107.tif 000012
【００８８】
を計算。構成により、これは、非空のセットである。
【００８９】
任意の値を、このセットから選び、Ｓiに割り当てる。
【００９０】
終了。
【００９１】
フォワードおよびバックワードのプロセスを完了した後、Ｓ1，Ｓ2，．．．，Ｓnが、それぞれのブロックのエンドポイントとして、実現可能なブロックパーティションを規定する。
【００９２】
図９を参照すると、ビットのデータストリームを送信機から受信機に供給するためのブロックパーティションを決定するプロセス９００は、示しているステージを含んでいる。プロセス９００は、実現可能なブロックパーティションを見出すための、先に提供したフォワードおよびバックワードのプロセスのステージを記述する。しかしながら、プロセス９００は、例示に過ぎず、限定するものではない。プロセス９００は、例えば、ステージを、追加、除去、または再構成することによって、変更することができる。
【００９３】
ステージ９０２では、プロセッサ（例えば、通信リンクの発信元の送信機側のプロセッサ）が、データストリーム中の最初のビット位置として、データストリームの最初のブロックの開始位置を規定する。先に提供したフォワードおよびバックワードのプロセスのフォワードループを参照すると、ステージ９０２は、ＰC0（１）＝｛１｝を設定することによって、データストリーム中の最初のビット位置として、最初のブロック、ブロック１の開始位置を規定する。
【００９４】
ステージ９０４では、データストリームの最初のビット位置において最初のブロックが開始するとした場合、プロセッサが、最初のブロックからデータストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットを反復して決定する。データストリームの最後の可能性あるブロックは、データストリームのサイズｅと、データストリームのブロックに対する最小ブロックサイズｍとから決定することができる。フォワードループを参照すると、ステージ９０４は、最初のブロック、ブロック１から、最後の可能性あるブロック、ブロックｆｌｏｏｒ［（１＋ｅ）／ｍ］までに対して、ＰCn（１）＝ＰC（ＰCn-1（１））を反復して決定する。候補開始位置の第１のセット、ＰCn（１）は、メモリ（例えば、通信リンクの発信元の送信機側のメモリ）中に記憶させることができる。
【００９５】
データストリームの最後のビット位置ｅより後の最初のビット位置が、次の連続ブロックに対して決定された候補開始位置の第１のセット中に存在するまで、ステージ９０４の反復決定は続く。このことが起こるときに反復は終了し、プロセッサが、現在のブロックとして、データストリームの最後のブロックを規定する。フォワードループを参照すると、現在のブロック、ブロックｎに対して、
【数１１】
2014014107.tif 000013
【００９６】
であるときにステージ９０４は反復を終了する。プロセッサは、ブロックｎとして、データストリームの最後のブロックを規定する。
【００９７】
ステージ９０６では、プロセッサが、データストリームの最後のビット位置より後の最初のビット位置として、データストリームの最後のブロックのエンドポイントを規定する。先に提供したフォワードおよびバックワードのプロセスのバックワードループを参照すると、ステージ９０６は、Ｓn＝ｅ＋１を規定する。
【００９８】
ステージ９０８では、最後のブロックより前のブロックからデータストリームの最初のブロックまでのそれぞれのブロックに対して、プロセッサが、現在のブロックに続く次の連続ブロックの候補開始位置の２つのセットの共通部分を決定する。第１のセットは、データストリームの最初のビット位置において最初のブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置のセットである。フォワードループを参照すると、データストリーム中のブロックに対する第１のセットを、ステージ９０４において計算した。ステージ９０４において、第１のセットを記憶した場合、現ステージで共通部分を決定するために、第１のセットを取り出すことができる。第２のセットは、次の連続ブロックのエンドポイントにおいて次の連続ブロックのすぐ後に続くブロックが開始するとした場合の、現在のブロックに続く次の連続ブロックの候補開始位置のセットである。バックワードループを参照すると、データストリームのブロックｉ＝ｎ−１からデータストリームのブロックｉ＝１までダウンしていくそれぞれのブロックに対して、ステージ９０８は、
【数１２】
2014014107.tif 000014
【００９９】
を最初に決定する。
【０１００】
ステージ９０８を続けると、現在のブロックに対して、プロセッサが、共通部分中のビット位置として、データストリームの現在のブロックのエンドポイントを規定する。バックワードループを参照すると、現在のブロック（すなわち、ブロックｉ）に対して、その後、ステージ９０８は、
【数１３】
2014014107.tif 000015
【０１０１】
中のビット位置として、Ｓiを規定する。
【０１０２】
ステージ９１０では、プロセッサが、データストリーム中のそれぞれのブロックのエンドポイントとして、ブロックパーティションを決定する。
【０１０３】
先のプロセスは、フォワードループに対しては、完了するために、多くても（１＋ｅ）／ｍステップを取り、バックワードループに対しては、（（１＋ｅ）／ｍ）−１ステップを取る。プロセスには、フォワードプロジェクションＰCn（１）の記憶のために十分なメモリが必要である。
【０１０４】
それぞれのＰCn（１）は、提示時間の、間隔または間隔の集合である。この事実は、非常に効率的な態様で、フォワードプロジェクションセットの計算および記憶を可能にする。特に、間隔［ｓ１，ｓ２］のプロジェクションは、簡単に、
【数１４】
2014014107.tif 000016
【０１０５】
である。
【０１０６】
式（７）では、オリジナル間隔［ｓ１，ｓ２］のエンドポイントによって課せられる、下限値と上限値とによって右側における間隔を規定する。しかしながら、送信完了時間Ｃ-1（ｓ）−ｄが最小ブロックサイズｍに対する提示制約時間Ｌ-1（ｓ−ｍ）を超える任意のストリーム位置ｓは、ブロックの開始位置とすることができない。式（７）中の減算されたセットは、これらの不可能な開始位置のセットである。図１０中では、ブロックに対する不可能な開始位置のセット｛ｓ：Ｌ-1（ｓ−ｍ）＜Ｃ-1（ｓ）−ｄ｝の幾何学的解釈を図示している。
【０１０７】
先に説明したように、間隔のプロジェクションは、間隔の集合である。Ｌ（ｔ）＋ｍのシフトさせた曲線が、ＣＬＣ関数Ｃ（ｔ＋ｄ）を表している線と交差する回数によって、集合中の間隔の数を決定する。ここで、それぞれのＣ-1（ｓ）−ｄは、提示時間ｔに対応している。特に、ＣＳＳ関数Ｌ（ｔ）の大部分の滑らかな曲線に対して、Ｌ（ｔ）＋ｍのシフトさせた曲線と、ＣＬＣ関数Ｃ（ｔ＋ｄ）を表している線は、１回よりも多く交差していないので、間隔のプロジェクションは、単一の間隔のままである。したがって、それぞれのプロジェクションを、間隔の２つのエンドポイントをプロジェクティングすることまで減少させることができ、これにより、計算をスピードアップさせることができ、必要とされるメモリ記憶を減少させることができる。
【０１０８】
実現可能なブロックパーティションの決定
所定のＣＳＳ関数Ｌ（ｔ）および固定送信帯域幅ｒに対しては、ＢＣＳＳ関数Ｂ（ｔ）でのブロックパーティションが、スタートアップ遅延ｄｌで達成可能である場合に、Ｌ（ｔ）の曲線と、Ｃ（ｔ＋ｄ）を表している線との間のエリアは、ｄの増加とともにもっぱら増加するので、ブロックパーティションは、何らかのより大きいスタートアップ遅延ｄ２に対して達成可能なままである。同様に、固定されているスタートアップ遅延ｄに対しては、ＢＣＳＳ関数Ｂ（ｔ）でのブロックパーティションが、容量ｒ１を有するリンク上で達成可能である場合に、Ｌ（ｔ）の曲線と、Ｃ（ｔ＋ｄ）＝ｒ×（ｔ＋ｄ）を表している線との間のエリアもまた、ｒの増加とともにもっぱら増加するので、ブロックパーティションは、より大きい容量ｒ２を有するリンク上でも達成可能である。
【０１０９】
加えて、ブロックパーティショニング方法に課されている実現可能性制約が、最適化パラメータに関する類似した「単調性」条件を満たしている場合に−すなわち、ブロックパーティションが、最適化パラメータの値ｘｌおよびｘ２に対して実現可能であるときにはいつでも、ブロックパーティションが、その間のすべての値にも実現可能である場合に−、上述した方法をバイナリサーチと組み合わせて、スタートアップ遅延と、送信帯域幅と、エンコーディング品質との、最良または最適な実現可能な組み合わせを効率的に決定することができる。
【０１１０】
単調な実現可能性制約の例は、ブロックの最小サイズおよび／またはブロックの最大サイズに関する制約である。実現可能性は、最適化パラメータである送信帯域幅に依存しているので、非単調な制約の例は、ブロックの最小送信持続時間上の制限である。そのケースでは、帯域幅が増加すると、いくつかのブロックの送信持続時間を実現可能性制約よりも下に減少させる可能性がある。
【０１１１】
以下で説明する技術は、上記の意味で実現可能性制約が単調であると仮定している。ブロックパーティショニング方法を決定するための、関心のある３つのシナリオを記述する。
【０１１２】
第１のシナリオでは、ＣＳＳ関数Ｌ（ｔ）を有するストリームおよびＣＬＣ関数Ｃ（ｔ）を有するリンクとした場合に、ストリームの中断のない提示のための減少したスタートアップ遅延または最小スタートアップ遅延で、実現可能なブロックパーティショニング方法を決定する。
【０１１３】
スタートアップ遅延に対して、最小値ｄ０および最大値ｄｌを示す。ここで、ｄｌは、達成可能であると仮定する。例えば、ｄ０は、０に設定することができ、または、ｄ０は、スタートアップ遅延に対する制約のない下限に設定することができる。図５を参照して、この決定を、上述した。最大値ｄ１は、スタートアップ遅延に対する最大の許容値に設定することができる。バイナリサーチは、下記のように実行できる。
【０１１４】
ｄが実現可能でない間、または、小さい許容差εに対して、（ｄ１−ｄ０）＞εである間、
ｄ  ＝（ｄ０＋ｄ１）／２を設定
スタートアップ遅延ｄで、制約のない実現可能なブロックパーティションを決定するために、フォワードおよびバックワードのプロセスのフォワードループをラン
ｄが実現可能なである場合には、
ｄ１＝ｄを設定
さもなければ、ｄ０＝ｄを設定
を実行
ｄは、最良または最適な実現可能なスタートアップ遅延のε内にある。実現可能なブロックパーティショニングを見出すために、フォワードおよびバックワードのプロセスのバックワードループをランする。
【０１１５】
第２のシナリオでは、スタートアップ遅延ｄであるとした場合、ＣＳＳ関数Ｌ（ｔ）によって表されるデータストリームの中断のない提示を保証する、減少した送信帯域幅または最小送信帯域幅で、実現可能なブロックパーティショニング方法を決定する。減少したリンク容量または最小リンク容量は、減少した送信帯域幅または最小送信帯域幅に変換する。
【０１１６】
送信帯域幅に対して、最小値ｒ０および最大値ｒ１を示す。例えば、ｒ０は、０に設定することができ、または、ｒ０は、リンク容量に対する制約のない下限に設定することができる。この決定を、図６を参照して上述した。最大値ｒ１は、リンクの容量に対する最大の許容値に設定することができる。最良または最適な実現可能な送信帯域幅のε内のレートｒと、対応する実現可能なブロックパーティションとを見出すために、第１のシナリオのバイナリサーチに類似しているバイナリサーチを実行する。
【０１１７】
第３のシナリオでは、ＣＬＣ関数Ｃ（ｔ）を有するリンクと固定スタートアップ遅延ｄとした場合には、実現可能なブロックパーティショニング方法は、中断することなく提示できるデータストリームの最高品質のエンコーディングで決定される。
【０１１８】
図７を参照して先に説明したように、エンコーディングの品質は、変数
【数１５】
2014014107.tif 000017
【０１１９】
でパラメータ化され、ここで、Θは、データストリームのすべての可能性あるエンコーディングのセットである。Ｌθ（ｔ）は、品質θでのエンコーディングのＣＳＳ関数を示す。
【０１２０】
実現可能性制約の単調性に加えて、このシナリオにおいてバイナリサーチを使用するために、ストリームのエンコーディングも単調であると仮定する。すなわち、より高い品質を持つθ２に対してθ１＜θ２であるときにはいつでも、提示時間ｔのすべての値に対してＬθ1（ｔ）≦Ｌθ2（ｔ）であると仮定する。最高品質エンコーディングを見出すために、第１のシナリオおよび第２のシナリオのバイナリサーチに類似したバイナリサーチを実行する。それぞれの反復において、バイナリサーチは、候補の順序付けされたサブセット中の中間品質変数θでエンコーディングの達成可能性をテストする。有限セットΘを仮定すると、ｎ＝ｌｏｇ（｜Θ｜)反復の後に、バイナリサーチは終了する。
【０１２１】
先に説明した単調性条件のうちのいずれか１つを満たしていない場合、制約のない実現可能なブロックパーティションを決定するためのフォワードおよびバックワードのプロセスのフォワードループは、最高品質エンコーディングを見出すために、ΘのエレメントのＯ（｜Θ｜）上でランさせる必要があるだろう。
【０１２２】
複数のスターティングポイントを持つデータストリームに対するブロックパーティショニング方法
ストリーミングアプリケーションにより、ストリーム内の（以下では「探索ポイント」と呼ぶ）複数の異なるスターティングポイントにおけるデータを受信機が要求および消費することが可能になるかもしれない。例えば、ビデオストリーミングアプリケーションでは、ストリームの中間からユーザがビデオを観ることができること、例えば、既に観た部分をスキップすること、または、観逃した部分をレビューするために巻き戻すことができることが好ましい。予め規定された探索ポイントのうちのいずれか１つにおいてストリームを開始するために、帯域幅およびスタートアップ遅延の制約を観測すべきである。
【０１２３】
典型的に、データストリームのブロックパーティショニングは、進行中に、および、異なるスターティングポイントに対するユーザの要求に応答して、変更することができない。単一の最良または最適なブロックパーティショニング方法が、すべての可能性ある探索ポイントに対する帯域幅およびスタートアップ遅延制約上に、同時的な保証を提供することが好ましいだろう。
【０１２４】
１つの可能性あるソリューションは、先に説明した技術を使用して、ストリームの始まりから開始するために帯域幅および遅延の制約を最適化する、ストリーム全体に関するブロックパーティションを見出して、その後、他のすべての可能性ある探索ポイントに対して達成可能な帯域幅対スタートアップ遅延ペアを再計算することである。この情報は、それぞれの所望のスターティングポイントに対して使用されることになる、ストリームについての付加的なメタデータとして、受信機に通信することができる。
【０１２５】
しかしながら、このブロックパーティショニングソリューションは、始まりからのストリーミングに対してのみ最適であるだろう。同じ送信帯域幅に対しては、受信機は、異なる探索ポイントから開始するために、完全に異なるスタートアップ遅延時間を必要とする可能性があり、これは、望ましくない条件であるかもしれない。
【０１２６】
先の懸念事項に対処する別のソリューションは、すべての探索ポイントに対して同時に、所定の送信帯域幅とともに、所定の最大スタートアップ遅延を保証する最良または最適なブロックパーティショニング方法を決定することであるだろう。この最良または最適なブロックパーティショニング方法を決定するための効率的な方法を記述する。
【０１２７】
ｔ0＜ｔ1＜．．．＜ｔnを、データストリーム内の（提示時間単位での）すべての可能性ある探索ポイントとする。簡単にするために、データストリーム中のデコーディング依存は、それぞれの探索ポイントにわたって分けられていると仮定する。すなわち、それぞれの探索ポイントｔiに対して、以下の２つの条件が当てはまる位置ｇ（ｔi）がデータストリーム中に存在している。その位置ｇ（ｔi）までのストリームを受信している受信機は、提示時間ｔiまでにストリームを提示することができる；位置ｇ（ｔi）から先のストリームの受信を開始する受信機は、提示時間ｔiから先のストリームを提示することができる。ビデオコーディングの状況では、この条件を「閉じられたＧｏＰ」構造と呼び、探索ポイントにわたってのフレーム間の参照は存在しない。それぞれのｇ（ｔi）を含み、後続するｇ（ｔi）は含めない、それぞれのｇ（ｔi）から開始し、後続するｇ（ｔi）までのデータストリームの部分を、「探索ブロック」として示す。
【０１２８】
それぞれの探索ブロックの始まりにおいて、新しい発信元ブロック（すなわち、データストリームのブロック）が開始する。これがケースでない場合に、探索ポイントｔiにおいて開始するために、受信機は、時間ｔiから先の提示に必要とされないデータを受信してデコードする必要があるだろう。これにより、スタートアップ遅延が増加する可能性がある。それぞれの探索ブロックの始まりにおいて、新しい発信元ブロックが開始すると仮定すると、グローバルブロックパーティショニングは、個々の探索ブロックを通して、より小さいパーティショニングに細分割することができる。
【０１２９】
例では、それぞれの探索ポイントにおいて開始して、固定容量ｒを持つリンクを通してストリーミングし、ｄのスタートアップ遅延より後に中断なくストリームを提示することができる場合に、特定のブロックパーティションが決定される。それぞれの探索ブロックに対するブロックパーティショニングのアプリケーションは、他の探索ブロックから独立して、同じ条件（すなわち、スタートアップ遅延ｄの後の中断のない提示）を満たす必要がある。しかしながら、いくつかの探索ブロックの送信は、これらの対応する提示持続時間よりも、より多くの時間がかかることがある。そのケースでは、連続的な提示のために、次の探索ブロックの送信は、その開始提示時間に関して、その探索ポイントから受信機がストリーミングを開始した場合に送信が開始していただろう時間よりも後の時間において開始するだろう。言い換えると、次の探索ブロックは、オリジナル遅延ｄよりもまったく小さい実効スタートアップ遅延で提示可能でなければならないだろう。このシチェーションを、図１１中の第１の探索ブロック１１１０で説明する。遅延ｄiは、次の探索ブロックｉ＋１に対する先頭開始遅延として使用できる、探索ブロックｉからの過剰遅延として見ることができる。以下の修正されたブロックパーティショニング技術は、この条件を取り扱う。
【０１３０】
図１１にさらに関連して、図１２を参照すると、複数の探索ポイントを有しているデータストリームを供給するためのグローバルブロックパーティションを決定するプロセス１２００は、示しているステージを含む。グローバルＣＳＳ関数Ｌ（ｔ）によって、データストリームを規定する。それぞれの探索ポイントは、受信機が予め定められたスタートアップ遅延ｄ内にデータストリームを消費し始めることができるデータストリーム中のポイントである。しかしながら、プロセス１２００は、例示のみであり、限定するものではない。例えば、ステージを追加、除去、または再構成させることによって、プロセス１２００を変えることができる。
【０１３１】
ステージ１２０２では、プロセッサ（例えば、通信リンク上の発信元の送信機側のプロセッサ）が、データストリームを複数の探索ブロックに分割し、それぞれの探索ブロックは各ローカルＣＳＳ関数によって規定されている。オリジナルの、グローバルＣＳＳ関数Ｌ（ｔ）によって規定されたデータストリームは、探索ブロックに細分割される。それぞれの探索ブロックｉ＝１，２，．．．，ｎに対して、ローカルＣＳＳ関数Ｌi（ｔ）＝Ｌ（ｔ＋ｔi-1）−Ｌ（ｔi-1）を提示時間０≦ｔ≦ｐiについて規定し、ここで、ｐi＝ｔi−ｔi-1は、探索ブロックｉの提示持続時間である。
【０１３２】
探索ブロックのそれぞれのエンドポイントは、探索ポイント、データストリームのスタートポイント、または、データストリームのエンドポイントとなり得る。特定の探索ポイントの一方側のデータは、特定の探索ポイントのもう一方側のデータから独立してデコーディングされている。
【０１３３】
ステージ１２０４では、プロセッサが、複数の探索ブロックのそれぞれの探索ブロックに対して、予め定められたスタートアップ遅延ｄより少ないまたは予め定められたスタートアップ遅延ｄに等しい各実効スタートアップ遅延を再帰的に規定する。それぞれの探索ブロックに対する実効スタートアップ遅延は、ｉ＝１，２，．．．，ｎに対して、および、ｄ0＝ｄで、下記：
【数１６】
2014014107.tif 000018
【０１３４】
のように再帰的に規定される。式（８）では、Ｐi＋ｄi-1は、探索ブロックｉの送信の開始から探索ブロックｉ＋１の提示の開始までの時間を示している。減算される項Ｃ-1（Ｌi（ｐi））は、探索ブロックｉの送信持続時間である。差、Ｐi＋ｄi-1−Ｃ-1（Ｌi（ｐi））は、次の探索ブロックｉ＋１に対する先頭の開始遅延として潜在的に使用することができる累積した過剰遅延である。しかしながら、それぞれの探索ブロックは、ｄの最大スタートアップ遅延で独立的に提示可能である必要があるので、実効スタートアップ遅延を、ｄの最小のものと、累積した過剰遅延として決定する。
【０１３５】
図１１は、実効スタートアップ遅延が、オリジナルターゲット遅延ｄよりも小さい、または、オリジナルターゲット遅延ｄに等しい場合の、２つのシナリオの例を図示している。
【０１３６】
言葉で説明すると、それぞれの探索ブロックに対する実効スタートアップ遅延は（すなわち、ストリーミングがその探索ブロックにおいて開始するときのケースに対しては）、多くてもｄであるが、前の探索ブロックの送信が、前の探索ブロックの対応する提示持続時間を超えて延びる場合には、実効スタートアップ遅延はｄよりも小さくなるだろう。
【０１３７】
それぞれの探索ブロックｉに対して、ｄiのスタートアップ遅延での中断のない提示のための実現可能なローカルブロックパーティショニングが存在する場合には、多くてもｄのスタートアップ遅延での、探索ポイントのうちの任意のものから開始する中断のない提示を同時に保証する実現可能なローカルブロックパーティショニングが存在する。
【０１３８】
図１２のステージ１２０６では、プロセッサは、複数の探索ブロックのそれぞれの探索ブロックに対して、各実効スタートアップ遅延で各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する。
【０１３９】
実現可能なグローバルブロックブロックパーティショニングを決定するための上述した技術は、スタートアップ遅延上のオリジナルの制約ｄから、上述したように計算された、修正された実効スタートアップ遅延ｄiと、そのローカルＣＳＳ関数Ｌi（ｔ）とで、それぞれの探索ブロックｉ上で使用することができる。
【０１４０】
ステージ１２０８では、プロセッサは、データストリーム中の複数の探索ブロックのそれぞれの探索ブロックの各ローカルブロックパーティションとして、グローバルブロックパーティションを決定する。
【０１４１】
実現可能なグローバルブロックパーティショニングを決定するための先の技術は、データストリーム全体を通して、１つのフォワードループと１つのバックワードループにより効率的に実行されることに留意されたい；この意味では、複数の探索ポイントによって課せられる付加的な制約は、技術の効率性に影響を与えない。
【０１４２】
記述に関する考慮すべき事項
ここでの開示に関連して記述した、さまざまな例示的な論理ブロック、モジュール、および回路は、汎用プロセッサや、デジタルシグナルプロセッサ（ＤＳＰ）や、特定用途向け集積回路（ＡＳＩＣ）や、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）や、または他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは、ここに記述した機能を行うように設計されたこれらの任意のものを組み合わせたもので、実現されるか、あるいは行われてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替実施形態では、プロセッサは、何らかの従来のプロセッサ、制御装置、マイクロ制御装置、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスを組み合わせたものとして、例えば、ＤＳＰとマイクロプロセッサを組み合わせたものとして、複数のマイクロプロセッサとして、ＤＳＰコアを備えた１つ以上のマイクロプロセッサとして、あるいは、他の何らかのこのような構成として実現することができる。
【０１４３】
ここでの開示に関連して記述した方法またはアルゴリズムのブロックは、ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、あるいは、２つのものを組み合わせたもので直接的に具現化することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバルディスク、ＣＤ−ＲＯＭ，または技術的に知られている他の何らかの形態の記憶媒体中に存在していてもよい。プロセッサが記憶媒体から情報を読み取ったり、記憶媒体に情報を書き込んだりできるように、例示的な記憶媒体は、プロセッサに結合されている。代替実施形態では、記憶媒体は、プロセッサと一体化していてもよい。プロセッサおよび記憶媒体は、ＡＳＩＣ中に存在していてもよい。ＡＳＩＣは、ユーザ端末中に存在していてもよい。代替実施形態では、プロセッサおよび記憶媒体は、ディスクリートコンポーネントとしてユーザ端末中に存在していてもよい。
【０１４４】
１つ以上の例示的な設計では、記述した機能は、ハードウェア、プロセスによって実行されるソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実現してもよい。プロセッサによって実行されるソフトウェアで実現する場合、機能は、１つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に記憶してもよく、あるいは、１つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に送信してもよい。コンピュータ読み取り可能媒体は、１つの場所から別の場所へのコンピュータプログラムの移送を促進する何らかの媒体を含むコンピュータ記憶媒体および通信媒体の双方を含む。記憶媒体は、汎用コンピュータまたは特殊用途コンピュータによってアクセスできる何らかの利用可能な物理媒体であってもよい。例示によると、コンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは汎用コンピュータまたは特殊用途コンピュータ、もしくは、汎用プロセッサまたは特殊用途プロセッサによってアクセスでき、命令またはデータ構成の形態で所望のプログラムコード手段を運ぶまたは記憶するために使用できる他の何らかの媒体を含むことができるが、これらに限定されない。また、あらゆる接続は、コンピュータ読み取り可能媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブルや、光ファイバケーブルや、撚り対や、デジタル加入者線（ＤＳＬ）や、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用している、ウェブサイト、サーバ、あるいは、他の遠隔ソースから送信された場合、同軸ケーブル、光ファイバケーブル、撚り対、ＤＳＬ、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。ここで使用したようなディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザディスク（登録商標）、光ディスク、デジタル汎用ディスク（ＤＶＤ）、フロッピ（登録商標）ディスク、ブルーレイ（登録商標）ディスクを含むが、一般的に、ディスク（ｄｉｓｋ）は、データを磁気的に再生する一方で、ディスク（ｄｉｓｃ）はデータをレーザによって光学的に再生する。先のものを組み合わせたものもまた、コンピュータ読み取り可能媒体の範囲内に含められる。
【０１４５】
先の説明は、何らかの当業者が、記述した装置、システム、および方法を作り、または使用できるように提供されている。開示に対するさまざまな改良は、当業者に容易に明らかになるであろう。また、ここで規定した一般的な原理は、本開示の精神または範囲を逸脱することなく、他のバリエーションに適用されてもよい。したがって、本開示は、ここで記述した例および設計に限定されるものではないが、ここで開示した原理および新規な特徴と矛盾しない最も広範囲に一致させるべきである。
【図１】
2014014107.tif 000019
【図２】
2014014107.tif 000020
【図３】
2014014107.tif 000021
【図４】
2014014107.tif 000022
【図５】
2014014107.tif 000023
【図６】
2014014107.tif 000024
【図７】
2014014107.tif 000025
【図８】
2014014107.tif 000026
【図９】
2014014107.tif 000027
【図１０】
2014014107.tif 000028
【図１１】
2014014107.tif 000029
【図１２】
2014014107.tif 000030
【手続補正書】
【提出日】平成25年9月11日(2013.9.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する方法において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定することと、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの前記最初のブロックから最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定し、前記現在のブロックとして、前記データストリームの最後のブロックを規定することと、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定することと、
前記データストリームの前記最後のブロックより前のブロックから前記最初のブロックまでのそれぞれのブロックに対して、
現在のブロックとして、前記データストリームのブロックを選択することと、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く前記次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く前記次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定することと、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントを規定することと、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定することとを含む方法。
【請求項２】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項１記載の方法。
【請求項３】
前記データストリームは、累積ストリームサイズ関数に関係し、前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、
前記累積ストリームサイズ関数と前記累積リンク容量関数とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項１記載の方法。
【請求項４】
前記データストリームは、累積ストリームサイズ関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項１記載の方法。
【請求項５】
前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とが与えられた場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項１記載の方法。
【請求項６】
送信機から受信機にビットのデータストリームを供給するためのグローバルブロックパーティションを決定する方法において、
前記データストリームは、グローバル累積ストリームサイズ関数に関係し、複数の探索ポイントを有し、それぞれの探索ポイントは、前記受信機が、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができる、前記データストリーム中のポイントであり、
前記グローバル累積ストリームサイズ関数は、前記データストリーム内の提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記データストリームを複数の探索ブロックに分割することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定することとを含み、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数に関係し、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、
前記ローカル累積ストリームサイズ関数は、前記探索ブロックを構成するビット数を表している方法。
【請求項７】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するサーバにおいて、
前記データストリームの最初のブロックの開始位置を規定するようにと、前記データストリームの前記最初のブロックから最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットを反復して決定することによって、前記データストリームの最後のブロックを決定するようにと、前記データストリームの前記最後のブロックのエンドポイントを規定するようにと、前記データストリームの前記最後のブロックより前のブロックから前記最初のブロックまでのそれぞれのブロックに対して、前記第１のセットと、前記現在のブロックに続く次の連続ブロックの候補開始位置の第２のセットとの共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを反復して規定するようにと、前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定するように構成されているプロセッサを具備するサーバ。
【請求項８】
前記プロセッサに結合され、前記候補開始位置の第１のセットを記憶するメモリをさらに具備する請求項７記載のサーバ。
【請求項９】
前記プロセッサに結合され、前記データストリームとして供給されることになるコンテンツを記憶する記憶デバイスをさらに具備する請求項７記載のサーバ。
【請求項１０】
前記データストリームは、累積ストリームサイズ関数に関係し、前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、
前記累積ストリームサイズ関数と前記累積リンク容量関数とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項７記載のサーバ。
【請求項１１】
前記データストリームは、累積ストリームサイズ関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項７記載のサーバ。
【請求項１２】
前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とが与えられた場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項７記載のサーバ。
【請求項１３】
送信機から受信機にビットのデータストリームを供給するためのグローバルブロックパーティションを決定するサーバにおいて、
前記データストリームは、グローバル累積ストリームサイズ関数に関係し、複数の探索ポイントを有し、それぞれの探索ポイントは、前記受信機が、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができる、前記データストリーム中のポイントであり、
前記グローバル累積ストリームサイズ関数は、前記データストリーム内の提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記サーバは、
前記データストリームを複数の探索ブロックに分割するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと、前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定するように構成されているプロセッサを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数に関係し、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、
前記ローカル累積ストリームサイズ関数は、前記探索ブロックを構成するビット数を表しているサーバ。
【請求項１４】
コンピュータ読み取り可能記憶媒体において、
データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの前記最初のブロックから最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットをプロセッサに反復して決定させ、前記現在のブロックとして、前記データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最後のブロックより前のブロックから前記最初のブロックまでのそれぞれのブロックに対して、
現在のブロックとして、前記データストリームのブロックをプロセッサに選択させるように構成されているプロセッサ読み取り可能な命令と、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く前記次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く前記次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを含むコンピュータ読み取り可能記憶媒体。
【請求項１５】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項１４記載のコンピュータ読み取り可能記憶媒体。
【請求項１６】
前記データストリームは、累積ストリームサイズ関数に関係し、前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、
前記累積ストリームサイズ関数と前記累積リンク容量関数とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項１４記載のコンピュータ読み取り可能記憶媒体。
【請求項１７】
前記データストリームは、累積ストリームサイズ関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項１４記載のコンピュータ読み取り可能記憶媒体。
【請求項１８】
前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とが与えられた場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項１４記載のコンピュータ読み取り可能記憶媒体。
【請求項１９】
コンピュータ読み取り可能記憶媒体において、
それぞれの探索ポイントは、受信機が、予め定められたスタートアップ遅延内でデータストリームを消費するのを開始することができる、前記データストリーム中のポイントであり、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有する前記データストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延をプロセッサに再帰的に規定させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを具備するコンピュータ読み取り可能記憶媒体。
【請求項２０】
送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている装置において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定する手段と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記データストリームの前記最初のブロックから最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定して、前記現在のブロックとして、前記データストリームの最後のブロックを規定する手段と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定する手段と、
前記データストリームの前記最後のブロックより前のブロックから前記最初のブロックまでのそれぞれのブロックに対して、
現在のブロックとして、前記データストリームのブロックを選択する手段と、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く前記次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く前記次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定する手段と、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントを規定する手段と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定する手段とを具備する装置。
【請求項２１】
前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームのブロックに対する最小ブロックサイズとから決定される請求項２０記載の装置。
【請求項２２】
前記データストリームは、累積ストリームサイズ関数に関係し、前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、
前記累積ストリームサイズ関数と前記累積リンク容量関数とが与えられた場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項２０記載の装置。
【請求項２３】
前記データストリームは、累積ストリームサイズ関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とが与えられた場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定され、
前記累積ストリームサイズ関数は、提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表している請求項２０記載の装置。
【請求項２４】
前記データストリームを供給する通信リンクは、累積リンク容量関数に関係し、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とが与えられた場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定され、
前記累積リンク容量関数は、送信時間期間の間に前記通信リンクを通して送信することができるデータの最大量を表している請求項２０記載の装置。
【請求項２５】
送信機から受信機にビットのデータストリームを供給するためのグローバルブロックパーティションを決定するように構成されている装置において、
前記データストリームは、グローバル累積ストリームサイズ関数に関係し、複数の探索ポイントを有し、それぞれの探索ポイントは、前記受信機が、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができる、前記データストリーム中のポイントであり、
前記グローバル累積ストリームサイズ関数は、前記データストリーム内の提示時間を通して前記データストリームの開始からの、前記データストリームの部分を構成するビット数を表しており、
前記装置は、
前記データストリームを複数の探索ブロックに分割する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定する手段とを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数に関係し、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、
前記ローカル累積ストリームサイズ関数は、前記探索ブロックを構成するビット数を表している装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１４５
【補正方法】変更
【補正の内容】
【０１４５】
先の説明は、何らかの当業者が、記述した装置、システム、および方法を作り、または使用できるように提供されている。開示に対するさまざまな改良は、当業者に容易に明らかになるであろう。また、ここで規定した一般的な原理は、本開示の精神または範囲を逸脱することなく、他のバリエーションに適用されてもよい。したがって、本開示は、ここで記述した例および設計に限定されるものではないが、ここで開示した原理および新規な特徴と矛盾しない最も広範囲に一致させるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
〔１〕送信機から受信機にデータストリームを供給する方法において、
前記データストリームの基礎となる構造を決定することと、
（１）前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定することと、
前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信することとを含む方法。
〔２〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔１〕記載の方法。
〔３〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定する方法において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定することと、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定し、前記現在のブロックとして、前記データストリームの最後のブロックを規定することと、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定することと、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定することと、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントを規定することと、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定することとを含む方法。
〔４〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔３〕記載の方法。
〔５〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔３〕記載の方法。
〔６〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔３〕記載の方法。
〔７〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔３〕記載の方法。
〔８〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定する方法において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記データストリームを複数の探索ブロックに分割することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定することと、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定することと、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定することとを含み、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている方法。
〔９〕データストリームを供給するサーバにおいて、
前記データストリームの基礎となる構造を決定するように構成され、（１）送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定するように構成されているプロセッサと、
前記プロセッサに結合され、前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信するように構成されている送信機とを具備するサーバ。
〔１０〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔９〕記載のサーバ。
〔１１〕前記データストリームは、ビデオコンテンツを含み、前記データストリームの前記ブロックは、ユーザデータグラムプロトコルを使用して送信される〔９〕記載のサーバ。
〔１２〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するサーバにおいて、
前記データストリームの最初のブロックの開始位置を規定するようにと、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、現在のブロックに続く次の連続ブロックの候補開始位置の第１のセットを反復して決定することによって、前記データストリームの最後のブロックを決定するようにと、前記データストリームの前記最後のブロックのエンドポイントを規定するようにと、前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、前記第１のセットと、前記現在のブロックに続く次の連続ブロックの候補開始位置の第２のセットとの共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを反復して規定するようにと、前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定するように構成されているプロセッサを具備するサーバ。
〔１３〕前記プロセッサに結合され、前記候補開始位置の第１のセットを記憶するメモリをさらに具備する〔１２〕記載のサーバ。
〔１４〕前記プロセッサに結合され、前記データストリームとして供給されることになるコンテンツを記憶する記憶デバイスをさらに具備する〔１２〕記載のサーバ。
〔１５〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔１２〕記載のサーバ。
〔１６〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔１２〕記載のサーバ。
〔１７〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔１２〕記載のサーバ。
〔１８〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するサーバにおいて、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定するようにと、前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定するようにと、前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定するように構成されているプロセッサを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされているサーバ。
〔１９〕コンピュータプログラムプロダクトにおいて、
データストリームの基礎となる構造をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
（１）送信機から前記データストリームを受信するのを受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記送信機から前記受信機に前記データストリームを供給するためのブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備し、
前記ブロックパーティションは、前記データストリームの前記ブロックの送信および受信が、前記少なくとも１つの目的と、前記基礎となる構造とに一致していることを保証するコンピュータプログラムプロダクト。
〔２０〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔１９〕記載のコンピュータプログラムプロダクト。
〔２１〕コンピュータプログラムプロダクトにおいて、
データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置をプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して、プロセッサに決定させ、前記現在のブロックとして、前記データストリームの最後のブロックをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分をプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記共通部分中のビット位置として、前記データストリームの前記現在のブロックのエンドポイントをプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備するコンピュータプログラムプロダクト。
〔２２〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔２１〕記載のコンピュータプログラムプロダクト。
〔２３〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔２１〕記載のコンピュータプログラムプロダクト。
〔２４〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔２１〕記載のコンピュータプログラムプロダクト。
〔２５〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔２１〕記載のコンピュータプログラムプロダクト。
〔２６〕コンピュータプログラムプロダクトにおいて、
それぞれの探索ポイントは、データストリーム中のポイントであり、受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされており、複数の探索ポイントを有するデータストリームを複数の探索ブロックにプロセッサに分割させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的にプロセッサに規定させるように構成されているプロセッサ読み取り可能な命令と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記データストリームを供給するためのグローバルブロックパーティションをプロセッサに決定させるように構成されているプロセッサ読み取り可能な命令とを記憶するプロセッサ読み取り可能媒体を具備するコンピュータプログラムプロダクト。
〔２７〕送信機から受信機にデータストリームを供給するように構成されている装置において、
前記データストリームの基礎となる構造を決定する手段と、
（１）前記送信機から前記データストリームを受信するのを前記受信機が最初に開始するときと、中断しないで前記データストリームのブロックの消費を前記受信機が開始できるときとの間のスタートアップ遅延を、前記基礎となる構造にしたがって減少させることと、（２）前記データストリームを送るのに必要な送信帯域幅を減少させることと、（３）前記データストリームの前記ブロックが、予め定められたブロック制約を満たすことを保証することとのグループから選択された、少なくとも１つの目的を決定する手段と、
前記少なくとも１つの目的と、前記基礎となる構造とに一致した、前記データストリームの前記ブロックを送信する手段とを具備する装置。
〔２８〕前記予め定められたブロック制約は、それぞれのブロックが、所定の最小ブロックサイズよりも大きく、かつ、所定の最大ブロックサイズよりも小さいサイズのものである制約を含む〔２７〕記載の装置。
〔２９〕送信機から受信機にビットのデータストリームを供給するためのブロックパーティションを決定するように構成されている装置において、
前記データストリーム中の最初のビット位置として、前記データストリームの最初のブロックの開始位置を規定する手段と、
前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合に、前記最初のブロックから前記データストリームの最後の可能性あるブロックまでのそれぞれのブロックに対して、前記データストリームの最後のビット位置より後の最初のビット位置が、現在のブロックに続く次の連続ブロックに対して決定された、前記次の連続ブロックの候補開始位置の第１のセット中に存在するまで、前記次の連続ブロックの前記候補開始位置の第１のセットを反復して決定して、前記現在のブロックとして、前記データストリームの最後のブロックを規定する手段と、
前記データストリームの前記最後のビット位置より後の前記最初のビット位置として、前記データストリームの前記最後のブロックのエンドポイントを規定する手段と、
前記最後のブロックより前のブロックから前記データストリームの前記最初のブロックまでのそれぞれのブロックに対して、
（１）前記データストリームの前記最初のビット位置において前記最初のブロックが開始するとした場合の、前記現在のブロックに続く次の連続ブロックの前記候補開始位置の前記第１のセットと、（２）前記現在のブロックに続く次の連続ブロックのエンドポイントにおいて前記次の連続ブロックにすぐに続くブロックが開始するとした場合の、前記次の連続ブロックの候補開始位置の第２のセットと、の共通部分を決定する手段と、
前記共通部分中のビット位置として、前記データストリームの現在のブロックのエンドポイントを規定する手段と、
前記データストリーム中のそれぞれのブロックの前記エンドポイントとして、前記ブロックパーティションを決定する手段とを具備する装置。
〔３０〕前記データストリームの前記最後の可能性あるブロックは、前記データストリームのサイズと、前記データストリームの前記ブロックに対する最小ブロックサイズとから決定される〔２９〕記載の装置。
〔３１〕前記データストリームは、累積ストリームサイズ関数によって規定され、前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、
前記累積ストリームサイズ関数と前記累積リンク容量関数とした場合に、前記データストリームの中断のない提示のための減少したスタートアップ遅延で、前記ブロックパーティションが決定される〔２９〕記載の装置。
〔３２〕前記データストリームは、累積ストリームサイズ関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積ストリームサイズ関数と前記ターゲットスタートアップ遅延とした場合に、前記データストリームの中断のない提示を保証する減少した送信帯域幅で、前記ブロックパーティションが決定される〔２９〕記載の装置。
〔３３〕前記データストリームを供給する通信リンクは、累積リンク容量関数によって規定され、ターゲットスタートアップ遅延が、前記データストリームを供給するために決定され、
前記累積リンク容量関数と前記ターゲットスタートアップ遅延とした場合に、１セットの可能性あるエンコーディングの中からの、前記データストリームの中断のない提示を保証する前記データストリームの最高品質エンコーディングで、前記ブロックパーティションが決定される〔２９〕記載の装置。
〔３４〕ビットのデータストリームを送信機から受信機に供給するためのグローバルブロックパーティションを決定するように構成されている装置において、
前記データストリームは、グローバル累積ストリームサイズ関数によって規定され、複数の探索ポイントを有し、それぞれの探索ポイントは、前記データストリーム中のポイントであり、前記受信機は、予め定められたスタートアップ遅延内で前記データストリームを消費するのを開始することができ、
前記装置は、
前記データストリームを複数の探索ブロックに分割する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記予め定められたスタートアップ遅延よりも少ないまたは前記予め定められたスタートアップ遅延に等しい各実効スタートアップ遅延を再帰的に規定する手段と、
前記複数の探索ブロックのそれぞれの探索ブロックに対して、前記各実効スタートアップ遅延で、前記各探索ブロックの中断のない提示を保証するローカルブロックパーティションを決定する手段と、
前記データストリーム中の前記複数の探索ブロックのそれぞれの探索ブロックの前記ローカルブロックパーティションとして、前記グローバルブロックパーティションを決定する手段とを具備し、
それぞれの探索ブロックは、各ローカル累積ストリームサイズ関数によって規定され、特定の探索ポイントの一方側のデータは、前記特定の探索ポイントのもう一方側のデータから独立してデコードされている装置。
【外国語明細書】
2014014107000001.pdf