(57)【特許請求の範囲】
【請求項１】
多ビット・レート・ビデオ・ストリーミング用の区分圧縮ビデオ・ストリームの可変ビット・レート・エンコーディングに合わせて入力ビデオを処理する方法であって、
多ビット・レート・ビデオ・ストリーミングに合わせてエンコードすべき生のビデオ・コンテンツの入力を受けるステップと、
ビデオ品質が最上位ビデオ・ストリームから最下位ビデオ・ストリームまでの範囲に及ぶ複数の圧縮ビデオ・ストリームとして、ピクチャー群から成るセグメントを単位として、前記生のビデオ・コンテンツをエンコードするステップと、
を備えており、前記エンコードするステップが、
前記最上位ビデオ・ストリームについては、ピーク・ビット・レートおよび平均ビット・レートの制限を受ける可変ビット・レートで前記生のビデオ・コンテンツをエンコードし、
前記最下位ビット・ストリームについては、単位時間当たりの一定ピクチャー数である一定チャンク・レートで前記生のビデオ・コンテンツをエンコードし、
１つ又は複数の中間ビデオ・ストリームについては、可変ビット・レートで前記生のビデオ・コンテンツをエンコードする、
ステップと、
前記ピクチャー群に区分された前記ビデオ・ストリームから、エンコードされた１組のビデオ・ストリームを生成するステップと、
を備え、
前記最上位ビデオ・ストリームおよび中間ビデオ・ストリームの前記ピーク・ビット・レートおよび平均ビット・レートの制限が、徐々に減少する、
方法。
【請求項２】
請求項１記載の方法において、前記最上位ビデオ・ストリームをエンコードする前記ステップが、指定された平均ビット・レートを目標とし、ピーク・ビット・レート未満であり続けるように制限された可変ビット・レート手法によってエンコードするステップを含む、方法。
【請求項３】
請求項１記載の方法であって、更に、
最高および最低ビット・レート、ならびに多ビット・レート・ビデオ・ストリーミングに合わせてエンコードすべき圧縮ビデオ・ストリームの数を指定する入力を受けるステップと、
前記最上位ビデオ・ストリームおよび中間ビデオ・ストリームのピーク・ビット・レートおよび平均ビット・レートを、徐々に低下するように選択するステップと、
を備えている、方法。
【請求項４】
請求項１記載の方法であって、更に、
前記エンコードされたビデオ・ストリームのセグメントを、ネットワークを通じてクライアント・ビデオ再生デバイスに選択的にストリーミングするステップを備えており、ネットワーク状態に基づいて、クライアント側レート制御判断にしたがって、前記エンコードされたビデオ・ストリームの中から前記ストリーミングされるセグメントを選択する、
方法。
【請求項５】
多ビット・レート・ビデオ・ストリーミング用の区分圧縮ビデオ・ストリームの動的解像度エンコーディングに合わせて入力ビデオを処理する方法であって、
多ビット・レート・ビデオ・ストリーミングに合わせてエンコードすべき生のビデオ・コンテンツの入力を受けるステップと、
ビデオ品質が最上位ビデオ・ストリームから最下位ビデオ・ストリームまでの範囲に及ぶ複数の圧縮ビデオ・ストリームとして、ピクチャー群から成るセグメントを単位として、前記生のビデオ・コンテンツをエンコードするステップと、
を備えており、前記エンコードするステップが、
エンコードすべきビデオ・ストリームのピクチャー群について、変化する解像度および量子化ステップ・サイズに合わせて少なくとも３つのエンコーディング・サンプルを得るステップと、
解像度、量子化ステップ・サイズ、および前記ピクチャー群をエンコードして結果的に得られるサイズを関係付けるモデルを作成するステップと、
前記ピクチャー群についてテクスチャー測定を行うステップと、
前記テクスチャー測定に基づいて、解像度を変更するための量子化閾値を決定するステップと、
前記モデルおよび解像度変更用量子化閾値に基づいて、前記ピクチャー群をエンコードするためのビデオ解像度および量子化ステップ・サイズを動的に決定するステップと、
前記動的に決定したビデオ解像度および量子化ステップ・サイズを用いて、前記ピクチャー群をエンコードするステップと、
を備えている、方法。
【請求項６】
請求項５記載の方法であって、更に、
前記生のビデオ・コンテンツにおける場面変化を検出するステップを備えており、
ビデオ解像度を動的に決定するステップが、ピクチャー群間における場面変化境界において、動的ビデオ解像度変更を適用する、方法。
【請求項７】
請求項５記載の方法において、前記モデルを作成するステップが、
前記ピクチャー群の前記少なくとも３つのエンコーディング・サンプルの内少なくとも２つに基づいて、所与のビデオ解像度について、量子化ステップ・サイズのエンコード処理後サイズ(encoded size)に対する関係の線型モデルを作成するステップを含み、前記エンコード処理後サイズが、前記所与のビデオ解像度および変化する量子化ステップ・サイズでサンプリングされる、方法。
【請求項８】
請求項７記載の方法において、前記ビデオ解像度を動的に決定する前記ステップが、
前記所与のビデオ解像度について量子化ステップ・サイズをエンコード処理後サイズに関係付ける前記作成した線型モデルにしたがって、前記所与のビデオ解像度でエンコードするときに、前記ピクチャー群の所望のビット・レートに対応するエンコード処理後サイズが得られる量子化ステップ・サイズを決定するステップと、
前記決定した量子化ステップ・サイズを、解像度を変更するための前記量子化閾値と比較するステップと、
前記比較が解像度の変更を示さない場合、前記所与のビデオ解像度および決定した量子化ステップ・サイズを用いて、前記ピクチャー群をエンコードすることを決定するステップと、
そうでない場合、前記ピクチャー群をエンコードするための前記ビデオ解像度を変更することを決定するステップと、
を含む、方法。
【請求項９】
請求項８記載の方法において、前記モデルを作成するステップが、更に、前記ピクチャー群の前記少なくとも３つのエンコーディング・サンプルの内少なくとも２つに基づいて、所与の量子化ステップ・サイズについてビデオ解像度のエンコード処理後サイズに対する関係の線型モデルを作成するステップを備えており、前記エンコード処理後サイズが、前記所与の量子化ステップ・サイズおよび変化するビデオ解像度でサンプリングされる、方法。
【請求項１０】
請求項９記載の方法において、前記ビデオ解像度を動的に決定するステップが、
前記ピクチャー群をエンコードするための前記ビデオ解像度を変更すべき場合、前記所与の量子化ステップ・サイズについてビデオ解像度をエンコード処理後サイズに関係付ける前記作成した線型モデルにしたがって、前記ピクチャー群の所望のビット・レートに対応するエンコード処理後サイズが得られる変更ビデオ解像度を決定するステップを含む、方法。
【請求項１１】
請求項１０記載の方法において、前記ピクチャー群をエンコードするための前記ビデオ解像度を変更すべき場合、前記量子化ステップ・サイズを動的に決定するステップが、
前記少なくとも３つのエンコーディング・サンプルに基づいて、前記ピクチャー群について量子化ステップ・サイズを前記所望のビット・レートにおける解像度に関係付ける線型モデルを作成するステップと、
量子化ステップ・サイズを解像度に関係付ける前記線型モデルにしたがって、前記変更したビデオ解像度に対する前記量子化ステップ・サイズを決定するステップと、
を備えている、方法。
【請求項１２】
多ビット・レート・ビデオ・ストリーム用に圧縮ビデオ・ストリームをエンコードするビデオ処理システムであって、
エンコードすべき生のビデオ・コンテンツを格納するメモリーと、
複数の圧縮ビデオ・ストリームとして、ピクチャー群から成るセグメント単位に、可変ビット・レートおよび動的解像度手法を用いて、前記生のビデオ・コンテンツをエンコードするコンピューター処理手段と、
を備えており、前記コンピューター処理手段による前記エンコードが、
前記生のビデオ・コンテンツを分析し、前記ビデオ・コンテンツにおける場面変化境界を判定し、ピクチャー群から成るセグメント単位で、前記場面変化境界間で前記ビデオ・コンテンツを分割し、前記セグメントのビデオ複雑度の測定値を判定し、
前記ビデオ・ストリームをコード化するビット・レートを徐々に低下させる目標平均ビット・レートおよびピーク・ビット・レート制限を各々有する１つ又は複数のより高いビデオ・ストリームに、各セグメントの前記生ビデオ・コンテンツを可変ビット・レートでエンコーディングするため、ならびに各セグメントの前記生のビデオ・コンテンツを、一定チャンク・レートにおける最下位ビデオ・ストリームにエンコードするためのエンコーディング・パラメータを動的に決定し、前記エンコーディング・パラメータが、少なくともビデオ解像度を含み、
前記動的に決定したエンコーディング・パラメータを用いて、前記より高いビデオ・ストリームおよび最下位ビデオ・ストリームをエンコードすることを含む、ビデオ処理システム。
【請求項１３】
請求項１２記載のビデオ処理システムにおいて、前記コンピューター処理手段が、ビデオ・ストリーム・セグメントに対して前記ビデオ解像度を動的に決定する場合、
変化する解像度および量子化ステップ・サイズに対して、セグメントをエンコードする少なくとも３つのサンプルを得て、
量子化ステップ・サイズ、ビデオ解像度、およびエンコード処理後サイズの間における関係のモデルを作成し、
前記作成したモデル、および前記セグメントのビデオ複雑度の測定値に基づいて、前記セグメントに対するビデオ解像度を決定する、ビデオ処理システム。
【請求項１４】
請求項１２記載のビデオ処理システムであって、更に、前記コンピューター処理手段が、指定された数のビデオ・ストリームに対して、指定された最高および最低ビット・レート間で所望の数値分布を有するように、前記上位のビデオ・ストリームに対して自動的に前記ピーク・ビット・レートおよび平均ビット・レートを選択することを含む、ビデオ処理システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  インターネットのようなネットワーク上におけるストリーミング・オーディオおよびビデオを再生することが増々普及するにつれて、再生中のネットワーク条件に一貫性がなくてもクライアントの体験を最大化するように、サーバーからクライアントに転送されるデータを最適化することが必要になっている。クライアントの体験を最適化するには、ビデオ再生のオーディオ部分およびビデオ部分をエンコードする品質レベルを選択して、ビデオ・コンテンツの品質を保存しつつ、ビデオを中断することなく転送し再現できるようにしなければならない。
【０００２】
[0002]  品質レベルは、一般に、入力ストリームにおいてエンコードされているオーディオまたはビデオ部分に対して指定されたビット・レートによって決められる。ビット・レートが高い程、一般に、元のオーディオまたはビデオについてエンコードされ保持されている情報量が多いことを示し、したがって、ビデオの再生中に、元の入力オーディオまたはビデオが一層精度良く再現され提示されることになる。逆に、ビット・レートが低い程、元の入力オーディオまたはビデオについてエンコードされ保持されている情報が少なく、したがって、ビデオ再生中に、元のオーディオまたはビデオが、精度を低くして再現され提示されることを示す。
【０００３】
[0003]  一般に、ビット・レートは、様々な要因に基づいてビデオおよびオーディオの各々をエンコードするために指定される。第１の要因は、サーバーとクライアントとの間におけるネットワーク状態である。大量のデータを転送することができるネットワーク接続は、このネットワーク接続を通じて後に転送される入力ビデオに対してより高いビット・レートを指定できることを示す。第２の要因は、所望の起動レイテンシーである。起動レイテンシーとは、大量のデータを受信し、処理し、バッファーしなければならないために、最初に起動するときにビデオ再生ツールに生ずる遅れのことである。第３の要因は、グリッチング(glitching)に対する耐性である。グリッチングとは、データが失われたためにビデオ再生を停止しなければならないときのことである。殆どの場合、起動レイテンシーまたはグリッチングは、いかなる量であっても許容できず、したがって、起動レイテンシーやグリッチングを最小限に抑えるまたは排除するように、指定されるビット・レートを最適化することが望ましい。
【０００４】
[0004]  現在入手可能な市販のストリーミング・メディア・システムは、コーディング・レート制御を行う際に多ビット・レート（ＭＢＲ）コーディングを拠り所としている。ＭＢＲコーディングでは、ソース・ビデオ・コンテンツは異なるコーディング・レートで代用ビット・ストリームにエンコードされ、サーバーにおいて同じメディア・ファイルに格納されるのが通例である。これによって、変化するネットワーク状態にしたがって、異なるコーディング・レートに対応する様々なレベルの品質で、セグメント単位またはチャンク(chunk)単位で、通例セグメント間でビット・ストリーム切り替えを用いて、コンテンツを再生することが可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]  現在入手可能な多ビット・レート・ビデオ・ストリーミング・システムは、各代用ビデオ・ストリームのエンコーディングに一定ビット・レート手法を用いている。しかしながら、典型的なビデオは、一般に、多様な視覚的複雑さを有する場面を含む。しかしながら、一定ビット・レート手法は、ビデオ・セグメントを異なる品質で効率的にエンコードすることができない。一定ビット・レート手法は、複雑でないビデオ・セグメントをエンコードするのに余りに多くのビットを不必要に使いすぎており、逆に非常に複雑な場面に割り当てられるビットは少なすぎる。その結果、一定ビット・レート手法で代用ストリームをエンコードすると、インターネット・ストリーミングには望ましくないそして一貫性のないビデオ品質となってしまう。
【０００６】
[0006]  また、現在入手可能な多ビット・レート・ビデオ・ストリーミング・システムには、最終的な表示解像度を固定するために、更に別の要件がある。固定表示解像度を維持することによって、多数のビット・レートとしたビデオ・ストリームを全てデコードしてこの同じ最終的表示解像度に調整して(scale)、グリッチングがないビデオ提示を達成することができる。固定表示解像度によって、種々の代用ビデオ・ストリームは、毎秒数メガビットから毎秒数キロビットまでの広範囲のビット・レートを有することができる。問題は、適したビット解像度を各ビデオ・ストリーム・ビット・レートに一致させることである。現在入手可能な多ビット・レート・ビデオ・ストリーミング・システムは、既定のエンコーディング解像度を用いているが、この場合も、変化するビデオ場面の複雑さには適合しない場合もある。複雑でないビデオには、既定の解像度が小さすぎることがある。複雑なビデオには、既定の解像度が大きすぎることがある。
【課題を解決するための手段】
【０００７】
[0007]  以下の詳細な説明は、多ビット・レート・ビデオ・エンコーディング技法（方法、デバイス、およびシステムによって実現される）に関し、総合的に品質を高めたビデオが得られるように、利用可能なビットを各ビット・レートでより良く利用しようとするものである。
【０００８】
[0008]  本明細書において記載する一技法によれば、多ビット・レート・ビデオ・エンコーダーは、一貫性を高めたビデオ品質を提供する目的で、複数のビデオ・ストリームを、多ビット・レート・ビデオ・ストリーミングに合わせてエンコードする。最もビット・レートが高いビデオ・ストリームをエンコードするために、このストリームがエンコードされるビット・レートが、ある種の制約、即ち、ピーク・ビット・レート制約および平均ビット・レート制約に応じて変化することを許容する。最もビット・レートが低いビデオ・ストリームでは、多ビット・レート・ビデオ・エンコーダーは、一定チャンク（所与のサイズのピクチャー群）レート手法によって、このストリームをエンコードする。中間ビット・レートのビデオ・ストリームは、徐々に低下する可変ビット・レート（ピークおよび平均ビット・レート制約の減少に応じて）でエンコードされる。
【０００９】
[0009]  本明細書において記載する他の技法によれば、多ビット・レート・ビデオ・エンコーダーは、ストリームのビデオ解像度も動的に変化させる。ビット・レート毎に、ビデオ・エンコーダーは、視覚的品質の向上を達成するために、場面のビデオ・コンテンツ（１つ又は複数のピクチャー群を構成することもある）に基づいて解像度を動的に決定する。多ビット・レート・ビデオ・エンコーダーは、複雑さが少ないビデオ・コンテンツを有するピクチャー群程高いビデオ解像度を選択し、一方複雑さが多いピクチャー群程低い解像度が割り当てられる。この動的解像度手法によって、多ビット・レート・ビデオ・エンコーダーは、所与のビット・レートに対して総合的にビデオ品質の向上を達成することが可能となる。
【００１０】
[0010]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を決定するときに補助として用いられることを意図するのでもない。本発明の更に別の特徴や利点は、添付図面を参照しながら進められる、以下の実施形態の詳細な説明から明白となろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、可変ビット・レートでビデオの区分ストリームを供給するビデオ・ストリーミング・システムのブロック図である。
【図２】図２は、図１のビデオ・ストリーミング・システムに合わせて、変化するビット・レートでストリームをエンコードするビデオ・エンコーダーの実施態様を一般化したブロック図である。
【図３】図３は、図１のシステムによるストリーミングに合わせて、図２のビデオ・エンコーダーを用いたビデオのエンコーディングに対して、可変ビット・レート手法および動的解像度手法を適用する多ビット・レート・ビデオ・エンコーディング・システムのプロセス・フロー・チャートである。
【図４】図４は、動的解像度選択に対する三点サンプリング手法において用いるためのストリーム例について、解像度、量子化ステップ・サイズ、およびコード化後のサイズの間の関係を示すグラフである。
【図５】図５は、多ビット・レート・ビデオ・エンコーディング・システムによる動的解像度決定のプロセス・フロー・チャートである。
【図６】図６は、種々の記載した実施形態を実現することができる、一般化した動作環境のブロック図である。
【発明を実施するための形態】
【００１２】
[0017]  以下の詳細な説明は、多数のビット・レートでビデオ・ストリームを生成してストリーミングするために、可変ビット・レートおよび動的解像度を用いる種々のビデオ・エンコーディング技法およびシステムに関する。これらの技法について、多ビット・レート・ストリーミングの用途への応用というコンテキストで説明するが、本技法は更に広く他のビデオ・エンコーディングの用途にも適用することができる。
【００１３】
[0018]  本明細書において記載する種々の技法およびツールは、独立して用いることができる。これらの技法およびツールの中には、組み合わせて用いることができるものもある。以下では、処理動作(act)のフローチャートを参照しながら種々の技法について説明する。フローチャートにおいて示される種々の処理動作は、それらよりも少ない動作に統合すること、またはそれらよりも多い動作に分離することもできる。簡素化のために、個々のフローチャートに示される動作の、別のところで説明される動作に対する関係は、示されないことが多い。フローチャートにおける動作は、順序を変更できることが多い。
１．多ビット・レート・ビデオ・ストリーミング
[0019]  図１は、インデックス化ビデオ・ストリーム・ファイルに収容されているマルチメディア・コンテンツの区分ストリーミングのためのシステム１００を一般化したブロック図を示す。インデックス化ファイルは、一般に、マルチメディア・プログラムのビデオを多数のストリーミング・セグメントに分割し、種々のビット・レートのビデオ・セグメントを表す多数の圧縮ビット・ストリームを収容する。ＭＢＲビデオ・ストリームは、別個のコード化ストリームとして記載されているが、代替実施態様では、ＭＢＲビデオ・ストリームの一部または全部を、多数のコーディング・レイヤーを有する１つのコード化圧縮ビデオ・ストリームとしてエンコードすることもできる。システム１００において、サーバー１１０（例えば、標準的なＨＴＴＰサーバーのようなサーバー・コンピューター・システム）がマルチメディア・コンテンツをクライアント１２０（例えば、ラップトップまたはデスクトップ・コンピューターのようなクライアント・コンピューター・システム、あるいはＰＤＡまたは移動体電話機のような他のタイプのコンピューティング・デバイス）にネットワーク１３０（例えば、インターネット）を通じて供給する。システム１００では、サーバー１１０はプログラムをインデックス化ファイルに格納する。クライアント１２０は、クライアント側レート制御ソフトウェアおよび／またはハードウェアを備えている。
【００１４】
[0020]  具体的な一実施態様例では、サーバー１１０は標準的なＨＴＴＰサーバーであり、ファイルを配給することができる以外には、特別のストリーミング能力が全くない。サーバー１１０は特殊ビット・レート選択能力をサポートしないので、クライアント１２０が全てのビット・レート選択動作(activities)を実行しなければならない。この実施態様では、クライアント１２０は全てのビット・レート選択動作を実行する。例えば、クライアント１２０は、サーバー１１０から入手したインデックス情報を用いて（例えば、単独で、またはクライアント・バッファー情報、ネットワーク帯域幅等というような他の情報と組み合わせて）、レート制御を実行することができる。しかしながら、他の実施態様では、レート制御機能の一部または全部をサーバーにおいて行うことができる。
【００１５】
[0021]  一般に、多ビット・レート・ストリーミング用のインデックス化ファイルは、標準的なＨＴＴＰサーバーが、多数のビット・レートでマルチメディア・コンテンツを配給するために用いることができる。ビット・レートの選択（レート制御）は、クライアント側（例えば、クライアント側のみ）で行われる。クライアントは、最初にプログラムのストリーミング・セグメントに利用可能な種々のビット・レートを記載したインデックス情報をサーバーから入手することによって、レート制御を実行することができる。インデックス情報に基づいて、そしてその他にも可能な情報（例えば、ネットワーク帯域幅、バッファー情報等）に基づいて、クライアントは所望のユーザ体験（例えば、利用可能なビット・レートおよび現在のネットワーク状態に基づいて、可能な限り最良のユーザ体験）を提供するためには、どのビット・レートでストリーミング・セグメントをサーバーからダウンロードすればよいか判断することができる。
【００１６】
[0022]  他のタイプのコンピューティング・デバイス（例えば、従前からのＨＴＴＰサーバー以外）が、インデックス化ファイルを用いて、ファイルを提供することもできる。例えば、コンピューティング・デバイス（例えば、パーソナル・コンピューター、サーバー・コンピューター、または特殊目的ストリーミング・メディア・サーバー）がインデックス化ファイル・レイアウトを用いて、種々のファイル配給プロトコル（例えば、ファイル転送プロトコル（ＦＴＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、リアル・タイム・ストリーミング・プロトコル（ＲＴＳＰ）、ＭＭＳ（Microsoft Media Services)等）を用いてマルチメディア・コンテンツを配給することができる。
【００１７】
[0023]  ビット・レートの切り替えをサポートするために、ストリーミング・セグメント（自己完結ユニット）と呼ばれる時間チャンク(temporal chunk)に、プログラムを分割する。サーバーは、各ストリーミング・セグメントを１つ又は複数のビット・レートで格納する（例えば、各ストリーミング・セグメント−ビット・レートの組み合わせが、別のストリーミング・セグメント・エンコーディングとなる）。各ストリーミング・セグメントは、プログラムの特定のトラック（例えば、英語のオーディオ・トラックのような特定のオーディオ・トラック、または特定のビデオ・トラック）に利用可能な１つ又は複数のビット・レート・エンコーディングを有する。次いで、クライアントは、利用可能なビット・レートから（例えば、利用可能なストリーミング・セグメント・エンコーディングから）どのビット・レートにするか判断して、ストリーミング・セグメント毎にダウンロードする。例えば、クライアントは２５０Ｋｂ／秒（キロビット毎秒）でエンコードされたビデオ・トラック用第１ストリーミング・セグメント、５００Ｋｂ／秒でエンコードされたビデオ・トラック用第２ストリーミング・セグメント（第２ストリーミング・セグメントに利用可能な１つ又は複数のストリーミング・セグメント・エンコーディングから）、および１Ｍｂ／秒（メガビット毎秒）でエンコードされたビデオ・トラック用第３ストリーミング・セグメント（第３ストリーミング・セグメントに利用可能な１つ又は複数のストリーミング・セグメント・エンコーディングから）を入手することができる。図示したストリーミング・システム１００では、インデックス化ファイルに収容されている各ストリーミング・セグメントは、ビデオ・エンコーダーによって、可変ビット・レート（ＶＢＲ）および可変解像度で、以下で説明するようにエンコードされる。
ＩＩ．ビデオ・エンコーダーの全体像
[0024]  図２は、多ビット・レート・ビデオ・ストリーミングのためにビデオをエンコードする際に用いることができるビデオ・エンコーダー２００の一例を示す。ビデオ・エンコーダー２００は、ビデオ・コンテンツの「生の」（未圧縮）フレーム、およびこのビデオ・コンテンツについて予め計算されている動き情報を受信する入力２１０、２２０を有する。次いで、このビデオ・エンコーダーは、ビデオ・コンテンツの基準フレームのフレーム内ココーディングを実行し、動き情報を利用して、ビデオ・コンテンツの予測フレームのフレーム間コーディングを実行する。このエンコーディングは、Windows Media Videoフォーマット、SMPTE-421-Mフォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、またはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、またはＨ．２６４）、または他のフォーマットというような、既知のビデオ・エンコーディング規格にしたがって実行することができる。しかしながら、フレーム間コーディングの場合、ビデオ・エンコーダーは、それ自体の動き推定をフレームについて実行する代わりに、予測フレームのフレーム間コーディングについて予め計算されている動き情報を用いることを選択することができる。ビデオ・エンコーダーは、ビデオ・コンテンツをエンコードして圧縮ビットストリームとし、これを出力２３０として供給する。また、ビデオ・エンコーダーは、入力ビデオ・コンテンツのフレーム間圧縮に用いた動き情報も、動き情報出力２４０として（多ビット・レート・ビデオ・ストリーミング用に更に低いビット・レートのビデオ・ストリームをエンコードするというようなことのために）出力することができる。
【００１８】
[0025]  図２は、可変ビット・レートおよび可変解像度エンコーディングを用いて、多ビット・レート・ビデオ・ストリーミング・システム１００に多ビット・レート・ビデオ・ストリームを生成するビデオ・エンコーダー２００の適した実施態様の一例を示す、一般化したブロック図である。ビデオ・エンコーダー２００は、ビデオ・ピクチャー(フレーム）のシーケンスをその生ビデオ・コンテンツ入力２１０として受信し、圧縮ビット・ストリーム２３０を出力として生成する。
【００１９】
[0026]  ビデオ・エンコーダー２００は、ビデオ・ピクチャーを処理する。「ピクチャー」という用語は、一般に、ソース画像データ、コード化された画像データ、または再現された画像データを指す。プログレッシブ・ビデオ(progressive video)では、ピクチャーはプログレッシブ・ビデオ・フレームとなる。インターレース・ビデオでは、ピクチャーは、コンテキストに応じて、インターレース・ビデオ・フレーム、フレームの最上位フィールド、またはフレームの最下位フィールドを指す場合もある。
【００２０】
[0027]  ビデオ・エンコーダー２００は、入力ビデオのインター・コード化(inter-coded)予測ピクチャー、およびイントラ・コード化(intra-coded)ピクチャーを圧縮する。提示のために、図２は、エンコーダー２００を通過するイントラ・コード化フレームの経路と、インター・コード化予測フレームの経路とを示す。ビデオ・エンコーダー２００のコンポーネントの多くは、イントラ・コード化コンテンツおよびインター・コード化予測コンテンツの双方を圧縮するために用いられる。これらのコンポーネントによって行われる正確な動作は、圧縮される情報のタイプに応じて変化する可能性がある。
【００２１】
[0028]  一般に、ビデオ・エンコーダー２００内では、インター・コード化予測フレーム（ピクチャーとしての）が、以前に再現されたコンテンツ（１つ又は複数の他のピクチャーとして。これらは通例基準ピクチャーまたはアンカーと呼ばれる）からの予測に関して表される。例えば、所与の時点におけるコンテンツは、プログレッシブＰ−フレームまたはＢ−フレーム、インターレースＰ−フィールドまたはＢ−フィールド、あるいはインターレースＰ−フレームまたはＢ−フレームとしてエンコードされる。ビデオ・エンコーダー２００内部では、予測された情報と対応するイントラ・コード化フレームとの間の差が、予測残差(prediction residual)となる。
【００２２】
[0029]  インター−パス上にある入力ビデオ１１０のコンテンツは、動き情報に基づいて、予測ピクチャーとしてエンコードされる。ある種の条件を満たす場合、ビデオ・エンコーダー１００は、入力１２０からの、予め計算されている動き情報を用いる（選択スイッチ２５６によって図示されるように）。この動き情報は、マクロブロックに対する１組のまたは一連の動きベクトル、あるいは１つ又は複数の基準ピクチャーに関する他のインター−パス・ビデオ・ピクチャーのサンプル集合という形態をなすことができる。一般に、予め計算されている動き情報を用いる選択は、第１に、予め計算されている動き情報の利用可能性に基づき、第２に、動き情報の直前の計算からどのエンコーディング・パラメータが変化したか、そして変化したか否かに基づき、更にビデオ・コンテンツの現在のエンコーディングに用いられているパラメータに基づく。一例では、動き情報が、ビデオ・エンコーダーが現在エンコードしているビデオ・コンテンツとは異なるビデオ解像度を有するビデオ・コンテンツをエンコードするために計算されたのである場合、ビデオ・エンコーダーは、入力１３０からの、予め計算されている動き情報を用いないことを選択する。
【００２３】
[0030]  しかしながら、ビデオ・エンコーダー１００は、代わりに、動き推定部２５８を用いて、インター−パス・ビデオ・コンテンツ１００に対して新たな動き推定を実行することを選択することができる（この場合も、選択スイッチ２５６によって図示されている）。動き推定部２５８は、以前にエンコードされたビデオ・コンテンツ・フレームの再現を表す、１つ又は複数の基準ピクチャーに対するビデオ・ピクチャーのマクロブロックまたは他のサンプル集合の動きを推定する。ピクチャー・ストア２６４は、この再現されたビデオ・コンテンツ２６６を、１つまたは複数の基準ピクチャーとしてバッファーする。多数の基準ピクチャーが用いられる場合、これらの多数の基準ピクチャーを異なる時間方向または同じ時間方向から得ることができる。動き推定部２５８は、動きベクトル情報のような動き情報２６０を出力する。
【００２４】
[0031]  動き補償部２６２は、動き補償した現ピクチャーを形成するときに、動きベクトルをある種の再現されたビデオ・コンテンツ２６６（基準ピクチャー（１つまたは複数）として格納されている）に適用する。動き補償ピクチャー２６８のブロックと元のインター−パス・ビデオ・ピクチャの対応するブロックとの間における差は（少しでもあるとすると）、そのブロックに対する予測残差２７０となる。後にインター−パス・ビデオ・フレーム（例えば、ビデオ・デコーダーにおいて）を再現する間に、再現される予測残差が動き補償残差ビデオ２６８に加算されて、元のインター−パス・ビデオ２５６に一層近い再現コンテンツが得られる。しかしながら、非可逆圧縮の場合、相変わらず一部の情報が元のインター−パス・ビデオから失われる。代わりに、動き推定部および動き補償部が他のタイプの動き推定／補償を適用する。
【００２５】
[0032]  周波数変換器２８０は、空間ドメイン・ビデオ情報を周波数ドメイン（即ち、空間、変換）データに変換する。ブロック基準のビデオ・コンテンツでは、周波数変換器２８０はＤＣＴ、ＤＣＴの異形、または他の前方ブロック変換(forward block transform)をサンプルまたは予測残差データのブロックに適用して、周波数変換係数のブロックを生成する。周波数変換器２８０は、８×８、８×４、４×８、４×４、または他のサイズの周波数変換を適用することができる。
【００２６】
[0033]  次に、量子化器２８２が変換係数のブロックを量子化する。量子化器２８２は、ピクチャー毎に、マクロブロック毎に、または他の単位毎に空間的に変化するステップ・サイズで、非均一スカラー量子化をスペクトル・データに適用する。加えて、場合によっては、量子化器がインター−レイヤー残差ビデオ・ピクチャーの色チャネルにわたって量子化を変化させることもある。また、量子化器２８２は、少なくとも一部の空間データ係数に対して他のタイプの量子化、例えば、均一または適応量子化を適用することもでき、あるいは周波数変換を用いないエンコーダー・システムにおいて空間ドメイン・データを直接量子化する。
【００２７】
[0034]  再現されたビデオ・コンテンツが、後続のインター−パス・ビデオ・ピクチャーの動き推定／補償に必要とされる場合、逆量子化器２９０が、量子化されたスペクトル・データ係数に対して逆量子化を実行する。逆周波数変換器２９２は、逆周波数変換を実行して、再現された予測残差（予測されたインター−パス残差ビデオ・コンテンツに対して）またはサンプル（イントラ−パス残差ビデオ・コンテンツに対して）のブロックを生成する。残差ビデオ・コンテンツ２５６が動き補償予測されていた場合、再現された予測残差を動き補償予測部２６８に加算して、再現残差ビデオを形成する。ピクチャー・ストア２６４は、後続の動き補償予測において用いるために、再現された残差ビデオをバッファーする。
【００２８】
[0035]  エントロピー・コーダー(entropy coder)２８４は、量子化器２８２の出力およびある種の副次情報（例えば、量子化パラメータ値）を圧縮する。典型的なエントロピー・コーディング技法は、算術コーディング、差分コーディング、ハフマン・コーディング、ラン・レングス・コーディング、ＬＺコーディング、辞書型コーディング、およびこれらの組み合わせを含む。エントロピー・コーダー２８４は、通例、異なる種類の情報毎に異なるコーディング技法を用い、特定のコーディング技法内にある多数のコード表から選択することができる。
【００２９】
[0036]  ビデオ・エンコーダー２４０がイントラ−パス・ビデオ・コンテンツのイントラ−圧縮を実行するとき、このエンコーダーは、動き補償せずに、それをイントラ・コード化ピクチャーとしてイントラ圧縮する(intra-compress)。ビデオ２５６は、直接、周波数変換器２８０、量子化器２８２、およびエントロピー・コーダー２８４に供給され、エンコードされたビデオとして出力される。イントラ−コード化ビデオの再現バージョンは、後続のインター−パス・ビデオの動き補償に用いるために、バッファーすることができる。
【００３０】
[0037]  コントローラー２９４は、動き推定部２５８、周波数変換器２８０、量子化器２８２、逆量子化器２９０、およびエントロピー・コーダー２８４のような、種々のモジュールから入力を受ける。コントローラー２９４は、エンコーディングの間中間結果を評価して、例えば、量子化ステップ・サイズを設定し、レート−歪み分析を実行する。コントローラー２９４は、他のモジュールと共に動作して、エンコーディングの間にコーディング・パラメータを設定および変更する。コントローラー２９４が異なるコーディング・パラメータの選択肢を評価するとき、コントローラー２９４は異なるパラメータ設定値を評価するためにある種の段階を繰り返し実行することができ、あるいはコントローラー２９４は異なるコーディング・パラメータを纏めて評価することもできる。評価すべきコーディング・パラメータ決定のツリー、および対応するコーディングのタイミングは、実施態様によって異なる。実施形態によっては、コントローラー２９４がエンコーディング・セッション・ウィザード・インターフェース(encoding session wizard interface)、他のエンコーダー・アプリケーション・インターフェース、または他のソースからも入力を受け取り、特定の規則を用いてエンコードするビデオを指定する場合もある。
ＩＩＩ．ＭＢＲストリームの可変ビット・レート・エンコーディング
[0038]  多ビット・レート・ビデオ・ストリーミング・システム１００（図１）では、多ビット・レート・ビデオ・エンコーディング・システムが、全般的なビット・レートが連続的に低下する１組の圧縮ビデオ・ストリームとして、入力ビデオを別個にエンコードする。本明細書では個々のＭＢＲビデオ・ストリームを別個にエンコードするというように記載するが、ＭＢＲビデオ・ストリーミング・システムおよびエンコーディング・システムの代替実施態様では、ＭＢＲビデオ・ストリームの１つ又は複数を、多数の分離可能なコーディング・レイヤーを有する圧縮ビットストリームとしてエンコードすることができる。多ビット・レート・ビデオ・エンコーディング・システムは、ＭＢＲエンコーディング・エンジン（図示せず）を含む。このＭＢＲエンコーディング・エンジンは、多ビット・レート・エンコーディング・プロセス（図３に示したような）にしたがって、変化するエンコーディング・パラメータを用いて入力ビデオをエンコードするようにビデオ・エンコーダー２００（図２）を駆動し、本章およびその後の章において説明する可変ビット・レートおよび動的解像度手法を実現する。ＭＢＲエンコーディング・エンジンは、ＭＢＲビデオ・ストリーム・エンコーディングにパラメータを設定するために、ストリーム数、および以下で述べるその他のパラメータというような、ユーザ入力を受けるユーザ・インターフェースまたはコンソール（あるいは、代わりに、呼び出し元アプリケーションからこのような入力を受けるためのアプリケーション・プログラミング・インターフェース）を設けることができる。
【００３１】
[0039]  現在入手可能な他の多ビット・レート・ビデオ・ストリーミング・システム（多数のビデオ・ストリームに一定ビット・レート手法を用いる）とは対照的に、多ビット・レート・ビデオ・ストリーム・システム１００のＭＢＲエンコーディング・システムは、ビデオ・ストリーム毎に一定の品質または一貫した品質を提供することを目標とする。最上位のＭＢＲビデオ・ストリーム（一般に、最も高い総体的ビット・レートを有する）に対して、ビデオ・エンコーダー２００は、指定された平均ビット・レートを満足させながら、指定されたピーク・ビット・レートに該当するように、変化するビット・レートを制限して、ビデオ・ストリームをエンコードする。最下位のＭＢＲストリーム（一般に、集合の内最も低いビット・レートを有する）に対して、ビデオ・エンコーダーは一定チャンク・レート手法を用いる。多ビット・レート・ビデオ・ストリーミング・システムのコンテキストでは、チャンクという用語は、ビデオ・ストリームが区分されるピクチャーの一群（ＧＯＰ）を意味し、ビデオ・ストリーミング・システムがビデオ・ストリーム間で個々のセグメントの再生を切り替えることができる粒度のレベルを定める。一定チャンク・レート手法は、ビデオ・ストリーミング・システムがストリーミングの予測可能性を補償することを可能とするので、最も低いビット・レートまたは品質のビデオ・ストリームが流されるときに、クライアントはビデオの最低品質連続再生を維持するように、一定レートでチャンク量のピクチャーを受信する。
【００３２】
[0040]  最低および最大の総体的ビット・レート・ストリーム間において、ビデオ・エンコーダーは、一定のビデオ品質を維持することを目的とするピーク・ビット・レートおよび平均ビット・レートの制限範囲内で、コーディングの可変ビット・レートをこの場合も用いて、１つ又は複数の中間ビデオ・ストリームをエンコードする。中間ビデオ・ストリームのピークおよび平均ビット・レートの制限は、比例的、対数的、または他の減少様式で徐々に低下するように指定することができる。例えば、中間ストリームの平均ビット・レートは、最も高いビット・レートのビデオ・ストリームの平均ビット・レート制限の３／４、１／２、および１／４に比例的に低下することができる。このように、ビデオ・ストリーミング・システム１００は、保証されている低一定チャンク・レートから最も高い品質の可変ビット・ビット・ストリームまで、瞬時に開始する素早いビデオ切り替えに備えることができる。ピークおよび平均ビット・レート、ならびに一定チャンク・レートは、ユーザによって設定することができるエンコーディング・パラメータである。これらのパラメータは、明示的にユーザによって設定することができ、あるいはユーザが入力した更に一般化されたパラメータに基づいて、ＭＢＲエンコーディング・システム・エンジンによって計算することができる。例えば、ＭＢＲエンコーディング・エンジンは、自動モードを有することができ、このモードでは、ユーザ（または呼び出し元アプリケーション）は、単に最低および最大目標ビット・レート、ならびにビデオ・ストリームまたはレイヤーの数を指定するだけでよい。この自動モードでは、エンジンは、次に、全ての中間ビット・レート制限（ピークおよび平均）を、均一な対数空間または他の分布空間において計算する。
【００３３】
[0041]  これより図３を参照すると、ＭＢＲエンコーディング・システムは、二パス・エンコーディング手法を用いるプロセス３００によって、１組のＭＢＲビデオ・ストリームをエンコードする。このプロセスは、分析パスおよびエンコーディング・パスを含む。分析パスの目標は、エンコーディング構成および入力ビデオ・ソース素材自体に基づいて、ビデオ・コンテンツの場面複雑度を見いだすことである。一旦この情報が分析パスにおいて抽出されたなら、次に、続くエンコーディング・パスが１組のＭＢＲビデオ・ストリームを発生する。
【００３４】
[0042]  ＭＢＲエンコーディング・プロセス３００は、初期化ステップ３１０から開始する。このステップでは、ＭＢＲエンコーディング・プロセスは、とりわけ、ＭＢＲビデオ・ストリームの数、これらのストリームのピークおよび平均ビット・レート制限、ならびに最低品質のＭＢＲビデオ・ストリームの一定チャンク・レートを含むユーザ入力、そしてセグメント・パラメータからエンコーディングのパラメータを決定する。
【００３５】
[0043]  ＭＢＲエンコーディング・プロセス３００の分析パスは、動作３１１〜３１４を含む。分析パスでは、ＭＢＲエンコーディング・エンジンは入力ソース・ビデオをフレーム毎に分析する。この分析は多数の異なるタスクを含み、そのタスクには、場面変化の検出、場面変化境界間におけるビデオ・シーケンスをピクチャー・セグメントの集合体に区分すること、ビデオ・フレーム複雑度の測定が含まれる。場面変化の検出に基づいて、ＭＢＲエンコーディング・エンジンは、ビデオの間で場面変化が発生する境界に印を付ける。印を付けられたビデオ・シーケンスの境界（シーケンス・マークインおよびシーケンス・マークアウト位置）の間において、ＭＢＲエンコーディング・プロセス３００は、更に、ユーザ指定の制限（場面内において指定された平均ＧＯＰ長および最大許容ＧＯＰ長）以内にあるビデオ・シーケンスを分割すべきピクチャー群の総数を決定し、各ピクチャー群の境界を設定する。一旦ＧＯＰ境界が定められたなら、各ＧＯＰの中にあるフレームの総数を、ＭＢＲエンコーディング・エンジンによって計算する。また、ＭＢＲエンコーディング・エンジンは、各ピクチャー群のフレーム毎に３つのテクスチャー測定値を１組として計算する。これらの測定値は、次の章で説明する可変解像度エンコーディングにおいて用いられる。３つのテクスチャー測定値には、フレーム全域テクスチャー、フレーム水平テクスチャー、およびフレーム垂直テクスチャー測定値が含まれる。ＭＢＲエンジンは、動作３１４において示されるように、これらの分析パス結果（場面およびＧＯＰ境界、ならびにテクスチャー測定値）をログ・ファイルに書き込む。
【００３６】
[0044]  エンコーディング・パス（動作３１５〜３２４）では、ＭＢＲエンジンは分析パスの結果を適用して、ビデオ・エンコーダー２００（図２）を用いて、ＭＢＲビデオ・ストリームをエンコードする。ＭＢＲエンジンは、ビデオ・エンコーダー２００に、全てのＭＢＲストリームに対して（動作３１８）各セグメントをエンコードさせる（動作３１７）。ＭＢＲビデオ・ストリームのセグメント毎に、ＭＢＲエンコーディング・エンジンは、ユーザ指定のターゲットを平均ビット・レートにヒットさせる試みにおいて、ビデオ・エンコーダー２００のエンコーディング・パラメータを制御する。ソース・ビデオ・コンテンツが複雑過ぎて目標としたビット・レートではエンコードできない場合、ＭＢＲエンコーディング・エンジンは、視覚品質向上を達成するために、量子化ステップ・サイズを増大させ始める。最上位即ち最良の品質のビデオ・ストリームは、ユーザ指定ＭＢＲエンコーディング・パラメータを満たす最大ピーク・ビット・レート制限を受けながらエンコードされる。最下位即ち最低の品質のビデオ・ストリームでは、ＭＢＲエンジンは、一定チャンク・レート制限を満たすようにビデオ・ストリームのエンコーディングを生成するようにビデオ・エンコーダーを制御する。これは、ストリームされるビデオを再生するためのクライアント側予測可能性を保証するのに役立つ。中間ビデオ・ストリームでは、ＭＢＲエンジンは、ビデオ・エンコーダーに、エンコーディング・パラメータを用いてソース・ビデオをエンコードさせて、それぞれの中間ストリームに対する最大ピークおよび平均ビット・レート制限以内に入る可変ビット・レートでビデオ・ストリームを生成する。
【００３７】
[0045]  エンコーディング・パスの結果、次に、ＭＢＲエンジンはビデオ・エンコーダーを用いて生成された１組のＭＢＲストリームに対する圧縮ビデオ・ビット・ストリーム、およびログ・ファイルを出力する。このＭＢＲエンコーディング・プロセス３００の可変ビット・レート手法によって、ＭＢＲエンジンは、ＧＯＰ境界毎に最上位から最下位まで品質が一様に低下する１組のＭＢＲストリームを生成する。この１組のＭＢＲビデオ・ストリームによって、ＭＢＲシステム１００（図１）は、利用可能な接続帯域幅にしたがって、ビデオ・シーケンスに所望な一定のまたは一貫性のある視覚品質で配信することができる。
ＩＶ．ＭＢＲストリームの可変解像度エンコーディング
[0046]  また、ＭＢＲエンコーディング・エンジンは、ＭＢＲビデオ・ストリームの各々に対してエンコーディングの解像度を動的に変化させる技法も適用する。ＭＢＲビデオ・ストリームの最上位から最下位までにわたる各ビデオ・ストリームに対して、ＭＢＲエンコーディング・エンジンは、視覚品質の向上を得るために、各ビデオＧＯＰをエンコードするための解像度を動的に決定する。ビデオ・ストリーム毎に、ＭＢＲエンコーディング・エンジンは、複雑さが低いＧＯＰ（またはセグメント）程高い解像度を割り当て、一方複雑なＧＯＰ（またはセグメント）程低いエンコーディングに解像度を割り当てる。
【００３８】
[0047]  前述の実施態様例では、ＭＢＲエンコーディング・エンジンはビデオの場面境界において各ＧＯＰのサイズを動的に変化させる決定を適用する。これによって、ビデオ解像度をビデオ場面の途中で変更する(resize)と発生する可能性がある、望ましくないあらゆる視覚効果が混入するのを回避する。例えば、「画面に登場する話し手」(talking head)を呼び物にする場面において、場面の途中でビデオ解像度を変化させると、場面における詳細なエッジや構造が解像度の変化と共に鋭くなったり滑らかになるときに、目に見えてわかるポッピング(popping)やパルシング(pulsing)を混入させる可能性がある。したがって、ＭＢＲエンコーディング・エンジンは、場面の１つまたは複数のＧＯＰに対して、以下で説明するプロセスを実行する（例えば、先に説明した分析フェーズにおいて特定された場面変化境界の後に、最初のＧＯＰに対して実行する）。
【００３９】
[0048]  動的解像度エンコーディングの実施態様の一例では、ＭＢＲエンコーディング・エンジンは、三点サンプリング手法を用いて動的解像度決定を行う。各サンプリング点は、ビデオ解像度および量子化ステップ・サイズの３つの異なる対を用いてＧＯＰをエンコードした結果（実際にエンコードされたビット・レートおよびサイズに関する）を表す。これら３つのサンプリング点の結果を用いて、ＭＢＲエンジンは、解像度、量子化ステップ・サイズ、およびコード化後のサイズ(coded size)間の関係のモデルを作成する。この関係を図４に図式的に示す。このビデオ・シーケンスの動的抽出モデルから、ＭＢＲエンコーディング・エンジンは、次に、ＭＢＲビデオ・ストリームの各目標ビット・レートに対して解像度を決定することができる。代替実施態様では、ＭＢＲエンコーディング・エンジンは、このモデルを作成するために、もっと多くのサンプリング点を用いることができる。しかしながら、三サンプリング点手法は、エンコードの速度に限って言えば最も実用的であり続けつつ、このモデルを作成するのに十分であることが分かっている。
【００４０】
[0049]  図５は、各ビデオ・ストリームのＧＯＰに対して動的解像度決定を行うために、ＭＢＲビデオ・エンコーディング・エンジンが実行するプロセス５００を示す。プロセス５００は、エンコーディング結果の３つのサンプル点を得ることから開始する（動作５１０）。ＭＢＲエンコーディング・エンジンは、解像度および量子化ステップ・サイズのパラメータの組み合わせを３つ用いてセグメントまたはＧＯＰをエンコードするように、ビデオ・エンコーダー２００を制御する。ビデオに望ましい表示解像度に基づいて、初期サンプル解像度を選択することができる。初期サンプル量子化ステップ・サイズを、ビデオ・エンコーダーによって用いられる特定のコデック規格に応じて選択することができる。例えば、ＳＭＰＴＥ４２１−Ｍビデオ・コデックの場合、初期サンプル量子化ステップ・サイズは、４に選択するとよい。ビデオ・エンコーダーがＨ．２６４規格を用いる場合、しかるべき初期サンプル量子化ステップ・サイズは２８にするとよい。しかしながら、他の初期サンプル量子化ステップ・サイズおよび解像度を代わりに選択することもできる。
【００４１】
[0050]  例示したモデルでは、ＭＢＲビデオ・エンコーディング・エンジンは、初期サンプル解像度および量子化ステップ・サイズの対（Ｒ，ＱＰ）に対して、そして初期サンプル解像度の１／４（即ち、（Ｒ／４，ＱＰ））で、更に初期サンプル量子化ステップ・サイズの２倍（即ち、（Ｒ，ＱＰ＊２）でエンコーディングを実行する。あるいは、サンプル点には、半分の解像度、４倍の量子化ステップ・サイズ等というように、他のパラメータ対を用いることもできる。ＭＢＲビデオ・エンコーディング・エンジンは、３つの解像度および量子化ステップ・サイズ・パラメータ対を用いてビデオ・ストリームのＧＯＰをエンコードした結果得られたエンコード・ビット・サイズ（Ｓ１，Ｓ２，およびＳ３）を観察する。
【００４２】
[0051]  次の動作５１１において、ＭＢＲエンジンは２つの線型モデルを作成する。即ち、量子化ステップ・サイズとエンコード処理後サイズ(encoded size)との間の関係について１つのモデル（図４ではグラフＱＰＳと記されている）、および解像度とエンコード処理後サイズとの間の関係について１つのモデル（グラフＲＳ）である。量子化ステップ・サイズとエンコード処理後サイズとの間の関係は、解像度を一定に保ちながら量子化ステップ・サイズを変化させたときの２つのサンプル点から得られたエンコード処理後サイズによって決定され、一方、解像度とエンコード処理後サイズの間の関係は、逆に、量子化ステップ・サイズを一定にしておいて解像度を変化させたときの２つのサンプル点から決定される。
【００４３】
[0052]  動作５１２において、ＭＢＲエンジンは、エンコード処理後サイズの量子化ステップ・サイズに対する関係を用いて、所望のビット・レートに対応するエンコード処理後サイズが得られる量子化ステップ・サイズを求める。これは、ビデオ・ストリームのＧＯＰに対して目標ビット・レートを生ずるべき最大サンプリング解像度Ｒにおいてモデリングされた結果の量子化ステップ・サイズ（Ｑｐ’と記す）となる。
【００４４】
[0053]  ＭＢＲエンジンは、次に、モデル化量子化ステップ・サイズを、経験的に決定した閾値（広いビデオ・コンテンツにわたってビデオ・テクスチャーを測定する実験から決定された）と比較する。モデル化された結果の量子化ステップ・サイズがこの閾値よりも小さい場合、ＭＢＲエンジンは、動作５１４において、最大サンプル解像度およびモデル化された結果の量子化ステップ・サイズ、即ち、（Ｒ，ＱＰ’）を用いることを決定する。
【００４５】
[0054]  更に具体的には、ＭＢＲエンジンは、入力ビデオ・コンテンツについて分析フェーズ（先に論じた）の間に行われたフレーム毎のテクスチャー測定に基づいて、しかるべき量子化ステップ閾値を決定する。ＭＢＲエンジンは、ＧＯＰにおける全てのフレームについてのフレーム・テクスチャー測定値の平均を取ることによって、ＧＯＰに対するテクスチャー測定値を計算する。これによって、ＧＯＰ全域テクスチャー、ＧＯＰ水平テクスチャー、およびＧＯＰ垂直テクスチャー測定値が得られる。これらの内、ＧＯＰ全域テクスチャー測定値は、ビデオ解像度を変更すべきときを制御する量子化ステップ・サイズ閾値を決定する。広い範囲のビデオ・コンテンツ（スポーツ、テレビジョン、ムービー等を含む）にわたる実験結果から、１２に等しいＱＰの量子化ステップ・サイズ閾値（ＳＭＰＴＥ  ４２１Ｍ規格によるビデオ・エンコーディングに対して）が、典型的なＧＯＰ全域テクスチャー測定値を有するビデオに適していることが分かっている。言い換えると、モデル化された結果の量子化ステップ・サイズＱＰ’が１２よりも大きい場合、ＭＢＲエンコーダーは、もっと小さいＱＰでエンコードするために、もっと低いビデオ解像度に変更しなければならない。しかしながら、実施態様の一例では、ＭＢＲエンコーダーは、更に、ビデオに対する総体的な全域テクスチャー測定値に応じた解像度変更 (resizing)のための量子化ステップ・サイズ閾値も変化させることができる。ＭＢＲエンコーダーは、全域テクスチャーと解像度変更のための量子化ステップ・サイズ閾値との間における線形関係を作成している。低い総体的全域テクスチャーを有するビデオ程、より低い量子化ステップ・サイズ閾値が推測される。これによって、ＭＢＲエンコーダーは、多数の滑らかな領域（これらの領域を更に低い解像度に変更すると、アーチファクトを発生しなくなることが多い）を有するビデオ・コンテンツのビデオ解像度を低下させる際に、一層積極的になることができる。一方、高い全域テクスチャーを有するビデオでは、ＭＢＲエンコーダーは、解像度変更のために更に高い量子化ステップ・サイズ閾値を推測する。このように閾値を高くする程、ＭＢＲエンコーダーは、多数の詳細を有するフレームのビデオ解像度を低下させる際に、これらのフレームの詳細な領域の平滑化を回避しようとして、一層慎重になる。代替実施態様では、他のビデオ・エンコーディング規格と共に用いるため、またはビデオ解像度を変更する際に所望の積極／慎重度を達成するためというようなことのために、量子化ステップ・サイズ閾値を他の量子化ステップ・サイズにおいて作成することができる。
【００４６】
[0055]  一方、動作５１５において、モデル化された結果が、ビデオ・テクスチャーによって定められた閾値よりも大きい場合、ＭＢＲエンジンは、エンコード処理後サイズと解像度との間の関係（グラフＲＳ）を代わりに用いて、ビデオ・ストリームの目標ビット・レートに対応するエンコード処理後サイズが得られるモデル化結果解像度（Ｒ’）を求める。
【００４７】
[0056]  ＭＢＲエンジンは、更に、ＧＯＰ平均水平および垂直テクスチャー測定値を用いて、ビデオ解像度を各方向にどの位変更すべきか制御する。ＭＢＲエンジンは、ＧＯＰ水平および垂直テクスチャー測定値の比率を計算する。一旦解像度を変更すると判断したなら（動作５１４）、ＭＢＲエンジンはグラフＲＳの関係にしたがって特定の解像度変更量(resize amount)を計算する。例えば、ＭＢＲエンジンは、初期解像度の半分だけ変更することを決定する場合もある。次いで、ＭＢＲエンジンは、ＧＯＰ水平および垂直テクスチャー測定値の比率に基づいて、垂直および水平方向にどのように解像度変更量を分配すべきか決定する。具体的には、水平および垂直テクスチャー測定値間に大きな不一致または差(delta)がある場合（即ち、比が１でない場合）、ＭＢＲエンジンは、詳細が多い方向よりも詳細が少ない方向により多くの変更を適用するように、解像度変更を分配する。例えば、比が２である場合、ＭＢＲエンジンは、垂直方向の解像度変更を水平方向の２倍にする。一方、ＧＯＰに対する水平および垂直テクスチャー測定値間の差が小さい（比が１に近い）場合、ＭＢＲエンジンはこれらの方向間において等しく解像度を変更する。
【００４８】
[0057]  次に、動作５１６において、ＭＢＲエンジンは量子化ステップ・サイズとエンコード処理後サイズとの間の関係（グラフＱＰＳ）、および解像度とエンコード処理後サイズとの関係（グラフＲＳ）、更にはそれぞれのビデオ・ストリームの目標ビット・レートを用いて、特定の目標ビット・レートに対する解像度と量子化ステップ・サイズとの間の関係（図４の左上に示すグラフＱＰＲ）を作成する。
【００４９】
[0058]  動作５１７において、ＭＢＲエンジンは次に動作５１６において作成した関係（グラフＱＰＲ）を用いて、動作５１５において決定したモデル化結果解像度Ｒ’に対する量子化ステップ・サイズのモデル化した結果（ＱＰ’）を求める。次に、ＭＢＲエンジンは、このビデオ・ストリームのこのＧＯＰを、モデル化結果量子化ステップ・サイズおよび解像度（Ｒ’， ＱＰ’）でエンコードすることを決定する。
【００５０】
[0059]  この動的解像度手法を用いることによって、ＭＢＲエンコーディング・システムは、複雑さが少ないビデオ・セグメント（またはＧＯＰ）程大きなエンコーディング解像度を割り当てて、より多くの視覚的詳細を維持することができる。一方、複雑さが多いビデオ・セグメント（またはＧＯＰ）程、小さな解像度を割り当てて、視覚的アーチファクトを低減する。この手法は、多ビット・レート・ストリーミングにはより良い視覚的体験を与えることが分かっている。
Ｖ．代表的なコンピューティング環境  
[0060]  図６は、記載した実施形態、技法、および技術を実現することができる、適したコンピューティング環境６００の一般化した例を示す。コンピューティング環境６００は、本技術の使用範囲や機能に関して何の限定をも示唆することは意図していない。何故なら、本技術は多様な汎用または特殊目的コンピューティング環境においても実現できるからである。例えば、開示した技術は、ハンド・ヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサーに基づくまたはプログラマブルな消費者用電子機器、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューター等を含む、他のコンピューター・システム構成でも実現することができる。また、開示した技術は、分散型コンピューティング環境においても実施することができ、この場合、通信ネットワークによってリンクされたリモート処理デバイスによってタスクが実行される。分散型コンピューティング環境では、プログラム・モジュールをローカルおよびリモート双方のメモリー記憶デバイスに位置付けることができる。
【００５１】
[0061]  図６を参照すると、コンピューティング環境６００は、少なくとも１つの中央演算装置６１０とメモリー６２０とを含む。先に論じたマルチ・コア動き情報事前計算のために、コンピューターは複数のＣＰＵコアを有するマルチ・コアＣＰＵを含む。図６では、この最も基本的な構成６３０が、破線の内部に含まれている。中央演算装置６１０は、コンピューター実行可能命令を実行し、実在のプロセッサーであってもまたは仮想プロセッサーであってもよい。マルチ処理システムでは、多数の演算装置がコンピューター実行可能命令を実行することによって、処理パワーを増大させ、したがって、多数のプロセッサーが同時に実行することができる。メモリー６２０は、揮発性メモリー（例えば、レジスター、キャッシュ、ＲＡＭ）、不揮発性メモリー（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリー等）、またはこれら２つの何らかの組み合わせとすることができる。メモリー６２０は、例えば、本明細書において記載した技術を実現することができるソフトウェア６８０を格納する。コンピューティング環境は、更に別の機構を有することもある。例えば、コンピューティング環境６００は、ストレージ６４０、１つ又は複数の入力デバイス６５０、１つ又は複数の出力デバイス６６０、および１つ又は複数の通信接続６７０を含む。バス、コントローラー、またはネットワークのような相互接続メカニズム（図示せず）が、コンピューティング環境６００のコンピューターを相互接続する。通例、オペレーティング・システム・ソフトウェア（図示せず）が、コンピューティング環境６００において実行する他のソフトウェアに合わせて動作環境を提供し、コンピューティング環境６００のコンポーネントの動作(activities)を調整する。
【００５２】
[0062]  ストレージ６４０は、リムーバブルまたは非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、あるいは情報を格納するために用いることができ、コンピューティング環境６００内でアクセスすることができるのであれば他のいずれの媒体でも含む。ストレージ６４０は、本明細書において記載した技術を実現することができるソフトウェア６８０の命令を格納する。
【００５３】
[0063]  入力デバイス（１つまたは複数）６５０は、キーボード、キーパッド、マウス、ペン、またはトラックボールのような接触入力デバイス、音声入力デバイス、走査デバイス、またはコンピューティング環境６００に入力を供給するその他のデバイスとすることができる。オーディオについては、入力デバイス（１つまたは複数）６５０は、サウンド・カード、あるいはオーディオ入力をアナログまたはデジタル形態で受け入れる同様のデバイス、あるいはオーディオ・サンプルをコンピューティング環境６００に供給するＣＤ−ＲＯＭリーダーとすることができる。出力デバイス（１つまたは複数）６６０は、ディスプレイ、プリンター、スピーカー、ＣＤ−ライター、またはコンピューティング環境６００からの出力を供給するその他のデバイスとすることができる。
【００５４】
[0064]  通信接続（１つまたは複数）６７０は、通信媒体（例えば、接続ネットワーク）を通じた他のコンピューティングエンティティとの通信を可能にする。通信媒体は、コンピューター実行可能命令、圧縮グラフィクス情報、または変調データ信号の中にある他のデータというような情報を伝える。
【００５５】
[0065]  コンピューター読み取り可能媒体は、コンピューティング環境７００内部においてアクセスすることができる利用可能なあらゆる媒体である。一例として、そして限定ではなく、コンピューティング環境６００では、コンピューター読み取り可能媒体はメモリー６２０、ストレージ６４０、通信媒体、および以上の内のいずれかの組み合わせを含む。容易に理解できてしかるべきであるが、コンピューター読み取り可能記憶媒体という用語は、メモリー６２０およびストレージ６４０のようなデータ記憶媒体や、変調データ信号のような単純でない伝送媒体を含む。
【００５６】
[0066]  本明細書において記載した方法は、そのいずれも、１つ又は複数のコンピューター読み取り可能媒体（例えば、ストレージまたは他の有形媒体）を通じて実行することができ、このような方法を実行する（例えば、コンピューティング・デバイス、オーディオおよび／またはビデオ処理デバイス、あるいはコンピューターに実行させる）コンピューター実行可能命令を備えている（例えば、有するまたは格納する）。動作は、完全自動、半自動とすることができ、または手作業の介入を伴うことができる。
【００５７】
[0067]  以上、本革新の原理について詳細な説明および添付図面において説明し図示したが、このような原理から逸脱することなく、種々の実施形態の構成および詳細を変更できることは認められよう。尚、本明細書において記載したプログラム、プロセス、または方法は、特に指示されていない限り、いずれの特定のタイプのコンピューティング環境にも関係付けられていないこと、または限定されないことは言うまでもない。様々なタイプの汎用または特殊コンピューティング環境を、本明細補において記載した教示と共に用いることができ、あるいはこれらのコンピューティング環境が、本明細書において記載した教示にしたがって動作を実行することもできる。ソフトウェアとして示した実施形態のエレメントをハードウェアで実現することもでき、その逆も可能である。
【００５８】
[0068]  本発明の原理を適用することができる数多くの実施形態があり得ることに鑑み、以下の特許請求の範囲およびその均等物の範囲および主旨に該当すると考えられる実施形態全てを、我々の発明として特許請求する。
【図１】
0005490146.tif 000002
【図２】
0005490146.tif 000003
【図３】
0005490146.tif 000004
【図４】
0005490146.tif 000005
【図５】
0005490146.tif 000006
【図６】
0005490146.tif 000007