(57)【要約】ソースビデオを代替ビデオストリームとしてエンコードする方法は、第１の工程において、受信されたマルチメディアコンテンツを通介してソースビデオデータについての統計を収集し、統計を共有メモリに書き込むことであって、統計は、画素のブロックの複雑性尺度を含む、ことと、第１の工程中に、ソースビデオデータに対する初期エンコーディング情報を決定し、初期エンコーディング情報を共有メモリに書き込むことと、第２の工程中に、収集された統計および初期エンコーディング情報を使用して、ソースビデオデータを並行してエンコードし、代替ビデオストリームを作成することとを含み、並行エンコーディングプロセスは、ビデオの一部に対してすでに決定された追加のエンコーディング情報を再使用し、ビデオの一部に対してまだ決定されていない追加のエンコーディング情報を生成する。
2016526336.tif 000002
【特許請求の範囲】
【請求項１】
ソースビデオをいくつかの代替ビデオストリームとしてエンコードするように構成されているソースエンコーダであって、前記ソースエンコーダは、
ソースエンコーダアプリケーションを含むメモリと、
共有メモリと、
並行処理システムと
を備え、
前記並行処理システムは、前記ソースエンコーディングアプリケーションによって、
マルチメディアコンテンツを受信することであって、前記マルチメディアコンテンツは、初期分解能を有するソースビデオデータを備えている、ことと、
第１の工程において、前記受信されたマルチメディアコンテンツを介してソースビデオデータについての統計を収集し、前記統計を共有メモリに書き込むことであって、前記統計は、画素のブロックの複雑性尺度を含む、ことと、
前記第１の工程中に、前記受信されたマルチメディアコンテンツを介してソースビデオデータに対する初期エンコーディング情報を決定し、前記初期エンコーディング情報を共有メモリに書き込むことと、
第２の工程中に、収集された統計および初期エンコーディング情報を使用して、複数の並行エンコーディングプロセスを用いて、前記受信されたマルチメディアコンテンツを介して前記ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することと
を行うように構成され、
前記ソースビデオのエンコーディングは、追加のエンコーディング情報を利用し、前記並行エンコーディングプロセスは、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、前記共有メモリ内に記憶された追加のエンコーディング情報を再使用するように構成され、前記並行エンコーディングプロセスは、別の並行エンコーディングプロセスによってビデオの一部に対してまだ決定されていない追加のエンコーディング情報を生成し、前記生成された追加のエンコーディング情報を前記共有メモリ内に記憶するように構成され、前記追加のエンコーディング情報は、画素のブロックに対する量子化パラメータを含む、ソースエンコーダ。
【請求項２】
ソースビデオデータについての統計は、平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラブロックの数、インタブロックの数、およびスキップブロックの数から成る群から選択される統計を備えている、請求項１に記載のソースエンコーダ。
【請求項３】
ソースビデオデータに対する初期エンコーディング情報を決定するように構成されている前記並行処理システムは、フレーム複雑性尺度を計算するように構成されている前記並行処理システムをさらに備えている、請求項１に記載のソースエンコーダ。
【請求項４】
別の並行エンコーディングプロセスによってビデオの一部に対してまだ決定されていない追加のエンコーディング情報を生成するように構成されている前記並行エンコーディングプロセスは、前記ソースビデオデータ内のビデオのフレームの一部をエンコードするためのコーディングツリーユニット（ＣＴＵ）サイズを決定することをさらに含む、請求項１に記載のソースエンコーダ。
【請求項５】
前記ソースビデオデータ内のビデオのフレームの一部をエンコードするためのＣＴＵサイズを決定することは、
ビデオのフレームの一部を選択し、第１の出力ストリームにおける少なくとも１つの出力ＣＴＵとしてエンコードすることと、
類似ＣＴＵに対してサイズが決定されているかどうかをチェックすることと、
前記類似ＣＴＵに対してサイズが決定されていない場合、あるＣＴＵサイズを選択することと、
類似ＣＴＵに対してサイズが決定されている場合、第２の出力ストリームに対して決定された以前に決定されたＣＴＵサイズを選択し、かつ前記第１の出力ストリームの分解能を前記第２の出力ストリームの分解能と比較することと、
前記第１の出力ストリームの分解能が前記第２の出力ストリームと同一の分解能ではない場合、前記ＣＴＵサイズをスケーリングすることと、
前記選択されたＣＴＵサイズが前記出力ＣＴＵに対して容認可能であるかどうかを決定することと、
前記選択されたＣＴＵサイズが容認可能ではない場合、より小さいＣＴＵサイズを選択することと、
前記選択されたＣＴＵサイズが前記出力ＣＴＵに対して容認可能である場合、前記選択されたＣＴＵサイズを前記ビデオのフレームの前記一部に適用することと
を含む、請求項４に記載のソースエンコーダ。
【請求項６】
ソースビデオデータに対する初期エンコーディング情報を決定するように構成されている前記並行処理システムは、前記複数の代替ビデオストリームのうちの少なくとも１つにおけるビデオの少なくとも１つのフレームのためのモード分布を決定するように構成されている前記並行処理システムをさらに備えている、請求項１に記載のソースエンコーダ。
【請求項７】
収集された統計および初期エンコーディング情報を使用して、前記ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成するように構成されている前記並行処理システムは、
代替ビデオストリームにおけるビデオのフレーム内で処理されるブロックの総数を維持することと、
前記モード分布に基づいて、ブロックの閾値数を決定することと、
前記ブロックの総数が前記ブロックの閾値数を満たす場合、ブロックタイプ決定のための基準を調節することと
を行うように構成されている前記並行処理システムをさらに備えている、請求項６に記載のソースエンコーダ。
【請求項８】
別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、前記共有メモリ内に記憶された追加のエンコーディング情報を再使用するように構成されている前記並行エンコーディングプロセスは、
第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードする場合、動きベクトルが、第２の代替ストリーム内の第２の対応するブロックに対して存在するかどうかを決定することと、
前記第１の代替ストリームと前記第２の代替ストリームとが同一の分解能であるかどうかを決定することと、
前記第１の代替ストリームと前記第２の代替ストリームとが同一の分解能ではない場合、前記動きベクトルをスケーリングすることと、
前記動きベクトルを精緻化することと、
前記第１の代替ストリームにおけるビデオフレーム内の前記第１のブロックをエンコードすることにおいて、前記動きベクトルを適用することと
を行うように構成されている前記並行エンコーディングプロセスをさらに含む、請求項１に記載のソースエンコーダ。
【請求項９】
初期エンコーディング情報は、ヘッダサイズ、マクロブロックサイズ、およびヘッダサイズとマクロブロックサイズの相対的割合をさらに備えている、請求項１に記載のソースエンコーダ。
【請求項１０】
初期エンコーディング情報は、仮想基準デコーダデータをさらに備えている、請求項１に記載のソースエンコーダ。
【請求項１１】
前記並行エンコーディングプロセスの各々は、異なる分解能でエンコードする、請求項１に記載のソースエンコーダ。
【請求項１２】
前記並行エンコーディングプロセスの各々は、１つ以上の代替ビデオストリームをエンコードし、並行エンコーディングプロセスによってエンコードされる前記代替ビデオストリームの各々は、異なるビットレートである、請求項１１に記載のソースエンコーダ。
【請求項１３】
前記並行エンコーディングプロセスの各々は、前記ソースビデオデータからのブロックを前記複数の代替ビデオストリームのうちの一部における各ストリームに連続して次々にエンコードする、請求項１に記載のソースエンコーダ。
【請求項１４】
追加のエンコーディング情報は、速度ひずみ情報および量子化パラメータを備えている、請求項１に記載のソースエンコーダ。
【請求項１５】
前記画素のブロックは、コーディングツリーユニットである、請求項１に記載のソースエンコーダ。
【請求項１６】
前記画素のブロックは、コーディングユニットである、請求項１に記載のソースエンコーダ。
【請求項１７】
前記画素のブロックは、変換ユニットである、請求項１に記載のソースエンコーダ。
【請求項１８】
画素のブロックに対する前記量子化パラメータは、画素のブロックに対する複雑性尺度を使用して生成される、請求項１に記載のソースエンコーダ。
【請求項１９】
画素のブロックに対する前記量子化パラメータは、以前に生成された量子化パラメータを使用して生成される、請求項１に記載のソースエンコーダ。
【請求項２０】
画素のブロックに対する前記量子化パラメータは、ひずみ率およびビットレートを使用して生成される、請求項１に記載のソースエンコーダ。
【請求項２１】
ソースビデオをいくつかの代替ビデオストリームとしてエンコードする方法であって、前記方法は、
ソースエンコーダを使用して、マルチメディアコンテンツを受信することであって、前記マルチメディアコンテンツは、初期分解能を有するソースビデオデータを備えている、ことと、
第１の工程において、ソースエンコーダを使用して、前記受信されたマルチメディアコンテンツを介してソースビデオデータについての統計を収集し、前記統計を共有メモリに書き込むことであって、前記統計は、画素のブロックの複雑性尺度を含む、ことと、
前記第１の工程中に、ソースエンコーダを使用して、前記受信されたマルチメディアコンテンツを介してソースビデオデータに対する初期エンコーディング情報を決定し、前記初期エンコーディング情報を共有メモリに書き込むことと、
第２の工程中に、ソースエンコーダを使用して、収集された統計、初期エンコーディング情報、および追加のエンコーディング情報を使用して、複数の並行エンコーディングプロセスを用いて、前記受信されたマルチメディアコンテンツを介して前記ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することと
を含み、
前記ソースビデオのエンコーディングは、
前記複数の並行エンコーディングプロセスのうちの少なくとも１つを使用して、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、前記共有メモリ内に記憶された追加のエンコーディング情報を再使用することであって、前記追加のエンコーディング情報は、画素のブロックに対する量子化パラメータを含む、ことと、
前記複数の並行エンコーディングプロセスの別のものによって、ビデオの一部に対して決定されていない追加のエンコーディング情報を生成することと、
並行エンコーダプロセスを使用して、前記生成された追加のエンコーディング情報を前記共有メモリ内に記憶することと
をさらに含む、方法。
【請求項２２】
ソースビデオデータについての統計は、平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラブロックの数、インタブロックの数、およびスキップブロックの数から成る群から選択される統計を備えている、請求項２１に記載の方法。
【請求項２３】
ソースビデオデータに対する初期エンコーディング情報を決定することは、フレーム複雑性尺度を計算することをさらに含む、請求項２１に記載の方法。
【請求項２４】
別の並行エンコーディングプロセスによってビデオの一部に対して決定されていない追加のエンコーディング情報を生成することは、前記ソースビデオデータ内のビデオのフレームの一部をエンコードするためのコーディングツリーユニット（ＣＴＵ）サイズを決定することをさらに含む、請求項２１に記載の方法。
【請求項２５】
前記ソースビデオデータ内のビデオのフレームの一部をエンコードするためのＣＴＵサイズを決定することは、
ビデオのフレームの一部を選択し、第１の出力ストリームにおける少なくとも１つの出力ＣＴＵとしてエンコードすることと、
類似ＣＴＵに対してサイズが決定されたかどうかをチェックすることと、
前記類似ＣＴＵに対してサイズが決定されていない場合、あるＣＴＵサイズを選択することと、
類似ＣＴＵに対してサイズが決定されている場合、第２の出力ストリームに対して決定された以前に決定されたＣＴＵサイズを選択し、かつ前記第１の出力ストリームの分解能を前記第２の出力ストリームの分解能と比較することと、
前記第１の出力ストリームの分解能が第２の出力ストリームと同一の分解能ではない場合、前記ＣＴＵサイズをスケーリングすることと、
前記選択されたＣＴＵサイズが前記出力ＣＴＵに対して容認可能であるかどうかを決定することと、
前記選択されたＣＴＵサイズが容認可能ではない場合、より小さいＣＴＵサイズを選択することと、
前記選択されたＣＴＵサイズが前記出力ＣＴＵに対して容認可能である場合、前記選択されたＣＴＵサイズを前記ビデオのフレームの前記一部に適用することと
をさらに含む、請求項２４に記載の方法。
【請求項２６】
ソースビデオデータに対する初期エンコーディング情報を決定することは、前記複数の代替ビデオストリームのうちの少なくとも１つにおけるビデオの少なくとも１つのフレームに対するモード分布を決定することをさらに含む、請求項２１に記載の方法。
【請求項２７】
収集された統計、初期エンコーディング情報、および追加のエンコーディング情報を使用して、前記ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することは、
代替ビデオストリームにおけるビデオのフレーム内で処理されるブロックの総数を維持することと、
前記モード分布に基づいて、ブロックの閾値数を決定することと、
前記ブロックの総数が前記ブロックの閾値数を満たす場合、ブロックタイプ決定に対する基準を調節することと
をさらに含む、請求項２６に記載の方法。
【請求項２８】
別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、前記共有メモリ内に記憶された追加のエンコーディング情報を再使用することは、
第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードする場合、動きベクトルが、第２の代替ストリーム内の第２の対応するブロックに対して存在するかどうかを決定することと、
前記第１の代替ストリームと前記第２の代替ストリームとが同一の分解能であるかどうかを決定することと、
前記第１の代替ストリームと前記第２の代替ストリームとが同一の分解能ではない場合、前記動きベクトルをスケーリングすることと、
前記動きベクトルを精緻化することと、
前記第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードすることにおいて、前記動きベクトルを適用することと
をさらに含む、請求項２１に記載の方法。
【請求項２９】
初期エンコーディング情報は、ヘッダサイズ、マクロブロックサイズ、およびヘッダサイズとマクロブロックサイズの相対的割合をさらに備えている、請求項２１に記載の方法。
【請求項３０】
初期エンコーディング情報は、仮想基準デコーダデータをさらに備えている、請求項２１に記載の方法。
【請求項３１】
前記並行エンコーディングプロセスの各々は、異なる分解能でエンコードする、請求項２１に記載の方法。
【請求項３２】
前記並行エンコーディングプロセスの各々は、１つ以上の代替ビデオストリームをエンコードし、並行エンコーディングプロセスによってエンコードされる前記代替ビデオストリームの各々は、異なるビットレートである、請求項３１に記載の方法。
【請求項３３】
前記並行エンコーディングプロセスの各々は、前記ソースビデオデータからのブロックを前記複数の代替ビデオストリームのうちの一部における各ストリームに連続して次々にエンコードする、請求項２１に記載の方法。
【請求項３４】
追加のエンコーディング情報は、速度ひずみ情報および量子化パラメータを備えている、請求項２１に記載の方法。
【請求項３５】
前記画素のブロックは、コーディングツリーユニットである、請求項２１に記載の方法。
【請求項３６】
前記画素のブロックは、コーディングユニットである、請求項２１に記載の方法。
【請求項３７】
前記画素のブロックは、変換ユニットである、請求項２１に記載の方法。
【請求項３８】
画素のブロックに対する前記量子化パラメータは、画素のブロックに対する複雑性尺度を使用して生成される、請求項２１に記載の方法。
【請求項３９】
画素のブロックに対する前記量子化パラメータは、以前に生成された量子化パラメータを使用して生成される、請求項２１に記載の方法。
【請求項４０】
画素のブロックに対する前記量子化パラメータは、ひずみ率およびビットレートを使用して生成される、請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ビデオエンコーディングに関し、より具体的には、ソースビデオストリームからの適応ビットレートストリーミングのためのビデオコンテンツの複数のストリームを効率的にエンコードするためのシステムおよび方法に関する。
【背景技術】
【０００２】
メディアのストリーミングという用語は、再生デバイス上のメディアの再生を説明するものであり、メディアは、サーバ上に記憶され、再生の間、ネットワークを経由して、再生デバイスに継続的に送信される。典型的には、再生デバイスは、メディアの次の部分の受信に先立って、再生デバイスが全てのバッファされたメディアの再生を完了することによる再生の中断を防止するために、再生の間、任意の所与の時間において、十分な量のメディアをバッファ内に記憶する。適応ビットレートストリーミングまたは適応ストリーミングは、現在のストリーミング状態（例えば、ユーザのネットワーク帯域幅およびＣＰＵ容量）をリアルタイムで検出し、適宜、ストリーミングされるメディアの量を調節することを伴う。典型的には、ソースメディアは、複数のビットレートでエンコードされ、再生デバイスまたはクライアントは、利用可能なリソースに応じて、ストリーミング間において、異なるエンコーディングを切り替える。再生デバイスが、適応ビットレートストリーミングを開始する場合、再生デバイスは、典型的には、最低ビットレートストリーム（代替ストリームが利用可能な場合）からメディアの一部を要求することによって始動する。再生デバイスが、要求されたメディアをダウンロードするにつれて、再生デバイスは、利用可能な帯域幅を測定することができる。追加の帯域幅が利用可能である場合、再生デバイスは、より高いビットレートストリームに切り替えることができる。
【０００３】
適応ストリーミングシステムでは、ソースメディアは、典型的には、実際のビデオおよびオーディオデータを含むいくつかの代替ストリームをポイントする上位レベルインデックスファイルとして、メディアサーバ上に記憶される。各ストリームは、典型的には、１つ以上のコンテナファイル内に記憶される。異なる適応ストリーミングソリューションは、典型的には、異なるインデックスおよびメディアコンテナを利用する。Ｍａｔｒｏｓｋａコンテナは、Ｍａｔｒｏｓｋａ非営利団体（Ａｕｓｓｏｎｎｅ，Ｆｒａｎｃｅ）によって、オープンスタンダードプロジェクトとして開発されたメディアコンテナである。Ｍａｔｒｏｓｋａコンテナは、Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）のバイナリ派生物である、Ｅｘｔｅｎｓｉｂｌｅ  Ｂｉｎａｒｙ  Ｍｅｔａ  Ｌａｎｇｕａｇｅ（ＥＢＭＬ）に基づく。Ｍａｔｒｏｓｋａコンテナのデコーディングは、多くの消費者電子機器（ＣＥ）デバイスによってサポートされている。ＤｉｖＸ，ＬＬＣ（Ｓａｎ  Ｄｉｅｇｏ，Ｃａｌｉｆｏｒｎｉａ）によって開発されたＤｉｖＸ  Ｐｌｕｓファイル形式は、Ｍａｔｒｏｓｋａ形式内に規定されない要素を含む、Ｍａｔｒｏｓｋａコンテナ形式の拡張機能を利用する。他の一般に使用されるメディアコンテナ形式は、ＭＰＥＧ−４  Ｐａｒｔ１４（すなわち、ＩＳＯ／ＩＥＣ１４４９６−１４）において規定されるＭＰ４コンテナ形式およびＭＰＥＧ−２  Ｐａｒｔ１（すなわち、ＩＳＯ／ＩＥＣ規格１３８１８−１）において規定されるＭＰＥＧトランスポートストリーム（ＴＳ）コンテナである。ＭＰ４コンテナ形式は、ＩＩＳ  Ｓｍｏｏｔｈ  Ｓｔｒｅａｍｉｎｇ  ａｎｄ  Ｆｌａｓｈ  Ｄｙｎａｍｉｃ  Ｓｔｒｅａｍｉｎｇにおいて利用される。ＴＳコンテナは、ＨＴＴＰ適応ビットレートストリーミングにおいて使用される。代替ストリーム内のビデオは、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）およびＩｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ  Ｓｅｃｔｏｒ（ＩＴＵ−Ｔ）（Ｇｅｎｅｖａ，Ｓｗｉｔｚｅｒｌａｎｄ）によって共同規定されたＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ／Ｈ．２６５）ならびにＩＴＵ−Ｔによって規定されたＨ．２６４／ＭＰＥＧ−４  ＡＶＣ（Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）規格等の種々のブロック式ビデオ圧縮規格（または、コーデック）に準拠してエンコードされることができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の実施形態による、適応ビットレートストリーミングのための複数のビデオストリームをエンコードするためのシステムおよび方法が、開示される。一実施形態では、ソースビデオをいくつかの代替ビデオストリームとしてエンコードするように構成されているソースエンコーダは、ソースエンコーダアプリケーションを含むメモリと、共有メモリと、並行処理システムとを含み、並行処理システムは、ソースエンコーディングアプリケーションによって、マルチメディアコンテンツを受信することであって、マルチメディアコンテンツは、初期分解能を有するソースビデオデータを含む、ことと、第１の工程において、受信されたマルチメディアコンテンツを介してソースビデオデータについての統計を収集し、統計を共有メモリに書き込むことであって、統計は、画素のブロックの複雑性尺度を含む、ことと、第１の工程中に、受信されたマルチメディアコンテンツを介してソースビデオデータに対する初期エンコーディング情報を決定し、初期エンコーディング情報を共有メモリに書き込むことと、第２の工程中に、複数の並行エンコーディングプロセスを用いて、収集された統計および初期エンコーディング情報を使用して、受信されたマルチメディアコンテンツを介してソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することとを行うように構成され、ソースビデオのエンコーディングは、追加のエンコーディング情報を利用し、並行エンコーディングプロセスは、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、共有メモリ内に記憶された追加のエンコーディング情報を再使用するように構成され、並行エンコーディングプロセスは、別の並行エンコーディングプロセスによってビデオの一部に対してまだ決定されていない追加のエンコーディング情報を生成し、生成された追加のエンコーディング情報を共有メモリ内に記憶するように構成され、追加のエンコーディング情報は、画素のブロックに対する量子化パラメータを含む。
【０００５】
さらなる実施形態では、ソースビデオデータについての統計は、平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラブロックの数、インタブロックの数、およびスキップブロックの数から成る群から選択される統計を含む。
【０００６】
別の実施形態では、ソースビデオデータに対する初期エンコーディング情報を決定するように構成されている並行処理システムはまた、フレーム複雑性尺度を計算するように構成されている並行処理システムを含む。
【０００７】
なおもさらなる実施形態では、別の並行エンコーディングプロセスによってビデオの一部に対してまだ決定されていない追加のエンコーディング情報を生成するように構成されている並行エンコーディングプロセスはまた、ソースビデオデータ内のビデオのフレームの一部をエンコードするためのコーディングツリーユニット（ＣＴＵ）サイズを決定することを含む。
【０００８】
なおも別の実施形態では、ソースビデオデータ内のビデオのフレームの一部をエンコードするためのＣＴＵサイズを決定することは、ビデオのフレームの一部を選択し、第１の出力ストリームにおける少なくとも１つの出力ＣＴＵとしてエンコードすることと、類似ＣＴＵに対してサイズが決定されたかどうかをチェックすることと、類似ＣＴＵに対して決定されていない場合、あるＣＴＵサイズを選択することと、類似ＣＴＵに対してサイズが決定されている場合、第２の出力ストリームに対して決定された以前に決定されたＣＴＵサイズを選択し、かつ第１の出力ストリームの分解能を第２の出力ストリームの分解能と比較することと、第１の出力ストリームの分解能が第２の出力ストリームと同一の分解能ではない場合、ＣＴＵサイズをスケーリングすることと、選択されたＣＴＵサイズが出力ＣＴＵに対して容認可能であるかどうかを決定することと、選択されたＣＴＵサイズが容認可能ではない場合、より小さいＣＴＵサイズを選択することと、選択されたＣＴＵサイズが出力ＣＴＵに対して容認可能である場合、選択されたＣＴＵサイズをビデオのフレームの部分に適用することとを含む。
【０００９】
なおもさらなる実施形態では、ソースビデオデータに対する初期エンコーディング情報を決定するように構成されている並行処理システムはまた、複数の代替ビデオストリームのうちの少なくとも１つにおけるビデオの少なくとも１つのフレームのためのモード分布を決定するように構成されている並行処理システムを含む。
【００１０】
さらに別の実施形態では、収集された統計および初期エンコーディング情報を使用して、ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成するように構成されている並行処理システムはまた、代替ビデオストリームにおけるビデオのフレーム内で処理されるブロックの総数を維持し、モード分布に基づいて、ブロックの閾値数を決定し、ブロックの総数がブロックの閾値数を満たす場合、ブロックタイプ決定のための基準を調節するように構成されている並行処理システムを含む。
【００１１】
さらなる実施形態では、再び、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定された追加のエンコーディング情報を再使用し、共有メモリ内に記憶されるように構成されている並行エンコーディングプロセスはまた、第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードする場合、動きベクトルが、第２の代替ストリーム内の第２の対応するブロックに対して存在するかどうかを決定し、第１の代替ストリームと第２の代替ストリームとが同一の分解能であるかどうかを決定し、第１の代替ストリームと第２の代替ストリームとが同一の分解能ではない場合、動きベクトルをスケーリングし、動きベクトルを精緻化し、第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードすることにおいて、動きベクトルを適用するように構成されている並行エンコーディングプロセスを含む。
【００１２】
別の実施形態では、再び、初期エンコーディング情報はまた、ヘッダサイズ、マクロブロックサイズ、およびヘッダサイズとマクロブロックサイズの相対的割合を含む。
【００１３】
さらなる追加の実施形態では、初期エンコーディング情報はまた、仮想基準デコーダデータを含む。
【００１４】
別の追加の実施形態では、並行エンコーディングプロセスはそれぞれ、異なる分解能でエンコードする。
【００１５】
なおもさらなる実施形態では、並行エンコーディングプロセスはそれぞれ、１つ以上の代替ビデオストリームをエンコードし、並行エンコーディングプロセスによってエンコードされる代替ビデオストリームはそれぞれ、異なるビットレートである。
【００１６】
なおもさらに別の実施形態では、並行エンコーディングプロセスはそれぞれ、ソースビデオデータからのブロックを複数の代替ビデオストリームのうちの一部における各ストリームに連続して次々にエンコードする。
【００１７】
なおもさらなる実施形態では、再び、追加のエンコーディング情報は、速度ひずみ情報および量子化パラメータを含む。
【００１８】
さらに別の実施形態は、再び、ソースエンコーダを使用して、マルチメディアコンテンツを受信することであって、マルチメディアコンテンツは、初期分解能を有するソースビデオデータを含む、ことと、第１の工程において、ソースエンコーダを使用して、受信されたマルチメディアコンテンツを介してソースビデオデータについての統計を収集し、統計を共有メモリに書き込むことと、第１の工程中に、ソースエンコーダを使用して、受信されたマルチメディアコンテンツを介してソースビデオデータに対する初期エンコーディング情報を決定し、初期エンコーディング情報を共有メモリに書き込むことであって、統計は、画素のブロックの複雑性尺度を含む、ことと、第２の工程中に、ソースエンコーダを使用して、収集された統計、初期エンコーディング情報、および追加のエンコーディング情報を使用して、複数の並行エンコーディングプロセスを用いて、受信されたマルチメディアコンテンツを介してソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することとを含み、ソースビデオのエンコーディングは、複数の並行エンコーディングプロセスのうちの少なくとも１つを使用して、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、共有メモリ内に記憶された追加のエンコーディング情報を再使用することと、複数の並行エンコーディングプロセスの別のものによって、ビデオの一部に対して決定されていない追加のエンコーディング情報を生成することと、並行エンコーダプロセスを使用して、生成された追加のエンコーディング情報を共有メモリ内に記憶することとをさらに含み、追加のエンコーディング情報は、画素のブロックに対する量子化パラメータを含む。
【００１９】
なおもさらに追加の実施形態では、ソースビデオデータについての統計は、平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラブロックの数、インタブロックの数、およびスキップブロックの数から成る群から選択される統計を含む。
【００２０】
さらに別の追加の実施形態では、ソースビデオデータに対する初期エンコーディング情報を決定することはまた、フレーム複雑性尺度を計算することを含む。
【００２１】
なおもさらなる実施形態では、再び、別の並行エンコーディングプロセスによってビデオの一部に対して決定されていない追加のエンコーディング情報を生成することはまた、ソースビデオデータ内のビデオのフレームの一部をエンコードするためのコーディングツリーユニット（ＣＴＵ）サイズを決定することを含む。
【００２２】
さらに別の実施形態では、再び、ソースビデオデータ内のビデオのフレームの一部をエンコードするためのＣＴＵサイズを決定することはまた、ビデオのフレームの一部を選択し、第１の出力ストリームにおける少なくとも１つの出力ＣＴＵとしてエンコードすることと、類似ＣＴＵに対してサイズが決定されたかどうかをチェックすることと、類似ＣＴＵに対して決定されていない場合、あるＣＴＵサイズを選択することと、類似ＣＴＵに対してサイズが決定されている場合、第２の出力ストリームに対して決定された以前に決定されたＣＴＵサイズを選択し、第１の出力ストリームの分解能と第２の出力ストリームの分解能を比較することと、第１の出力ストリームの分解能が第２の出力ストリームと同一の分解能ではない場合、ＣＴＵサイズをスケーリングすることと、選択されたＣＴＵサイズが出力ＣＴＵに対して容認可能であるかどうかを決定することと、選択されたＣＴＵサイズが容認可能ではない場合、より小さいＣＴＵサイズを選択することと、選択されたＣＴＵサイズが出力ＣＴＵに対して容認可能である場合、選択されたＣＴＵサイズをビデオのフレームの部分に適用することとを含む。
【００２３】
なおもさらに追加の実施形態では、ソースビデオデータに対する初期エンコーディング情報を決定することはまた、複数の代替ビデオストリームのうちの少なくとも１つにおけるビデオの少なくとも１つのフレームに対するモード分布を決定することを含む。
【００２４】
さらに別の追加の実施形態では、収集された統計、初期エンコーディング情報、および追加のエンコーディング情報を使用して、ソースビデオデータを並行してエンコードし、複数の代替ビデオストリームを作成することはまた、代替ビデオストリームにおけるビデオのフレーム内で処理されるブロックの総数を維持することと、モード分布に基づいて、ブロックの閾値数を決定し、ブロックの総数がブロックの閾値数を満たす場合、ブロックタイプ決定に対する基準を調節することとを含む。
【００２５】
さらなる追加の実施形態では、再び、別の並行エンコーディングプロセスによってビデオの一部に対してすでに決定され、共有メモリ内に記憶された追加のエンコーディング情報を再使用することはまた、第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードする場合、動きベクトルが、第２の代替ストリーム内の第２の対応するブロックに対して存在するかどうかを決定し、かつ第１の代替ストリームと第２の代替ストリームとが同一の分解能であるかどうかを決定することと、第１の代替ストリームと第２の代替ストリームとが同一の分解能ではない場合、動きベクトルをスケーリングすることと、動きベクトルを精緻化することと、第１の代替ストリームにおけるビデオフレーム内の第１のブロックをエンコードすることにおいて、動きベクトルを適用することとを含む。
【００２６】
別の追加の実施形態では、再び、初期エンコーディング情報はまた、ヘッダサイズ、マクロブロックサイズ、およびヘッダサイズとマクロブロックサイズの相対的割合を含む。
【００２７】
なおもさらなる実施形態では、再び、初期エンコーディング情報はまた、仮想基準デコーダデータを含む。
【００２８】
なおもさらに別の実施形態では、再び、並行エンコーディングプロセスはそれぞれ、異なる分解能でエンコードする。
【００２９】
なおもさらに追加の実施形態では、並行エンコーディングプロセスはそれぞれ、１つ以上の代替ビデオストリームをエンコードし、並行エンコーディングプロセスによってエンコードされる代替ビデオストリームはそれぞれ、異なるビットレートである。
【００３０】
なおもさらに別の追加の実施形態では、並行エンコーディングプロセスはそれぞれ、ソースビデオデータからのブロックを複数の代替ビデオストリームのうちの一部における各ストリームに連続して次々にエンコードする。
【００３１】
なおもさらに追加の実施形態では、再び、追加のエンコーディング情報は、速度ひずみ情報および量子化パラメータを含む。
【００３２】
なおもさらに追加の実施形態では、再び、画素のブロックは、コーディングツリーユニットである。
【００３３】
なおもさらに別の追加の実施形態では、再び、画素のブロックは、コーディングユニットである。
【００３４】
別のさらなる実施形態では、画素のブロックは、変換ユニットである。
【００３５】
なおも別のさらなる実施形態では、画素のブロックに対する量子化パラメータは、画素のブロックに対する複雑性尺度を使用して生成される。
【００３６】
さらに別のさらなる実施形態では、画素のブロックに対する量子化パラメータは、以前に生成された量子化パラメータを使用して生成される。
【００３７】
さらに別の追加の実施形態では、再び、画素のブロックに対する量子化パラメータは、ひずみ率およびビットレートを使用して生成される。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明のある実施形態による、適応ストリーミングシステムのシステム略図である。
【図２】図２は、本発明のある実施形態による、適応ストリーミングシステムにおいて使用するためのビデオデータのストリームをエンコードするように構成される、メディアサーバを概念的に図示する。
【図３】図３は、本発明の実施形態による、ビデオのストリームをエンコードすることにおいて、ブロックサイズ情報を再使用するためのプロセスを図示する、フロー図である。
【図４】図４は、本発明の実施形態による、ビデオのストリームをエンコードすることにおいて、ブロックタイプ決定を調節するためのプロセスを図示する、フロー図である。
【図５】図５は、本発明の実施形態による、ビデオのストリームをエンコードすることにおいて、動きベクトルを再使用するためのプロセスを図示する、フロー図である。
【図６】図６は、本発明の実施形態による、ビデオデータの代替ストリームのエンコーディングにおいて、統計およびエンコーディング情報を共有するためのプロセスを図示する、フロー図である。
【図７】図７は、本発明の実施形態による、画素のブロックに対する複雑性尺度を生成するためのプロセスを図示する、フロー図である。
【図８】図８は、本発明の実施形態による、画素のブロックに対する量子化パラメータを生成するためのプロセスを図示する、フロー図である。
【図９】図９は、本発明の実施形態による、画素の類似ブロックに対する量子化パラメータを使用して、画素のブロックに対する量子化パラメータを生成するためのプロセスを図示する、フロー図である。
【図１０Ａ】図１０Ａは、ＣＴＵブロックの複雑性尺度のプロットを図示する、グラフである。
【図１０Ｂ】図１０Ｂは、ＣＴＵブロックの複雑性尺度および量子化パラメータのプロットを図示する、グラフである。
【発明を実施するための形態】
【００３９】
ここで図面を参照すると、本発明の実施形態による、適応ビットレートストリーミングのための複数のビデオストリームをエンコードするためのシステムおよび方法が、図示される。本発明の実施形態によると、エンコーダは、コンテンツについての統計に対してメディアコンテンツを分析し、コンテンツをエンコードするために使用されるエンコーディング情報を決定し、コンテンツを異なる分解能およびビットレートにおける複数のビデオストリームとしてエンコードすることができる。本発明は、ＨＥＶＣ／Ｈ．２６５およびＨ．２６５ＡＶＣ等の適応ストリーミングシステムおよびブロックベースのビデオエンコーディング技法に関して後述されるが、説明されるシステムおよび方法は、ビデオデータの異なるストリームが、ネットワーククライアントの接続品質およびブロックベースではないビデオエンコーディング技法に基づいて選択される、従来のストリーミングシステムにおいても等しく適用可能である。
【００４０】
適応ストリーミングシステムでは、マルチメディアコンテンツは、一組のビデオデータの代替ストリームとしてエンコードされる。ビデオデータの各代替ストリームは、同一のソースマルチメディアコンテンツを使用してエンコードされるため、類似エンコーディング情報が、ビデオデータの各代替ストリームのエンコーディングにおいて決定される。エンコーディング情報は、限定ではないが、フレーム複雑性尺度、ブロックサイズの選択、ブロックモード分布、および動き推定結果を含むことができる。本発明の多くの実施形態によるシステムおよび方法は、ビデオデータのある代替ストリームのエンコーディングにおいて決定されたエンコーディング情報を、ビデオデータの少なくとも１つの他の代替ストリームのエンコーディングにおいて再使用する。ビデオデータのいくつかの代替ストリームのエンコーディングにおいて、エンコーディング情報を再使用することによって、ビデオデータの代替ストリームのエンコーディングにおける有意な改善が、達成されることができ、特に、有意な時間節約が、本発明の実施形態に従って実現され得る。
【００４１】
適応ストリーミングシステムは、インターネット等のネットワークを経由して、異なる最大ビットレートおよび解像度においてエンコードされたマルチメディアコンテンツをストリーミングするように構成される。適応ストリーミングシステムは、最高品質のマルチメディアコンテンツをストリーミングし、それは、現在のストリーミング条件に基づいてサポートされ得る。マルチメディアコンテンツは、典型的には、ビデオおよびオーディオデータ、字幕、および他の関連メタデータを含む。ネットワークデータレートから独立して、最高品質ビデオ経験を提供するために、適応ストリーミングシステムは、限定されないが、利用可能なネットワークデータレートおよびビデオデコーダ性能を含む、種々の要因に従って、ビデオデータの配信全体を通して、ビデオデータの利用可能なソース間で切り替えをするように構成される。ストリーミング条件が悪化すると、適応ストリーミングシステムは、典型的には、より低い最大ビットレートでエンコードされたマルチメディアストリームに切り替えをすることを試みる。利用可能なネットワークデータレートが、最低最大ビットレートでエンコードされたストリームのストリーミングをサポートすることができない場合、次いで、再生は、多くの場合、十分な量のコンテンツが再生を再開するためにバッファされることができるまで、中断される。本発明の実施形態による、適応ストリーミングシステムにおいて利用され得る、再生中にビデオストリーム間で切り替えをするためのシステムおよび方法は、２０１１年８月３０日出願のＢｒａｎｅｓｓらの米国特許出願第１３／２２１，６８２号「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ａｄａｐｔｉｖｅ  Ｂｉｔｒａｔｅ  Ｓｔｒｅａｍｉｎｇ  ｏｆ  Ｍｅｄｉａ  Ｓｔｏｒｅｄ  ｉｎ  Ｍａｔｒｏｓｋａ  Ｃｏｎｔａｉｎｅｒ  Ｆｉｌｅｓ  Ｕｓｉｎｇ  Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ」に説明される（全体として、参照することによって組み込まれる）。
【００４２】
適応ストリーミングシステムにおいて利用されるビデオデータの複数のソースを作成するために、ソースエンコーダは、一つのマルチメディアコンテンツ内に含まれるソースビデオから、複数のビデオデータの代替ストリームをエンコードするように構成されることができる。適応ストリーミングシステムにおいて使用するためのソースビデオをエンコードするためのシステムおよび方法は、２０１１年８月３０日出願のＢｒａｎｅｓｓらの米国特許出願第１３／２２１，７９４号「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｅｎｃｏｄｉｎｇ  Ｓｏｕｒｃｅ  Ｍｅｄｉａ  ｉｎ  Ｍａｔｒｏｓｋａ  Ｃｏｎｔａｉｎｅｒ  Ｆｉｌｅｓ  ｆｏｒ  Ａｄａｐｔｉｖｅ  Ｂｉｔｒａｔｅ  Ｓｔｒｅａｍｉｎｇ  Ｕｓｉｎｇ  Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ」に開示される（全体として、参照することによって組み込まれる）。本発明の実施形態によると、ソースエンコーダは、メディアソースおよび／またはメディアサーバを使用して実装され得る。
【００４３】
前述のように、同一のソースビデオに基づくビデオデータの代替ストリームは、類似コンテンツを含み、したがって、ソースコンテンツから決定された統計およびビデオデータのある代替ストリームに対して決定されたエンコーディング情報は、ビデオデータの他の代替ストリームのうちの１つ以上のエンコーディングにおいて使用され得る。本発明の実施形態によると、同一のソースビデオに基づく、一組のビデオデータの代替ストリームは、同一の解像度であるが、異なるビットレートにおいて、ビデオデータを含み得る。本発明の多くの実施形態では、ビデオデータの特定の代替ストリームのエンコーディングのために計算される動き推定結果は、ビデオデータの他の代替ストリームの間で再使用されることができる。以下に論じられるように、ビデオデータの代替ストリームのエンコーディングにおいて決定された種々の統計およびエンコーディング情報は、ビデオデータの代替ストリームの間で再使用され得る。本発明の実施形態による、ビデオデータの代替ストリームのエンコーディングにおいて、統計およびエンコーディング情報を共有するためのシステムおよび方法は、以下にさらに論じられる。
【００４４】
（適応ストリーミングシステムアーキテクチャ）
本発明の実施形態による適応ストリーミングシステムは、ユーザデバイスへのストリーミングのために利用可能にされるべき複数のビデオのストリームを生成するように構成される。本発明の多くの実施形態では、適応ストリーミングシステムは、ソースメディアからの複数のビデオのストリームのエンコーディングを行う、ソースエンコーディングサーバを含む。本発明の実施形態による適応ストリーミングシステムは、図１に図示される。図示される適応ストリーミングシステム１０は、ソースメディアをいくつかの代替ストリームとしてエンコードするように構成されるソースエンコーディングサーバ１２を含む。ソースメディアは、エンコーディングサーバ１２上に記憶されるか、またはメディアソース１３から読み出され得る。以下にさらに論じられるように、ソースエンコーディングサーバ１２は、エンコードされたストリームを含むコンテナファイルを生成し、そのうちの少なくとも複数のものは、エンコードされたビデオの代替ストリームである。エンコーディングサーバは、各出力分解能におけるコンテンツについての統計を収集するための第１の工程と、ストリームが種々の分解能およびビットレートを有し得る、複数の出力ストリームにコンテンツをエンコードするための第２の工程とを行う。いくつかの実施形態では、第１の工程は、第２の工程が始まる前に、完了される。他の実施形態では、第２の工程は、第１の工程が完了される前に、開始することができる。言い換えると、第１および第２の工程のための算出プロセスは、同時に実行することができ、フレームは、第２の工程プロセスによって処理される前に、第１の工程プロセスによって処理される。これらのファイルは、ＨＴＴＰサーバであり得る、コンテンツサーバ１４にアップロードされる。種々の再生デバイス１８、２０、および２２は、次いで、インターネット等のネットワーク１６を介して、コンテンツサーバ１４からエンコードされたストリームの一部を要求することができる。
【００４５】
メディアコンテンツストリームを配信するための具体的適応ストリーミングシステムが、図１に関して前述されたが、種々のストリーミングシステムの任意のものが、本発明の実施形態によるメディアコンテンツストリームを配信するために利用されることができる。
【００４６】
（ソースエンコーダ）
図示される実施形態では、適応ビットレートストリーミングシステムは、ビデオコンテンツのソースストリーミングを異なる分解能および／またはビットレートを有するエンコードされたビデオの代替ストリームにエンコーディング可能な１つ以上のソースエンコーダを含む。多くの実施形態では、ソースエンコーダは、マルチメディアのストリームをエンコーディング可能な任意のデバイスを使用して実装されることができ、ストリームは、異なる分解能、サンプリングレート、および／または最大ビットレートでエンコードされる。本発明のある実施形態による適応ストリーミングシステムソースエンコーダの基本アーキテクチャは、図２に図示される。ソースエンコーダ２００は、メモリ２３０およびネットワークインターフェース２４０と通信するプロセッサ２１０を含む。図示される実施形態では、揮発性メモリ２３０は、ソースエンコーディングアプリケーション２５０を含む。プロセッサは、ソースエンコーディングアプリケーション２５０によって、同様に揮発性メモリ内にあるソースビデオデータ２６０からの複数のビデオのストリームデータをエンコードするように構成される。ソースビデオデータ２６０は、メモリ内にすでに存在し得るか、またはネットワークインターフェース２４０を介して受信され得る。
【００４７】
いくつかの実施形態では、ソースエンコーダは、複数のプロセッサを含み、エンコーディングプロセスは、複数のプロセッサ間に分散されることができる。多くの実施形態では、ソースエンコーディングアプリケーション２５０は、１つ以上のプロセッサ上で実行する複数のプロセスを起動することができ、各プロセスは、１つ以上の出力ストリームをエンコードするエンコーダコントローラ２７０である。さらなる実施形態では、各エンコーダコントローラは、同一の分解能かつ異なるビットレートにおいて、複数の出力ストリームをエンコードする。いくつかの実施形態では、３つの出力分解能の各々に対するエンコーダコントローラが、１つ以上のプロセッサ上で実行されるように起動され、出力分解能は、７６８×４３２、１２８０×７２０、および１９２０×１０８０である。いくつかの実施形態では、エンコーダコントローラ２７０は、７６８×４３２出力ストリームを２つの異なるビットレートで、エンコーダコントローラ２８０は、１２８０×７２０を３つの異なるビットレートで、エンコーダコントローラ２９０は、１９２０×１０８０を３つの異なるビットレートでエンコードする。エンコーダコントローラ２７０、２８０、および２９０は、典型的には、実行されるとき、メモリ２３０内に常駐する。本発明の多くの実施形態によると、エンコーダコントローラ２７０、２８０、および２９０は、コントローラ間での統計、エンコーディング情報、および他の情報のデータ交換のために、メモリ内に共有データバッファ２９５を有する。
【００４８】
ソースエンコーダのための具体的アーキテクチャが、図２に図示されるが、ビデオエンコーダ２５０がディスクまたはいくつかの他の形態の記憶上に位置し、稼働時にメモリ２３０にロードされるアーキテクチャを含む種々のアーキテクチャの任意のものが、本発明の実施形態によるマルチメディアコンテンツをエンコードするために利用されることができる。本発明の実施形態による、ビデオデータの代替ストリームのエンコーディングにおける統計およびエンコーディング情報の再使用のためのシステムおよび方法は、以下にさらに論じられる。
【００４９】
（統計およびエンコーディング情報の収集および使用）
本発明の多くの実施形態では、統計およびエンコーディング情報が、コンテンツを複数の出力ストリームにエンコードする前に、一つのメディアコンテンツに対して決定される。以下にさらにより詳細に論じられるように、統計およびエンコーディング情報は、保存され、エンコーディングプロセス間で共有され、コンテンツをエンコードする方法についての意思決定を加速させることができる。第１の工程において収集すべき統計は、（限定ではないが）平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラマクロブロック／ＣＴＵの数、インタマクロブロック／ＣＴＵの数、スキップマクロブロック／ＣＴＵの数を含むことができる。エンコーディング情報は、（限定ではないが）フレーム複雑性尺度、コーディングツリーユニット（ＣＴＵ）構造、モード分布、および動き情報を含むことができる。本発明の実施形態によるビデオの代替ストリームのエンコーディングにおけるエンコーディング情報の収集および使用は、以下に論じられる。
【００５０】
（フレーム複雑性尺度）
ソースコンテンツをエンコードする前に、フレーム複雑性尺度が、コンテンツの各フレームに割り当てられることができる。フレーム複雑性尺度は、フレーム内の視覚的情報の複雑性のレベルを表し、それによって、そのフレームをエンコードすることから出力コンテンツストリームをもたらすであろうデータの指示を表す（すなわち、ビット単位）。当技術分野において公知のものを含む、アルゴリズムが、フレーム複雑性尺度を計算するために、本発明の実施形態に従って利用されることができる。そのようなアルゴリズムは、フレーム内の画素または複数のフレーム内の対応する画素にわたる平均値からの色および明度等の値の偏差、および／または前のフレーム内のものとのフレーム内の画素および／または画素のブロック間の類似性等のインタ（すなわち、その間）およびイントラ（すなわち、その中の）フレーム測定値を検討し得る。さらに、アルゴリズムは、動き推定を行う際、コンテンツのエンコーディングで使用されるものと類似する測定値を計算し得る。
【００５１】
以下にさらに論じられるように、フレーム複雑性尺度は、入力ストリームからのフレームを出力ストリーム内のフレームにエンコードするために用いるパラメータを選定する際に使用されることができる。本発明の多くの実施形態では、フレーム複雑性尺度は、コンテンツの各フレームに割り当てられ、整数として表され、値が大きいほど、フレーム内の複雑性が高いことを示す。本発明のさらなる実施形態では、フレーム複雑性尺度は、入力ストリーム内のフレームに割り当てられ、同一尺度は、複数の代替出力ストリーム内の対応するフレームをエンコードするためのパラメータを選定するために使用される。
【００５２】
当技術分野において公知のものを含むビットレート制御アルゴリズムが、各エンコードされたビデオのフレームに配分すべきビットの数および出力ストリームのバッファレベルを決定するため、および、ビデオの各フレームをエンコードするときに適用すべき量子化レベルを選定するために本発明の実施形態に従って利用されることができる。本発明の実施形態によると、これらのアルゴリズムは、入力コンテンツストリームに対して算出されたフレーム複雑性尺度を利用し、その入力ストリームからエンコードされた複数の出力ストリームに関する量子化レベルを決定するためにその尺度を再使用することができる。
【００５３】
（ブロックサイズ決定）
ブロック式エンコーディング規格では、画素は、エンコーディングプロセスにおいて、パーティションまたは「ブロック」と見なされる。いくつかの現代の規格では、ブロックサイズは、可変であり、フレーム内のパーティションは、異なるサイズを有することができる。ＨＥＶＣ規格は、コーディングツリーユニット（ＣＴＵ）として知られるパーティションを使用し、ＣＴＵのブロックサイズは、典型的には、６４×６４、３２×３２、１６×１６、または８×８画素である。ビデオのフレームは、異なるサイズおよび配列のＣＴＵの混合物を含むことができる。多くの場合、フレーム内のＣＴＵのブロックサイズ（または、関連ビデオ圧縮規格に準じて画素の他の「ブロック」パーティション）は、エンコードされるフレームのビットでの効率および結果として生じるサイズに基づいて選定される。本発明の実施形態によるエンコーダは、それが別の代替出力ストリーム内のフレームの対応する部分に対して同様の決定をすでに行っている場合、出力ストリームに対するコンテンツのフレームをエンコードする際に使用すべきブロックサイズについての決定を加速することができる。
【００５４】
エンコーダは、典型的には、少なくとも部分的に、フレームの画質を維持しながら、結果として生じるエンコードされる出力フレームのサイズ（ビット単位）に基づいて、ブロックサイズを選定する。通常、出力フレームのより小さいサイズ（すなわち、より効率的）が、所望され、エンコーディングにおいてより大きいブロックサイズを使用してより高い圧縮を用いて遂行されることができる。エンコーダは、フレームの一部をエンコードする際、より大きいブロックサイズの使用を試み、結果として生じる画像の品質または正確度が、閾値を満たさない場合、フレームのその部分に関して徐々により小さいブロックサイズを試みることができる。例えば、フレームの３２×３２画素部分は、４つの１６×１６画素ＣＴＵとしてエンコードするように試験されることができる。１６×１６画素ＣＴＵのいずれかが望ましくない場合、それは、４つの８×８画素ＣＴＵにさらに分割されることができる。他のビデオ規格では、特定の規格において規定されたより大きいおよびより小さいブロックサイズが、同様の方式で試験されることができる。
【００５５】
本発明の実施形態によると、あるデータは、保持され、同一入力ストリームからの代替出力ストリームをエンコードするエンコーダコントローラ間で共有されることができる。共有データは、フレームの一部に対して試験されたブロックサイズを含むことができる。例えば、エンコーダコントローラまたは別のエンコーダコントローラが、同一の分解能であるが、異なるビットレートでフレームの同一部分をエンコードする場合、エンコーダコントローラが、フレームの３２×３２画素部分を４つの１６×１６ＣＴＵ（または、ＣＴＵサイズの任意の他の組み合わせ）として処理するように選定した場合、以前に行われた決定をスキップし、同一サイズＣＴＵを使用すること、および／または他のＣＴＵサイズを試験することができる。より高いビットレートでは、より大きいブロックサイズを試験することは不必要であり得る。なぜなら、より高いビットレートは、より多くの記憶された情報を収容することができ、したがって、より大きいブロックサイズから生じるより高い圧縮が必要とされないからである。したがって、エンコーダコントローラが、より高いビットレートでフレームの同一部分をエンコードする場合、３２×３２画素ＣＴＵでエンコードしないように、以前の試験／決定をスキップし、単に、１６×１６ＣＴＵを使用し、および／または８×８画素ＣＴＵが、標的ビットレートを満たしながら、同一またはより良い品質を達成するであろうかどうかを試験することができる。
【００５６】
過去のＣＴＵサイズ選択は、異なる分解能のストリームにおけるＣＴＵサイズの選別においても有用であり得る。例えば、分解能１９２０×１０８０を伴うストリーム内のフレームの一部に対して、３２×３２のＣＴＵサイズが試験され、１６×１６またはより小さいパーティションを支持して３２×３２のＣＴＵサイズが拒絶されたと仮定する。分解能３８４０×２１６０のストリーム内のフレームの同一部分は、６４×６４のサイズを対象とするであろう。エンコーダは、３２×３２のサイズがより低い分解能ストリームにおいて拒絶されたため、より高い分解能フレーム内のその部分に関する６４×６４のＣＴＵサイズのチェックをスキップすることができる。エンコーダは、３２×３２およびより小さいＣＴＵサイズを試験することによって始動することができる。
【００５７】
本発明の実施形態による、ビデオのストリームをエンコードする際、ブロックサイズ情報を再使用するためのプロセスが、図３に図示される。プロセスは、サイズが類似ＣＴＵ（すなわち、別のストリーム内の対応するフレーム内の対応するＣＴＵ）に対して決定されたかどうかチェックすること（３１０）を含む。該当しない場合、あるＣＴＵサイズが、選定され（３１２）、典型的には、より大きいサイズから開始して試験される。サイズが、類似ＣＴＵに対して決定されている場合、類似ＣＴＵのソースストリームの分解能は、現在のストリームと比較される（３１２）。分解能が異なる場合、ＣＴＵサイズは、現在のストリームにスケーリングされる（３１４）。所定のＣＴＵサイズ（事前に決定されている場合）または選定されたＣＴＵサイズ（事前に決定されていない場合）が、エンコードされる現在のＣＴＵに関して試験される（３１６）。サイズが容認可能ではない場合、より小さいＣＴＵサイズが、試行される（３１８）。サイズが容認可能である場合、ＣＴＵサイズは、現在のＣＴＵに適用される（３２０）。
【００５８】
ビデオのストリームをエンコードする際、ＣＴＵサイズ決定を再使用するための具体的プロセスが、図３に関して前述されたが、種々のプロセスのいずれかが、本発明の実施形態による複数のメディアコンテンツストリームをエンコードする際、ＣＴＵ（または、関連ビデオ圧縮規格に準じた画素の他の「ブロック」パーティション）サイズ決定を再使用するために利用されることができる。さらに、ＨＥＶＣ以外のビデオ規格における「ブロック」パーティションが、本明細書に論じられるもの以外に利用可能なサイズを有し得、本明細書に論じられるブロックサイズを選定するための技法が等しく適用可能であることは、当業者に理解される。以下にさらに論じられるように、１つのエンコーダコントローラによる決定（すなわち、同一の分解能および異なるビットレートにおいて複数のストリームをエンコードするソフトウェアプロセス）は、記憶され、そのエンコーダコントローラまたは異なる分解能をエンコードする別のエンコーダコントローラによって再使用されることができる。
【００５９】
（モード分布およびモード選択肢）
モード分布は、ビデオのフレーム内のイントラ、インタ、およびスキップマクロブロック（または、関連ビデオ圧縮規格に準じた画素の他の「ブロック」パーティション）の全体的比率を指す。ＰフレームおよびＢフレーム等の予測されるフレームは、イントラ（フレーム内の情報でのみエンコードされる）および／またはインタ（別のフレーム内の情報を参照してエンコードされる）フレームマクロブロックを含むことができる。異なるビデオ圧縮規格下では、ブロック画素パーティションは、マクロブロックまたはコーディングツリーユニット（ＣＴＵ）のようにさまざまに称され得る。モード分布は、ブロック自体がマクロブロックまたはＣＴＵと呼ばれるかどうかにかかわらず、ブロックタイプを参照し得る。当技術分野において公知のものを含む、試験および／またはアルゴリズムが、フレーム内の各マクロブロックを分析し、画質を維持しながら、どのタイプのブロックがそのブロックをエンコードする際に最も効率的であるかを調べるために利用されることができる。例えば、エンコーディング効率の尺度は、特定のマクロブロックをエンコードするために必要とされるビットの数であり得る。
【００６０】
エンコーディング効率および画質のために、多くの場合、代替ストリーム内の対応するフレームにわたり、可能な限り同一モード分布に近いことが望ましい。例えば、３０％イントラブロック、６０％インタブロック、および１０％スキップブロックを伴うフレームｐを仮定すると、同一の分解能かつ異なるビットレートにおける第１の代替ストリーム内の対応するフレームｐ１は、イントラ、インタ、およびスキップブロックの類似分布、すなわち、標的モード分布を有するべきである。異なる分解能かつ異なるビットレートにおける第２の代替ストリーム内の対応するフレームｐ２もまた、理想的には、ブロックタイプの類似分布を有するであろう。
【００６１】
モード分布は、フレーム内のブロックを処理するとき、どのブロックタイプを使用すべきかに関する、エンコーダによって行われる決定を加速させるために使用されることができる。決定されたモード分布に一致するように努めることによって、決定の数は、減少されることができる。例えば、特定のフレームの処理の終了に向かうにつれて、フレームのモード分布は、標的モード分布から外れ得る。したがって、ブロックは、それらのブロックをエンコーディング後、画像の良好な品質および完全性を維持しながら、結果として生じるモード分布を標的モード分布により近づけるために、あるタイプ（例えば、イントラ、インタ、スキップ）であるように選定されることができる。本発明の種々の実施形態では、ブロックタイプを選定する際の決定は、より多くの複雑性（例えば、より多くのイントラコードブロック）がより高いビットレートで対処され得るため、異なるビットレートにおいて、ストリーム間で異なり得る。
【００６２】
本発明の実施形態による、ブロックタイプ決定を調節するためのプロセスが、図４に図示される。プロセス４００はフレーム内のブロックがエンコードされているとき、または、エンコードされることなく、フレームが分析され、ブロックタイプが選定されるとき、利用されることができる。プロセスは、処理（例えば、分析またはエンコード）されたブロックの総数を維持すること（４１０）を含む。ブロックの閾値数、または代替として、フレーム内の総ブロックのある割合に到達した場合、ブロックタイプを選定するための基準は、フレーム内のブロックの標的モード分布を維持するであろうブロックタイプの選定により有利に働くように調節されることができる（４１４）。フレームの終了に到達していない場合（４１６）、処理は、フレーム内のブロックに対して継続し、処理されたブロックの総数をアップデートする（４１０）。
【００６３】
ビデオのストリームをエンコードする際、ブロックタイプ決定を調節するための具体的プロセスが、図４に関して前述されるが、種々のプロセスのいずれかが、本発明の実施形態による複数のメディアコンテンツストリームをエンコードする際、ブロックタイプ決定を調節するために利用されることができる。
【００６４】
（動き推定）
ビデオ圧縮では、ＰフレームおよびＢフレーム等の予測されるフレームは、基準フレーム（Ｉ、Ｐ、またはＢフレームであり得る）から情報を引き出し、動き推定において使用される動きベクトルおよび残差データ等の情報を含む。画素のブロック（例えば、マクロブロック、ＣＴＵ、または類似パーティション）に対する動きベクトルは、典型的には、基準フレームからの画素の示されたブロックを予測されるフレーム内のどの場所に配置すべきかを記述する。残差データは、画素のブロックと基準の画素のブロックとの間の任意の差異を記述する。本発明の多くの実施形態では、動きベクトル等の動き推定情報は、異なる分解能および／またはビットレートにおいて、１つの出力ストリームから別の出力ストリームに再使用されることができる。
【００６５】
本発明のいくつかの実施形態では、動きベクトルが、所与の分解能およびビットレートにおいて、少なくとも１つの出力ストリームに対して生成される。動きベクトルは、次いで、異なるビットレートにおいて、同一の分解能で少なくとも１つの他の出力ストリームをエンコードするときに適用され、精緻化される。本発明のさらなる実施形態では、出力ストリームに対して生成される動きベクトルは、より高い分解能で少なくとも１つの他の出力ストリームをエンコードするときに適用され、精緻化される。動きベクトルは、第１のストリームと第２のストリームとの間の分解能の差異に比例してスケーリングされ、次いで、より高い分解能において利用可能なより高い精度を利用するように精緻化される。例えば、分解能７６８×４３２のストリームに対して生成される動きベクトルは、ベクトルの水平成分を１２８０／７６８で、ベクトルの垂直成分を７２０／４３２で乗算することによって、分解能１２８０×７２０のストリームをエンコードする際に使用されることができる。乗数１２８０／７６８および７２０／４３２は、分解能におけるその変換に関するスケーリング係数と見なされ得る。さらに、エンコーダは、マクロブロックに関する動きベクトルおよび残差データのエンコーディングコストが、非常に低いと決定し得、別の出力ストリーム内のそのマクロブロックのエンコーディングコストのチェックをスキップし得る。このように、動きベクトルは、複数の出力ストリームにわたって再使用されることができ、動き推定は、新しい動きベクトルを生成する必要がないことによって加速される。複数の出力ストリームにわたって動き推定情報を共有および／または再使用するための他の技法も、本発明の実施形態に従って利用されることができる。代替ストリームをエンコードする際、動き推定情報を再使用するためのシステムおよび方法は、２０１２年５月３１日出願のＺｕｒｐａｌ  ｅｔ  ａｌ．の米国特許出願第１３／４８５，６０９号「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  ｔｈｅ  Ｒｅｕｓｅ  ｏｆ  Ｅｎｃｏｄｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ  ｉｎ  Ｅｎｃｏｄｉｎｇ  Ａｌｔｅｒｎａｔｉｖｅ  Ｓｔｒｅａｍｓ  ｏｆ  Ｖｉｄｅｏ  Ｄａｔａ」に開示されており、その全体は、参照することによって組み込まれる。
【００６６】
本発明の実施形態によるビデオのストリームをエンコードする際、動きベクトルを再使用するためのプロセスは、図５に図示される。ビデオのストリーム内のフレームをエンコードする場合、エンコーダは、現在のフレームをエンコードする際に再使用され得る、異なるビデオのストリーム内の対応するマクロブロック／ＣＴＵに対して、動きベクトルがすでに作成されているかどうかをチェックすることができる（５１０）。該当しない場合、新しい動きベクトルが、作成および記憶される（５１２）。動きベクトルが存在する場合、エンコーダは、他のビデオのストリームが現在のストリームと同一の分解能であるかどうかをチェックすることができる（５１４）。同一の分解能である場合、動きベクトルは、直接、適用されることができる（５１６）。動きベクトルはまた、１つまたは２つの近隣画素にわたる小規模ダイヤモンドサーチを用いる等、検索を用いて、またはサブ画素精緻化を用いて精緻化されることができる。種々の他の検索パターンも、代替として、動きベクトルを精緻化するために利用されることができる。異なる分解能である場合、動きベクトルは、適用される前に、現在の分解能にスケーリングされ（５１８）、精緻化されることができる（５２０）。
【００６７】
ビデオのストリームをエンコードする際、動きベクトルを再使用するための具体的プロセスが、図５に関して前述されるが、種々のプロセスの任意のものが、本発明の実施形態による複数のメディアコンテンツストリームをエンコードする際、動きベクトルを再使用するために利用されることができる。
【００６８】
（適応ビットレートストリーミングのためのコンテンツの２工程エンコーディング）
２工程プロセスを使用したコンテンツのエンコーディングは、情報の共有および再使用を通して効率を提供することができる。本発明の多くの実施形態では、エンコーダは、コンテンツを受信し、第１の工程において、コンテンツを分析し、第２の工程において、コンテンツをエンコードする。第１の工程において収集された統計および他の情報は、第２の工程におけるエンコーディングを加速するために使用されることができ、統計およびエンコーディング情報は、第２の工程におけるエンコーディングプロセス間で共有されることができる。いくつかの実施形態では、第１の工程は、第２の工程が始まる前に完了される。他の実施形態では、第２の工程は、第１の工程が完了される前に、開始することができる。言い換えると、第１および第２の工程のための算出プロセスは、同時に稼働することができ、フレームは、第２の工程プロセスによって処理される前に、第１の工程プロセスによって処理される。
【００６９】
本発明のある実施形態による、コンテンツをエンコードするためのプロセスが、図６に図示される。エンコーディングプロセス６００は、メディアコンテンツを受信することを含む（６１０）。コンテンツは、単一入力ファイル（例えば、マルチメディアファイルまたはコンテナ形式ファイル）またはメディアファイルの集合内に含まれることができる。コンテンツはまた、エンコーダによって受信されるビデオの入力ストリームであり得る。本発明のいくつかの実施形態では、エンコーディングプロセスは、エンコーディングサーバ上に、エンコーディングアプリケーションとして実装され、ディスク読み取り／書き込み動作は、各入力フレームが、１回読み取られることのみを必要とするため、低減される。
【００７０】
エンコーディングプロセスはまた、メディアストリームについての統計を収集するための第１の工程を行うことを含む（６１２）。第１の工程は、ソース入力ビデオストリーム内のコンテンツの初期分析を行い、エンコードされるべき分解能の各々に対する統計を収集するように意図される。本発明の多くの実施形態では、入力ストリームは、所望の出力分解能の各々に対するストリームに変換され、統計は、各ストリームについて収集される。変換は、色変換（例えば、ＲＧＢからＹＵＶ等、ＩＴＵ６０１から７０９、または形式固有の変換）および各フレームの寸法／分解能のサイズ変更を含むことができる。フレーム複雑性尺度等のエンコーディング情報が、上述でさらに論じられるような技法を使用して、フレーム内の画像データの複雑性のレベルに基づいて、ストリーム内の各フレームに割り当てられることができる。モード分布も同様に、各フレームに対して決定されることができる。複雑性尺度およびモード分布は、最終ストリームのエンコーディングへの入力として使用されることができる。
【００７１】
他のエンコーディング情報は、ストリームをエンコードする際に使用されるべきヘッダデータのサイズおよびマクロブロックデータのサイズを含むことができる。ヘッダサイズが与えられると、エンコーダは、オーバーヘッドデータに配分されるビット数およびコンテンツをエンコードするために利用可能なビット数を推定することができる。マクロブロックサイズもまた、コンテンツをエンコードするときのビット配分のより良好な推定に寄与し得る。効果的レート制御のために、ヘッダサイズとマクロブロックサイズの相対的割合は、出力ストリームにわたって一致すべきである。ヘッダサイズ、マクロブロックサイズ、および／またはヘッダサイズとマクロブロックサイズの相対的割合は、エンコーディングパラメータとしてエンコーディングプロセスに提供されることができる。
【００７２】
エンコーディング情報はまた、仮想基準デコーダ（ＨＲＤ）データを含むことができる。ＨＲＤモデルは、いくつかのビデオ圧縮規格において規定され、フレームサイズおよびバッファ充満度の計算を補助する。ＨＲＤは、エンコーダ上でデコーダ挙動を再現し、再生デバイスバッファ内のバッファオーバーフローを回避する。ＨＲＤデータは、第１の分析工程において決定され、第２のエンコーディング工程において使用するために、共有バッファまたはローカルキャッシュ内に保存されることができる。
【００７３】
ある分解能に対して収集された他の統計が、同一の分解能および／または別の分解能において、種々のビットレートでストリームをエンコードするための決定を加速させるために使用されることができる。第１の工程において収集すべき統計は、（限定ではないが）平均量子化パラメータ、ヘッダビットのサイズ、テクスチャビットのサイズ、イントラマクロブロック／ＣＴＵの数、インタマクロブロック／ＣＴＵの数、スキップマクロブロック／ＣＴの数を含むことができる。本発明のいくつかの実施形態では、統計は、内部にキャッシュされること（例えば、単一ファイルに出力される）、および／または第２の工程においてエンコードするときに各エンコーダコントローラにアクセス可能なメモリ内の共有バッファに記憶されることができる。
【００７４】
第２の工程では、コンテンツは、出力ストリームにエンコードされる（６１６）。本発明の多くの実施形態では、別個のスレッドまたはプロセスは、各出力分解能に対してエンコーディングアプリケーションによって起動され（６１４）、各スレッドまたはプロセスは、エンコーダコントローラと称される。本発明のさらなる実施形態では、各エンコーダコントローラは、同一の分解能であるが、異なるビットレートにおいて、複数の出力ストリームをエンコードする。本発明のいくつかの施形態では、エンコーディングサーバは、複数のプロセッサを有し、エンコーダコントローラは、各々が異なるプロセッサ上で稼働するか、または別様に、プロセッサにわたって分散され得る。出力ストリームは、一定ビットレート（ＣＢＲ）または可変ビットレート（ＶＢＲ）でエンコードされ得る。
【００７５】
ストリームのエンコーディングが完了されるまで（６１８）、エンコーダコントローラは、内部キャッシュおよび／またはメモリ内の共有バッファ内に記憶された情報および統計を使用して、同時に稼働することができる。エンコーダコントローラは、エンコードしているブロックおよび／またはフレームに対するエンコーディング情報が存在するかどうかメモリをチェックし（６２０）、現在のブロックまたはフレームを処理する際、その情報を利用することができる（６２２）。以下にさらに論じられるように、異なるタイプのエンコーディング情報が、エンコーダが決定をスキップすることを可能にするために使用されることができるか、または現在のブロックまたはフレームを処理するためのエンコーディング情報を決定するための開始点として使用されることができる。情報がまだ存在しない場合、作成されることができ（６２４）、ストリームのエンコーディングは、継続する（６１６）。
【００７６】
共有情報は、動きベクトル等の動き推定情報を含むことができる。ストリームに対して生成された動きベクトルは、同一の分解能または異なる分解能で別のストリームをエンコードする際に再使用され得る。上述でさらに論じられるように、より高い分解能でストリームをエンコードするために再使用される動きベクトルは、分解能における差異を補償するためにスケーリングされ、精緻化され得る。いくつかの統計は、エンコードされているストリームの分解能に固有であり得る。前述のように、ある分解能およびビットレートにおけるＣＴＵサイズ選択は、保持され、より高いビットレートにおける同一の分解能のエンコーディングに適用され得る。エンコーダコントローラが、フレームの一部内のＣＴＵサイズに対して決定を行うと、より高いビットレートでフレームの同一部分をエンコードする場合、その決定をスキップし、ＣＴＵサイズを再使用するか、またはより小さいＣＴＵサイズを試みることができる。
【００７７】
本発明の多くの実施形態では、フレームの所与の部分内のＣＴＵは、同一エンコーダコントローラによって、異なるビットレートにおける複数の出力ストリームに対して連続してエンコードされる。エンコーダコントローラが、出力ストリームに対してＣＴＵをエンコードした後、その後すぐ、異なる出力ストリームに対するＣＴＵをエンコードする場合、そのＣＴＵをエンコードするために要求されるデータは、依然として、プロセッサキャッシュまたは他のローカルメモリ内にある可能性が高い。本発明の実施形態によると、エンコーダコントローラは、各出力ストリームに対して連続して次々にＣＴＵをエンコードする。各出力ストリームに対する対応するＣＴＵは、異なるビットレートにおけるストリームに対して異なる量子化パラメータを使用してエンコードされ得る。
【００７８】
ブロック式ビデオ圧縮を伴うエンコーディングは、典型的には、フレーム内の画像情報の圧縮に寄与する量子化パラメータにおけるファクタリングを伴う。フレームに対する量子化パラメータは、典型的には、フレーム複雑性尺度およびフレームのモード分布等の要因に基づいて選択され、エンコードされたフレームが、可能な最良画質を維持しながら、標的サイズ（ビット単位）であるように選択される。前述でさらに論じられるように、フレーム複雑性尺度およびモード分布に対する値は、入力ストリームのフレームに対して決定され、複数の出力ストリーム内の対応する出力フレームを処理する際に利用されることができる。前のフレームからの量子化パラメータは、開始値として使用され、現在のフレームに対するフレーム複雑性尺度およびモード分布を使用して精緻化されることができる。例えば、次のフレームが、前のフレームより低い複雑性尺度を有する場合、量子化パラメータは、低複雑性画像が忠実性の著しい損失を伴わずにさらに圧縮され得るため、そのフレームに対して増加させられることができる。量子化パラメータは、より高いビットレートにおけるデータに対するより高い容量のため、より高いビットレートストリームのために同一フレームをエンコードする場合、減少されることができる。本発明の多くの実施形態では、量子化パラメータは、各出力ストリームの標的ビットレートを調節しながら、同一フレーム複雑性尺度およびモード分布を使用して、各出力ストリーム内の対応するフレームに関して独立して決定されることができる。より低いビットレート出力ストリーム内のフレーム内のＣＴＵに対して決定された量子化パラメータは、より高いビットレート出力ストリームにおける対応するＣＴＵに対して参照され、減少させられることができる。本発明の実施形態によるエンコーダは、出力ストリームをエンコードするときに速度ひずみ情報を計算し、より高いビットレートで出力ストリームをエンコードするときの量子化パラメータを選定するために速度ひずみ情報を再使用することができる。本発明のいくつかの実施形態では、各出力ストリーム内の各フレームは、そのモード分布が、入力ストリームからのソースフレームを使用して決定された標的モード分布にほぼ等しくなるようにエンコードされる。異なるエンコーダコントローラによってアクセス可能かつ使用され得る、他のタイプの共有情報は、さらに前述されている。
【００７９】
本発明の種々の実施形態では、１つ以上のビデオのフレームは、動き予測残差をエンコードするブロックに分割される。これらのブロックは、ＨＥＶＣ規格では、変換ユニット（ＴＵ）と称され、４×４、８×８、１６×１６、または３２×３２のサイズを有することができる。予測残差のための他のタイプのブロックユニットも、関連規格またはビデオコーデックに応じて、利用されることができる。本発明の実施形態によるエンコーダは、エンコーダが構成される規格またはビデオコーデックによって定義される、ＣＴＵ、ＴＵ、コーディングユニット（ＣＵ）、および／または他のタイプのエンコーディングブロックをエンコードする際、量子化パラメータを使用することができる。ストリームの統計および／または以前に計算された量子化パラメータに基づくビデオのフレーム内のブロックに対する量子化パラメータを選定するプロセスは、適応量子化と称され得る。画素のブロックに対する量子化パラメータは、画素のそれらのブロックに対する複雑性尺度（前述でさらに論じられるフレーム複雑性尺度と同様に）および／または画素の類似ブロックに対してすでに計算された量子化パラメータに基づいて、第１の工程および／または第２の工程において計算されることができる。第１の工程において計算される量子化パラメータおよび／または複雑性尺度は、例えば、エンコーダコントローラによってアクセス可能である共有バッファ内に記憶され、第２の工程において利用されることができる。例えば、ある分解能で入力ストリームに対して計算される値は、異なるビットレートにおいて、同一の分解能で出力ストリームをエンコードするときに利用されることができる。
【００８０】
図６に関する前述のプロセスでは、統計が、入力ビデオストリームに対して収集または計算される６１２。計算される統計は、入力ビデオストリーム内のフレーム内の画素のブロックに対する複雑性尺度を含むことができる。本発明の多くの実施形態では、画素のブロックに対する複雑性尺度は、記憶され、第２の工程においてブロックをエンコードするための量子化パラメータを計算する際に使用されることができる。本発明の実施形態による、複雑性尺度を生成するためのプロセスが、図７に図示される。プロセスは、ビデオのフレーム内の画素のブロックを選択すること７１０を含む。プロセスは、ブロックの複雑性を分析する７１２。複雑性尺度は、例えば、ＡＶＣ規格では、輝度のヒストグラムおよび／またはコントラストレベル分布から計算されることができる。しかしながら、任意のビデオエンコーディング規格下におけるいくつかの技法の任意のものが、本発明の実施形態による複雑性尺度を計算するために使用されることができる。複雑性尺度は、（例えば、エンコーディングの第２の工程において）量子化パラメータを生成する際に使用するために記憶されることができる７１４。図１０Ａは、入力ストリームの第１の工程において計算されるようなＣＴＵの複雑性尺度のプロットを図示する。図に示されるように、複雑性尺度は、異なるＣＴＵ間で変動し得る。
【００８１】
再び、図６を参照すると、前述でさらに説明されるプロセスは、存在しない場合、エンコーディング情報を作成すること６２４と、存在する場合、エンコーディング情報を再使用すること６２２とを含む。エンコーディング情報は、画素の特定のブロック（ＣＴＵまたはＴＵ等）に対する量子化パラメータを含むことができる。本発明の実施形態による、量子化パラメータを生成するためのプロセス（エンコーディング情報を作成する際６２４等）が、図８に図示される。プロセスは、画素のブロックを選択すること８１０を含む。ブロックに対して記憶される複雑性尺度は、読み出される８１２。第２の工程においてブロック（ＣＴＵまたはＴＵ等）をエンコードするための量子化パラメータは、第１の工程においてブロックに対して計算された複雑性尺度等の統計を使用して決定され得る８１４。計算はまた、平均ベース画像量子化パラメータからの偏差を考慮することができる。
【００８２】
量子化パラメータは、第１の工程において決定された複雑性尺度および／またはすでにエンコードされた他の出力ストリーム（例えば、より低いまたはより高いビットレートストリーム）内のブロックに対して決定された量子化パラメータを利用することができる。（エンコーディング情報を再使用する６２２において等）画素の類似ブロックに対してすでに生成された量子化パラメータを使用するためのプロセスが、図９に図示される。プロセスは、画素のブロックを選択すること９１０を含む。記憶された量子化パラメータが、類似ブロックに対して読み出される９１２。類似ブロックは、入力ストリーム内のフレーム内の選択されたブロックと同一ブロックから生成された出力ストリーム内のフレーム内のブロックである。例えば、類似ブロックは、同一の分解能であるが、異なるビットレートの出力ストリーム内ですでにエンコードされた対応するブロックであることができる。量子化パラメータは、読み出された量子化パラメータを使用して選択されたブロックに対して計算される。量子化パラメータはさらに、限定ではないが、ひずみ率およびビットレート等、入力ストリーム統計および／または出力ストリームのすでにエンコードされたフレームに対して計算された統計に関して調節されることができる９１６。量子化パラメータは、最小ひずみおよび標的ビットレートを達成するように計算されることができる。図１０Ｂは、３つの異なる出力ストリーム内のＣＴＵ（同一の分解能および異なるビットレートにおける）に対して計算された量子化パラメータのプロットとともに、図１０Ａに図示される複雑性尺度のプロットを図示する。図に示されるように、複雑性尺度の値は、量子化パラメータ値を決定する際に使用され、したがって、プロットは、それらの関係に起因して、類似一般形状を有する。
【００８３】
再生の間、ストリームの切り替えを促進するために、一組の代替ビデオのストリームコンテンツは、各ストリーム内の同一位置にイントラフレーム（Ｉフレーム）を有するべきである。１つのストリーム内にＩフレームが存在する場合、他の代替ストリームの各々における同一位置（すなわち、時間）における対応するフレームは、Ｉフレームであるはずである。Ｉフレームは、フレームをレンダリングするために必要な全情報を含むため、再生デバイスがストリームを切り替える必要があるとき、再生が、フレームを失わずに、シームレスであるように、Ｉフレームにおいて切り替えをすることができる。本発明の多くの実施形態では、Ｉフレームは、複数の代替出力ストリームにおける同一位置におけるフレームに対してエンコードされる。ＰフレームまたはＢフレームが、出力ストリームに対してエンコードされている場合、エンコーダは、別の出力ストリームをエンコードする場合、Ｉフレームと同一位置における対応するフレームをエンコードするための試験をスキップすることができ、フレームをＢフレームまたはＰフレームとしてエンコードすることができる。
【００８４】
共有統計を利用して、複数のメディアコンテンツストリームをエンコードするための具体的プロセスが、図６に関して前述されるが、種々のプロセスの任意のものが、本発明の実施形態による適応ビットレートストリーミングのために、複数のメディアコンテンツストリームをエンコードするために利用されることができる。
【００８５】
本発明は、ある具体的側面において説明されたが、多くの追加の修正および変形例が、当業者に明白である。したがって、本発明は、本発明の範囲および精神から逸脱することなく、それが準拠する特定の規格内に規定されるもの以外の特徴をサポートする、エンコーダおよびデコーダの利用等、実装における種々の変更を含め、具体的に説明されるものと別様に実践され得ることを理解されたい。したがって、本発明の実施形態は、あらゆる観点において、制限ではなく、例証として見なされるべきである。
【図１】
2016526336.tif 000003
【図２】
2016526336.tif 000004
【図３】
2016526336.tif 000005
【図４】
2016526336.tif 000006
【図５】
2016526336.tif 000007
【図６】
2016526336.tif 000008
【図７】
2016526336.tif 000009
【図８】
2016526336.tif 000010
【図９】
2016526336.tif 000011
【図１０Ａ】
2016526336.tif 000012
【図１０Ｂ】
2016526336.tif 000013
【国際調査報告】
2016526336.tif 000014
2016526336.tif 000015