(57)【特許請求の範囲】
【請求項１】
複数のデータストリームを受信するステップと、
前記複数のデータストリームの中の各データストリームについて、個々のコーデック負荷係数を決定するステップと、
個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番で前記データストリームをハードウェアコーデックに、前記ハードウェアコーデックが実質的に最大容量にロードされるまで割り当てるステップと、
前記ハードウェアコーデックが、実質的に最大容量までロードされると、残りのデータストリームをソフトウェアコーデックに割り当てるステップと
を含み、
前記データストリームをハードウェアコーデックに割り当てる前記ステップまたは前記残りのデータストリームをソフトウェアコーデックに割り当てる前記ステップの少なくとも一方が、データストリームフレームの開始時に実行される、動的コーデック割振り方法。
【請求項２】
前記データストリームの負荷係数を将来の使用のために保存するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記データストリームをハードウェアコーデックに割り当てる前記ステップが前記複数のデータストリームの中の1つのデータストリームに対して、前記データストリームが中途にある間に実行される、請求項1に記載の方法。
【請求項４】
前記個々のコーデック負荷係数を決定する前記ステップが、コーデックパラメータ、システム電力状態、電池エネルギーレベル、推定されるコーデック電力消費、またはその組み合わせに基づく、請求項1に記載の方法。
【請求項５】
前記個々のコーデック負荷係数を決定する前記ステップ、および前記データストリームをハードウェアコーデックに割り当てる前記ステップが、ビデオ事象によってトリガされる、請求項1に記載の方法。
【請求項６】
複数のデータストリームを受信するための手段と、
前記複数のデータストリームの中の各データストリームについて、個々のコーデック負荷係数を決定するための手段と、
個々の最高のコーデック負荷係数から始まる個々のコーデック負荷係数による順番で前記データストリームをハードウェアコーデックに、前記ハードウェアコーデックが実質的に最大容量にロードされるまで割り当てるための手段と、
前記ハードウェアコーデックが実質的に最大容量にロードされると、残りのデータストリームをソフトウェアコーデックに割り当てるための手段と
を含み、
前記データストリームをハードウェアコーデックに割り当てる前記手段または前記残りのデータストリームをソフトウェアコーデックに割り当てる前記手段の少なくとも一方が、前記個々の割当てをデータストリームフレームの開始時に実行するための手段を含む、動的コーデック割振り装置。
【請求項７】
前記データストリームの負荷係数を将来の使用のために保存するための手段をさらに含む、請求項6に記載の装置。
【請求項８】
前記データストリームをハードウェアコーデックに割り当てるための前記手段が、前記複数のデータストリームの中の1つのデータストリームを、前記データストリームが中途にある間に割り当てるための手段を含む、請求項6に記載の装置。
【請求項９】
前記個々のコーデック負荷係数を決定するための前記手段が、コーデックパラメータ、システム電力状態、電池エネルギーレベル、推定されるコーデック電力消費、またはその組み合わせに基づいて前記個々のコーデック負荷係数を決定するための手段を含む、請求項6に記載の装置。
【請求項１０】
前記個々のコーデック負荷係数を決定するための前記手段、および前記データストリームをハードウェアコーデックに割り当てるための前記手段が、ビデオ事象によってトリガされる、請求項6に記載の装置。
【請求項１１】
プロセッサで実行されると前記プロセッサに、
複数のデータストリームを受信するステップと、
前記複数のデータストリームの中の各データストリームについて、個々のコーデック負荷係数を決定するステップと、
個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番で前記データストリームをハードウェアコーデックに、前記ハードウェアコーデックが実質的に最大容量にロードされるまで割り当てるステップと、
前記ハードウェアコーデックが実質的に最大容量にロードされると、残りのデータストリームをソフトウェアコーデックに割り当てるステップと
を含む方法を実行させる命令を記録したコンピュータ可読記録媒体であって、
前記データストリームをハードウェアコーデックに割り当てる前記ステップまたは前記残りのデータストリームをソフトウェアコーデックに割り当てる前記ステップの少なくとも一方が、データストリームフレームの開始時に実行される、コンピュータ可読記録媒体。
【請求項１２】
前記方法が、前記データストリームの負荷係数を将来の使用のために保存するステップをさらに含む、請求項11に記載のコンピュータ可読記録媒体。
【請求項１３】
前記データストリームをハードウェアコーデックに割り当てる前記ステップが、前記複数のデータストリームの中の1つのデータストリームに対して、前記データストリームが中途にある間に実行される、請求項11に記載のコンピュータ可読記録媒体。
【請求項１４】
前記個々のコーデック負荷係数を決定する前記ステップが、コーデックパラメータ、システム電力状態、電池エネルギーレベル、推定されるコーデック電力消費、またはその組み合わせに基づく、請求項11に記載のコンピュータ可読記録媒体。
【請求項１５】
前記個々のコーデック負荷係数を決定する前記ステップ、および前記データストリームをハードウェアコーデックに割り当てる前記ステップが、ビデオ事象によってトリガされる、請求項11に記載のコンピュータ可読記録媒体。
【請求項１６】
ハードウェアコーデックと、
前記ハードウェアコーデックに結合されたプロセッサであって、
複数のデータストリームを受信し、
前記複数のデータストリームの中の各データストリームについて、個々のコーデック負荷係数を決定し、
個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番で前記データストリームをハードウェアコーデックに、前記ハードウェアコーデックが実質的に最大容量にロードされるまで割り当て、
前記ハードウェアコーデックが実質的に最大容量にロードされると、残りのデータストリームをソフトウェアコーデックに割り当てる
ように構成されたプロセッサとを備え、
前記プロセッサが、データストリームフレームの開始時に、前記データストリームをハードウェアコーデックに割当てるステップまたは前記残りのデータストリームをソフトウェアコーデックに割り当てるステップの少なくとも一方を実行するようにさらに構成される、動的コーデック割振り装置。
【請求項１７】
前記プロセッサに結合され、前記データストリームの負荷係数を将来の使用のために保存するように構成されるメモリをさらに備える、請求項16に記載の装置。
【請求項１８】
前記プロセッサが、ハードウェアコーデックへの前記データストリームの割当てを前記複数のデータストリームの中の1つのデータストリームに対して、前記データストリームが中途にある間に実行するように構成される、請求項16に記載の装置。
【請求項１９】
前記プロセッサが、コーデックパラメータ、システム電力状態、電池エネルギーレベル、推定されるコーデック電力消費、またはその組み合わせに基づいて、前記個々のコーデック負荷係数を決定するように構成される、請求項16に記載の装置。
【請求項２０】
前記プロセッサが、ビデオ事象によってトリガされると、前記個々のコーデック負荷係数を決定し、前記データストリームをハードウェアコーデックに割り当てるように構成される、請求項16に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に通信に関し、限定はしないが、より詳細には、動的ビデオスイッチングのための方法および装置に関する。
【背景技術】
【０００２】
市場は、オーディオおよびビデオのデータストリームなど、複数のデータストリームを同時に復号することができるデバイスを要望している。ビデオデータストリームは大量のデータを含み、そのため送信前に、ビデオデータは、送信メディアを効率的に使用するために圧縮される。ビデオ圧縮は、ビデオデータをストリーミングビデオフォーマットに効率的に符号化する。圧縮は、ビデオデータを、効率的に送信され得るより少ないビットを有する、圧縮されたビットストリームフォーマットに変換する。圧縮の逆は復号としても知られる解凍であり、解凍は、元のビデオデータの複製(または精度の高い近似物)を作成する。
【０００３】
コーデックは、圧縮ビットストリームを符号化し、復号するデバイスである。ハードウェアデコーダを使用することは、性能、電力消費、およびプロセッササイクルの交互使用などの理由により、ソフトウェアデコーダを使用することより優先される。したがって、デコーダが、ゲートブロック、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、またはこれらの要素の組合せから成るかどうかにかかわらず、いくつかのデコーダタイプが他のデコーダタイプより優先される。
【０００４】
図1を参照すると、2つ以上の符号化されたデータストリームが従来のデバイスに入力されると、先着順の従来の割当てモデル100では、到来するデータストリームを、ビデオ事象が発生したときに利用可能なコーデックに割り当てている。ビデオ事象は、先着順の従来の割当てモデル100をトリガする。たとえば、ビデオ事象は、開始、終了、休止、再始動、探索、および/または解像度変更など、ビデオストリームに関する1つまたは複数の処理であってよい。図1の例では、唯一のハードウェアコーデックが利用可能である。第1の受信されたデータストリームは、ビデオ1 105であり、このビデオ1 105は、ハードウェアビデオコーデックに割り当てられている。第2のデータストリーム、ビデオ2 110が引き続いて受信され、ハードウェアコーデックが利用できないので、ソフトウェアコーデックに割り当てられる。引き続いて受信されるデータストリームも同様に、唯一のハードウェアコーデックがビデオ1 105の処理で既に占有されているので、ソフトウェアコーデックに割り当てられる。従来の割当てモデル100では、データストリームがひとたびコーデックに割り当てられると、そのデータストリームが異なるコーデックに再割当てされることはない。したがって、ひとたびソフトウェアコーデックに割り当てられると、ビデオ2 110および後続のデータストリームは、たとえハードウェアコーデックがビデオ1 105の処理を停止したとしても、ハードウェアコーデックに割り当てられることはない。
【０００５】
従来の割当てモデル100は、単純であり、最適ではない。ハードウェアコーデックは、複雑な符号化方式(たとえば、MPEG-4)を非常に速やかにかつ効率的に復号し得るが、比較的単純な符号化方式(たとえば、H.261)は、ハードウェアコーデックとソフトウェアコーデックの両方によって速やかにかつ効率的に復号され得る。しかしながら、従来の割当てモデル100は、データストリームを最も効率的に復号し得るタイプのコーデック(ハードウェアまたはソフトウェア)にデータストリームを意図的に割り当てることはない。図1を再び参照すると、ビデオ1 105が単純な符号化方式を有し、ビデオ2 110が複雑な符号化方式を有する場合、プロセッサがビデオ2 110を復号する処理をしている間、ハードウェアコーデックの能力は、ビデオ1 105を復号するために、十分に活用されてない。ビデオ1 105およびビデオ2 110を見ているユーザは、申し分のないビデオ1 105の復号バージョンを経験するが、ビデオ1 105よりも高度な性能を提供するとユーザが期待するビデオ2 110は、ビデオ2 110の複雑な符号化方式のために、アーチファクト、欠損したフレーム、および量子化雑音を含む可能性がある。したがって、従来の割当てモデル100は、資源を浪費し、非効率的であり、ユーザに標準以下の結果をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、上述の問題に対処する方法および装置に対する産業上のニーズが存在する。
【課題を解決するための手段】
【０００７】
本発明の例示的な実施形態は、動的ビデオスイッチングのためのシステムおよび方法を対象とする。
【０００８】
一例では、動的コーデック割振り方法が提供される。方法は、複数のデータストリームを受信するステップと、データストリームのそれぞれに対して個々のコーデック負荷係数を決定するステップとを含む。データストリームは、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番でコーデックに割り当てられる。最初に、データストリームは、ハードウェアコーデックが実質的に最大容量にロードされるまで、ハードウェアコーデックに割り当てられる。ハードウェアコーデックが、実質的に最大容量にロードされると、残りのデータストリームは、ソフトウェアコーデックに割り当てられる。新しいデータストリームが受信されるとき、本方法が繰り返され、データストリームの相対的なコーデック負荷係数に基づいて、前に割り当てられたデータストリームをハードウェアコーデックからソフトウェアコーデックに再割当てすることができ、また、その逆を行うことができる。
【０００９】
さらなる例では、動的コーデック割振り装置が提供される。動的コーデック割振り装置は、複数のデータストリームを受信するための手段と、複数のデータストリームの中のそれぞれのデータストリームに対して個々のコーデック負荷係数を決定するための手段とを含む。動的コーデック割振り装置はまた、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番でデータストリームをハードウェアコーデックに、ハードウェアコーデックが実質的に最大容量にロードされるまで割り当てるための手段と、ハードウェアコーデックが実質的に最大容量にロードされると、残りのデータストリームをソフトウェアコーデックに割り当てるための手段とを含む。
【００１０】
別の例では、非一時的コンピュータ可読媒体が提供される。非一時的コンピュータ可読媒体は、プロセッサで実行されるとプロセッサに動的コーデック割振り方法を実行させる命令を記憶する。動的コーデック割振り方法は、複数のデータストリームを受信するステップと、データストリームのそれぞれに対して個々のコーデック負荷係数を決定するステップとを含む。データストリームは、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番でコーデックに割り当てられる。最初に、データストリームは、ハードウェアコーデックが実質的に最大容量にロードされるまで、ハードウェアコーデックに割り当てられる。ハードウェアコーデックが、実質的に最大容量にロードされると、残りのデータストリームがソフトウェアコーデックに割り当てられる。新しいデータストリームが受信されるとき、本方法が繰り返され、データストリームの相対的なコーデック負荷係数に基づいて、前に割り当てられたデータストリームをハードウェアコーデックからソフトウェアコーデックに再割当てすることができまた、その逆を行うことができる。
【００１１】
さらなる例では、動的コーデック割振り装置が提供される。動的コーデック割振り装置は、ハードウェアコーデックと、ハードウェアコーデックに結合されたプロセッサとを含む。プロセッサは、複数のデータストリームを受信し、複数のデータストリームの中のそれぞれデータストリームについて、個々のコーデック負荷係数を決定し、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番でデータストリームをハードウェアコーデックに、ハードウェアコーデックが実質的に最大容量にロードされるまで割り当て、ハードウェアコーデックが実質的に最大容量にロードされると、残りのデータストリームをソフトウェアコーデックに割り当てるように構成される。
【００１２】
他の特徴および利点は、添付の特許請求の範囲の中で、および以下の詳細な説明から明らかとなろう。
【００１３】
添付の図面は、本発明の実施形態に関する説明において助けとなるように提示されており、本発明の限定ではなく、実施形態の例示のみのために提供されている。
【図面の簡単な説明】
【００１４】
【図１】従来の割当てモデルを示す図である。
【図２】例示的な通信デバイスを示す図である。
【図３】例示的な動的ビデオスイッチングデバイスの作業の流れを示す図である。
【図４】ビデオストリーム情報の例示的な表である。
【図５】コーデックを動的に割り当てるための例示的な方法のフローチャートである。
【図６】コーデックを動的に割り当てるための別の例示的な方法のフローチャートである。
【図７】コーデックを動的に割り当てるための別の例示的な方法のフローチャートである。
【図８】動的ビデオスイッチング方法の例示的なタイムラインを示す図である。
【図９】例示的な動的ビデオスイッチングアルゴリズムの擬似コードリストである。
【発明を実施するための形態】
【００１５】
慣例に従って、いくつかの図は明快のために簡略化されている。したがって、図は、所与の装置(たとえば、デバイス)または方法の構成要素のすべてを示すとは限らない。最後に、同様の参照番号は、本明細書および図を通して同様の特徴を示すために使用される。
【００１６】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様を開示する。本発明の範囲から逸脱することなく代替的な実施形態を考案することができる。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素については詳細に説明しないか、または省略する。
【００１７】
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的な」として本明細書で説明されるいかなる実施形態も、他の実施形態よりも好ましいまたは有利であると必ずしも解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が論じられた特徴、利点または動作モードを含むことを必要としない。
【００１８】
本明細書で用いられる用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定することは意図されない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。たとえば、ハードウェアコーデックに対する本明細書による参照は、複数のハードウェアコーデックに言及するように意図されている。さらなる例として、ソフトウェアコーデックに対する本明細書による参照は、同様に、複数のソフトウェアコーデックに言及するように意図されている。また、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または、「含んでいる(including)」という用語は、本明細書で用いられる場合、述べられた特徴、整数、ステップ、動作、要素、および/または、構成要素の存在を指定するが、1つもしくは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/または、これらの群の存在または追加を排除しない。
【００１９】
さらに、多くの実施形態が、たとえば、コンピューティングデバイスの要素によって実行すべき一連のアクションに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))、エンコーダ、デコーダ、コーデックによって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、またはそれらの組合せによって実施できることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能を実施させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、すべてが請求する主題の範囲内に入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明する実施形態ごとに、そのような実施形態の対応する形態について、たとえば、記載の行為を実行する「ように構成された論理」として本明細書で説明することがある。
【００２０】
図2は、本開示の実施形態が有利に用いられ得る例示的な通信システム200を示している。説明のために、図2は、3つの遠隔ユニット220、230、250および2つの基地局240を示す。従来のワイヤレス通信システムは、これより多くの遠隔ユニットおよび基地局を有し得ることが理解されよう。遠隔ユニット220、230、250は、以下でさらに論じるように、本開示の実施形態225A-Cの少なくとも一部を含む。図2は、基地局240から遠隔ユニット220、230、250への順方向リンク信号280、ならびに遠隔ユニット220、230、250から基地局240への逆方向リンク信号290を示す。
【００２１】
図2では、遠隔ユニット220はモバイル電話として示され、遠隔ユニット230は可搬型コンピュータとして示され、遠隔ユニット250はワイヤレスローカルループシステム中の固定位置の遠隔ユニットとして示されている。たとえば、遠隔ユニットは、モバイル電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末のようなポータブルデータユニット、ナビゲーションデバイス(たとえば、GPS対応デバイス)、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、固定ロケーションデータユニット(メータ読取り機器)、またはデータもしくはコンピュータ命令の記憶もしくは取出しを行う任意の他のデバイス、またはそれらの任意の組合せであってよい。図2は、本開示の教示による遠隔ユニットを示すが、本開示は、これらの例示的な示されたユニットには限定されない。本開示の実施形態は、任意のデバイスにおいて適切に使用されてもよい。
【００２２】
図3は、例示的な動的ビデオスイッチングデバイス300の作業の流れを示す。少なくとも2つのデータストリーム305A-Nが、ルーティング機能ブロックなど、プロセッサ310に入力される。データストリーム305A-Nは、オーディオデータストリーム、ビデオデータストリーム、または両者の組合せであってよい。プロセッサ310は、本明細書で説明する方法の少なくとも一部を実行するように構成され、中央処理装置(CPU)であってよい。たとえば、プロセッサは、データストリーム305A-Nのそれぞれに対して個々のコーデック負荷係数(m_codecLoad)を決定し得る。データストリーム305A-Nは、少なくとも1つのハードウェアコーデック315 A -Mに、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番で、ハードウェアコーデック315 A -Mが実質的に最大容量にロードされるまで割り当てられる。データストリーム305A-Nをハードウェアコーデック315 A -Mに割り当てることで、CPU負荷と電力消費とが低減される。ハードウェアコーデック315 A -Mが実質的に最大容量にロードされると、残りのデータストリーム305A-Nが、少なくとも1つのソフトウェアコーデック320A-Xに割り当てられる。例として、ソフトウェアコーデック320A-Xは、CPUベース、GPUベース、またはDSPベースのブロックなど、プログラム可能なブロックであってよい。新しいデータストリームが受信されるにつれて本方法が繰り返され、データストリームの相対的なコーデック負荷係数に基づいて、前に割り当てられたデータストリーム305A-Nをハードウェアコーデック315 A -Mからソフトウェアコーデック320A-Xに再割当てすることができ、また、その逆に再割当てすることができる。
【００２３】
ハードウェアコーデック315 A -Mおよびソフトウェアコーデック320A-Xは、オーディオコーデック、ビデオコーデック、および/または両者の組合せであってよい。ハードウェアコーデック315 A -Mおよびソフトウェアコーデック320A-Xはまた、メモリなどの資源を共有しないように構成されてもよい。代替として、いくつかのアプリケーションでは、本明細で説明するコーデックがデコーダで置き換えられる。ハードウェアデコーダを使用することは、性能、電力消費、およびプロセッササイクルの交互使用などの理由により、ソフトウェアデコーダを使用することより優先される。したがって、デコーダが、ゲートブロック、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、またはこれらの要素の組合せを有するかどうかにかかわらず、いくつかのデコーダタイプが他のデコーダタイプより優先される。
【００２４】
プロセッサ310は、コーデックの割当ておよび再割当ての間にデータストリーム305A-Nの中のデータをバッファリングするバッファ325に結合されてよい。バッファ325はまた、コーデック再割当ての事象の中で使用されるために、データストリーム305A-Nのパラメータを説明する情報を記憶し得る。ビデオストリーム情報400の例示的な表を、図4に示す。
【００２５】
ハードウェアコーデック315 A -Mおよびソフトウェアコーデック320A-Xからの出力が、オペレーティングシステム330に入力され、オペレーティングシステム330は、ハードウェアコーデック315 A -Mおよびソフトウェアコーデック320A-Xを、ソフトウェアアプリケーション、および/またはデータストリーム305A-Nの中で搬送される情報を使用し、表示し、かつ/または場合によっては提供するハードウェアとインターフェースをとる。オペレーティングシステム330および/またはソフトウェアアプリケーションは、ディスプレイ335に、データストリーム305A-Nからのビデオデータを同時に表示するように命令する。
【００２６】
図4は、ビデオストリーム情報400の例示的な表である。ビデオストリーム情報400の表は、受信されたデータストリームのそれぞれに対する個々の負荷係数(m_codecLoad)405、ならびに現在割り当てられているコーデックタイプ410、解像度の行415、解像度の列420などの他の情報、ならびにビットストリームヘッダ情報、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)などの他のパラメータ425を含む。ビデオストリーム情報400の表は、最高の負荷係数405から最低の負荷係数405まで記憶される。
【００２７】
図5は、コーデック500を動的に割り当てるための例示的な方法のフローチャートを示す。
【００２８】
ステップ505で、コーデックを動的に割り当てるための方法500が、ビデオデータストリームを受信すると開始する。
【００２９】
ステップ510で、表400を参照すると、表インデックス「i」が1に設定される。
【００３０】
ステップ515で、第1の決定がなされる。「i」がハードウェアコーデックの番号以下でなければ、方法を終了させるステップ520が実行される。「i」がハードウェアコーデックの番号以下であれば、ステップ525が実行される。
【００３１】
ステップ525で、第2の決定がなされる。表エントリ「i」に対応するデータストリームがハードウェアコーデックを割り当てられているならば、方法はステップ530に進み、そうでなければステップ535が実行される。
【００３２】
ステップ530で、1の値が表エントリ番号「i」に加算され、ステップ515が繰り返される。
【００３３】
ステップ535で、第3の決定がなされる。ハードウェアコーデックが利用できないならば方法はステップ540に進み、そうでなければステップ550が実行される。
【００３４】
ステップ540で、表エントリ番号「K」は、最低のコーデック負荷係数を有するデータストリームを表し、割り当てられたハードウェアコーデックが識別される。
【００３５】
ステップ545で、ソフトウェアコーデックが生成されてデータストリーム「K」に割り当てられ、データストリーム「K」はハードウェアコーデックの使用を停止する。次いで、方法はステップ550へ進む。
【００３６】
ステップ550で、利用可能なハードウェアコーデックがデータストリーム「i」に割り当てられる。次いで、方法はステップ530を繰り返す。図5の方法が、動的割当てコーデックのための唯一の方法であるとは限らない。
【００３７】
図6は、コーデック600を動的に割り当てるための別の例示的な方法のフローチャートを示す。
【００３８】
ステップ605で、コーデック600を動的に割り当てるための方法が、ビデオデータストリームを受信すると開始する。
【００３９】
ステップ610で、コーデック負荷係数(m_codecLoad)が、受信されたビデオデータストリームに対して計算される。
【００４０】
ステップ615で、決定がなされる。ハードウェアコーデックが利用可能であるならば、方法はステップ620に進み、そこで、受信されたビデオデータストリームがハードウェアコーデックに割り当てられる。そうでない場合、方法は、ステップ625に進む。
【００４１】
ステップ625で、決定がなされる。受信されたビデオデータストリームが、前に入力されたデータストリームを含めて、すべての入力されたデータストリームの中で最低の負荷係数を有するならば、方法はステップ630に進み、そこで、受信されたビデオデータストリームは、ソフトウェアコーデックに割り当てられる。受信されたビデオデータストリームが、前に入力されたデータストリームを含めて、すべての入力されたビデオのうちで最低のコーデック負荷係数を持たないならば、方法はステップ640に進む。
【００４２】
ステップ640で、受信されたビデオデータストリームが、ハードウェアコーデックに割り当てられる。受信されたビデオデータストリームが、前に割り当てられたビデオデータストリームより高いコーデック負荷係数を有するならば、ハードウェアコーデックに前に割り当てられた異なるビデオデータストリームは、ソフトウェアコーデックに割り当てられ得る。
【００４３】
図7は、コーデック700を動的に割り当てるための例示的な方法のフローチャートを示す。
【００４４】
ステップ705で、複数のデータストリームが受信される。
ステップ710で、個々のコーデック負荷係数(m_codecLoad)が、複数のデータストリームの中の各データストリームについて決定される。コーデック負荷係数は、コーデックパラメータ、システム電力状態、電池エネルギーレベル、および/または推定されるコーデック電力消費に基づくことができる。コーデック負荷係数はまた、データストリームの解像度、ディスプレイ画面上の鮮明度、再生/休止/停止状態、エントロピー符号化タイプ、ならびにビデオプロファイルおよびレベル値に基づくことができる。コーデック負荷係数を決定する1つの式は、
m_codecLoad=((ビデオ幅*ビデオ高さ)>>14)*Visible on display*Playing
ここで、「Visible on display」は、個々のビデオのいずれかがディスプレイ画面上で可視の場合に論理1に設定され、そうでない場合に論理0に設定される。「Playing」は、個々のビデオが再生中であれば論理1に設定され、そうでなければ論理0に設定される。
【００４５】
ステップ715で、データストリームは、個々の最高のコーデック負荷係数から始めて個々のコーデック負荷係数による順番で、ハードウェアコーデックが実質的に最大容量にロードされるまで、ハードウェアコーデックに割り当てられる。割り当てるステップは、データストリームフレームの開始時点、および/またはデータストリームが中途にある間に発生し得る。
【００４６】
ステップ720で、ハードウェアコーデックが、実質的に最大容量にロードされているならば、残りのデータストリームは、ソフトウェアコーデックに割り当てられる。
【００４７】
ステップ725で、データストリーム負荷係数が、将来使用するために、随意に保存される。
【００４８】
図8は、動的ビデオスイッチング方法の例示的なタイムライン800を示す。タイムライン800は、比較的高いコーデック負荷係数を有する第2のビデオデータストリームが後で受信されると、低いコーデック負荷係数を有する第1のビデオデータストリームが、どのようにハードウェアコーデックからソフトウェアコーデックに再割当てされるかを示す。タイムライン800で説明される方法のステップは、任意の動作順序で実行されてよい。
【００４９】
時刻1、805において、H.264を符号化している第1のビデオデータストリーム810が受信される。個々のコーデック負荷係数(m_codecLoad)が、第1のビデオデータストリーム810に対して決定される。第1のビデオデータストリーム810は、ハードウェアコーデックに割り当てられ、第1のバッファ815にバッファリングされ、復号するステップが開始する。
【００５０】
時刻2、820において、H.264を符号化している第2のビデオデータストリーム825が受信される。個々のコーデック負荷係数(m_codecLoad)が、第2のビデオデータストリーム825に対して決定される。この例では、コーデック負荷係数は、第1のビデオデータストリーム810に対するよりも、第2のビデオデータストリーム825に対する方が高い。ソフトウェアコーデックの一例が、第2のビデオデータストリーム825に対して生成される。第2のビデオデータストリーム825は、ソフトウェアコーデックに割り当てられ、第2のバッファ830にバッファリングされる。
【００５１】
時刻3、835において、第1のビデオデータストリーム810および第2のビデオデータストリーム825に対するコーデック負荷係数の相対的な値に基づいて、第1のビデオデータストリーム810がソフトウェアコーデックに割り当てられ、第2のビデオデータストリーム825がハードウェアコーデックに再割当てされる。再割当ては、自動であってよく、ハードウェア層で実行されてもよく、エンドユーザによるいかなるアクションも必要としない。時刻3、835において、またはその後、ソフトウェアコーデックの一例が、第1のビデオデータストリーム810に対して生成され、第1のビデオデータストリームのバッファリングされたバージョン815がソフトウェアコーデックに入力され、第1のビデオデータストリーム810が復号される。第1のビデオデータストリーム810のソフトウェア復号が起動する時点は、第1のビデオデータストリーム810からのキーフレームの起動と同時であってよい。第1のビデオデータストリーム810はまた、ハードウェアコーデックの使用を停止する。加えて、時刻3、835において、またはその後、第2のビデオデータストリーム825が、第2のビデオデータストリーム825の個々のソフトウェアコーデックの使用を停止し、ハードウェアコーデックを使用して、第2のバッファからの第2のビデオデータストリーム825のバッファリングされたバージョンを復号するステップを起動する。第2のビデオデータストリーム825を復号するステップが開始する時点は、第2のビデオデータストリーム825からのキーフレームの開始と同時であってよい。時刻3と、第2のビデオデータストリーム825のバッファリングされたバージョンを復号するステップの開始との間には、時間遅延(Dt)が存在する。一例では、Dtは、第1のビデオデータストリーム810および第2のビデオデータストリーム825の閲覧者が感知できない程度に短い。追加の例では、スイッチング時に、短い休止または復号されたビデオの破損が存在する。
【００５２】
時刻4、840において、第1のビデオデータストリーム810が終了し、第1のビデオデータストリーム810の個々のソフトウェアコーデックの例が停止する。時刻5、845において、第2のビデオデータストリーム825が終了し、ハードウェアコーデックの第2のビデオデータストリーム825の使用が停止する。
【００５３】
動的割当て方法は、符号化と復号の処理の両方に適用可能である。図9は、動的ビデオスイッチングのための方法を説明する、例示的な動的ビデオスイッチングアルゴリズム900の擬似コードリスティングである。
【００５４】
情報および信号は、多種多様な技術および技法のいずれかを使用して表し得ることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００５５】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５６】
本明細書で開示した実施形態と関連して説明した方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
【００５７】
したがって、本発明の実施形態は、動的ビデオスイッチングのための方法を具現化するコンピュータ可読媒体を含み得る。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実行するためのいかなる手段も、本発明の実施形態中に含まれる。
【００５８】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明した本発明の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００５９】
100  従来の割当てモデル
200  通信システム
220  遠隔ユニット
225A  本開示の実施形態
225B  本開示の実施形態
225C  本開示の実施形態
230  遠隔ユニット
240  基地局
250  遠隔ユニット
280  順方向リンク信号
290  逆方向リンク信号
300  動的ビデオスイッチングデバイス
305A  データストリーム
305B  データストリーム
305N  データストリーム
310  プロセッサ
315A  ハードウェアコーデック
315M  ハードウェアコーデック
320A  ソフトウェアコーデック
320X  ソフトウェアコーデック
325  バッファ
330  オペレーティングシステム
335  ディスプレイ
400  ビデオストリーム情報
405  負荷係数
410  現在割り当てられているコーデックタイプ
415  解像度の行
420  解像度の列
425  パラメータ
800  タイムライン
805  時刻1
810  第1のビデオデータストリーム
815  第1のバッファ
820  時刻2
825  第2のビデオデータストリーム
830  第2のバッファ
835  時刻3
840  時刻4
845  時刻5
【図１】
0005788995.tif 000002
【図２】
0005788995.tif 000003
【図３】
0005788995.tif 000004
【図４】
0005788995.tif 000005
【図５】
0005788995.tif 000006
【図６】
0005788995.tif 000007
【図７】
0005788995.tif 000008
【図８】
0005788995.tif 000009
【図９】
0005788995.tif 000010