(57)【要約】  描画された画面、該画面の描画に用いられた視点情報、及び該画面に対応する深度バッファを順次取得する。動画配信サーバは、取得された第１の画面を分割した複数のブロックの各々について評価画素を設定し、評価画素に描画されている描画オブジェクトについて、第１の画面よりも前に取得された第２の画面におけるスクリーン座標及び深度値を特定する。また第２の画面に対応する深度バッファにおける、スクリーン座標の深度値と、評価画素に描画されている描画オブジェクトの深度値とを比較し、２つの深度値を同一とみなせるブロックについては第２の画面との間でフレーム間符号化を行うことを決定する。そして第１の画面の描画に用いられた視点情報、第１の画面に対応する深度バッファ、及び第１の画面の各ブロックについてフレーム間符号化が行われるか否かを示す情報を含む符号化詳細情報を外部装置に送信する。
2013125220.tif 000002
【特許請求の範囲】
【請求項１】
描画された画面、該画面の描画に用いられた視点情報、及び該画面に対応する深度バッファを順次取得する取得手段と、
前記取得手段により取得された第１の画面を複数のブロックに分割する分割手段と、
前記分割手段により分割された各ブロックについて評価画素を設定する設定手段と、
前記設定手段により設定された前記評価画素に描画されている描画オブジェクトについて、前記第１の画面よりも前に取得された第２の画面におけるスクリーン座標及び深度値を特定する特定手段と、
前記第２の画面に対応する深度バッファにおける、前記スクリーン座標の深度値と、前記特定手段により特定された前記評価画素に描画されている描画オブジェクトの深度値とを比較し、２つの深度値を同一とみなすか否かを判断する判断手段と、
前記判断手段により前記２つの深度値が同一とみなされたブロックについては前記第２の画面との間でフレーム間符号化を行い、前記判断手段により前記２つの深度値が同一とみなされなかったブロックについてはフレーム内符号化を行う符号化手段と、
前記第１の画面の描画に用いられた視点情報、前記第１の画面に対応する深度バッファ、及び前記第１の画面の各ブロックについて前記符号化手段によりフレーム間符号化が行われるか否かを示す情報を含む符号化詳細情報を外部装置に送信する送信手段と、を有し、
前記送信手段は、前記符号化手段により符号化された前記第１の画面の各ブロックの符号化データの生成が完了する前に、前記符号化詳細情報を前記外部装置に送信する
ことを特徴とする動画配信サーバ。
【請求項２】
前記各ブロックの符号化データには動きベクトルが含まれないことを特徴とする請求項１に記載の動画配信サーバ。
【請求項３】
前記符号化手段は、フレーム間符号化を行うブロックについては、前記第１の画面の描画に用いられた視点情報及び前記第１の画面に対応する深度バッファと、前記第２の画面の描画に用いられた視点情報とを用いて、該ブロックに対応する前記第２の画面の領域を特定して抽出し、該ブロックの画像と該対応する領域の画像との差分を符号化することを特徴とする請求項１または２に記載の動画配信サーバ。
【請求項４】
前記特定手段は、
前記第１の画面の描画に用いられた視点情報と前記第１の画面に対応する深度バッファとに基づいて、前記評価画素に描画されている描画オブジェクトの３次元座標を算出する第１の算出手段と、
前記第２の画面の描画に用いられた視点情報を用いて、前記第１の算出手段により算出された３次元座標を前記第２の画面におけるスクリーン座標及び深度値に変換する変換手段と、
を含むことを特徴とする請求項１乃至３のいずれか１項に記載の動画配信サーバ。
【請求項５】
前記動画配信サーバは、接続している複数の動画受信装置に対して同時並行して符号化動画データを生成して送信し、
前記動画配信サーバは、
画面の描画及び該画面に対応する深度バッファの生成を行う描画手段と、
深度バッファ及び符号化詳細情報の生成、前記描画手段による描画処理、前記符号化手段による符号化処理について、前記動画受信装置１台あたりの前記動画配信サーバにおける平均ＣＰＵ使用率、平均ＧＰＵ使用率、及び符号化動画データの平均データサイズを収集する収集手段と、
前記収集手段により収集された前記平均ＣＰＵ使用率、前記平均ＧＰＵ使用率、及び前記平均データサイズに基づいて算出された動画配信可能な動画受信装置の予測数が、予め定められた動画配信可能な動画受信装置の最低数よりも小さい場合に、前記予測数が該最低数を満たす、各動画受信装置に送信する符号化動画データの最大解像度を設定する解像度設定手段をさらに有し、
前記描画手段は、前記解像度設定手段により設定された最大解像度に従って画面の描画及び深度バッファの生成を行う
ことを特徴とする請求項１乃至３のいずれか１項に記載の動画配信サーバ。
【請求項６】
１フレームの画面が符号化された符号化動画データを動画配信サーバから順次取得し、復号して再生する動画再生装置であって、
第１の符号化動画データに符号化された第１の画面の描画に用いられた視点情報、前記第１の画面に対応する深度バッファ、及び前記第１の画面の各ブロックについてフレーム間符号化が行われたか否かを示す情報を含む符号化詳細情報を前記動画配信サーバから受信する第１の受信手段と、
前記第１の受信手段により受信された前記符号化詳細情報に基づいて、前記第１の符号化動画データの復号に用いられる参照データを、前記第１の符号化動画データよりも前に取得された第２の符号化動画データを復号して得られた第２の画面から生成する復号前処理手段と、
前記第１の符号化動画データを前記動画配信サーバから受信する第２の受信手段と、
前記第２の受信手段により受信された前記第１の符号化動画データを、前記復号前処理手段により生成された前記参照データを用いて復号して再生する復号手段と、
を有することを特徴とする動画再生装置。
【請求項７】
前記復号前処理手段は、フレーム間符号化が行われたブロックについては、前記第１の画面の描画に用いられた視点情報及び前記第１の画面に対応する深度バッファと、前記第２の画面の描画に用いられた視点情報とを用いて、該ブロックに対応する第２の画面の領域を特定し、前記参照データとして抽出することを特徴とする請求項６に記載の動画再生装置。
【請求項８】
前記第１の受信手段による前記符号化詳細情報の受信は、前記第２の受信手段による前記第１の符号化動画データの受信よりも前に行われることを特徴とする請求項６または７に記載の動画再生装置。
【請求項９】
動画配信サーバの取得手段が、描画された画面、該画面の描画に用いられた視点情報、及び該画面に対応する深度バッファを順次取得する取得工程と、
前記動画配信サーバの分割手段が、前記取得工程において取得された第１の画面を複数のブロックに分割する分割工程と、
前記動画配信サーバの設定手段が、前記分割工程において分割された各ブロックについて評価画素を設定する設定工程と、
前記動画配信サーバの特定手段が、前記設定工程において設定された前記評価画素に描画されている描画オブジェクトについて、前記第１の画面よりも前に取得された第２の画面におけるスクリーン座標及び深度値を特定する特定工程と、
前記動画配信サーバの判断手段が、前記第２の画面に対応する深度バッファにおける、前記スクリーン座標の深度値と、前記特定工程において特定された前記評価画素に描画されている描画オブジェクトの深度値とを比較し、２つの深度値を同一とみなすか否かを判断する判断工程と、
前記動画配信サーバの符号化手段が、前記判断工程において前記２つの深度値が同一とみなされたブロックについては前記第２の画面との間でフレーム間符号化を行い、前記判断工程において前記２つの深度値が同一とみなされなかったブロックについてはフレーム内符号化を行う符号化工程と、
前記動画配信サーバの送信手段が、前記第１の画面の描画に用いられた視点情報、前記第１の画面に対応する深度バッファ、及び前記第１の画面の各ブロックについて前記符号化工程においてフレーム間符号化が行われるか否かを示す情報を含む符号化詳細情報を外部装置に送信する送信工程と、を有し、
前記送信手段は前記送信工程において、前記符号化工程において符号化された前記第１の画面の各ブロックの符号化データの生成が完了する前に、前記符号化詳細情報を前記外部装置に送信する
ことを特徴とする動画配信サーバの制御方法。
【請求項１０】
１フレームの画面が符号化された符号化動画データを動画配信サーバから順次取得し、復号して再生する動画再生装置の制御方法であって、
前記動画再生装置の第１の受信手段が、第１の符号化動画データに符号化された第１の画面の描画に用いられた視点情報、前記第１の画面に対応する深度バッファ、及び前記第１の画面の各ブロックについてフレーム間符号化が行われたか否かを示す情報を含む符号化詳細情報を前記動画配信サーバから受信する第１の受信工程と、
前記動画再生装置の復号前処理手段が、前記第１の受信工程において受信された前記符号化詳細情報に基づいて、前記第１の符号化動画データの復号に用いられる参照データを、前記第１の符号化動画データよりも前に取得された第２の符号化動画データを復号して得られた第２の画面から生成する復号前処理工程と、
前記動画再生装置の第２の受信手段が、前記第１の符号化動画データを前記動画配信サーバから受信する第２の受信工程と、
前記動画再生装置の復号手段が、前記第２の受信工程において受信された前記第１の符号化動画データを、前記復号前処理工程において生成された前記参照データを用いて復号して再生する復号工程と、
を有することを特徴とする動画再生装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至５のいずれか１項に記載の動画配信サーバの各手段として機能させるためのプログラム。
【請求項１２】
コンピュータを、請求項６乃至８のいずれか１項に記載の動画再生装置の各手段として機能させるためのプログラム。
【請求項１３】
請求項１１または１２に記載のプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体に関し、特に符号化動画データのストリーミング配信技術に関する。
【背景技術】
【０００２】
ネットワーク接続可能なパーソナルコンピュータ（ＰＣ）等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。【０００３】
ネットワークユーザに対するサービスの１つとして、ＭＭＯＲＰＧ（Massively Multiplayer Online Role-Playing Game）等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。【０００４】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。【０００５】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中には、十分な描画性能を有するＰＣや専用のゲーム機をユーザが使用することが必要となるものがある。このため、ネットワークゲーム（１コンテンツ）のユーザ数は、コンテンツが要求するクライアント機器の性能に依存してしまう。高性能の機器は当然高価であり、該機器を所有できるユーザも限られる。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。【０００６】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている。特許文献１のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００９／１３８８７８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特許文献１のようなゲームでは、サーバ機器がクライアント機器に対して提供するゲーム画面は、送信する情報量を削減するために、符号化された動画データの形態で提供される。採用される符号化方式にも依るが、例えばＭＰＥＧ規格のように一般的な動画符号化方式においては、１フレームの画像を分割した各ブロックについて動き補償を伴わないイントラ符号化（フレーム内符号化）、あるいはフレーム間予測による動き補償を伴うインター符号化（フレーム間符号化）が行われる。それぞれの符号化方式には圧縮効率のよい被写体が存在しており、一般的には各ブロックについてイントラ符号化及びインター符号化のそれぞれを行ったブロック（iblock、pblock）を生成し、圧縮効率が高いブロックを符号化データに含める。【０００９】
イントラ符号化は、圧縮対象のブロックの画像を加工せずにＤＣＴ変換及びランレングス符号化等を適用して圧縮する。一方、インター符号化は、圧縮対象のブロックの画像と、前のフレームの画像から抽出した該ブロックに対応する参照画像との差分画像を生成して、ＤＣＴ変換及びランレングス符号化等を適用して圧縮する。このため、インター符号化においては、前のフレームの画像について、圧縮対象のブロックの画像との相関が最も高い領域を特定する処理が含まれる。このような相関が最も高い領域の検出に係る処理は、前のフレームの画像について評価領域を移動させながら、圧縮対象のブロックの画像との類似度及び距離を算出して解析を行うため、解析処理に時間を要してしまうことがある。【００１０】
特に、ユーザの入力に応じてインタラクティブに描画内容が変化するゲーム等では、リアルタイム性、即ち入力に対する高速なレスポンスが要求され、動画符号化処理に要する時間が制限される。このような場合、各ブロックについての符号化処理、及びイントラ符号化及びインター符号化のいずれを行うかの判断処理を高速に行うことが要求される。しかしながら、描画した画面を高速かつ効率的に動画符号化する具体的な方法については、これまで開示されていなかった。【００１１】
本発明は、上述の問題点に鑑みてなされたものであり、描画処理により得られた画面を高速かつ効率的に動画符号化する動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前述の目的を達成するために、本発明の動画配信サーバは、以下の構成を備える。
描画された画面、該画面の描画に用いられた視点情報、及び該画面に対応する深度バッファを順次取得する取得手段と、取得手段により取得された第１の画面を複数のブロックに分割する分割手段と、分割手段により分割された各ブロックについて評価画素を設定する設定手段と、設定手段により設定された評価画素に描画されている描画オブジェクトについて、第１の画面よりも前に取得された第２の画面におけるスクリーン座標及び深度値を特定する特定手段と、第２の画面に対応する深度バッファにおける、スクリーン座標の深度値と、特定手段により特定された評価画素に描画されている描画オブジェクトの深度値とを比較し、２つの深度値を同一とみなすか否かを判断する判断手段と、判断手段により２つの深度値が同一とみなされたブロックについては第２の画面との間でフレーム間符号化を行い、判断手段により２つの深度値を同一とみなされなかったブロックについてはフレーム内符号化を行う符号化手段と、第１の画面の描画に用いられた視点情報、第１の画面に対応する深度バッファ、及び第１の画面の各ブロックについて符号化手段によりフレーム間符号化が行われるか否かを示す情報を含む符号化詳細情報を外部装置に送信する送信手段と、を有し、送信手段は、符号化手段により符号化された第１の画面の各ブロックの符号化データの生成が完了する前に、符号化詳細情報を外部装置に送信することを特徴とする。【００１３】
前述の目的を達成するために、本発明の動画再生装置は、以下の構成を備える。
１フレームの画面が符号化された符号化動画データを動画配信サーバから順次取得し、復号して再生する動画再生装置であって、第１の符号化動画データに符号化された第１の画面の描画に用いられた視点情報、第１の画面に対応する深度バッファ、及び第１の画面の各ブロックについてフレーム間符号化が行われたか否かを示す情報を含む符号化詳細情報を動画配信サーバから受信する第１の受信手段と、第１の受信手段により受信された符号化詳細情報に基づいて、第１の符号化動画データの復号に用いられる参照データを、第１の符号化動画データよりも前に取得された第２の符号化動画データを復号して得られた第２の画面から生成する復号前処理手段と、第１の符号化動画データを動画配信サーバから受信する第２の受信手段と、第２の受信手段により受信された第１の符号化動画データを、復号前処理手段により生成された参照データを用いて復号して再生する復号手段と、を有することを特徴とする。
【発明の効果】
【００１４】
このような構成により本発明によれば、描画処理により得られた画面を高速かつ効率的に動画符号化することが可能となる。【００１５】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１６】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態１に係る動画配信システムのシステム構成を示した図
【図２】本発明の実施形態に係るＰＣ１００の機能構成を示したブロック図
【図３】本発明の実施形態に係る動画配信サーバ２００の機能構成を示したブロック図
【図４】本発明の実施形態１に係る動画配信サーバ２００で実行される動画配信処理を例示したフローチャート
【図５】本発明の実施形態に係る動画配信サーバ２００で実行される符号化判断処理を例示したフローチャート
【図６】本発明の実施形態に係る評価深度値と前フレーム深度値の比較方法を説明するための図
【図７】本発明の実施形態に係る動画配信サーバ２００で実行される符号化処理を例示したフローチャート
【図８】本発明の実施形態に係るＰＣ１００で実行される動画再生処理を例示したフローチャート
【図９】本発明の実施形態に係るＰＣ１００で実行される復号前処理を例示したフローチャート
【図１０】本発明の実施形態２に係る動画配信システムのシステム構成を示した図
【図１１】本発明の実施形態２に係る中央サーバ１０００の機能構成を示したブロック図
【図１２】本発明の実施形態２に係る動画配信サーバ２００で実行される情報収集処理を例示したフローチャート
【図１３】本発明の実施形態２に係る中央サーバ１０００で実行される判断処理を例示したフローチャート
【図１４】本発明の実施形態２に係る動画配信サーバ２００で実行される動画配信処理を例示したフローチャート
【発明を実施するための形態】
【００１７】
［実施形態１］
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、動画配信システムの一例としての、動画再生装置であるＰＣ１００と、動画を配信する動画配信サーバ２００とに本発明を適用した例を説明する。
【００１８】
《動画配信システムの構成》
図１は、本発明の実施形態に係る動画配信システムのシステム構成を示す図である。
【００１９】
図示されるように、ＰＣ１００と動画配信サーバ２００とはインターネット等のネットワーク３００を介して接続されている。本実施形態ではＰＣ１００は、動画配信コンテンツの一例として、動画配信サーバ２００において実行されるゲームコンテンツに係るゲーム画面を、符号化動画データとして受信する。本実施形態では動画配信サーバ２００は、ＰＣ１００においてなされた操作（ユーザ入力）を受信し、該操作に応じたゲーム画面を１フレームごとに描画する。そして動画配信サーバ２００は、描画したゲーム画面を符号化し、得られた符号化動画データをＰＣ１００に配信する。またＰＣ１００は、動画配信サーバ２００から符号化動画データを受信すると、該符号化動画データを復号して再生することで、ユーザに対してゲーム画面を提供することができる。
【００２０】
なお、本実施形態では動画配信コンテンツの一例として、ネットワーク３００上の動画配信サーバ２００において実行されるゲームプログラムにより描画されたゲーム画面を提供するコンテンツを説明するが、本発明の実施はこれに限られるものではない。動画配信サーバ２００は、配信先に提供する動画配信コンテンツの１フレームを描画処理により描画し、毎フレームについて行われた符号化処理により得られた符号化動画データを配信する構成であればよい。また、１フレームに係る画面の描画は、必ずしも動画配信サーバ２００において実行される必要はなく、例えば外部の描画サーバにより実行されてもよい。即ち、動画配信サーバ２００は、１フレームに係る画面、該画面の描画に用いられた視点情報（カメラパラメータ）、及び該画面に対応する深度バッファを受信し、後述する符号化処理を実行するものであればよい。
【００２１】
また、本実施形態では動画配信サーバ２００に接続するクライアント機器として、ＰＣ１００を用いて説明するが、本発明の実施はこれに限られるものではない。例えば動画配信サーバ２００と接続するクライアント機器は、家庭用ゲーム機、携帯ゲーム機、携帯電話、ＰＤＡ、タブレット等の、動画配信サーバ２００から受信した符号化動画データを復号して再生可能な機器であればよい。
【００２２】
〈ＰＣ１００の構成〉
図２は、本発明の実施形態に係るＰＣ１００の機能構成を示すブロック図である。
【００２３】
ＣＰＵ１０１は、ＰＣ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、例えばＲＯＭ１０２に記録されている動画再生処理の動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、各ブロックの動作を制御する。
【００２４】
ＲＯＭ１０２は、例えば書き換え可能な不揮発性メモリである。ＲＯＭ１０２は、動画再生処理等の動作プログラムに加え、ＰＣ１００が有する各ブロックの動作に必要な定数等の情報を記憶する。
【００２５】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、動作プログラムの展開領域としてだけでなく、ＰＣ１００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００２６】
復号部１０４は、後述する通信部１０５が受信した符号化動画データについて復号処理を行い、１フレームに係るゲーム画面を生成する。また復号部１０４は、符号化動画データについての復号処理を行う前に、該復号処理に用いる参照データを準備する復号前処理を行う。復号部１０４において実行される復号前処理及び復号処理については、後述する動画再生処理において詳述する。
【００２７】
通信部１０５は、ＰＣ１００が有する通信インタフェースである。通信部１０５は、ネットワーク３００を介して接続した、動画配信サーバ２００等の他の機器との間におけるデータ送受信を行う。データ送信時には通信部１０５は、ネットワーク３００あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部１０５は、ネットワーク３００を介して受信したデータを、ＰＣ１００において読み取り可能な任意のデータ形式に変換し、例えばＲＡＭ１０３に記憶させる。
【００２８】
なお、本実施形態ではＰＣ１００と動画配信サーバ２００とは、ネットワーク３００を介して接続されるものとして説明するが、例えばＰＣ１００と動画配信サーバ２００とが直接ケーブルにより接続される形態であってもよいことは容易に想像されよう。
【００２９】
表示部１０６は、例えばＬＣＤモニタ等のＰＣ１００に接続された表示装置である。表示部１０６は、入力されたゲーム画面を表示領域に表示する表示制御を行う。なお、表示部１０６は、ラップトップＰＣのようにＰＣ１００に内蔵される表示装置であってもよいし、ケーブルを用いてＰＣ１００に外部接続された表示装置であってもよい。
【００３０】
操作入力部１０７は、例えばマウス、キーボード、ゲームパッド等のＰＣ１００が有するユーザインタフェースである。操作入力部１０７は、ユーザによりユーザインタフェースの操作がなされたことを検出すると、該操作に対応する制御信号をＣＰＵ１０１に対して出力する。
【００３１】
〈動画配信サーバ２００の構成〉
図３は、本発明の実施形態に係る動画配信サーバ２００の機能構成を示すブロック図である。
【００３２】
サーバＣＰＵ２０１は、動画配信サーバ２００が有する各ブロックの動作を制御する。具体的にはサーバＣＰＵ２０１は、例えばサーバＲＯＭ２０２に記憶されている動画配信処理の動作プログラムを読み出し、サーバＲＡＭ２０３に展開して実行することにより、各ブロックの動作を制御する。
【００３３】
サーバＲＯＭ２０２は、例えば書き換え可能な不揮発性メモリである。サーバＲＯＭ２０２は、動画配信処理等の動作プログラムに加え、動画配信サーバ２００が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【００３４】
サーバＲＡＭ２０３は、揮発性メモリである。サーバＲＡＭ２０３は、動作プログラムの展開領域としてだけでなく、動画配信サーバ２００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００３５】
サーバＧＰＵ２０４は、ＰＣ１００の表示部１０６に表示するゲーム画面の生成を行う。サーバＧＰＵ２０４には、サーバＶＲＡＭ２０５が接続される。サーバＧＰＵ２０４は、サーバＣＰＵ２０１より描画命令及びゲーム画面の描画に用いるカメラの位置及び方向の情報（視点情報）を受信すると、該描画命令に係る描画オブジェクトを例えば後述するサーバ記録媒体２０７から読み出し、ＧＰＵメモリに格納する。サーバＧＰＵ２０４は、接続されたサーバＶＲＡＭ２０５に対して描画を行う場合、描画オブジェクトのキャッシュメモリへの展開を行なった後、該展開後の描画オブジェクトをサーバＶＲＡＭ２０５に書き込む。
【００３６】
サーバ符号化部２０６は、サーバＧＰＵ２０４によりサーバＶＲＡＭ２０５に生成されたゲーム画面に対する符号化処理を行う。サーバ符号化部２０６は、符号化対象のゲーム画面をブロックに分割し、各ブロックをイントラ符号化（フレーム内符号化）あるいはインター符号化（フレーム間符号化）する。符号化処理の詳細は後述するが、本実施形態ではサーバ符号化部２０６は、各ブロックをＹＣｂＣｒの色チャネルごとに離散コサイン変換（ＤＣＴ）した後、ランレングス符号化により圧縮する。
【００３７】
サーバ記録媒体２０７は、例えばＨＤＤ等の、動画配信サーバ２００に着脱可能に接続される記録装置である。本実施形態ではサーバ記録媒体２０７には、描画処理において画面の生成に用いる描画オブジェクトのモデルデータや光源情報等が記録されているものとする。
【００３８】
サーバ通信部２０８は、動画配信サーバ２００が有する通信インタフェースである。本実施形態ではサーバ通信部２０８は、ネットワーク３００を介して接続したＰＣ１００等の、他の機器との間におけるデータ送受信を行う。なお、サーバ通信部２０８は通信部１０５と同様に、通信仕様に従ったデータ形式の変換を行う。
【００３９】
《動画配信処理》
このような構成をもつ本実施形態の動画配信システムの動画配信サーバ２００において実行される動画配信処理について、図４のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、サーバＣＰＵ２０１が、例えばサーバＲＯＭ２０２に記憶された対応する処理プログラムを読み出し、サーバＲＡＭ２０３に展開して実行することにより実現することができる。なお、本動画配信処理は、例えば動画配信サーバ２００の提供するゲームコンテンツの提供要求をＰＣ１００から受信したことを、サーバＣＰＵ２０１が検出した際に開始され、ゲームの１フレームごとに繰り返し実行されるものとして説明する。
【００４０】
なお、本実施形態では動画配信サーバ２００は、３次元シーンを描画したゲーム画面を符号化動画データの形態でＰＣ１００に提供するものとして説明する。しかしながら、上述したように動画配信サーバ２００が配信するコンテンツはこれに限られず、３次元シーンを描画した画面を提供する任意のコンテンツであってよい。また以下の説明では簡単のため、描画したゲーム画面に含まれる描画オブジェクトは全て移動しない静的オブジェクトであるものとして説明する。
【００４１】
Ｓ４０１で、サーバＣＰＵ２０１は、次に描画するゲーム画面の視点情報を更新する。具体的にはサーバＣＰＵ２０１は、例えばサーバ通信部２０８が受信した、ＰＣ１００においてユーザによりなされた、ゲームに係る操作入力の情報を参照し、次に描画するゲーム画面の視点情報を更新する。視点情報の更新が生じうるユーザによる操作は、例えば視点位置及び方向の変更操作、あるいはユーザの操作対象のキャラクタの移動等が相当する。なお、ゲーム画面の描画に用いられる視点情報の更新は、ＰＣ１００においてなされたユーザ操作にのみ更新されるものではなく、例えばゲームの進行状況に応じて変更されるものであってもよい。
【００４２】
Ｓ４０２で、サーバＣＰＵ２０１は、Ｓ４０１において更新した視点情報に対応するゲーム画面をサーバＧＰＵ２０４に描画させる。具体的にはサーバＣＰＵ２０１は、描画されるゲーム画面に含まれる描画オブジェクトを特定し、該描画オブジェクトの描画順を決定する。そしてサーバＣＰＵ２０１は、決定した描画順に従って描画オブジェクトについての描画命令をサーバＧＰＵ２０４に伝送する。またサーバＣＰＵ２０１は、サーバＧＰＵ２０４に描画させる描画オブジェクトのモデルデータ（あるいは頂点データ及び結線データ）、テクスチャデータ、及び描画オブジェクトについての位置・回転情報のパラメータをサーバ記録媒体２０７から読み出してサーバＧＰＵ２０４に転送する。サーバＧＰＵ２０４は、転送された描画オブジェクトについての情報を、ＧＰＵメモリに格納する。
【００４３】
サーバＧＰＵ２０４は、描画命令を受けた描画オブジェクトについての位置・回転情報のパラメータに従って、ＧＰＵメモリに格納されたモデルデータを移動及び回転させる。そしてサーバＧＰＵ２０４は、該描画オブジェクトに対してテクスチャや光源エフェクトを適用した後、サーバＶＲＡＭ２０５のフレームバッファに描画する。
【００４４】
なお、画面の描画においては、ピクセル単位で描画オブジェクトの前後関係による遮蔽（オクルージョン）が考慮される。即ち、特定のピクセルについて、対象の描画オブジェクトよりも前に、該描画オブジェクトよりも視点側（手前）に位置する他の描画オブジェクトの描画が既に行われている場合、対象の描画オブジェクトの描画オブジェクトのピクセルへの描画は省略される。
【００４５】
描画オブジェクトの前後関係の把握は、深度バッファ（ｚバッファ、深度マップ等とも呼ばれる）を参照して行われる。深度バッファは、各ピクセルの画素値が、該ピクセルに描画されている描画オブジェクトと視点（カメラ）との直線距離（ｚ値：深度値）を示す２次元画像であり、サーバＶＲＡＭ２０５に格納される。サーバＧＰＵ２０４は、画面に含める各描画オブジェクトを描画順に従って描画する際に、対象の描画オブジェクトを描画するピクセルを特定してその深度値を参照し、描画しようとしている描画オブジェクトの該ピクセルにおける深度値との大小比較を行う。描画しようとしている対象の描画オブジェクトの深度値の方が小さい場合は対象の描画オブジェクトが手前に配置されることを示しているため、サーバＧＰＵ２０４はサーバＶＲＡＭ２０５の該ピクセルに対象の描画オブジェクトを描画する。このとき、サーバＧＰＵ２０４は、深度バッファの該ピクセルの深度値を、対象の描画オブジェクトの深度値に変更することで、深度バッファを更新する。
【００４６】
このように、全ての描画オブジェクトについての描画が完了すると、サーバＶＲＡＭ２０５には描画したゲーム画面に対応する深度バッファが完成している。
【００４７】
Ｓ４０３で、サーバＣＰＵ２０１は、描画されたゲーム画面、該ゲーム画面の描画に用いられた視点情報、及び該ゲーム画面に対応する深度バッファを、サーバＲＡＭ２０３に格納する。本実施形態の動画配信サーバ２００は、ＰＣ１００に提供する符号化動画データの各フレームについて、描画したゲーム画面、該ゲーム画面の描画に用いられた視点情報、及び該ゲーム画面に対応する深度バッファをサーバＲＡＭ２０３に格納し、少なくとも次のフレームの符号化処理が完了するまで保持するものとする。これらの情報は現フレームの符号化動画データの作成の他に、次のフレームにおける符号化処理や後述する符号化判断処理に用いられる。
【００４８】
Ｓ４０４で、サーバＣＰＵ２０１は、描画されたゲーム画面をＹＣｂＣｒ空間に色変換した後、ゲーム画面を所定の画素数（例えば１６pixel×１６pixel）のブロックに分割する。
【００４９】
Ｓ４０５で、サーバＣＰＵ２０１は符号化判断処理を実行し、各ブロックについてフレーム内符号化を行うか、あるいはフレーム間符号化を行うかを決定する。
【００５０】
〈符号化判断処理〉
ここで、本実施形態の動画配信サーバ２００で実行される符号化判断処理について、図５のフローチャートを用いて詳細を説明する。
【００５１】
Ｓ５０１で、サーバＣＰＵ２０１は、描画されたゲーム画面（対象ゲーム画面）のブロックのうち、符号化方法の決定がなされていないブロックを選択する。
【００５２】
Ｓ５０２で、サーバＣＰＵ２０１は、選択ブロック内の画素のうちの１つの画素を評価画素として設定する。なお、サーバＣＰＵ２０１は、設定した評価画素についての対象ゲーム画面におけるスクリーン座標（Ｓcurrent）をサーバＲＡＭ２０３に格納する。
【００５３】
Ｓ５０３で、サーバＣＰＵ２０１は、設定された評価画素に描画されている描画オブジェクト（評価画素オブジェクト）の３次元座標（Ｄcurrent）を特定する。具体的にはサーバＣＰＵ２０１はまず、対象ゲーム画面に対応する深度バッファから、評価画素のスクリーン座標Ｓcurrentにおける深度値（ｚcurrent）を取得する。次にサーバＣＰＵ２０１は、対象ゲーム画面の描画に用いられた視点情報、評価画素のスクリーン座標Ｓcurrentから、評価画素オブジェクトへの方向を特定する。そしてサーバＣＰＵ２０１は、視点情報、特定した評価画素オブジェクトへの方向、及び評価画素の深度値ｚcurrentから、評価画素オブジェクトの３次元座標Ｄcurrentを特定する。
【００５４】
Ｓ５０４で、サーバＣＰＵ２０１は、現フレームの１つ前のフレームで描画されたゲーム画面（前フレーム画面）における、評価画素オブジェクトのスクリーン座標（Ｓprevious）及び深度値（評価深度値ｚestimate）を算出する。具体的にはサーバＣＰＵ２０１は、サーバＲＡＭ２０３に格納されている前フレーム画面の描画に用いられた視点情報を読み出し、評価画素オブジェクトの３次元座標Ｄcurrentを、前フレーム画面におけるスクリーン座標Ｓpreviousに変換する。またサーバＣＰＵ２０１は、前フレーム画面の描画に用いられた視点情報に含まれる視点位置と、評価画素オブジェクトの３次元座標Ｄcurrentとの距離である深度値ｚestimateを算出する。
【００５５】
Ｓ５０５で、サーバＣＰＵ２０１は、前フレーム画面に対応する深度バッファをサーバＲＡＭ２０３から読み出し、スクリーン座標Ｓpreviousにおける深度値（前フレーム深度値ｚprevious）を取得する。
【００５６】
Ｓ５０６で、サーバＣＰＵ２０１は、前フレーム画面における評価画素オブジェクトの評価深度値ｚestimateと、前フレーム深度値ｚpreviousとが、同一とみなせるか否かを判断する。具体的にはサーバＣＰＵ２０１は、評価深度値ｚestimateと前フレーム深度値ｚpreviousの差分の絶対値が、同一とみなす閾値以下であるか否かを判断する。本ステップにおいてサーバＣＰＵ２０１は、評価画素オブジェクトが前フレームのゲーム画面において遮蔽されていたか否かを判断する。
【００５７】
例えば図６のように、視点Ａについて描画された現フレームのゲーム画面（対象ゲーム画面）６０１における評価画素６０２及び６０３について考える。評価画素６０２に対応する評価画素オブジェクト６０４は、視点Ｂについて描画された前フレームのゲーム画面（前フレーム画面）６０６において対応画素６０７の位置に描画される。このとき、評価画素オブジェクト６０４は前フレーム画面６０６において遮蔽されていないため、評価深度値ｚestimateと前フレーム深度値ｚpreviousとは一致する。一方、評価画素６０３に対応する評価画素オブジェクト６０５は、前フレーム画面６０６において対応画素６０８の位置に描画される。しかしながらこのとき、評価画素オブジェクト６０５は前フレーム画面６０６において遮蔽されているため、評価深度値ｚestimateと前フレーム深度値ｚpreviousとは異なる。
【００５８】
このように、本実施形態の符号化判断処理では現フレームと前フレームの視点情報及び深度バッファを用いることで、選択ブロックに描画されている描画オブジェクトが、前フレーム画面に描画されていたか否かを判断する。
【００５９】
サーバＣＰＵ２０１は、前フレーム画面における評価画素オブジェクトの評価深度値と前フレーム深度値とが同一とみなせると判断した場合は処理をＳ５０７に移し、同一とみなせないと判断した場合は処理をＳ５０８に移す。
【００６０】
Ｓ５０７で、サーバＣＰＵ２０１は、サーバＲＡＭ２０３に格納されている、評価深度値と前フレーム深度値が一致した回数を更新する。
【００６１】
Ｓ５０８で、サーバＣＰＵ２０１は、選択ブロックについて設定した評価画素の数が予め定められた評価サンプル数に達したか否かを判断する。サーバＣＰＵ２０１は、選択ブロックについて設定した評価画素の数が評価サンプル数に達したと判断した場合は処理をＳ５０９に移し、達していないと判断した場合は処理をＳ５０２に戻す。
【００６２】
Ｓ５０９で、サーバＣＰＵ２０１は、サーバＲＡＭ２０３に格納されている評価深度値と前フレーム深度値が一致した回数が閾値を越えるか否かを判断する。サーバＣＰＵ２０１は、評価深度値と前フレーム深度値が一致した回数が閾値を越えると判断した場合は、選択ブロックの遮蔽状態に変化がないものとして処理をＳ５１０に移す。またサーバＣＰＵ２０１は、評価深度値と前フレーム深度値が一致した回数が閾値を越えないと判断した場合は、処理をＳ５１１に移す。
【００６３】
Ｓ５１０で、サーバＣＰＵ２０１は、選択ブロックに対してフレーム間符号化を行うことを示す符号化識別情報を関連づける。符号化識別情報は、例えば１ｂｉｔの論理型情報であってよい。即ち、本実施形態では選択ブロックについて、フレーム内符号化及びフレーム間符号化のいずれを実行するかを、選択ブロックに含まれる描画オブジェクトが前フレームにおいて遮蔽状態であるか否かによって決定する。つまり、選択ブロックに含まれる描画オブジェクトが前フレームにおいて遮蔽状態ではない場合は、選択ブロックと類似度の高いパターン（テクスチャ等）を有する領域が前フレーム画面に存在することになる。このため、サーバＣＰＵ２０１はフレーム間予測を行った方が圧縮効率が高いと判断し、該選択ブロックにはフレーム間符号化を行って符号化動画データを生成するものとする。
【００６４】
Ｓ５１１で、サーバＣＰＵ２０１は、対象ゲーム画面の全てのブロックについてＳ５０２乃至Ｓ５１０の処理を実行したか否かを判断する。サーバＣＰＵ２０１は、まだ処理が実行されていないブロックが存在すると判断した場合は処理をＳ５０１に戻し、存在しないと判断した場合は本符号化判断処理を完了する。
【００６５】
サーバＣＰＵ２０１は、このように符号化判断処理によって描画されたゲーム画面の各ブロックを、フレーム内符号化とフレーム間符号化のいずれを行なうかを判断する。
【００６６】
Ｓ４０６で、サーバＣＰＵ２０１は符号化詳細情報として、描画されたゲーム画面の各ブロックの符号化識別情報、該ゲーム画面の描画に用いられた視点情報、及び描画されたゲーム画面に対応する深度バッファをサーバ通信部２０８に伝送し、ＰＣ１００に対して送信させる。符号化詳細情報は、ＰＣ１００において実行される、後述の復号前処理に用いられる。
【００６７】
Ｓ４０７で、サーバＣＰＵ２０１は、描画されたゲーム画面に対して符号化処理を実行し、符号化動画データを生成する。
【００６８】
〈符号化処理〉
ここで、本実施形態の動画配信サーバ２００において実行される符号化処理について、図７を参照して詳細を説明する。
【００６９】
Ｓ７０１で、サーバＣＰＵ２０１は、描画されたゲーム画面のブロックのうち、符号化がなされていないブロックを選択する。
【００７０】
Ｓ７０２で、サーバＣＰＵ２０１は、選択ブロックに符号化識別情報が関連付けられているか否かを判断する。即ち、サーバＣＰＵ２０１は、選択ブロックについてフレーム間符号化を行うか否かを、符号化識別情報により判断する。サーバＣＰＵ２０１は、選択ブロックに符号化識別情報が関連付けられていると判断した場合は処理をＳ７０３に移し、関連付けられていないと判断した場合は処理をＳ７０５に移す。
【００７１】
Ｓ７０３で、サーバＣＰＵ２０１は、現フレームの１つ前のフレームで描画されたゲーム画面（前フレーム画面）内の選択ブロックに対応する領域の画像から、フレーム間符号化に使用する参照画像（参照データ）を生成する。具体的にはサーバＣＰＵ２０１はまず、上述した符号化判断処理と同様の方法で、選択ブロックの四隅の画素を前フレーム画面のスクリーン座標に変換することで対応する領域の四隅の座標を特定する。そしてサーバＣＰＵ２０１は、該対応する領域の画像に対して、例えば前フレーム画面と現フレームのゲーム画面の描画に用いられた視点情報とから生成された変換マトリクスを乗ずることで、選択ブロックと同じ画素数の参照画像を生成する。
【００７２】
Ｓ７０４で、サーバＣＰＵ２０１は、選択ブロックの画像と参照画像との差分を差分画像として生成し、符号化対象画像として設定する。具体的にはサーバＣＰＵ２０１は、選択ブロックの画像の各画素値から、参照画像の対応する画素の画素値を減算することにより差分画像（pblock）を生成する。
【００７３】
一方、Ｓ７０２において選択ブロックに符号化識別情報が関連付けられていないと判断した場合、サーバＣＰＵ２０１はＳ７０５において、選択ブロックの画像を符号化対象画像として設定する。
【００７４】
Ｓ７０６で、サーバＣＰＵ２０１は、符号化対象画像をサーバ符号化部２０６に伝送し、ＤＣＴ処理を実行させて周波数領域のデータに変換させる。またサーバＣＰＵ２０１は、変換により得られた周波数領域のデータに対してサーバ符号化部２０６にランレングス符号化を行わせることで、選択ブロックの符号化データを生成させる。
【００７５】
Ｓ７０７で、サーバＣＰＵ２０１は、描画されたゲーム画面の全てのブロックについてＳ７０２乃至Ｓ７０６の処理を実行したか否かを判断する。サーバＣＰＵ２０１は、まだ処理が実行されていないブロックが存在すると判断した場合は処理をＳ７０１に戻し、存在しないと判断した場合は本符号化処理を完了する。
【００７６】
このようにしてサーバＣＰＵ２０１は、描画されたゲーム画面から符号化動画データを生成する。なお、本実施形態の符号化処理で生成される符号化動画データは、フレーム間符号化を行なったブロックについて動きベクトルを含む必要がない。即ち、本実施形態の動画配信サーバ２００では、従来のようにブロックの画像と相関が最も高い領域の検索等を行うことなく、画面の描画に用いられた視点情報及び深度バッファを用いて該領域の特定がなされるため、符号化動画データには動きベクトルが含まれない。またＳ４０６において、符号化詳細情報として相関が最も高い領域を特定するために必要な情報がＰＣ１００にも送信されているため、ＰＣ１００においては同様に復号時に必要となる参照画像の生成を行えばよく、動きベクトルを使用する必要がない。
【００７７】
Ｓ４０８で、サーバＣＰＵ２０１は、Ｓ４０７において生成した符号化動画データをサーバ通信部２０８に伝送し、ＰＣ１００に対して送信させ、現フレームの動画配信処理を完了する。
【００７８】
《動画再生処理》
次に、本実施形態のＰＣ１００において実行される動画再生処理について、図８のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本動画再生処理は、例えばＰＣ１００において動画配信サーバ２００の提供するゲームコンテンツを受信するアプリケーションが実行された際に開始され、ゲームの１フレームごとに繰り返し実行されるものとして説明する。
【００７９】
Ｓ８０１で、ＣＰＵ１０１は、通信部１０５が動画配信サーバ２００から符号化詳細情報を受信したか否かを判断する。ＣＰＵ１０１は、動画配信サーバ２００から符号化詳細情報を受信したと判断した場合は処理をＳ８０２に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【００８０】
Ｓ８０２で、ＣＰＵ１０１は、符号化詳細情報を参照し、現フレームのゲーム画面の復号に必要な参照データを準備する復号前処理を実行する。
【００８１】
〈復号前処理〉
ここで、本実施形態のＰＣ１００で実行される復号前処理について、図９のフローチャートを用いて詳細を説明する。
【００８２】
Ｓ９０１で、ＣＰＵ１０１は、現フレームで受信するゲーム画面のブロックのうち、使用された符号化方式の判定がなされていないブロックを選択する。
【００８３】
Ｓ９０２で、ＣＰＵ１０１は、符号化詳細情報を参照し、選択ブロックにフレーム間符号化が行われることを示す符号化識別情報が関連付けられているか否かを判断する。ＣＰＵ１０１は、選択ブロックに符号化識別情報が関連付けられていると判断した場合は処理をＳ９０３に移し、関連付けられていないと判断した場合は処理をＳ９０４に移す。
【００８４】
Ｓ９０３で、ＣＰＵ１０１は、現フレームの１つ前のフレームで復号したゲーム画面（前フレーム画面）内の選択ブロックに対応する領域の画像から、選択ブロックの復号に使用する参照画像（参照データ）を生成する。本実施形態のＰＣ１００は、動画配信サーバ２００と同様に１つ前のフレームで復号した前フレーム画面、前フレーム画面の描画に用いられた視点情報、及び前フレーム画面に対応する深度バッファをＲＡＭ１０３に保持しているものとする。ＣＰＵ１０１は、上述した動画配信サーバ２００の符号化処理と同様の方法で選択ブロックと同じ画素数の参照画像を生成する。
【００８５】
Ｓ９０４で、ＣＰＵ１０１は、現フレームで受信するゲーム画面の全てのブロックについてＳ９０２乃至Ｓ９０３の処理を実行したか否かを判断する。サーバＣＰＵ２０１は、まだ処理が実行されていないブロックが存在すると判断した場合は処理をＳ９０１に戻し、存在しないと判断した場合は本復号前処理を完了する。
【００８６】
このように本実施形態のＰＣ１００では、符号化動画データの前に受信した符号化詳細情報を参照することで、符号化動画データの受信後に行われる復号処理に先立って、復号処理で用いられる参照データを準備することができる。
【００８７】
Ｓ８０３で、ＣＰＵ１０１は、通信部１０５が動画配信サーバ２００から符号化動画データを受信したか否かを判断する。ＣＰＵ１０１は、動画配信サーバ２００から符号化動画データを受信したと判断した場合は処理をＳ８０４に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【００８８】
Ｓ８０４で、ＣＰＵ１０１は、受信した符号化動画データを復号部１０４に伝送し、復号処理を実行させてゲーム画面を生成させる。具体的には復号部１０４は、符号化動画データの各ブロックについてランレングス符号化データ列の復号、逆ＤＣＴ処理を行うことで現フレームのゲーム画面のブロックデータを生成する。またフレーム間符号化が行われたブロックについては、上述した復号前処理で生成された参照データを加算することで、復号部１０４は現フレームのゲーム画面を生成する。
【００８９】
Ｓ８０５で、ＣＰＵ１０１は、Ｓ８０４において生成された現フレームのゲーム画面を表示部１０６に伝送し、対応する表示領域に表示させ、現フレームの動画再生処理を完了する。
【００９０】
このように、本実施形態の動画配信システムにおける動画配信サーバ２００は、符号化動画データの生成が完了して配信するよりも前に、符号化方法の情報を動画再生装置であるＰＣ１００に伝えることができる。即ち、符号化動画データの受信前に参照画像を前処理として準備することができるため、符号化動画データを受信してから行われる復号処理を短縮することができる。つまり、フレーム間符号化がなされたブロックの復号に用いる参照画像を、受信した符号化動画データに含まれる動きベクトルを参照して前のフレームの画像から生成する従来の方法に比べて、本実施形態の動画配信方法は復号した動画像の再生までに要する時間を短縮することができる。
【００９１】
また本実施形態の動画配信サーバ２００は、フレーム間符号化を行うブロックについての、前フレームのゲーム画面から相関が最も高い領域を探索するために行われる類似度の計算を必要としない。例えば、画像間の類似度の計算としてユークリッド距離を算出する場合、基準画像として設定した画像を対象画像に対して画素単位あるいは半画素単位でずらしながら、最も距離が短くなる位置を特定する。このため、探索範囲内において基準画像を移動する回数に応じて計算量が増大する。一方、本実施形態の動画配信サーバ２００では、フレームの画面とともに生成される深度バッファ及び該画面の描画に用いられた視点情報を参照することで、相関が最も高くなる領域の特定及び相関度の高さの推定を行うことができる。即ち、座標変換マトリクスを用いた単純な計算で参照画像となる領域を特定できるため、従来の方式で用いられる方式よりも計算量を低減でき、結果的に符号化処理に要する時間を短縮することができる。なお、２つのフレームについてのスクリーン座標への変換に用いられる変換マトリクスは、２つのフレームそれぞれの描画に用いられた視点情報から算出されるものであるため、フレーム内の全てのブロックについて再利用することができる。
【００９２】
なお、本実施形態ではフレーム間符号化あるいはその復号で参照される参照画像は、現フレームの１つ前のフレームで描画された画面から生成するものとして説明したが、本発明の実施はこれに限定されるものではない。参照画像の生成は、現フレームよりも前のフレームで描画された画面であればよい。
【００９３】
また、本実施形態では説明を簡単にするため、描画範囲に含まれる描画オブジェクトは動きのない静的オブジェクトであるものとして説明したが、本発明の実施はこれに限られるものではない。深度値の比較を行うため、静的オブジェクトであることが好ましいが、例えば１フレーム間であれば各描画オブジェクトの変化も小さいと考えられる。このため、評価深度値と前フレーム深度値とが同一とみなせる範囲であれば、本発明を適用することができる。この場合、評価画素に描画されている描画オブジェクトの前フレームからの移動量を考慮し、深度値の比較を行うか否かを判断してもよい。即ち、描画オブジェクトの移動量が閾値以上である場合は、深度値の比較を行わずフレーム内符号化を行うことを決定してもよい。
【００９４】
また、上述した動画配信処理では、現フレームの画面の全てのブロックについて符号化判断処理が行われた後に、得られた符号化詳細情報をＰＣ１００に送信するものとして説明したが、符号化詳細情報の送信タイミングはこれに限られないことは容易に想像されよう。即ち、各ブロックについてフレーム間符号化を行うか否かの判断結果が得られた場合に、全てのブロックについての判断結果が得られるのを待たずに、サーバＣＰＵ２０１は該ブロックの符号化詳細情報をＰＣ１００に送信してもよい。
【００９５】
以上説明したように、本実施形態の動画配信サーバは、描画処理により得られた画面を高速かつ効率的に動画符号化することができる。具体的には動画配信サーバは、描画された画面、該画面の描画に用いられた視点情報、及び該画面に対応する深度バッファを順次取得する。動画配信サーバは、取得された第１の画面を分割した複数のブロックの各々について評価画素を設定し、評価画素に描画されている描画オブジェクトについて、第１の画面よりも前に取得された第２の画面におけるスクリーン座標及び深度値を特定する。また第２の画面に対応する深度バッファにおける、スクリーン座標の深度値と、評価画素に描画されている描画オブジェクトの深度値とを比較し、２つの深度値を同一とみなせるブロックについては第２の画面との間でフレーム間符号化を行うことを決定する。そして第１の画面の描画に用いられた視点情報、第１の画面に対応する深度バッファ、及び第１の画面の各ブロックについてフレーム間符号化が行われるか否かを示す情報を含む符号化詳細情報を外部装置に送信する。
【００９６】
このようにすることで、フレーム間符号化処理に係る計算量を低減し、外部装置における復号に用いる参照データを符号化動画データの受信前に準備することができる。このため、動画再生装置におけるユーザ入力に応じて変化する動画コンテンツを動画配信サーバが配信する場合に、ユーザ入力に対する応答性を高めた動画コンテンツを、動画再生装置のユーザに提供することができる。
【００９７】
［変形例］
上述した実施形態では、フレームの画面の描画とともに深度バッファが得られるものとして説明したが、本発明の実施は、画面の描画手法によっては特に効率化することができる。
【００９８】
従来の描画手法は、ゲーム画面に含まれる描画オブジェクトの各々を順番に選択し、該描画オブジェクトについて
１．バーテックスシェーダによる移動・回転処理
２．ジオメトリシェーダによる頂点処理
３．ピクセルシェーダによるピクセル単位の陰影処理を含むエフェクト処理
を行って描画する。即ち、各描画オブジェクトについて、陰影処理→描画の流れを有する、所謂Forward Renderingであった。Forward Renderingでは、各オブジェクトが逐次処理されるために、ピクセルによっては１つのオブジェクトが描画された後、よりカメラに対して近い位置にある（該オブジェクトよりも手前にある）別のオブジェクトの描画により、描画内容が上書きされてしまうケースがある。この場合、後から描画されたオブジェクトにより遮蔽される、先に描画されたオブジェクトの一部の領域については、適用した陰影処理が無駄になってしまう。また例えば描画するシーンに存在する光源等は、シーンに存在するオブジェクトに対して共通であるが、Forward Renderingでは１つのオブジェクトを描画する際の共通の計算内容を、別のオブジェクトの描画のために再利用することが難しかった。このため、特に複雑な陰影処理を行うゲーム画面の描画においては、Forward Renderingは効率的ではなかった。
【００９９】
これに対しDeferred Renderingでは、Forward Renderingとは異なり、陰影処理に用いるジオメトリの計算を先に行い、全ての描画オブジェクトについての陰影処理を、後からまとめて行う。即ち、ジオメトリ描画→陰影処理→描画の流れを有する２段階の描画処理を行う。Deferred Renderingでは、前段の描画において、ライティングを行わずに陰影処理に用いるパラメータとともにジオメトリの描画処理を行い、陰影処理で使用される中間値を示す複数の中間値マップ（散乱マップ、深度マップ、法線マップ、反射マップ、拡散マップ等）を生成する。そして後段の描画処理において、生成された複数の中間値マップを利用しながら、光源を適用して陰影処理を行なった画面を描画する。
【０１００】
このように、動画配信サーバ２００においてDeferred Renderingによりフレームのゲーム画面を描画する場合、最終的なゲーム画面が得られるよりも前に、前段の描画で深度バッファ（深度マップ）が生成される。即ち、上述した符号化判断処理が、最終的なゲーム画面の描画よりも前に実行することができるため、動画配信サーバ２００は上述した実施形態よりも早い段階で、ＰＣ１００に対して符号化詳細情報を伝送することができる。また、符号化判断処理によりフレーム間符号化の実行が決定されたブロックについては、２パス目の描画中に参照画像の準備に移行することも可能であるため、最終的なゲーム画面を生成してから符号化処理を完了するまでの時間を、より短縮することができる。
【０１０１】
［実施形態２］
上述した実施形態及び変形例では、異なるフレームの描画において生成された深度バッファを用いて、ゲーム画面の符号化処理をイントラ符号化及びインター符号化のいずれの符号化方式を採用するかを決定することで、ゲーム画面を高速かつ効率的に動画符号化する方法を説明した。本実施形態では、動画配信サーバ２００に対して複数の動画再生装置であるＰＣ１００が接続される場合における、ゲーム画面の高速な動画符号化、及び動画符号化データの効率的な配信方法について説明する。
【０１０２】
《動画配信システムの構成》
図１０は、本実施形態に係る動画配信システムのシステム構成を示す図である。なお、本実施形態の説明において、上述した実施形態１と同様の構成及び装置については同一の参照番号を付し、説明を省略するものとする。
【０１０３】
図示されるように、本実施形態の動画配信サーバ２００には、ネットワーク３００を介して複数のＰＣ１００が接続されている。本実施形態では動画配信サーバ２００は、各ＰＣ１００においてなされた操作を受信し、該操作に応じたゲーム画面を１フレームごとに描画する。このとき動画配信サーバ２００は、複数のＰＣ１００の各々に提供するゲーム画面の描画処理及び画面の符号化処理を同時並行して実行するものとする。そして動画配信サーバ２００は、各ＰＣ１００に対して符号化動画データを同時並行して配信する。
【０１０４】
また本実施形態の動画配信システムにおいて、動画配信サーバ２００はネットワーク１１００を介して中央サーバ１０００に接続されている。一般に、オンラインのゲームサービスでは、サービスの負荷分散のために複数の地点にサービス提供用の動画配信サーバ２００が配置される。本実施形態ではこのように複数地点に分散配置された複数の動画配信サーバ２００を、中央サーバ１０００が統合管理する。中央サーバ１０００は、各動画配信サーバ２００から動画配信状況の情報を収集して判断処理を行い、効率的な動画配信を可能にする適切なパラメータを動画配信サーバ２００に対して指示することで、効率的な動画配信を実現させる。
【０１０５】
なお、本実施形態では動画配信サーバ２００と中央サーバ１０００とはネットワーク１１００を介して接続されるものとするが、本発明の実施はこれに限られるものではなく、中央サーバ１０００はＰＣ１００と同様にネットワーク３００を介して動画配信サーバ２００に接続するように設計されていてもよい。また、実際の実施態様を想定して本実施形態では複数地点に分散配置された動画配信サーバ２００を中央サーバ１０００が統合管理するものとして説明するが、本発明の実施はこれに限られない。複数の動画配信サーバ２００は同一地点に各々独立して存在していてもよいし、それらを中央サーバ１０００が統合管理するように設計されていてもよい。この場合、動画配信サーバ２００と中央サーバ１０００はネットワーク１１００を介して接続されず、各機器同士が直接有線接続されるものであってもよい。
【０１０６】
このような本実施形態の動画配信システムにおいては、接続している複数のＰＣ１００に対しての符号化動画データの配信を同時並行に処理する能力が動画配信サーバ２００に対して要求される。しかしながら、オンラインゲームサービスのように、動画配信サーバ２００に接続するクライアント数が時間に応じて変動するサービスの場合、動画配信サーバ２００の性能設計は困難であった。例えば、接続するクライアント数がトラフィックのピーク時間帯におけるサービス提供を基準に性能設計をした場合、ピーク時間帯以外の時間帯においてはインフラ性能に余剰が生じることになる。このような性能設計は、動画配信サーバ２００の導入コストを不要に増加させることになる。また例えばピーク時間帯以外の時間帯におけるサービス提供を基準に性能設計をした場合、ピーク時間帯においては許容クライアント数を超えるクライアントへのサービス提供は不可能であるため、動画配信サーバ２００の導入数を増やす必要があり、結果的に導入コストを不要に増加させることになる。
【０１０７】
本実施形態の動画配信システムでは、このように動画配信サービスにおける動画配信サーバ２００の性能設計をピーク時間帯以外の時間帯を基準に行った場合における、高速な動画符号化及び動画符号化データの効率的な配信方法及び効率的な負荷分散を提案する。
【０１０８】
〈中央サーバ１０００の構成〉
図１１は、本発明の実施形態に係る中央サーバ１０００の機能構成を示すブロック図である。
【０１０９】
中央ＣＰＵ１００１は、中央サーバ１０００が有する各ブロックの動作を制御する。具体的には中央ＣＰＵ１００１は、例えば中央ＲＯＭ１００２に記憶されている各ブロックの動作プログラムを読み出し、中央ＲＡＭ１００３に展開して実行することにより各ブロックの動作を制御する。
【０１１０】
中央ＲＯＭ１００２は、例えば書き換え可能な不揮発性メモリである。中央ＲＯＭ１００２は、中央サーバ１０００が有する各ブロックの動作プログラムに加え、各ブロックの動作において必要となる定数等の情報を記憶する。
【０１１１】
中央ＲＡＭ１００３は、揮発性メモリである。中央ＲＡＭ１００３は、動作プログラムの展開領域としてだけでなく、中央サーバ１０００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域として用いられる。本実施形態では中央ＲＡＭ１００３には、中央サーバ１０００に接続された動画配信サーバ２００における動画配信状況を示す情報が格納される。
【０１１２】
中央通信部１００４は、中央サーバ１０００が有する通信インタフェースである。本実施形態では中央通信部１００４は、ネットワーク１１００を介して接続した動画配信サーバ２００から、動画配信サーバ２００において実行されている動画配信処理に係る動画配信状況を示す情報を受信する。また中央通信部１００４は、中央サーバ１０００における動画配信状況の判断処理の結果得られる、各動画配信サーバ２００への動画配信処理において提供される符号化動画データの品質調整に係るパラメータを、各動画配信サーバ２００に送信する。
【０１１３】
《情報収集処理》
まず各動画配信サーバ２００において実行される、動画配信処理に係る動画配信状況を示す情報を収集する情報収集処理について、図１２のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理はサーバＣＰＵ２０１が、例えばサーバＲＯＭ２０２に格納された対応する処理プログラムを読み出し、サーバＲＡＭ２０３に展開して実行することにより実現することができる。なお、本情報収集処理は、例えば動画配信サーバ２００がＰＣ１００に対する動画配信を行っている間、所定の時間間隔で定期的に実行されるものとして説明する。
【０１１４】
Ｓ１２０１で、サーバＣＰＵ２０１は、動画配信サーバ２００に現在接続しているクライアント数を取得する。現在接続しているクライアント数は、例えばサーバ通信部２０８が各ＰＣ１００からの接続要求を受けた際にサーバＲＡＭ２０３に格納されている接続数の情報が更新されることで、管理されていればよい。
【０１１５】
Ｓ１２０２で、サーバＣＰＵ２０１は、動画配信にあたってクライアント１台あたりに対して使用している平均ＣＰＵ使用率を算出する。具体的にはサーバＣＰＵ２０１は、現在の総ＣＰＵ使用率をＳ１２０１において取得したクライアント数で除することにより、平均ＣＰＵ使用率を算出する。なお、ＣＰＵ使用率とは、ＣＰＵが提供可能なリソースのうち、何パーセントのリソースをクライアント１台について使用しているかを指すものとする。
【０１１６】
Ｓ１２０３で、サーバＣＰＵ２０１は、動画配信にあたってクライアント１台あたりに対して使用している平均ＧＰＵ使用率を同様に算出する。なお、ＧＰＵ使用率とは、ＧＰＵが提供可能なリソースのうち、何パーセントのリソースをクライアント１台について使用しているかを指すものとする。
【０１１７】
Ｓ１２０４で、サーバＣＰＵ２０１は、動画配信にあたってクライアント１台あたりに対して送信している符号化動画データの平均動画データサイズを算出する。本実施形態のような動画配信システムにおいて、各ＰＣ１００では様々な表示解像度で符号化動画データを閲覧することが想定される。即ち、ＰＣ１００においてユーザあるいはアプリケーションは、ＰＣ１００の性能や好みに応じて提供を受ける符号化動画データの解像度を４８０ｐ、７２０ｐ、１０８０ｐ等の中から選択し、対応する符号化動画データを動画配信サーバ２００から受信する。また描画されるシーンによって符号化効率も変わってくるため、各ＰＣ１００に対して提供する符号化動画データのデータサイズは符号化ビットレートを固定にしない限り、様々なデータサイズとなりうる。このように各ＰＣ１００に対して送信する符号化動画データのデータサイズは異なることが想定されるため、サーバＣＰＵ２０１は本ステップにおいて平均動画データサイズを算出する。なお、本実施形態では各ＰＣ１００に対して提供する符号化動画データが、表示解像度及びデータサイズが異なるものとして平均動画データサイズを算出するものとして説明したが、これらが固定であることが保証される場合は、本ステップの処理は行われなくてもよい。
【０１１８】
Ｓ１２０５で、サーバＣＰＵ２０１は、Ｓ１２０２〜Ｓ１２０４における処理で算出した平均ＣＰＵ使用率、平均ＧＰＵ使用率、及び平均動画データサイズを、動画配信状況の情報としてサーバ通信部２０８を介して中央サーバ１０００に送信し、本情報収集処理を完了する。
【０１１９】
《判断処理》
このように動画配信サーバ２００において実行された情報収集処理により得られた動画配信状況の情報を取得した中央サーバ１０００において実行される判断処理について、図１３のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、中央ＣＰＵ１００１が、例えば中央ＲＯＭ１００２に記憶された対応する処理プログラムを読み出し、中央ＲＡＭ１００３に展開して実行することにより実現することができる。なお、本判断処理は、例えば各動画配信サーバ２００から動画配信状況の情報を受信した際や、所定の時間間隔で定期的に実行されるものとして説明する。
【０１２０】
また、以下の説明において、中央サーバ１０００において受信された各動画配信サーバ２００の動画配信状況の情報は、中央ＣＰＵ１００１により中央ＲＡＭ１００３に格納されるものとする。
【０１２１】
Ｓ１３０１で、中央ＣＰＵ１００１は、中央サーバ１０００に接続している各動画配信サーバ２００から受信した動画配信状況の情報を参照し、システム全体としての平均ＣＰＵ使用率、平均ＧＰＵ使用率、及び平均動画データサイズを算出する。具体的には中央ＣＰＵ１００１は、全動画配信サーバ２００から受信したそれぞれの情報について平均値を算出することで、システム全体としての配信状況を特定する。
【０１２２】
Ｓ１３０２で、中央ＣＰＵ１００１は、現在のシステム全体としての動画配信状況の情報に基づいて、システム全体としてサポート可能なクライアント数の予測値を算出する。本実施形態の中央サーバ１０００では、サポート可能なクライアント数の予測値を次の３種類の演算式を用いて算出する。
１．サーバあたりのＣＰＵ数×動画配信サーバ２００数／平均ＣＰＵ使用率
２．サーバあたりのＧＰＵ数×動画配信サーバ２００数／平均ＧＰＵ使用率
３．ネットワーク３００の最大転送可能データサイズ／平均動画データサイズ
【０１２３】
中央ＣＰＵ１００１は、上述の３式から得られた予測値をそれぞれ予測値１、予測値２、予測値３して中央ＲＡＭ１００３に格納する。
【０１２４】
Ｓ１３０３で、中央ＣＰＵ１００１は、Ｓ１３０２において算出した予測値のうちの最も小さいクライアント数の予測値が、最低限サービス提供を行うクライアント数として予め定められたクライアント数Ｚより小さいか否かを判断する。中央ＣＰＵ１００１は、予測値が最低限サービス提供を行うクライアント数Ｚよりも小さいと判断した場合は処理をＳ１３０４に移し、小さくないと判断した場合は本判断処理を完了する。
【０１２５】
Ｓ１３０４で、中央ＣＰＵ１００１は、最も小さいクライアント数の予測値を算出した演算式の解が、最低限サービス提供を行うクライアント数Ｚよりも大きい値となる、各動画配信サーバ２００からＰＣ１００に提供する符号化動画データの最大解像度を決定する。符号化動画データの最大解像度は、上述したように予め提供可能な解像度が定められているものとする。本ステップにおいて中央ＣＰＵ１００１は、このうちのいずれか１つの解像度を提供する符号化動画データの最大解像度として選択する。
【０１２６】
なお、提供する符号化動画データの最大解像度を変更することで減少するＣＰＵ使用率、ＧＰＵ使用率、及び平均動画データサイズの情報は、例えば予め取得され、テーブルとして中央ＲＯＭ１００２等に格納されていればよい。そして中央ＣＰＵ１００１は、該テーブルを参照することで、条件を満たす最大解像度を決定すればよい。またテーブルとして予め記憶されていなくとも、別途各動画配信サーバ２００から各ＰＣ１００に対して提供している符号化動画データの解像度の情報を取得し、該情報に基づいて最適な最大解像度を決定してもよい。
【０１２７】
Ｓ１３０５で、中央ＣＰＵ１００１は、決定した符号化動画データの最大解像度の情報を、中央通信部１００４を介して各動画配信サーバ２００に対して送信し、本判断処理を完了する。
【０１２８】
このように、本実施形態の動画配信システムでは、中央ＣＰＵ１００１が各動画配信サーバ２００における動画配信状況を考慮して、動画配信における符号化動画データの最大解像度を決定して各動画配信サーバ２００に対して通知する。これにより、システム全体において性能設計を超えるクライアント数が動画配信サーバ２００に対して接続した場合であっても、配信する符号化動画データの解像度を低減させ、最低限のサービス品質を維持した状態でサービス提供を行うことができる。
【０１２９】
なお、本実施形態では中央ＣＰＵ１００１は、システム全体として最低限のサービス品質を保証するよう、提供する符号化動画データの最大解像度を決定するものとして説明したが、このとき該最大解像度にしたとしても、リソース内で接続している各ＰＣ１００にサービス提供できない動画配信サーバ２００については、該サーバに接続している一部のクライアントを、接続数の少ないネットワーク１１００上の他の動画配信サーバ２００に接続するよう、ワークロードのバランス調整を行ってもよい。
【０１３０】
《動画配信処理》
以下、本実施形態の動画配信システムの動画配信サーバ２００において実行される動画配信システムについて、図１４のフローチャートを用いて具体的な処理を説明する。なお、本動画配信処理において実施形態１の動画配信処理と同様の処理を行うステップについては、同一の参照番号を付して説明を省略し、本実施形態において特徴的な処理についてのみ以下に説明する。
【０１３１】
Ｓ１４０１で、サーバＣＰＵ２０１は、符号化動画データの最大解像度が設定されているか否かを判断する。具体的にはサーバＣＰＵ２０１は、中央サーバ１０００から受信した符号化動画データの最大解像度の情報がサーバＲＡＭ２０３に格納されているか否かにより、本ステップの判断を行う。サーバＣＰＵ２０１は、符号化動画データの最大解像度が設定されていると判断した場合は処理をＳ１４０２に移し、設定されていないと判断した場合は処理をＳ４０１に移す。
【０１３２】
Ｓ１４０２で、サーバＣＰＵ２０１は、ゲーム画面の提供先のＰＣ１００から最大解像度より大きい解像度での符号化動画データの提供が要求されているか否かを判断する。サーバＣＰＵ２０１は、要求されている符号化動画データの解像度が最大解像度より大きいと判断した場合は処理をＳ１４０３に移し、最大解像度未満であると判断した場合は処理をＳ４０１に移す。
【０１３３】
Ｓ１４０３で、サーバＣＰＵ２０１は、Ｓ４０２で描画するゲーム画面の解像度を中央サーバ１０００により提供された最大解像度に設定し、処理をＳ４０１に移す。
【０１３４】
このようにすることで、動画配信処理において描画されるゲーム画面の最大解像度を設定することができる。また、このようにゲーム画面の最大解像度が設定されることで、同時に生成される深度バッファの解像度も最大解像度も規定されるため、上述した符号化判断処理における処理量も低減することができる。
【０１３５】
以上説明したように、本実施形態の動画配信システムでは、システムに接続しているクライアント数及び動画配信状況に応じて、ゲーム画面の高速に動画符号化し、動画符号化データを効率的に配信することができる。なお、本実施形態では中央サーバ１０００がシステム全体の動画配信状況を考慮して、配信する符号化動画データの最大解像度を設定するものとして説明したが、本発明の実施はこれに限られるものではなく、上述した判断処理は例えば動画配信サーバ２００の各々で実行されてもよい。即ち、システム全体を考慮するのではなく、接続されているクライアントについての動画配信状況を考慮して、動画配信サーバ２００の各々が判断処理を行って、動画配信における最大解像度を動的に変更しながら動画配信を行ってもよい。
【０１３６】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【０１３７】
本願は、２０１２年２月２３日提出の日本国特許出願特願２０１２−０３７７６９、及び２０１２年４月２５日提出の日本国特許出願特願２０１２−１００３２８を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
【図１】
2013125220.tif 000003
【図２】
2013125220.tif 000004
【図３】
2013125220.tif 000005
【図４】
2013125220.tif 000006
【図５】
2013125220.tif 000007
【図６】
2013125220.tif 000008
【図７】
2013125220.tif 000009
【図８】
2013125220.tif 000010
【図９】
2013125220.tif 000011
【図１０】
2013125220.tif 000012
【図１１】
2013125220.tif 000013
【図１２】
2013125220.tif 000014
【図１３】
2013125220.tif 000015
【図１４】
2013125220.tif 000016
【国際調査報告】
2013125220.tif 000017
2013125220.tif 000018
2013125220.tif 000019
2013125220.tif 000020