【文献】
青木秀一、次世代放送システムのメディアトランスポート技術、NHK技研 R&D、2013年7月、No.140、22〜31頁
(58)【調査した分野】(Int.Cl.,DB名)
上記プロセッサはさらに、各コンテナフレーム内の上記受信された複数の仮想フレームの第2の選択された仮想フレームに第2の符号化物を関連付け、上記コンテナタイムスタンプに従って上記第2の選択された仮想フレームの第2の仮想ストリームを再構成するように適合され、
上記モニタは、上記第1の仮想ストリーム及び上記第2の仮想ストリームの両方をユーザに対して表示するように適合される請求項1記載のディスプレイシステム。
【発明を実施するための形態】
【0016】
前述した発明の概要及び後述する発明を実施するための形態の追加の説明は、添付された図面と共に読んだとき、よりよく理解される可能性がある。開示したシステム及び方法の潜在的な実施形態が図示されたものに限定しないことが理解される。
【0017】
出願人はここで、ソースビデオストリームの複数の符号化物をストリーミングするためのシステム及び方法を開示する。例示の実施形態では、ソースビデオ装置システムは、複数のソースビデオフレームを含むソースビデオの取り込み及び/又は受信を行ってもよい。符号化前のビデオは「ソースビデオ」と呼ばれ、ビデオの各フレームは「ソースフレーム」と呼ばれる。ソースビデオ装置システムは、ソースビデオフレームを仮想フレームへ符号化する。仮想フレームのそれぞれは、少なくとも1つの異なる符号化パラメータを用いて符号化されている。符号化パラメータは、例えば、関心対象領域、フレームレート、ビデオ品質、ビデオ解像度、及び圧縮技術/符号化フォーマットを含む、任意の適切なものであってもよい。ソースビデオ装置システムは、仮想フレームからコンテナフレームを形成し、ネットワークを介してコンテナフレームを送信する。例示の実施形態において、コンテナフレームは、特定のソースフレームに関連付けられた仮想フレームと、コンテナフレームにおける仮想フレームのすべてに適用可能なコンテナタイムスタンプとを含む。
【0018】
クライアントにソースビデオの複数の符号化物を送信するとき、クライアントが、受信する複数の符号化物からのフレームを同期化可能であることが望ましい。同期化は少なくとも以下の2つの問題を扱う。
1)クライアントが符号化物のうちのあるものから他のものに切り換えるとき、符号化物間の任意の時間オフセットは、ビデオにおける不連続(又は時間的な「ジャンプ」)として現れる。これは望ましくない。
2)クライアントがソースビデオの隣接した複数の関心対象領域(region of interest:以下では「ROI」とも呼び、これらの用語は互いに交換可能である)を表す複数の符号化物を同時に表示しているとき、それらの符号化物間の任意の時間オフセットは、それらの関心対象領域間で交差する任意の目標物に、不連続、又は時間的な「ジャンプ」を経験させる。このことは、目標物がそれらの関心対象領域間で滑らかに遷移することを妨げる。これもまた望ましくない。
【0019】
ビデオを同期させる複数の従来の方法がある。例えば、JPEG2000フォーマットを用いて符号化物が形成されるとき、複数の異なる解像度及び画像タイルを同じビットストリームへ埋め込むことができる。この技術に係る問題点は、消費者空間において広くは採用されていないJPEG2000に圧縮標準が限定されていることと、異なる解像度及びタイルを互いに分離することがビットストリームの構文解析を必要とすることとを含む。
【0020】
もう1つの例示として、リアルタイム送信のための最も一般的なメディアトランスポートプロトコルであるリアルタイムトランスポートプロトコル(RTP)上でビデオを送信するとき、RTP制御プロトコル(RTCP)は、各ストリームの各ビデオフレームについて、ストリームを生成して送信するカメラによって生成された協定世界時(UTC)の時間を回復するために使用される。この方法で複数の符号化物を送信するとき、カメラは、符号化物のそれぞれを送信するために異なるRTPストリームを使用する。フレームについてUTC時間を回復し、その時間を用いて異なるストリームからのビデオを同期させることができる。しかしながら、カメラ時間におけるUTCは、それが同期させられる時間ソースにおける変化に起因して、又は、その時間ソースにおける不正確さに起因して、不連続、又は時間的な「ジャンプ」を経験する可能性がある。UTC時間におけるいかなるジャンプも、結果的に、各フレームについて回復されたUTC時間における変化をもたらす。しかしながら、この時間変化は各ストリームに同時には影響しない。従って、異なるストリームのフレームは、カメラにおけるUTC時間ジャンプが生じるごとに一時的に非同期になる。これはユーザの観点から見て不適当である。
【0021】
クライアントにおける異なるストリーム間のフレームの同期化の必要性を回避するために、また、本明細書で説明するように、カメラにおける異なる符号化物のフレームを同期させて、同じUTCタイムスタンプを有するすべてのフレームを1つのコンテナフレームにラップし、複数のコンテナフレームからなる単一のストリームをクライアントに送信することができる。例えばカメラのようなビデオソース装置は、ソースフレームを含むソースビデオを生成する。カメラは、UTCタイムスタンプを各ソースフレームに適用する(「ソースフレームタイムスタンプ」)。ビデオソース装置は、各ソースフレームの複数の符号化物を生成し、そのそれぞれは、少なくとも1つの異なる符号化パラメータを用いることにより他の符号化物から識別される。ソースフレーム符号化物のそれぞれは同じソースフレームから生成されるので、それらはすべて同じタイムスタンプを共有する。ビデオソース装置は、共通のタイムスタンプを共有するソースフレーム符号化物から1つのコンテナフレームを生成する。ビデオソース装置は、コンテナフレームのヘッダ(「コンテナフレームヘッダ」)に、様々なソースフレーム符号化物のタイムスタンプに同一であるタイムスタンプ(「コンテナタイムスタンプ」)を付加する。ビデオソース装置は、さらに詳細に以下で議論されるように、仮想ストリーム識別子又は「vstream id」を含むデリミタを含むヘッダ(「仮想フレームヘッダ」)を有する異なるソースフレーム符号化物をそれぞれ含むフレームを生成することによって、以下では「仮想フレーム」とも呼ばれるものを生成する。複数の符号化物のうちのいずれか1つの仮想フレームは、まとめて「仮想ストリーム」を構成する。本明細書で使用されるように、コンテナ及び仮想フレームは、典型的には、OSIモデルのデータリンク層におけるデータ構造と比較して、OSIモデルのアプリケーション層におけるデータ構造を参照する。
【0022】
例示的な符号化システム
図1は、ビデオの複数解像度符号化物(複数解像度の符号化物)を提供することができる監視システム100を示す。
図1の例示の実施形態は、仮想ストリーム間で異なる可能性がある符号化パラメータの一例として、異なるソースの関心対象領域の複数解像度を用いているが、代替例では、仮想ストリーム間で任意の1つ又は複数の符号化パラメータが異なっていてもよい。システム100は、複数のビデオソース装置110、114からビデオを受信することと、受信されたビデオの記憶装置を管理することと、ビデオを1つ又は複数クライアント142へストリーミングすることとを含む様々な機能を提供する制御サーバ102を含む。制御サーバ102は、1つ以上の物理的コンピュータによって、及び/又は、1つ以上の仮想コンピュータによって提供されてもよい。1つの代替の実施形態(図示せず)において、制御サーバ102機能は、ビデオソース装置110、114のうちの1つ又は複数自体によって実装可能である。次いで、それらは、複数解像度符号化物をクライアント142に直接に送信することができる。制御サーバ102は、複数のディジタルIPカメラ110a、110b、110c、110d(まとめてIPカメラ110と呼ぶ)に接続されるとともに、複数のストリーミングエンコーダ114a、114b(まとめてエンコーダ114と呼ぶ)に接続されてもよい。エンコーダ114は、1つ又は複数のディジタル又はアナログカメラ112a、112b、112c(まとめてカメラ112と呼ぶ)に接続されてもよい。IPカメラ110及びエンコーダ114を、まとめて、ビデオソース装置と呼ぶこともある。ビデオソース装置は、ネットワーク116を介して制御サーバ102へビデオをストリーミングしてもよい。ネットワーク116は、任意の適切な技術を備えてもよく、ネットワーク116は、例えば、有線のローカルエリアネットワーク(LAN)、無線のローカルエリアネットワーク(WLAN)、さらにワイドエリアネットワーク(WAN)を含む、1つ又は複数の個々のネットワークによって提供されてもよい。
【0023】
制御サーバ102は、仮想ストリームマネージャ機能を備えてもよい。制御サーバ102が装置から受信する仮想ストリームを管理する、制御サーバ102に常駐の仮想ストリームマネージャを、以下では、「サーバ・装置仮想ストリームマネージャ」又は「サーバ・装置VSマネージャ」104とする。サーバ・装置VSマネージャ104は、独立の複数解像度符号化物をストリーミングするためにビデオソース装置110、114を構成する機能を提供する。サーバ・装置VSマネージャ104は、ビデオソース装置110、114からストリームを受信し、受信されたストリームを個々の仮想ストリームへ多重分離する機能を備えてもよい。多重分離された仮想ストリームは、例えば、複数の仮想ストリームのうちの1つ又は複数を除去することにより、異なる方法で合成されて再び多重化されてもよい。ビデオソース装置110、114からのストリームの個々の仮想ストリームは、記憶のために記憶装置管理機能108に提供されることが可能である。さらに、個々の仮想ストリームの1つ又は複数は、追加の仮想ストリームマネージャ機能に提供されてもよく、特に、制御サーバ102がクライアント142に送信する仮想ストリームを管理する、制御サーバ102に常駐する仮想ストリームマネージャを、以下では、「サーバ・クライアント仮想ストリームマネージャ」又は「サーバ・クライアントVSマネージャ」106とする。個々の仮想ストリームは、記憶装置管理機能108及びサーバ・装置VSマネージャ104のいずれかから、サーバ・クライアントVSマネージャ106に提供されてもよい。サーバ・クライアントVSマネージャ106は、1つ以上の仮想ストリームを、ネットワーク144を介してクライアント142へストリーミングする。
【0024】
ビデオソース装置110、114のそれぞれは、各ビデオソース装置110、114の能力と、ネットワーク116の帯域幅、ネットワーク144の帯域幅、利用可能な記憶スペース、及び監視システムの要件のような、他の構成要素の能力と、ビデオソース装置110、114の動作にとって本質的な他の適切なパラメータとに依存して、様々な仮想ストリーム符号化物を提供するように構成されてもよい。ビデオソース装置110、114は、単一解像度符号化物又は複数の個別解像度符号化物を提供してもよい。さらに、各解像度符号化物は、多数の仮想ストリームによって提供されてもよい。ストリーム118は、
図1では、IPカメラ110からネットワーク116を介して制御サーバ102にストリーミングされるように示す。
【0025】
図示するように、ストリーム118は、多数の個別解像度符号化物120、122、124を備える。個別解像度符号化物120、122、124は、ソースビデオの同じ部分を符号化したものとして図示される。それは、カメラ110aのセンサの関心対象領域の実質的に全体であることが意図される。例えば、解像度符号化物120はソースのフル解像度で符号化されてもよく、解像度符号化物122はソース解像度の2分の1で符号化されてもよく、解像度符号化物124はソース解像度の4分の1で符号化されてもよい。個別解像度符号化物120、122、124のそれぞれは、H.264又はJPEGのような各符号化フォーマットを用いて、ソースビデオを符号化する。代替の実施形態において、解像度を調整する代わりに、ストリーム118は、解像度に加えて、又は解像度に代えて、フレームレート及びビデオ品質のような1つ以上の異なる符号化パラメータを変化させることで符号化されてもよい。
【0026】
個別解像度符号化物120、122、124のそれぞれは、ストリーム118内の1つ又は複数の仮想ストリーム126、128、130によって提供されてもよい。
各仮想ストリーム126、128、130は、各解像度符号化物120、122、124の圧縮レベルで符号化されたビデオソースの少なくとも一部を含む。図示するように、フル解像度符号化物120は、仮想ストリームの3×4タイリングによって提供される。12個の仮想ストリーム126のそれぞれは、同じ符号化フォーマットで符号化され、12個の仮想ストリームが互いに合成されるとき、それらはフル解像度のソースビデオを提供する。代替の実施形態において、これらの12個の仮想ストリームのうちの任意の1つ又は複数を符号化するために、異なる符号化フォーマット又は異なる符号化パラメータが使用可能である。解像度符号化物122は、単一の仮想ストリームによって提供されるものとして図示される。従って、仮想ストリーム128は、ビデオソースの1/2の解像度を有してもよい。同様に、仮想ストリーム130は、ビデオソースの1/4の解像度を有してもよい。より大きな領域のタイリングを提供するものとして説明したが、仮想ストリームはタイルを形成する必要はなく、むしろ、各仮想ストリームは、フルソースビデオを含んでもよい特定の関心対象領域又はその部分を符号化してもよい。様々な仮想ストリームは、同じ関心対象領域で重複してもよく、又は、ソースビデオの重複しない部分を符号化してもよい。
【0027】
サーバ・装置VSマネージャ104は、ストリーム118のような、ビデオソース装置110、114からのストリームを受信してもよい。サーバ・装置VSマネージャ104は、受信されたストリーム118から、個別解像度符号化120、122、124の仮想ストリームを多重分離してもよい。多重分離された仮想ストリームは、記憶装置管理機能108にわたされてもよい。さらに、複数の仮想ストリームのうちの1つ又は複数は、クライアント142にストリーミングするためにサーバ・クライアントVSマネージャ106にわたされてもよい。
【0028】
図示するように、記憶装置管理機能108は、解像度符号化物の仮想ストリームをデータ記憶装置132に格納する。記憶装置管理機能108は、解像度符号化物134の各々をデータ記憶装置へわたしてもよい。記憶装置管理機能108及びデータ記憶装置132は、必要とされる記憶容量を減らすために、複数の異なる記憶装置セクション又は層にビデオデータを格納してもよい。図示するように、短期記憶装置層136が解像度符号化物の各々を格納してもよい。所定期間が経過した後、フル解像度符号化物がもはや格納される必要はないと決定されてもよい。フル解像度符号化物は記憶装置から削除されてもよく、残りの解像度符号化物が記憶装置層138に格納されていてもよい。同様に、所定期間の後、中解像度符号化物がもはや格納される必要はないと決定されてもよく、また、それ自体は記憶装置から除去されてもよく、残りの解像度符号化物は140として格納されていてもよい。例示の実施形態において、仮想ストリームは、記憶領域又は層136、138、及び140のそれぞれにおいて別々に格納され、各仮想ストリームが格納されていた期間又は時間長は独立して保持される。そのような実施形態では、所定期間が経過した後、記憶領域136、138、及び140に格納されたままであった仮想ストリームからコンテナフレームが再構成されてもよい。
【0029】
データ記憶装置132は、制御サーバと同じ計算システムによって提供されてもよい。追加的又は代替的に、データ記憶装置は別個の計算装置によって提供されてもよい。さらになお、制御サーバに直接に接続されるように図示したが、データ記憶装置はネットワークによって制御サーバに接続されてもよいことが意図される。
【0030】
上述したように、サーバ・クライアントVSマネージャ106は、ネットワーク144を介してモニタリングクライアント142にストリーミングするために、サーバ・装置VSマネージャ104及び記憶装置管理機能108のいずれかから解像度符号化物を受信してもよい。複数の解像度符号化物は、複数の異なるビデオソース装置からのものであってもよい。図示したように、各解像度符号化物146a、146b、146c、146dは個々にストリーミングされてもよく、又は、複数の解像度符号化物のうちの1つ又は複数は互いに合成されて単一のストリームにされてもよい。図示するように、複数の異なるビデオソース装置からの低解像度符号化物に対応する多数の仮想ストリーム148a、148b、148c、148dは、モニタリング装置142にストリーミングされる。モニタリング装置142は、仮想ストリーム148a、148b、148c、148dを受信して復号し、復号されたビデオ150を表示してもよい。
【0031】
図1には図示しないが、代替として、モニタリングクライアント142のようなクライアント装置、または、制御サーバ102のようなサーバにおいて実行中のクライアントプロセスは、仮想ストリーム148a、148b、148c、148dの1つ又は複数を受信して復号し、ビデオ150と同様である合成ビデオストリームを作成してもよい。ただし、それは表示されない。代わりに、そのようなクライアント装置又は処理は、セルラー電話機、ラップトップコンピュータ、タブレットなどのような移動体装置上に表示される合成ビデオストリームを再符号化し、次に、再符号化された合成ストリームをネットワーク116又はネットワーク144のようなネットワークを介して移動体装置に送信してもよい。その後、移動体装置は、移動体装置のユーザのために移動体フォーマットでビデオを表示してもよい。
【0032】
図2は、ビデオの複数の異なる解像度符号化物を表示するモニタを示す。モニタはコンピュータモニタであってもよいが、代替として、それは、タブレット型コンピュータのディスプレイ、スマートフォンディスプレイ、タイリングされたディスプレイのような任意の適切なディスプレイであってもよい。
図2は、3つの異なるビュー200、212、218を示す。最初に、モニタリングクライアントはビュー200を表示する。それは4つの仮想ストリームの最低解像度符号化物202、204、206、208を含む。例えば、4つの異なるカメラからの仮想ストリームが同時に表示されてもよい。低解像度符号化物202のうちの1つは、ズームインするために、例えばそれをマウス又は他のポインタ210でクリックすることで選択されてもよい。解像度符号化物202が全画面で表示されるとき、符号化物の品質は所望よりも低い可能性がある。従って、選択されたカメラのビューからの中解像度符号化物214が、ビュー212に示すようにストリーミングされて表示されることが可能である。ユーザは、表示された解像度符号化物214の一部216を見るためにさらにズームインすることを望んでもよい。再び、所望の画質を提供するためにズームインするとき、解像度符号化物214の品質は十分ではない可能性がある。従って、ビュー218に示すように部分220にズームインしたものを表示する際に、フル解像度符号化物が使用可能である。
【0033】
上述したように、フル解像度符号化物は多数の仮想ストリームを含んでもよい。従って、選択されたズームインされた領域を覆うフル解像度符号化物の仮想ストリームのみが、モニタリングクライアント142にストリーミングされる必要がある。例えば、フル解像度が仮想ストリームの4×3グリッドとして提供される場合、上の行及び第3及び第4列における仮想ストリームが所望の領域を覆ってもよい。
【0034】
上述したように、複数カメラからのビデオが表示されているか否か、又は、表示のために単一カメラの小部分にズームインしているか否かにかかわらず、複数の仮想ストリームを供給することは、ビデオをモニタリング場所へストリーミングするとき、帯域幅の効率的な使用を可能にする。
【0035】
図3は、ビデオソース装置及び機能と、複数解像度符号化物をストリーミングすることができる制御サーバ及び機能とを示す。システム300は、制御サーバ302及びビデオソース装置316を備えるものとして図示される。制御サーバ302は、命令を処理するための中央処理装置304を備える。その命令はメモリ306に格納されてもよい。制御サーバ302は、データ及び命令の永続的な記憶のための不揮発性記憶装置308をさらに備えてもよい。制御サーバ302は、1つ又は複数の入力/出力(I/O)インターフェース310をさらに備えてもよい。I/Oインターフェースは、入力及び/又は出力構成要素が制御サーバに接続されることを可能にする。例えば、制御サーバ302を通信ネットワークに接続するために、制御サーバ302にネットワークインターフェースカード(NIC)が接続されていてもよい。
【0036】
CPU304は、メモリに格納された命令を実行してもよい。312として示す命令は、実行されたとき、上述した機能を実行するように、さらに、以下に述べる機能を有するサーバ・装置VSマネージャ314を実装するように、制御サーバ302を構成してもよい。
【0037】
ビデオソース装置316は、例えばカメラ装置又はシステムであってもよく、それは、命令を処理するための中央処理装置318を備える。その命令はメモリ320に格納されてもよい。ビデオソース装置316は、データ及び命令の永続的な記憶のための不揮発性記憶装置322をさらに備えてもよい。ビデオソース装置316は、1つ又は複数の入力/出力(I/O)インターフェース324をさらに備えてもよい。I/Oインターフェースは、入力及び/又は出力構成要素がビデオキャプチャに接続されることを可能にする。例えば、ビデオソース装置316を通信ネットワークに接続するために、入力/出力インターフェース324にネットワークインターフェースカード(NIC)が接続されていてもよい。さらに、ビデオソース装置316がカメラである場合、IPであってもアナログであっても、画像データを取り込むために、I/OインターフェースはCPUにさらにセンサを接続してもよい。
【0038】
CPU318は、メモリに格納された命令を実行してもよい。326として示す命令は、実行されたとき、装置仮想ストリーム(VS)マネージャ328及びエンコーダ機能330を提供するように、ビデオソース装置316を構成してもよい。
【0039】
制御サーバ302のサーバ・装置仮想ストリーム(VS)マネージャ314と、ビデオソース装置316の装置VSマネージャ328とは、所望又は必要に応じて、例えばカメラを含んでもよい、ビデオソース装置316を構成332するために協働する。エンコーダ機能330は、ビデオ及び指定された設定内容をそれぞれ符号化することができる複数の符号化構成要素を提供するために構成されてもよい。それらは、個々に符号化されたタイルの多数の行及び列を含んでもよい。符号化構成要素によって提供された符号化物は、データストリーム334によって示すように、制御サーバ302にストリーミングされることが可能である。
【0040】
図面及び本明細書ではビデオソース装置316及びサーバ102を別々に参照しているが、いくつかの実施形態では、両方の説明されたシステムからの機能が単一のシステムに存在してもよいことが認識される。例えば、ビデオソース装置316は、カメラ及び画像収集にも関して本明細書で説明した機能と、制御サーバ102に関して本明細書で説明した機能とのすべてを提供するカメラシステムであってもよい。そのような実施形態において、カメラシステムは、他のカメラシステムを制御して通信する能力を備えるサーバとして動作してもよい。
【0041】
図4は、ビデオソース装置機能と、複数解像度符号化物をストリーミングすることができる制御サーバ機能とをさらに示す。機能は、例えば、メモリに格納された命令によって、上述した制御サーバ302に提供されてもよい。制御サーバ302のCPUによって実行されたとき、命令は、ネットワーク層プロトコル機能402、アプリケーション層プロトコル機能404、及び構成機能408を提供してもよい。他の機能が制御サーバ302に提供されてもよいことが認識される。
【0042】
同様に、ビデオソース装置機能は、プロセッサにより命令を実行することにより、上述したビデオソース装置316のようなビデオソース装置に提供されてもよい。ビデオソース装置機能は、ネットワーク層プロトコル機能410、エンコーダ機能412、及びアプリケーション層プロトコル機能414を含んでもよい。ビデオソース装置は、
図4に図示しない追加の機能を提供してもよい。
【0043】
制御サーバ302及びビデオソース装置316のネットワーク層プロトコル機能402、410は、所望の方法でビデオソース装置316を構成するために協働する。ネットワーク層プロトコル機能402、410は、標準化されたネットワークインターフェースをビデオ装置に提供し、準拠した装置の発見、構成、管理、及び制御を可能にする。ネットワーク層プロトコル機能402、410は、ビデオソース装置316及びその能力の発見を可能にするとともに、装置316の構成を可能にする、制御サーバ302及びビデオソース装置316の間の共通インターフェースを提供する。さらに以下で説明されるように、ネットワーク層プロトコル機能402、410は、上述したように、特定の関心対象領域の符号化物を含む、複数の独立の解像度符号化物をストリーミングするように装置316をセットアップするためにエンコーダ機能416を構成するために使用されてもよい。いったん所望のように構成されると、ビデオソース装置316は、構成された解像度符号化物のデータストリームを提供するために、構成されたエンコーダ機能を用いてソースビデオを符号化してもよい。エンコーダからのデータストリームは、データストリーム418のリアルタイム制御及びトランスポートを提供するアプリケーション層プロトコル機能404、414を用いて、ビデオソース装置316から制御サーバ302に送信可能である。
【0044】
いったんデータストリーム418が制御サーバ302において受信されると、それは、同じ解像度符号化物に属する仮想ストリームをともにグループ化するために処理されてもよい。上述したように、単一解像度符号化物は、1つ以上の独立して符号化された関心対象領域から構成されていてもよい。その後、解像度符号化物は、所望により、例えば記憶のため又はモニタリングクライアントへのストリーミングのために、さらに処理されてもよい。
【0045】
制御サーバ302は構成機能408を備えてもよい。構成機能408は、ユーザが監視システムの構成要素の構成パラメータを設定すること、閲覧すること、及び/又は修正することを可能にしてもよい。例えば、構成機能は、ビデオソース装置のための所望のエンコーダ構成を可能にしてもよい。
【0046】
図5Aは、多重化された仮想フレームとそれらの仮想フレームを記述するために使用される記述子とを含むコンテナフレーム506を示す。
図5Aにおいて、単一のセッションに関連付けられた2つのフレーム、すなわち、ビデオデータを格納するコンテナフレーム506と、対応するオーディオデータを格納するオーディオフレーム507とが示される。コンテナフレーム506及びオーディオフレーム507は、ビデオ及びオーディオデータをそれぞれ保持するために使用されるデータ構造のインメモリ表現として図示される。フレーム506、507の各々は、記述子、タイムスタンプ、及びペイロードを含む。コンテナフレーム506のペイロードは、仮想ストリームのそれぞれのペイロードを指す間接テーブルを含む。
図5Aの例示の実施形態でオーディオフレームがビデオフレームに関連付けられているが、オーディオフレームはオプションであることが認識される。さらに、オーディオフレームは単なる例であり、例えばメタデータのような他の情報が、オーディオフレームに関して本明細書で説明した方法で仮想フレームとともに同様にストリーミングされてもよい。
【0047】
図6に関して以下でさらに詳細に議論されるように、ビデオソース装置から制御サーバ302にコンテナ及びオーディオフレーム506、507を送信する前に、セッション記述は、まず、TCP、HTTP、又はRTSPのような信頼できるトランスポート機構上で記述される。コンテナ及びオーディオフレーム506、507からの記述子は、それらのフレーム506、507から検索され、セッション記述情報509へシリアル化される。一実施形態では、それは、計算メモリにおいてファイルとして存在してもよい。記述情報/ファイル509は、コンテナ及びオーディオフレーム506、507を備えるオーディオ及びビデオの特性と、ネットワークを介してそれらのメディアファイルをストリーミングするためにトランスポートを確立することができるURI(uniform resource identifier)とを列挙する。仮想ストリームは、パケットレベルトランスポートの多重化及び多重分離のために使用されるvstream idのような追加の特性と、ソースROI及び画像解像度のような符号化パラメータとを含む。
【0048】
一実施形態において、フレーム506、507の各々は、パケット化されて、UDPのような低信頼性のトランスポート機構を介してビデオソース装置から制御サーバに送られる。代替の実施形態において、フレーム506、507を送信するために異なるトランスポート機構が使用されてもよい。
【0049】
図5Bに示すビデオストリーム118の部分は、第1及び第2のコンテナフレーム506a〜c(まとめて「コンテナフレーム506」)を含む。これらのコンテナフレームは、それらをネットワーク116を介して制御サーバへ送信する前にビデオソース装置によって準備される。コンテナフレーム506a〜cの各々は、そのコンテナフレーム506a〜cのすべての仮想フレーム508に共通のタイムスタンプ510a〜cをそれぞれ含む。仮想フレームヘッダの各々は、仮想フレーム508のそれぞれの境界を互いに定めるフレームデリミタを備え、この例示の実施形態において、フレームデリミタはvstream idを含む。
図5Bのコンテナフレーム506はそれぞれ、H.264符号化されたビデオのための1つの仮想フレーム508a、c、eと、JPEG符号化されたビデオでためのもう1つの仮想フレーム508b、d、fとを含む。それ自体のタイムスタンプをそれぞれ有する別個のストリームを介してH.264及びJPEGビデオを制御サーバに送信することとは対照的に、図示した実施形態において、H.264及びJPEGビデオをコンテナフレーム506に配置して次にコンテナフレーム506を送信することは、本質的に、H.264及びJPEGビデオを時分割多重して制御サーバへ送る。
【0050】
単一ソースフレームのタイムスタンプを仮想フレーム508のグループに関連付けることは、仮想フレーム508間の同期化を容易にし、従って、異なる仮想ストリームからのビデオがクライアント142上に表示されることと、待ち時間の削減とを容易にする。サーバ・装置VSマネージャ314がストリーム118を受信するとき、それは、
図5Bに示すように、各フレーム506のタイムスタンプ510に基づいてコンテナフレーム506のそれぞれを多重分離することができ、続いて、コンテナフレーム506を互いに多重分離し、コンテナフレーム506内の他の任意の仮想フレーム508から仮想フレーム508のそれぞれを多重分離することができる。制御サーバ302は、続いて、所望により、データ記憶装置132にコンテナフレーム506を格納することなどによって、コンテナフレーム506及び仮想フレーム508の任意の1つ又は複数を処理することができる。
【0051】
図6は、複数解像度符号化物を提供する個々の仮想ストリームを記述するビデオソース装置316からの応答を示し、セッション記述情報/ファイル509の特定の例である。応答600は、ビデオソース装置316から提供されるストリームを記述してもよい。応答600は、ビデオストリームにおける仮想ストリームの各々を記述する。ビデオストリームは、多数の個々の仮想ストリーム610a、610b、610c、612、及び614を有してもよい。各仮想ストリームの符号化パラメータが提供される。例えば、各仮想ストリームは、仮想ストリームの一意の識別子602、仮想ストリームによって符号化されたビデオソースの領域又は関心対象領域604、符号化された仮想ストリームの結果の解像度606、及び符号化された仮想ストリーム608の品質の表示を含んでもよい。概略的に図示するように、複数の仮想ストリームは、同じエンコーダ設定で異なる関心対象領域を符号化してもよい。例えば、仮想ストリーム610a、610b、610cは、同じエンコーダ設定でソースビデオの異なる関心対象領域を符号化する。さらに、複数の仮想ストリームは、同じ関心対象領域を異なるパラメータ設定で符号化してもよい。例えば、仮想ストリーム612及び614は同じ関心対象領域を符号化するが、異なる解像度をもたらす。ストリームの記述600は様々なフォーマットで提供され、制御サーバのようなストリームを受信する構成要素が成分仮想ストリームを適切に多重分離して識別できるようにするために十分な情報を提供する。
【0052】
図7は、異なる解像度におけるタイルの符号化を示す。仮想ストリームは、ビデオソースの特定の領域を特定のサイズに符号化してもよい。例えば、ソースビデオは、4944×3280の領域702を有してもよい。第1の仮想ストリームは、ソースビデオの左上であるx=0、y=0に位置して寸法1232×1080を有する、合計領域の一部704を符号化してもよい。第1の仮想ストリームは、領域704のフル解像度符号化物を提供してもよく、それは、寸法1232×1080を有する第1の仮想ストリーム符号化706を結果としてもたらす。第2の仮想ストリームは同じ領域704を符号化してもよい。しかしながら、符号化は、ソース解像度の1/4を提供するために解像度をダウンサンプリングしてもよい。そのため、同じソースビデオ領域704を符号化する第2の仮想ストリーム708は、308×270の寸法を有する。
【0053】
図8は、ビデオソース装置316から制御サーバ302にデータをストリーミングする方法800を示す。ブロック802において、ビデオソース装置の符号化構成要素が構成される。構成動作は、1つ又は複数の構成コマンドを、例えば制御サーバ302からエンコーダ114を備えてもよい1つ又は複数のビデオソース装置316に送信することを含んでもよい。ビデオソース装置316の符号化構成要素は、ビデオソース装置316から送られたストリーム内で多数の仮想ストリームを提供するために構成される。符号化構成要素は、ソースビデオの少なくとも一部の独立の解像度符号化物を提供するために構成されてもよい。独立の解像度符号化物の少なくとも1つは、解像度符号化物のモザイクのタイルをそれぞれ備える複数の仮想ストリームによって提供される。ビデオソース装置316に備えられた符号化構成要素は、各仮想ストリームを提供するように構成されてもよい。
【0054】
いったんストリームのための符号化構成要素が構成されると、ブロック804において、
図5A(参照番号509)及び
図6(参照番号600)に関して上述したようなストリームの記述は、ビデオソース装置316から制御サーバ302に伝送される。例示の実施形態において、ストリーム記述509は、制御サーバ302によって送られた記述要求に応じて、ビデオソース装置316によって制御サーバ302へ提供されてもよい。受信された記述509は、ビデオソース装置316が提供するように構成される複数の個々のストリームを記述する。所望の解像度符号化物の各々は、記述509に記述された1つ又は複数の仮想ストリームによって提供されてもよい。各仮想ストリームの記述509は、仮想ストリームの識別子、仮想ストリームの符号化情報、及び仮想ストリームによって符号化されるソースビデオの領域の表示を含んでもよい。
【0055】
ブロック806において、データストリーム自体がビデオソース装置316から伝送され、制御サーバ302において受信される。ブロック808において、制御サーバ302は、各仮想ストリームに各解像度符号化物を関連付ける。仮想ストリームのどれが各解像度符号化に関連付けられているかを識別することは、ストリーム記述509における情報を用いて行われてもよい。さらに、複数の仮想ストリームがソースビデオの同じ領域を符号化する場合、仮想ストリームがどの解像度符号化物に関連付けられているかを決定するために、仮想ストリームに符号化された追加情報を利用することが必要になる可能性がある。いったん各解像度符号化物が各仮想ストリームに関連付けられると、同じ解像度符号化物の仮想ストリームがさらに処理されてもよい。例えば、ブロック810において、各解像度符号化物の仮想ストリームは、記憶のために提供されてもよい。仮想ストリーム及びストリーム記述509は、互いに関連して格納されてもよい。追加的又は代替的に、ブロック812において、1つの解像度符号化物の複数の仮想ストリームのうちの1つ又は複数は、1つ又は複数のモニタリングクライアントにストリーミングされてもよい。上述の説明では、個々の仮想ストリームが格納される及び/又はクライアントに送信される前に、多数の仮想ストリームが処理されることが意味されるが、仮想ストリームのそれぞれが独立して復号可能であり、直ちに格納される及び/又はクライアントに送信されてもよいことが認識される。
【0056】
上述のものは、ソースビデオの異なる関心対象領域を符号化することを説明した。符号化された異なる関心対象領域は、ソースビデオ全体を符号化してもよく、又は、ソースビデオの一部のみを符号化してもよい。表示される符号化された関心対象領域間で切り換えるとき、又は、ソースビデオのモザイクを提供するために互いに隣接するか、互いの上に重ねられて、複数の関心対象領域が同時に表示されるとき、表示された符号化物の同期の間の何らかの不一致が見る人には明らかになる可能性がある。そのような同期の欠如は、望ましくないユーザ経験をもたらす。
図9及び
図10を参照して以下でさらに説明するように、複数の仮想ストリーム間の同期を保持するために、複数の関心対象領域をともに符号化して多重化することが可能である。
【0057】
図9は、複数の関心対象領域を符号化する処理を概略的に示す。処理900は、多数のソースフレーム904a〜d(まとめてソースフレーム904と呼ぶ)を備えるソースビデオのストリーム902を符号化する。多数のソースフレーム904は、ビデオソースのフレームレートに依存して変化してもよい。例えば、ビデオソースストリームは30フレーム/秒を備えてもよい。ビデオソースストリームのフレームレートは、30フレーム/秒より高くても低くてもよい。ソースフレームの各々は、例えば、ソースフレームが生成されたときのUTCを識別するソースフレームタイムスタンプ(図示せず)を備える。
【0058】
1つ又は複数のエンコーダ906は、ビデオソースフレーム904の各々を複数の符号化された仮想フレーム908に符号化するために構成される。
図9に示すように、第1のビデオソースフレーム904aは、高解像度符号化物910a、中解像度符号化物910b、及び低解像度符号化物910cに符号化される。ビデオソースフレーム904a全体をそれぞれ符号化するように図示しているが、符号化された異なる仮想フレームの各々が、ビデオソースフレームの異なる関心対象領域を符号化してもよい。さらに、符号化された仮想フレーム908は、ソースビデオフレーム904aとは異なる解像度において符号化されるように説明されるが、符号化された複数の仮想フレームは同じ解像度で符号化されてもよいが、符号化フォーマット、フレームレート、及びビデオ品質のような、他の符号化パラメータにおいて異なってもよいということが意図される。エンコーダ906は、ラウンドロビン方法で仮想フレーム908の各々を符号化してもよい。追加的又は代替的に、1つ又は複数のエンコーダは、複数の異なる仮想フレームを符号化するように構成されてもよい。複数のエンコーダが使用される場合、どの符号化された仮想フレームが同じビデオソースフレームの対応するのかを追跡するための機構を提供する必要があるかもしれない。これは、符号化された仮想フレームのそれぞれに共通識別子をタグ付けすることで達成されてもよい。追加的又は代替的に、各エンコーダの入力及び出力は、出力された符号化された仮想フレームがどのビデオソースフレームに対応するかを決定するために追跡されてもよい。処理900のこの段階における仮想フレームの各々は、ソースフレームタイムスタンプから導出された仮想フレームタイムスタンプを含む仮想フレームヘッダを含む。
【0059】
いったんビデオソースフレームが複数の仮想フレームへ符号化されると、同じビデオソースフレームに対応する符号化された仮想フレームの各々は、仮想ストリームマルチプレクサ912によってともに多重化される。仮想ストリームマルチプレクサ912は、複数の符号化された仮想フレーム910a、910b、910cを単一のコンテナフレーム914へ多重化する。これは、ネットワークを介して、例えば制御サーバ302に送信されてもよい。多重化は複数の仮想フレームをともに連結することで達成される。ここで、各仮想フレームは仮想フレームの境界を定める仮想フレームヘッダを有し、コンテナフレームはコンテナフレームの境界を互いから定めるコンテナフレームヘッダを有する。ビデオストリームのみがフレームコンテナ914へ多重化されるように図示されるが、オーディオデータ、分析データ、及びメタデータ情報のような他のデータが含まれてもよいことが意図される。コンテナフレーム914はコンテナフレームヘッダを備える。それは、仮想フレームタイムスタンプから導出されたコンテナフレームタイムスタンプを含む。
図5A及び
図5Bに関してさらに詳細に上で議論したように、仮想フレームヘッダの各々は、その特定の仮想フレームを識別するvstream idを含む。
【0060】
同じビデオソースフレームに対応する符号化されたすべての仮想フレームを共通コンテナフレームに多重化することによって、個々の仮想ストリームの完全な同期を保持することが可能である。従って、同期の不一致なしで符号化された複数の関心対象領域を同時に表示することが可能であり、これは改善されたユーザ経験を提供する可能性がある。
【0061】
図10は、ソースビデオを符号化する方法1000を示す。ブロック1002において、ビデオソース装置110は、符号化されているビデオソースストリームからソースフレームを受信する。ブロック1004において、1つ又は複数のエンコーダは、ソースフレームの複数の仮想フレームを符号化する。各仮想フレームは、符号化されているソースフレームの領域、符号化のフレームレート、符号化の品質、符号化された仮想フレームの解像度、使用された圧縮技術/符号化フォーマット、及び他の符号化パラメータを含む異なるパラメータを用いて符号化されてもよい。ブロック1006において、ビデオソース装置110及び/又はエンコーダ114は、複数の符号化された仮想フレームをコンテナフレームへ多重化する。コンテナフレームは、同じソースフレームから符号化された仮想フレームのすべてをともに多重化する。2つ以上の仮想ストリームが異なるフレームレートで符号化される場合、コンテナストリームの各コンテナフレームは各仮想フレームを含まなくてもよい。例えば、1つの仮想ストリームが30仮想フレーム/秒(fps)で符号化される一方で、もう1つの仮想ストリームが15仮想フレーム/秒で符号化される場合、すべてのコンテナフレームは30fps符号化の仮想フレームを含む一方で、2つのうち1つのコンテナフレームのみが30fps符号化及び15fps符号化の両方を含む。代替として、15fps符号化のフレームは、各コンテナフレームに含まれるために複製されてもよい。さらに、互いの倍数でない2つ以上の異なるフレームレートが符号化され、コンテナストリームのフレームレートは、符号化されたフレームレートのすべての最小公分母まで増大されてもよい。例えば、1つの仮想ストリームが20fpsで符号化され、第2の仮想ストリームが30fpsで符号化される場合、コンテナストリームのフレームレートは60fpsであってもよい。いったん複数の仮想フレームがコンテナフレームにともに多重化されると、ブロック1008において、コンテナフレームは、上述した制御サーバのような、所望の宛先に送信されてもよい。
【0062】
サーバ及びクライアントの相互動作
図11は、複数の符号化物をクライアント142へストリーミングするためのシステム1100を示す。システム1100は、制御サーバ102及びクライアント142を備える。制御サーバ102は、命令を処理するための中央処理装置1104を備える。その命令はメモリ1106に格納されてもよい。制御サーバ102は、データ及び命令の永続的な記憶のための不揮発性記憶装置1108をさらに備えてもよい。制御サーバ102は、1つ又は複数の入力/出力(I/O)インターフェース1110をさらに備えてもよい。I/Oインターフェースは、入力及び/又は出力構成要素が制御サーバ102に接続されることを可能にする。例えば、制御サーバ102を通信ネットワークに接続するために、制御サーバ102にネットワークインターフェースカード(NIC)が接続されていてもよい。
【0063】
CPU1104は、メモリに格納された命令を実行してもよい。1107として示すその命令は、実行されたとき、サーバ・クライアントVSマネージャ106を上述した他の機能とともに提供するように制御サーバ102を構成してもよい。以下でさらに詳細に議論するように、サーバ・クライアントVSマネージャ106は、制御サーバ102が複数解像度符号化物をクライアント142へストリーミングすることを可能にする。
【0064】
クライアント142は、命令を処理するための中央処理装置1118を備える。その命令はメモリ1120に格納されてもよい。クライアント142は、データ及び命令の永続的な記憶のための不揮発性記憶装置1122をさらに備えてもよい。クライアント142は、1つ又は複数の入力/出力(I/O)インターフェース1124をさらに備えてもよい。I/Oインターフェースは、クライアント142がサーバ102から受信するストリームが表示されることを可能にするように、入力及び/又は出力構成要素がCPU1118に接続されることを可能にする。図示した実施形態では、この目的のために、モニタ1127がI/Oインターフェース1124のうちの1つに接続されている。
【0065】
CPU1118は、メモリ1120に格納された命令を実行してもよい。1126として示す命令は、実行されたとき、クライアントVSマネージャ1128及びデコーダ機能1130を提供するように、クライアント142を構成してもよい。
【0066】
制御サーバ102の顧客管理機能106及びクライアント142のクライアントVSマネージャ1128は、所望又は要求により、初期化データ1132を交換することにより、かつ、クライアント142が制御サーバ102にクライアントストリーミングパラメータ1133を送信することにより、制御サーバ102からクライアント142へのストリーミングを構成するために協働する。デコーダ機能1130は、ビデオ及び指定された設定内容をそれぞれ復号することができる複数の復号構成要素を提供するために構成されてもよい。それらは、個々に符号化されたタイルの多数の行及び列を含んでもよい。制御サーバ102を用いて格納されたか制御サーバ102を介して中継されている符号化されたストリームは、データストリーム1134として示すように、クライアント142にストリーミングすることが可能である。
【0067】
ここで
図12を参照すると、複数のコンテナフレーム506を多重化することによりサーバ・クライアントVSマネージャ106が生成するビデオストリーム118であって、次に、サーバ・クライアントVSマネージャ106がクライアントVSマネージャ1128に送信するビデオストリーム118が示される。
図5Bに関して上で議論したように、コンテナフレーム506のうちの任意の1つに構成された仮想フレーム508の各々は、仮想フレーム間で境界を定めるデリミタを備えた仮想フレームヘッダを含む。また、コンテナフレーム506は各々、そのコンテナフレームにおけるすべての仮想フレーム508に適用可能なタイムスタンプ508を含む。
図12において、サーバ・クライアントVSマネージャ106がアクセスするコンテナフレーム506は、データ記憶装置132及びビデオソース装置の一方又は両方から取得可能である。
図12に示す例示のシナリオにおいて、サーバ・クライアントVSマネージャ106は、H.264仮想ストリームのみがクライアント142に送信されるものと決定した。従って、クライアントVSマネージャ1128に送られたコンテナフレーム506のそれぞれは、JPEGストリームではなく、H.264仮想ストリームを含む。いったんクライアントVSマネージャ1128がビデオストリーム118を受信すると、それは、それを多重分離し、
図5Bに関して上述したように、サーバ・装置VSマネージャによって実行されるものと同様の方法で仮想ストリームを表示又は格納する。クライアント142は、例えば、以下でさらに詳細に議論するように、より大きな画像を形成するか又は複数の仮想ストリームが互いに重複することを可能にするために、様々な仮想ストリームをともに合成(stitch)してもよい。
【0068】
しかしながら、ビデオストリーム118を受信する前に、クライアント142は、制御サーバ102からのビデオストリーム118を要求する。クライアント142がビデオストリーム118を要求して制御サーバ102がクライアントに送信するために仮想ストリームを選択する方法は、
図13及び15に関して以下に説明される。
【0069】
ここで
図13を参照すると、クライアント142から制御サーバ102にクライアントストリーミングパラメータ1133を送信する方法1300が示される。クライアントストリーミングパラメータ1133は、モニタ1127に表示するためにクライアント142に仮想ストリームのどれを送信するかを決定するときに制御サーバ102が考慮するパラメータである。方法1300を実行するための命令は、プログラムコードとして符号化され、CPU1118による実行のためにメモリ1120上に格納されてもよい。
【0070】
CPU1118は、ブロック1302において方法1300を実行し始め、ブロック1304に進む。ここで、CPU1118は、
図1〜
図10に関して上述したように制御サーバ102及びビデオソース装置がセッションを確立する方法と同様の方法で、制御サーバ102とのセッションを確立する。セッション確立の一部として、制御サーバ102からクライアント142に送られる初期化データ1132は、符号化パラメータと、解像度及び画素カウントの一方又は両方と、仮想ストリーム126、128、130のそれぞれの位置とを記述するセッション情報を含む。以下でさらに詳細に議論するように、一例の実施形態では、クライアント142は、仮想ストリーム126、128、130のどれを表示するかをユーザが指定することを可能にするために、仮想ストリーム126、128、130に関するこの情報をユーザに提示してもよい。
【0071】
初期化の後、CPU1118は、仮想ストリーム126、128、130のどれを表示するかを明示的に又は暗黙的に記述するユーザ入力を受信する。このユーザ入力は次のものを含んでいてもよい。
(a)表示領域。
表示領域は、ユーザがビデオを見るために使用するモニタ1127、150上のウィンドウ内の画素数であり、典型的には画素数として表される。例えば、
図1において、クライアント142は、4つの仮想ストリームからのビデオを示すためにモニタ150全体を使用する。従って、ストリームの各々の表示領域は、以下に説明する品質バイアスパラメータのべき乗まで2で除算したモニタ全体の合計画素数である。
(b)画像領域。
画像領域/関心対象領域は、ユーザがモニタ1127、150上に表示されることを望む画像の一部を表す。画像領域は、画像領域の左上及び右下座標の座標を提供することにより指定されてもよい。例えば、ユーザは、画像の一部へズームインしようとするとき、マウス又は他のポインティングデバイスを用いて、モニタ上に表示された画像の一部の上に長方形を描画してもよい。この長方形が画像領域を表す。
(c)ディスプレイ品質バイアスパラメータ。
ディスプレイ品質バイアスパラメータは、ユーザがフレームレートの低下のコストに代えても高品質を好むか否かを表す。フレームレートはフレーム/秒で測定される、品質は高い画素カウントの代理である。このパラメータは、直観的に、「高」品質、「中」品質、又は「低い」品質に設定されてもよい。ここで、「高品質」は、高い画素カウントのためにフレームレートを犠牲にするというユーザの望みを表し、「低」品質は、フレームレートを高くするが画素カウント/解像度を低くするというユーザの望みを表す。
(d)色仕様パラメータ。
色仕様パラメータは、ユーザがビデオをカラーで見ることを望むか、それとも単色で見ることを望むかを表す。
(e)帯域幅限界パラメータ。
帯域幅限界パラメータは、合計帯域幅使用量の上限をビット/秒で測定される所定のレートに定めることをユーザが望むか否かを表す。ユーザは、帯域幅に対するいかなるハード限界も指定しないと決定してもよい。
(f)ビデオの特性及び使用。
ユーザは、見られるビデオが記憶装置から検索されるか(すなわち、データ記憶装置132からストリーミングされるか)、それともライブで見られるかを指定することができ、また、ビデオがパン・チルト・ズーム(PTZ)カメラのような1個のハードウェアを制御するために使用されているか否かを指定することができる。ビデオがデータ記憶装置132からストリーミングされる場合、待ち時間は比較的重要ではなく、比較的高い画素カウント又はフレームレートを有するビデオは、比較的長い待ち時間のコストを費やして送信される可能性がある。対照的に、ビデオがライブであるか、ハードウェアを制御するために使用されている場合、画像をリアルタイムで得るためには短い待ち時間が重要である。この場合、短い待ち時間は、高品質ビデオよりも優先される。
(g)仮想ストリーム126、128、130のどれを表示するか。
仮想ストリームのどれが利用可能であるかをユーザが知っている実施形態では、ユーザは、上に列挙した基準を調整することにより仮想ストリームを間接的に選択することとはとは対照的に、見るための特定の仮想ストリームを手動で直接的に指定してもよい。
【0072】
ユーザは、仮想ストリームのどれを表示するかを間接的に選択してもよい。例えば、ユーザは、ソースビデオの1つ又は複数のROI及び/又は1つ又は複数の解像度を選択してもよく、各ROI及び解像度は特定の仮想ストリームに対応してもよい。
図2において、例えば、
図2の破線で示す部分216を関心対象領域として選択することによって、ユーザは、仮想ストリームA
1,3及びA
1,4を送信のために暗黙的に選択する。もう1つの例示として、ユーザは、仮想ストリームA
1,3及びA
1,4のみを見ている状態にあり、その後、ROIがソースビデオの全体解像度になるように速くズームアウトしてもよい。これは、サーバからクライアントに高解像度の仮想ストリーム126が送信可能になるまで、ソースビデオ全体の低解像度の仮想ストリーム130を暫定的に表示することをユーザが要求しているものと暗黙的に解釈されてもよい。
【0073】
ブロック1306においてユーザ入力を受信した後に、CPU1118はクライアントストリーミングパラメータ1133を決定する。クライアントストリーミングパラメータ1133は、上に列挙したユーザ入力のタイプのすべてを含み、CPU1118自体が生成するパラメータをさらに含む。CPU1118自体が生成するデータは、ネットワーク輻輳を示すパケット損失の統計情報と、高フレームレート又は高い画素カウント又はそれらの両方を有するビデオを復号するために利用可能なリソースを示すCPU1118及びメモリ1120の現在の使用量の統計情報と、提案された仮想ストリームリストとを含む。CPU1118は、利用可能な仮想ストリームのリストをユーザに直接的に提示しなくてもよいが、CPU1118は、それが応答600を有するので、そのリストと、仮想ストリームによって表されるタイルの場所及びサイズとへのアクセスを有する。従って、CPU1118は、仮想ストリームのどれを表示するためにクライアント142が最も適しているかを決定することができる。
【0074】
例えば、
図2を再び参照すると、ユーザは、中解像度符号化物214を見ている状態にあり、次に、
図2の破線で示す部分216である特定の画像領域にズームインしてもよい。CPU1118は、部分216を仮想ストリームA
1,3及びA
1,4にマッピングする。これらは、部分216を中解像度符号化物214よりも詳細に(すなわち、より多くの画素を用いて)表示する。
図2において、次に、クライアント142は仮想ストリームA
1,3及びA
1,4を表示する。しかしながら、もう1つの実施形態において、考慮される複数のファクタのうちのただ1つのものとして、CPU1118は画像領域を考慮し、また、例えば、現在のCPU1118の使用量と、ビデオの性質及び使用とを考慮してもよい。比較的に高解像度の仮想ストリームA
1,3及びA
1,4のリアルタイム復号をサポートするにはCPU1118使用量が高すぎる場合、かつ、ビデオが短い待ち時間が重要であるライブストリームである場合、CPU1118は、中解像度符号化物214が使用され続けることを提案してもよく、又は、短い待ち時間を可能にするためにビデオを十分に速く復号できることを保証するために、低解像度ストリーム130が使用されることさえ提案してもよい。上で議論したように、現在の例示は解像度に基づいて仮想ストリームを識別するが、代替の実施形態では、仮想ストリームは異なる方法で識別されてもよい。それらは、例えば、関心対象領域、フレームレート、解像度、量子化品質、ビットレート、及び符号化フォーマットのうちの任意の1つ又は複数に基づいて識別されてもよい。コンテナフレーム506が拡張可能なフォーマットであるとき、将来は、運動又は人の顔が検出されるような、他の卓越した特性が使用されてもよい。仮想ストリームマネージャ又はコンテナフレーム506の他のパーザは、未知の属性又はデータフィールドを無視するように設計可能であるので、コンテナフレーム506のフォーマットは、後方互換性を損なうことなく変更可能である。
【0075】
ブロック1308においてCPU1118がクライアントストリーミングパラメータ1133を決定した後、それはブロック1310に進み、それらのパラメータに1133を制御サーバ102に送信する。その後、CPU1118はブロック1312に進み、ここで方法1300は終了し、従って、CPU1118は、制御サーバ102がデータストリーム1134を送信するのを待機する。
【0076】
ここで
図14を参照すると、制御サーバ102からクライアント142にビデオデータを含むデータストリームを送信する方法1400が示される。
方法1400を実行するための命令は、プログラムコードとして符号化され、CPU1104による実行のためにメモリ1106上に格納されてもよい。
図14の方法1400において、制御サーバ102は、3つの異なる仮想ストリーム、すなわち、高フレームレートただし低解像度(中品質)を有するように符号化された第1のストリームと、低フレームレート及び低解像度(低品質)を有するように符号化された第2のストリームと、高フレームレート及び高解像度(高品質)を有するように符号化された第3のストリームとへのアクセスを有する。例えば、高品質ストリームは毎秒30個の画像(ips)で2MPであってもよく、中品質ストリームは30ipsで0.08MPであってもよく、低品質ストリームは5ipsで0.08MPであってもよい。この例は、異なる関心対象領域の高解像度ビューが必要でないときに使用されてもよい。このように、コンテナフレーム506の柔軟性は、代替フレームレートのビデオストリームを提供するために使用される。
【0077】
CPU1104はブロック1404において方法1400を実行し始め、ブロック1406に進み、ここで、CPU1104は、
図6に関して説明したようにクライアント142が生成して送信したクライアントストリーミングパラメータ1133を、クライアント142から受信する。CPU1104は、ブロック1408に進み、クライアントパラメータ1133から、クライアント142が要求しているビデオデータがライブビデオを含むか否かを決定する。要求されたデータがライブビデオデータを含む場合、CPU1104はブロック1410に進み、ここで、CPU1104は、PTZカメラの動きを制御することのような、待ち時間に敏感なアプリケーションにデータが使用されるか否かを、クライアントパラメータ1133から決定する。YESの場合、クライアント142は、フレームレートが解像度よりも優先される「優先モード」にあるとみなされ、CPU1104はブロック1416に進み、ここで、CPU1104は、1つ又は複数の高フレームレートかつ低解像度の仮想ストリームをクライアント142へ送信する。1つ又は複数のストリームを送信した後に、CPU1104はブロック1422に進み、ここで方法1400は終了する。
【0078】
クライアント142がライブビデオを要求していない場合、CPU1104は、ブロック1408からブロック1410にではなくブロック1412に進む。ブロック1408において、CPU1104は、データ記憶装置132が高フレームレートかつ高解像度のストリームを送信できないほどビジーであるか否かを決定する。データ記憶装置132がこれを実行できないほどビジーである場合、CPU1104はブロック1418に進み、ここで、CPU1104は、1つ又は複数の低フレームレートかつ低解像度の仮想ストリームをクライアント142へ送信する。CPU1104が特定のストリームを選択する方法は、
図15に関して以下でさらに詳細に説明される。1つ又は複数のストリームを送信した後に、CPU1104はブロック1422に進み、方法1400は終了する。
【0079】
クライアント142がライブビデオを要求しているが、優先モードにあるとはみなされない場合、又は、クライアント142がデータ記憶装置132に格納されたビデオを要求し、データ記憶装置132が高フレームレートかつ高解像度のストリームを送信する容量を有している場合、CPU1104はブロック1414に進む。ここで、CPU1104は、例えば、CPU1104使用量を決定し、ネットワーク144が輻輳しているか否かを決定することにより、制御サーバ142及びネットワーク144の一方又は両方が、高フレームレートかつ高解像度のストリームを送信できないほどビジーであるか否かを決定する。制御サーバ142及びネットワーク144の一方又は両方が、高フレームレートかつ高解像度のストリームを送信できないほどビジーである場合、CPU1104はブロック1418に進み、ここで、CPU1104は、低フレームレートかつ低解像度のストリームをクライアント142へ送信する。さもなければ、CPU1104はブロック1420に進み、ここで、CPU1104は、高フレームレートかつ高解像度のストリームをクライアント142へ送信する。CPU1104が特定のストリームを選択する方法は、
図15に関して以下でさらに詳細に説明される。1つ又は複数のストリームを送信した後に、CPU1104はブロック1422に進み、方法1400は終了する。
【0080】
ここで
図15を参照すると、制御サーバ102からクライアント142に複数の仮想ストリームのうちのどれを送信するのかを決定する方法1500が示される。方法1500を実行するための命令は、プログラムコードとして符号化され、CPU1104による実行のためにメモリ1106上に格納されてもよい。
図15の方法1500へコンテキストを提供するために、方法1500に関連して、
図1の14個の仮想ストリームが考慮される。フル解像度符号化物120は12個の仮想ストリームを含み、それぞれ異なる画像領域を表し、1.3メガピクセルで符号化され、12個の領域のすべては、まとめて関心対象領域を構成し、30fpsで符号化される。中解像度符号化物122は、2メガピクセルかつ30fpsで符号化された関心対象領域全体を表す単一の仮想ストリームを含む。低解像度符号化物124は、0.077メガピクセル(QVGA)かつ15fpsで符号化された単一の仮想ストリームを含む。
【0081】
CPU1104はブロック1502において方法1500を実行し始め、ブロック1504に進み、ここで、CPU1104は、クライアントストリーミングパラメータ1133及びサーバリソース利用可能性に基づいて、許容される画素カウント及びフレームレートを決定する。サーバリソース利用可能性は、現在の例示の実施形態では、CPU1104、データ記憶装置132、及びネットワーク144の利用可能性を含む。
【0082】
ブロック1504において、本コンテキストではビデオ解像度の代理である許容される画素カウントと、フレームレートとを決定した後に、CPU1104はブロック1506に進み、ここで、CPU1104は、仮想ストリームのうちのどれが、クライアント142に送信するために最も適するかを決定し始める。ブロック1506において、CPU1104は、クライアント142に送信するために適しているか否かを決定するために14個の仮想ストリームのすべてを分析したか否かを決定する。NOの場合、CPU1104はブロック1507に進み、ここで、CPU1104は、残りの考慮されていない仮想ストリームのうちの1つを識別する。これは、ブロック1508〜1512では「現在の仮想ストリーム」と呼ぶ。その後、CPU1104はブロック1508に進み、ここで、CPU1104は、現在の仮想ストリームが要求された画像領域を含むか否かを決定する。一例として
図2を使用すると、
図2に示す破線の長方形をユーザが選択したことをクライアントストリーミングパラメータ1133が示す場合、CPU1104が「YES」を返す仮想ストリームは、ストリームA
1,3、A
1,4、B1、及びC1のみである。選択された画像領域を表示するために、かつ、クライアントストリーミングパラメータ1133を満たすために、ストリームA
1,3及びA
1,4の両方をクライアント142に送信する必要があるので、CPU1104は、ブロック1506〜1514の目的では、ストリームA
1,3及びA
1,4を単一の仮想ストリームであると考える。
【0083】
その後、CPU1104はブロック1510に進み、ここで、CPU1104は、任意の以前に考慮された仮想ストリームに比較して、現在の仮想ストリームが最大の許容される画素カウントを有するか否かを決定する。上述の14個の仮想ストリームを備えた例示では、許容される画素カウントは、15.6メガピクセル/4
2=0.975メガピクセルであり、従って、ブロック1510の基準を満たす仮想ストリームはストリームC1のみである。ブロック1512において、CPU1104は、ストリームC1を「クライアントストリーム」に設定する。それは、方法1500を実行する時点で考慮されているストリームの1つであり、ブロック1508及び1510の基準を満たし、クライアント142に送信されるように目印(earmark)が付けられている。次に、CPU1104は、ブロック1506に戻る。
【0084】
いったんCPU1104が仮想ストリームのすべてを考慮すると、CPU1104は、ブロック1506からブロック1514に進み、
図9に従ってクライアントストリームをクライアント142に送信し、その後、CPU1104はブロック1516に進み、ここで、方法1500は終了する。
【0085】
図15に関して説明された処理が、クライアントシステム142へ送信するための符号化物を決定する際に制御サーバ102によって実行される処理を示すということが認識される。
図15に関して説明された例示は、最大の画素アカウントを備えたストリームを識別することを参照しているが、クライアントパラメータは、符号化物をクライアントシステム142に送信するために他の特性を指定してもよい。例えば、クライアントパラメータは、所定範囲の特性を備えた複数の異なる符号化物を受信することを指定してもよい。例示のシナリオにおいて、クライアントパラメータは、複数の関心対象領域に関する符号化物を受信することを指定してもよい。パラメータは、記録されたフレームの第1の関心対象領域と、この記録されたフレーム内の第2の関心対象領域とを指定してもよい。ここで、第1及び第2の関心対象領域の各々は、表示領域全体の部分集合を表す。パラメータは、第1及び第2の関心対象領域の重複、非重複、又は他の任意の相対的な関係を有してもよいことを指定してもよい。例示のシナリオにおいて、パラメータは、第1の関心対象領域及び第2の関心対象領域の領域を含む表示領域全体を含む第3の関心対象領域をさらに指定してもよい。
【0086】
1つの符号化物を指定するために複数のパラメータが組み合わせられてもよい。例えば、関心対象領域を指定することに加えて、パラメータは、符号化物が特定の符号化解像度を有することを指定してもよい。例示のシナリオにおいて、第1の関心対象領域に関連付けられた符号化物が、特定の値を有するか又は特定の範囲内にある符号化解像度を有するということを、パラメータは指定してもよく、また、サーバ102は送信のために選択してもよい。同様に、特定の値を有するか又は特定の範囲内にある符号化解像度を有する、第2の関心対象領域に関連付けられた符号化物を、パラメータは指定してもよく、また、サーバ102は送信のために選択してもよい。さらにまた、特定の値を有するか又は特定の範囲内にある符号化解像度を有する、第3の関心対象領域に関連付けられた符号化物を、パラメータは指定してもよく、また、サーバ102は送信のために選択してもよい。例示のシナリオにおいて、パラメータは、表示領域の部分のみに対応する第1及び第2に関心対象領域に関連付けられた符号化物が高解像度値を有する一方、第3の関心対象領域に対応する符号化物が、第1及び第2領域の符号化物に対してより低い解像度を有することを指定してもよい。例示のシナリオにおいて、表示領域と交差する複数の(第1及び第2の)高解像度かつ非重複の関心対象領域と、ソース領域全体を覆うもう1つの低行解像度領域(すなわち第3の領域)とを、クライアントパラメータは指定してもよく、また、サーバ102は処理中に識別してもよい。
【0087】
処理の過程でシステム102がクライアントパラメータの複数の集合を使用してもよいことが認識される。例えば、サーバ102は、一次基準集合を満たす複数の符号化を識別するクライアントパラメータの第1の集合を使用してもよい。例示のシナリオにおいて、クライアントパラメータの第1の集合は、第1及び第2の関心対象領域によって関連付けられた符号化物であって、上述したように高解像度を有する符号化物を指定してもよい。サーバ102は、二次基準の異なる集合又は二次集合を指定するクライアントパラメータの追加集合又は二次集合を使用してもよい。例示のシナリオにおいて、2次クライアントパラメータは、上述したようにより低い解像度を有する、第3の関心対象領域に関連付けられた符号化物を指定してもよい。高符号化物を備えたそのような低解像度のフルソース関心対象領域は、損失への回復性を提供する可能性があり、又は、関心対象領域が速く変化する可能性があるとき、サーバがより高解像度の符号化物を送信できるようになるまで復号可能なデータを提供することにより、待ち時間を隠蔽する可能性がある。サーバ102が、例えば、上述したように第1、第2、及び第3の関心対象領域に関連付けられた符号化物のような、複数の符号化物を識別して送信する場合には、符号化物は、
図17に関して下記に述べるような重複又は合成された方法で表示されてもよい。例えば、2つの関心対象領域に関連付けられた2つの符号化物が識別されてクライアントシステム142に送信され、第1及び第2の関心対象領域を包含する第3の関心対象領域に関連付けられた第3の符号化が識別されてクライアントシステム142に送信されるシナリオにおいて、
図17に関して示すように、第1及び第2の符号化物は第3の符号化物の上に提示されてもよい。
【0088】
サーバ・クライアント通信の概要
図16のブロック図は、単一のビデオソース装置からのビデオのアクティブセッションに係る、ビデオ及びオーディオ経路、フィードバックモデル、及びサーバ・クライアント通信を示す。仮想ストリームの形式のビデオは、スクリーン上でユーザには見えない情報を除去するか、予約チャネル容量が与えられたとき送信可能であるように情報を除去する一連の選別ブロック1610を介して、フィードフォワードされる。オーディオ情報、又は、ビデオに関連付けられてビデオよりも低いデータレートを有するメタデータのような他の情報は、概して、修正なしで、ネットワークAPIブロック1612に通過させられる。それは、プレゼンテーションブロック1614におけるプレゼンテーションの直前にビデオに同期される。
【0089】
ユーザが現在見ている関心対象領域(ROI)と、そのセッションの解像度とについての情報に加えて、復号についての計量値及び選別ブロックへのネットワーク容量をフィードバックする、別個のフィードバック経路が存在する。単一の仮想ストリームを複数のウィンドウ上に表示できるとき、
図16は、フィードバック経路において複数のROIを示す。
【0090】
図16は、単一のビデオ及びオーディオソースを有する単一セッションのためのフィードバック経路を示す。概して、多数のこれらのセッションが同時にアクティブになってもよい。それらが
図16の共通クロックソース(T)1618によって接続されるとき、それらはともに同期しているとみなされる。
【0091】
選別ブロック
選別ブロック1610は、ROI、幅、及び高さの組と、復号予約容量及びネットワーク予約容量のような他の計量値とのリストを取得し、また、許可(admittance)アルゴリズムを実行して、ビデオデータのどの部分を除去又は選別するかを決定する。
【0092】
選別アルゴリズムが、表示されない情報、又は、ネットワークの容量又はデコーダの容量を超過する情報を除去することが望ましい。上述の計量値が与えられたとき、1つの可能な方法は以下のとおりである。
【0093】
まず、われわれは、リストからの単一の目標ROI及び解像度を考慮し、これを用いて、目標ROIを覆いながら目標解像度に等しいか少しだけ大きい最低解像度を有する仮想ストリームの集合を発見する。次に、残りのすべてのギャップを覆うROIが計算され、これを用いて、残りの仮想ストリームの集合から、ギャップROIを覆う最高解像度の仮想ストリームの集合が選択される。
【0094】
この処理が繰り返され、各パスからの各ROI、解像度ペア、及び選択された仮想ストリームが最終的なリストへ結合される。最終的なパスは、より高解像度の仮想ストリームの集合によって覆われる、リストにおけるすべての余分の仮想ストリームを除去するために使用される。
【0095】
いったん解像度の選別が完了すると、その出力は、(最大復号FPS、合計ビットレート、又はメガピクセル毎秒(MP/s)のような、復号容量と相関された計量値を用いて)それがネットワーク予約ビットレート又は復号予約容量のいずれかを超過するか否かを決定するために評価される。ネットワーク及び復号容量のいずれかを超過する場合、フレーム全体を捨てることによる一時的なデシメーションを用いて、追加の選別を実行することができる。追加的又は代替的に、合計ビットレートを予約しきい値よりも低減するためにより低解像度の仮想ストリームの選択を選好するように、仮想ストリームの解像度の選別ステップにバイアスをかけることができる。
【0096】
クライアント側における選別ブロック1610は、下流のネットワーク帯域幅の最適化が使用されていないという1つの相違点を有しているが類似している。クライアント側の選別ブロック1610は、クライアントにおけるより短いフィードバックループの遅延に起因して、サーバ側のブロック1610より高い周波数で適合する。
【0097】
ネットワークAPIブロック
ネットワークAPIブロック1612は、次のサービスを提供する。
帯域幅予約、モニタリング、及びフィードバック;
プロトコル特有のパケット化;
セッション記述;
セッショントランスポート交渉及び確立;
及び
接続管理。
【0098】
図16のシステム図において、サーバ側のネットワークAPIブロックは、チャネル容量に関するリアルタイムフィードバックを評価して提供し、これは、選別ブロックへの入力として使用される。
【0099】
例えば、一例の実施形態において、応答600は、ビデオストリーム及び関連付けられたオーディオストリームの記述を含む。クライアントは、単一のビデオストリーム及び単一のオーディオストリームをセットアップすることができる。いったん確立されると、現在見られている複数のROI及び解像度、及び復号容量のような、クライアント状態に関するフィードバックを送信するために、クライアントからサーバへの呼び出しが使用される。このフィードバックは、サーバ側における選別ブロック1610に送られ、仮想ストリームの除去及びコンテナフレームの一時的なデシメーションを制御するために使用される。
【0100】
フィードバックブロック
フィードバックブロック1624は、デコーダ1622及びプレゼンテーションブロック1614からフィードバックを取得し、その情報を選別ブロック1610に転送する。
【0101】
フィードバックブロック1624は、選別ブロックによりさらに低解像度にバイアスをかけさせるように、ユーザが見ているウィンドウの報告された解像度を変更する、品質バイアスファクタを受理する。
【0102】
例えば、「最高品質」バイアスは、選別ブロック1610への目標解像度フィードバックを変更しなくてもよいが、品質レベルを「高品質」に低下させることは、結果として、フィードバックブロック1624により2のファクタで目標解像度を除算させる。概して、品質が低下する各ステップでは、フィードバックブロックからのROIの報告された目標解像度は、2のファクタで低減される。一例の実施形態において、4つの品質バイアス設定、すなわち、最高、高、通常、及び低が存在する。
【0103】
代替の実施形態において、フィードバックブロック1624は、選別ブロック1610に、解像度、ROI、及び容量とは別に出力を送ってもよい。フィードバックブロック1624は、例えば、選別ブロック1610がどの特定の仮想ストリームを包含するか、それとも除外するかを指定してもよい。仮想ストリームのための直接的な選別コマンドを受理する制御サーバは、選別のための論理がクライアントにおいて完全にカプセル化可能であるので、新たなクライアントからの改善された方法を理解するためにアップグレードされる必要はない。このことはまた、仮想ストリームリストを考慮することのみを必要とするので、選別ブロック1610へのフィードバックの複雑さを低減させ、また、どの仮想ストリームを包含するか、それとも除外するかについての複雑さを、フィードバックブロックに移す。この例示の実施形態において、応答600は、仮想ストリーム自体を受信する前に、仮想ストリームのどれを包含するか、それとも除外するかをフィードバックブロック1624が決定するために十分な情報を含む。
【0104】
復号ブロック
復号ブロック1622は、符号化フォーマット特有の復号機能を提供する。それは、H.264、JPEG、及びJPEG2000のような、サポートされた符号化物を復号することができるデコーダコンテキストからなる。それは、セッションごとを基準とするFIFO順序の復号化と、他のすべての既存の復号セッション間における負荷分散とを提供する。復号ブロック1622の出力は、未処理のビットマップであり、又は、仮想ストリームの場合には、ビットマップ及びそれらの関連付けられたROIのリストである。出力画素フォーマットは符号化に依存する。典型的なフォーマットはYUV4:2:0又は4:2:2である。
【0105】
オーディオのために、同様の復号1622ブロックが存在する。
【0106】
プレゼンテーションブロック
図16は、単一ソース装置からの複数の仮想ストリームの合成及び表示を管理するプレゼンテーションブロック1614を示す。プレゼンテーションブロック1614は、オーディオ/ビデオ同期機能と、共通クロックソース(
図16におけるT)を介した他のセッションとの同期とを提供する。異なるROI及び解像度を備える複数のウィンドウ上に単一のビデオソースを表示できるので、プレゼンテーションブロックがある形態のディスプレイ多重化をビデオソースに提供するということに注意する。
図16に示すように、ソースビデオフレームは、いったん復号され、次に、ウィンドウ特有の状態及び合成を提供する個々のプレゼンテーションブロックサブユニットのそれぞれを介して送られる。
【0107】
各プレゼンテーションブロック1614の内部には、復号されたコンテナフレームから未処理の出力ビットマップのリストを取得することと、これらを、バックバッファの現在のROI及び解像度を用いて、ディスプレイウィンドウのバックバッファに合成することとを担当する合成(compositor)ブロックがある。ビデオ画像をバックバッファへ合成する方法の例示の擬似コードは、以下のとおりである。
【0108】
擬似コードの例
――――――――――――――――――――――――――――――――――――
sort vStreams from lowest to highest resolution
for each vStream in sorted list
{
normalized_intersection = Intersect(Normalize(vStream.roi),
Normalize(viewingRoi));
inputRoi = Transform normalized_intersection into vStream.roi;
outputRoi = Transform normalized_intersection into viewingRoi;
CopyAndScale(vStream, inputRoi, backbuffer, outputRoi);
}
――――――――――――――――――――――――――――――――――――
【0109】
コピー及び拡大縮小の動作は、入力データからinputRoiをコピーし、出力データにおけるoutputRoiにそれを引き伸ばして書き込む。
【0110】
図17は、適用されている合成方法の例を示す。この例では、3つのROIが使用される。第1のROI(ROI A)は、ソース画像領域全体を覆うが、低解像度である。第2及び第3のROI(B及びC)は、ソース画像領域の部分を覆うが、ソースからサンプリングされた画素数に関してより高解像度である。例示の合成方法において、最低解像度のROIであるROI Aが最初にコピーされる。コピーの作成は、現在見ているROIの交差を発見することと、ROI Aの交差した領域をコピーすることと、それを、バックバッファ全体に引き伸ばすこととを含む。例示のシナリオにおいて、より高解像度を有するROI Bが次にコピーされる。見えている領域を含むROI Bの交差が発見され、この交差は、バックバッファに投影され、ROI Bデータがより高解像度のデータであるので、バックバッファにおける既存のROI Aデータの上にコピーされる。同様の処理がROI Cのために実行され、ROI Cは、バックバッファにおける既存のROI Aデータの上にコピーされる。
【0111】
例示の実施形態において、最低から最高解像度のROIを合成することにより、結果として、最高解像度の画像データが最後に書き込まれている。最高から最低解像度の合成物を生成する方法では、結果として、ROI AがROI C及びBを上書きし、それはより低品質のビデオ画像をもたらす。
【0112】
このように、出願人は、異なる符号化パラメータを用いて符号化された複数の符号化物をストリーミングするためのシステム及び方法を開示した。開示した実施形態において、ビデオソースは複数の仮想ストリームを形成するように符号化され、各仮想ストリームは異なるパラメータを用いて符号化されてもよい。共通のソースビデオフレームから符号化された複数の仮想ストリームは、コンテナフレームへともに多重化され、それは記憶及び/又はプレゼンテーションのためのサーバに送信される。
【0113】
上述したことは、他の構成要素でもとりわけ、ハードウェア上で実行されたソフトウェアを含む例示の方法及び装置を開示するが、そのような方法及び装置は単に例示であり、限定としてみなされるべきでないことに注意すべきである。例えば、これらのハードウェア及びソフトウェア構成要素のうちのいずれか又はすべては、ハードウェアのみで、ソフトウェアのみで、ファームウェアのみで、又はハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせで具体化可能であることが意図される。従って、上述したことは例示の方法及び装置を説明するが、当業者は、提供された例示がそのような方法及び装置を実現する唯一のやり方ではないことを容易に認識するであろう。例えば、方法は、プロセッサ及びマイクロプロセッサ、特定用途向け集積回路(ASIC)、及び/又は他のハードウェア構成要素を含む、1つ又は複数のコンピュータハードウェア部分で実現されてもよい。
【0114】
本明細書で議論された任意の態様又は実施形態の任意の部分が、実装可能であること、又は、本明細書で議論された他の任意の態様又は実施形態の任意の部分と組み合わせ可能であることが意図される。
【0115】
例えば、
図8〜
図10及び
図13〜
図15に関して説明したものを含む、本明細書で説明した方法に関して、いくつかの例では、説明した方法の構成部分が、本明細書で説明したものとは異なる順序で実行されてもよいことが認識されるであろう。さらに、フローチャートに説明したブロックのすべてが実行される必要はなく、追加ブロックは追加されてもよく、図示したブロックのうちのいくつかが他のブロックと置き換えられてもよいことが認識されるであろう。
【0116】
本開示は、1つ又は複数の実施形態に関して様々なシステム及び方法を説明した。しかしながら、当業者には、本開示の開示内容から外れることなく、多数の変更及び修正を実施可能であることが明らかであろう。例えば、図面及び本明細書ではカメラ118/ビデオソース装置316及び制御サーバ102/302を別々に参照している間に、いくつかの実施形態では、両方の説明されたシステムからの機能が単一のシステムに存在してもよい。例えば、ビデオソース装置316は、カメラ及び画像収集にも関して本明細書で説明した機能と、制御サーバ102に関して本明細書で説明した機能とのすべてを提供するカメラシステムであってもよい。そのような実施形態において、カメラシステムは、他のカメラシステムを制御して通信する能力を備えるサーバとして動作してもよい。
【0117】
要旨は、構造上の特徴及び/又は方法論的な動作に特有の言葉で説明されているが、添付された請求項で定義された主題が上述した特有の特徴又は動作に必ずしも限定されないことが理解される。むしろ、上述した特有の特徴及び動作は、請求項を実施する例示の形態として開示される。