(58)【調査した分野】(Int.Cl.,DB名)
前記合成表示を回転するための命令セットは、前記合成表示の中心を通る軸のまわりの前記合成表示の回転を示すアニメーションを提示するための命令セットを含むことを特徴とする請求項1に記載のプログラム。
プロセッサによる実行のためのプログラムであって、前記プログラムは第2携帯デバイスとのテレビ会議において第1携帯デバイスの動作を調整するためのものであり、前記プログラムは、
前記第2携帯デバイスのカメラによって取り込まれたビデオを受信するための命令セットと、
前記第2携帯デバイスの前記カメラによって取り込まれた前記ビデオと前記第1携帯デバイスによって取り込まれたビデオとのピクチャインピクチャ(PIP)表示を前記第1携帯デバイスで表示するための命令セットと、
前記第2携帯デバイスの画面の向きの変更を検出するための命令セットと、
前記第2携帯デバイスの回転の通知を受け取るための命令セットと、
前記第2携帯デバイスの画面の向きの前記変更に基づいて前記第1携帯デバイスの画面の前記PIP表示を回転するための命令セットとを有することを特徴とするプログラム。
プロセッサによる実行のためのプログラムであって、前記プログラムは第2携帯デバイスとのテレビ会議において第1携帯デバイスの動作を調整するためのものであり、前記プログラムは、
前記第2携帯デバイスによって取り込まれたビデオであって、前記第1携帯デバイスの画面に表示されるビデオを受け取るための命令セットと、
前記第1携帯デバイスによって取り込まれたビデオの挿入表示とともに、前記第2携帯デバイスによって取り込まれた前記ビデオのメイン表示を生成するための命令セットと、
前記ビデオの合成表示を、前記第1携帯デバイスの画面の向きに向かって移動するように指示するユーザ入力を、タッチセンサ表示画面を介して受け取るための命令セットと、
前記ユーザ入力に基づいて、前記ビデオのうちの前記合成表示を前記第1携帯デバイスの画面の別の位置に変更するための命令セットであって、前記合成表示を変更することは、前記挿入表示の一端を配置するための前記メイン表示内の別の位置として指定された前記第2携帯デバイスによって取り込まれた前記ビデオを示す前記メイン表示内のスナップ位置に前記挿入表示が到達していない間、前記タッチセンサ表示画面との接触が終了した後に前記挿入表示を移動することを含む、命令セットとを有することを特徴とするプログラム。
【発明を実施するための形態】
【0014】
以下の説明で、多くの詳細が説明のために記載されている。しかし、本発明はこれらの特定の詳細を使用せずに実施されてもよいことが当業者に理解されよう。他の例では、不必要な詳細により本発明の説明をあいまいにしないように、よく知られている構造及びデバイスがブロック図の形式で示される。
【0015】
本発明の一部の実施形態は、写真及びビデオを撮影可能な2つのカメラを有する携帯デバイスを提供する。携帯デバイスの例としては、携帯電話機、スマートフォン、携帯情報端末(PDA)、ラップトップ、タブレットパーソナルコンピュータ、又は他の任意のタイプのモバイルコンピューティングデバイスがある。本明細書では、写真とは、単一写真モードで一度に1枚、又は高速実行(fast-action)モードで一度に複数枚、カメラで撮影された静止写真画像を指す。一方、ビデオとは、特定の速度でカメラによって取り込まれた一連のビデオ画像を指し、この速度は、フレームレートと呼ばれることが多い。ビデオを取り込む典型的なフレームレートは、25フレーム/秒(fps)、30fps及び60fpsである。一部の実施形態の携帯デバイスのカメラは、これら及び他のフレームレートでビデオ画像(すなわち、ビデオフレーム)を取り込むことができる。
【0016】
一部の実施形態の携帯デバイスは、(1)取り込まれた写真画像及びビデオ画像を表示でき、(2)取り込まれた画像を後で別のデバイスに伝送するために記憶でき、(3)デバイスのユーザ間でのリアルタイム通信セッション中に、取り込まれた画像を1つ以上のデバイスに伝送でき、(4)取り込まれた画像をローカルに格納するために又は別のデバイスに伝送するために符号化できる。
【0017】
取り込まれたビデオ画像の伝送を伴うリアルタイム通信セッションの一例がテレビ会議である。一部の実施形態では、携帯デバイスは、テレビ会議中の任意の所与の時刻に1つのカメラの取り込まれたビデオ画像のみを伝送できる。しかし、他の実施形態では、携帯デバイスは、テレビ会議中又は他のリアルタイム通信セッション中にそのカメラの両方から取り込まれたビデオ画像を同時に伝送できる。
【0018】
一部の実施形態の携帯デバイスは、1つ以上のデバイスの複数のカメラによって取り込まれた複数のビデオの同時表示を含む合成表示を生成する。いくつかの場合に、合成表示は、隣接する表示域(例えば、隣接するウィンドウ)にビデオを置く。
図1は、1つのデバイスの2つのカメラによって取り込まれた又はテレビ会議中の2つの異なるデバイスの2つのカメラによって取り込まれた、2つのビデオを同時に表示する2つの隣接する表示域105及び110を含む合成表示100のこのような一例を示す。
【0019】
他の場合に、合成表示は、2つの異なるビデオを示す少なくとも2つの表示域を含むPIP表示であり、表示域の一方は背景メイン表示域であり、他方は、背景メイン表示域に重なる前景挿入表示域である。
図2は、合成PIP表示200のこのような一例を示す。この合成PIP表示200は、背景メイン表示域205と、背景メイン表示域に重なる前景挿入表示域210とを含む。2つの表示域205及び210は、1つのデバイスの2つのカメラによって取り込まれた又はテレビ会議中の2つの異なるデバイスの2つのカメラによって取り込まれた、2つのビデオを同時に表示する。本明細書において図示し説明する例示的な合成PIP表示は、背景メイン表示域205の内部に前景挿入表示域210全体が表示される合成PIP表示200と同様であるが、背景メイン表示域205と重なるが完全にその内部にあるわけではない前景挿入表示域210を有する他の合成PIP表示が可能である。
【0020】
別のデバイスとのテレビ会議中にビデオコンテンツを伝送することに加えて、一部の実施形態の携帯デバイスは、会議のビデオコンテンツと共に他のタイプのコンテンツを伝送できる。このような他のコンテンツの一例として、デバイスの他のカメラがテレビ会議で使用されるビデオを取り込んでいる間に、デバイスのカメラのうちの1つによって取り込まれた低解像度又は高解像度の写真画像がある。このような他のコンテンツの他の例として、(1)デバイスに格納されたファイル及び他のコンテンツ、(2)デバイスの画面表示(すなわち、デバイスの画面に表示されるコンテンツ)、(3)テレビ会議又は他のリアルタイム通信セッション中に別のデバイスから受信されたコンテンツなどがある。
【0021】
一部の実施形態の携帯デバイスは、テレビ会議中に調整を行うための新規な会議中調整技術を用いる。例えば、一部の実施形態の携帯デバイスは、テレビ会議中に1つのカメラの取り込まれたビデオのみを伝送しながら、その他のカメラによって取り込まれたビデオを伝送するために動的に切り換えることができる。このような状況で、一部の実施形態の携帯デバイスは、テレビ会議に参加している他の任意のデバイスにこの切り換えを通知し、その結果、この他のデバイスは、2つのカメラによって取り込まれたビデオの間でのスムーズな移行を、このデバイス側で実現できる。
【0022】
一部の実施形態では、カメラ切り換え要求は、テレビ会議中にそのカメラを切り換える「ローカル」デバイスで発生しうるだけでなく、ローカルデバイスによって取り込まれたビデオを受信している他の「リモート」デバイスからも発生しうる。さらに、1つのデバイスが、別のデバイスにカメラを切り換えるように指示できることは、一部の実施形態のデバイスの遠隔制御機能の一例にすぎない。一部の実施形態においてデバイスにリモートから指示できる他の動作の例として、露出調整動作(例えば、自動露出)、焦点調整動作(例えば、オートフォーカス)などがある。ローカル又はリモートから指定可能な新規な会議中調整の別の例は、取り込まれたビデオ内の関心領域(ROI)の識別であり、このROI識別の使用目的は、取り込んでいるカメラの挙動を変更すること、取り込んでいるカメラを有するデバイスの画像処理動作を変更すること、又は取り込んでいるカメラを有するデバイスの符号化動作を変更することである。
【0023】
一部の実施形態の新規な会議中調整のさらに別の例は、デバイスによって生成される合成ビデオ表示のリアルタイム変更を伴う。具体的には、一部の実施形態では、合成ビデオ表示のリアルタイム変更は、ユーザの選択及び表示域の移動に応答して合成表示内で表示域のうちの1つ以上を移動させることを伴う。また、一部の実施形態では、この合成表示を提供したデバイスの画面が回転する場合に、テレビ会議中に合成表示を回転する。また、一部の実施形態の携帯デバイスにより、デバイスのユーザは、PIP表示内のビデオの順序を反転させること(すなわち、背景メイン表示のビデオを前景挿入表示に表示させつつ、前景挿入表示のビデオを背景メイン表示に表示させること)が可能である。
【0024】
いくつかのより詳細な実施形態が以下で説明される。セクションIで、一部の実施形態のビデオ処理アーキテクチャの説明を提供する。その後、セクションIIで、一部の実施形態の取り込み済画像処理ユニットについて説明する。一部の実施形態では、このユニットは、デバイスのカメラによって取り込まれたRAW画像の処理を担当するデバイスのコンポーネントである。
【0025】
次に、セクションIIIで、一部の実施形態のテレビ会議アーキテクチャについて説明する。このセクションで、一部の実施形態のテレビ会議モジュールだけでなく単一カメラによるテレビ会議をセットアップするためのいくつかの方式についても説明する。その後、セクションIVで、一部の実施形態の会議中調整及び制御動作について説明する。その後、セクションVで、テレビ会議中に個々のデバイスから複数のビデオを伝送及び表示する実施形態のテレビ会議機能について説明する。次に、セクションVIにおいて、テレビ会議中の非リアルタイムコンテンツと共にリアルタイムビデオを伝送することについて説明する。最後に、セクションVIIで、一部の実施形態のデュアルカメラデバイスのハードウェアアーキテクチャについて説明する。
【0026】
I.ビデオの取り込み及び処理
図3は、一部の実施形態のデュアルカメラ携帯デバイスのビデオ処理及び符号化モジュール300を概念的に示す。一部の実施形態では、モジュール300は、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像を処理し、同じくデュアルカメラ携帯デバイスのカメラによって取り込まれたビデオを符号化する。
図3に示すように、このモジュール300は、取り込み済画像処理ユニット(CIPU)ドライバ305と、メディア交換モジュール310と、エンコーダドライバ320と、ビデオ処理モジュール325とを含む。
【0027】
一部の実施形態では、メディア交換モジュール310によって、メディアコンテンツの消費者兼製作者であるデバイス上のプログラムが、メディアコンテンツ及びそのメディアコンテンツの処理に関する命令を交換できる。ビデオ処理及び符号化モジュール300では、一部の実施形態のメディア交換モジュール310は、ビデオ処理モジュール325とCIPUドライバ305の間、及びビデオ処理モジュール325とエンコーダドライバ320の間で、命令及びメディアコンテンツを経路制御する。このような命令及びメディアコンテンツのルーティングを容易にするため、一部の実施形態のメディア交換モジュール310は、メディアコンテンツの消費者及び製作者が使用するアプリケーションプログラミングインタフェース(API)の集合を提供する。このような実施形態のうちのいくつかでは、メディア交換モジュール310は、デュアルカメラ携帯デバイスで動作するオペレーティングシステムの一部である1つ以上のフレームワークの集合である。このようなメディア交換モジュール310の一例は、Apple Incによって提供されるCore Mediaフレームワークである。
【0028】
ビデオ処理モジュール325は、デバイスのカメラによって取り込まれた画像及び/又はビデオに対して画像処理を実行する。このような動作の例として、露出調整動作、焦点調整動作、パースペクティブ補正、ダイナミックレンジ調整、画像サイズ変更、画像合成などがある。一部の実施形態では、いくつかの画像処理動作は、メディア交換モジュール310によって実行されることもできる。例えば、
図3に示すように、一部の実施形態のメディア交換モジュール310は、デバイスのカメラによって取り込まれたビデオ画像のノイズを低減する時間ノイズ低減(TNR)動作を(例えば、TNR315によって)実行する。ビデオ処理モジュール325及びメディア交換モジュール310のこのような画像処理動作のさらなる例について、以下に提供する。
【0029】
上述のように、ビデオ処理モジュール325は、メディア交換モジュール310を通じて、CIPUドライバ305及びエンコーダドライバ320とやり取りする。CIPUドライバ305は、取り込み済画像処理ユニット(CIPU)330とメディア交換モジュール310の間の通信インタフェースとして機能する。以下でさらに説明するように、CIPU330は、デバイスのカメラの画像取り込み動作又はビデオ取り込み動作中に取り込まれた画像の処理を担当するデュアルカメラデバイスのコンポーネントである。CIPUドライバ305は、ビデオ処理モジュール325からメディア交換モジュール310を通じて、デバイスのカメラの一方又は両方からの画像及び/又はビデオの要求を受け取る。CIPUドライバ305は、このような要求をCIPU330に中継し、それに応答して、要求された画像及び/又はビデオをCIPU330から受け取り、CIPUドライバ305はその後、この画像及び/又はビデオを、メディア交換モジュール310を通じてビデオ処理モジュール325に送る。一部の実施形態のビデオ処理モジュール325はまた、CIPUドライバ305及びメディア交換モジュール310を通じて、自身の動作のうちの一部を変更する(例えば、カメラのフレームレート、露出調整動作、焦点調整動作などを変更する)ために、命令をCIPU330に送る。
【0030】
エンコーダドライバ320は、メディア交換モジュール310とエンコーダハードウェア335の間の通信インタフェース(例えば、エンコーダチップ、システムオンチップ上の符号化コンポーネントなど)として機能する。一部の実施形態では、エンコーダドライバ320は、ビデオ処理モジュール325からメディア交換モジュール310を通じて、画像及びこの画像を符号化する要求を受け取る。エンコーダドライバ320は、符号化されるべき画像をエンコーダ335に送り、その後エンコーダ335は、ピクチャ符号化又はビデオ符号化を画像に対して実行する。エンコーダドライバ320がエンコーダ335から符号化された画像を受け取る場合に、エンコーダドライバ320は、この符号化された画像を、メディア交換モジュール310を通じてビデオ処理モジュール325に送り返す。
【0031】
一部の実施形態では、ビデオ処理モジュール325は、エンコーダから受け取った符号化された画像に対してさまざまな動作を実行できる。このような動作の例として、符号化された画像のデバイスの記憶装置への格納、デバイスのネットワークインタフェースを通じたテレビ会議中の符号化された画像の伝送などがある。
【0032】
一部の実施形態では、ビデオ処理及び符号化モジュール300のモジュールの一部又は全部がオペレーティングシステムの一部として実装される。例えば、一部の実施形態では、このモジュール300の4つのコンポーネント305、310、320及び325のすべてがデバイスのオペレーティングシステムの一部として実装される。他の実施形態では、メディア交換モジュール310、CIPUドライバ305及びエンコーダドライバ320がデバイスのオペレーティングシステムの一部として実装され、ビデオ処理モジュール325はオペレーティングシステム上で実行されるアプリケーションとして有する。さらに、モジュール300の他の実装が可能である。
【0033】
ビデオ取り込みセッション中のビデオ処理及び符号化モジュール300の動作について以下に説明する。ビデオ取り込みセッションを開始するために、ビデオ処理モジュール325は、ビデオ取り込みセッションに必要ないくつかのコンポーネントを初期化する。一部の実施形態では、これらのコンポーネントとして、(1)CIPU330、(2)ビデオ処理モジュール325の拡大縮小及び合成モジュール(不図示)、(3)ビデオ処理モジュール325の画像処理モジュール(不図示)及び(4)エンコーダ335を含む。また、一部の実施形態のビデオ処理モジュール325は、テレビ会議に参加する際に、ネットワークマネージャ(不図示)を初期化する。
【0034】
ビデオ処理モジュールは、デバイスのカメラの一方又は両方にビデオ取り込みを開始させるために、メディア交換モジュール310及びCIPUドライバ305を通じて、その初期化要求をCIPU330に送る。一部の実施形態では、この要求は、ビデオを取り込む必要がある各カメラに対する、特定のフレームレート、露出レベル及び拡大縮小サイズを指定する。この要求に応答して、CIPU330は、要求されたカメラからのビデオ画像を、指定されたレート(群)、露出レベル(群)及び拡大縮小サイズ(群)で戻し始める。これらのビデオ画像は、CIPUドライバ305及びメディア交換モジュール310を通じてビデオ処理モジュール325に戻され、メディア交換モジュール310は、上述のように、ビデオ画像にTNR動作を実行してからビデオ処理モジュール325に供給する。ビデオ処理モジュール325で、ビデオ画像は、さらなる画像処理のためにバッファ(不図示)に格納される。
【0035】
ビデオ処理モジュール325の画像処理モジュールは、さらなるビデオ処理のためにバッファに格納されたビデオ画像を読み出す。拡大縮小及び合成モジュールは、その後、デバイスの表示画面でのリアルタイム表示に必要ならば拡大縮小するために、処理されたビデオ画像を読み出す。一部の実施形態では、このモジュールは、デバイス上での取り込まれたビデオ画像のリアルタイム表示を提供するため又は符号化のために合成ビデオ画像を作成するために、テレビ会議中に別のデバイスのカメラ(群)と共にデバイスの2つのカメラによって取り込まれた画像から又はデバイスのカメラ(群)によって取り込まれた画像から合成画像を作成する。
【0036】
処理された及び/又は合成されたビデオ画像は、エンコーダドライバ320及びメディア交換モジュール310を通じてエンコーダ335に供給される。その後、エンコーダ335は、そのビデオ画像を符号化する。その後、符号化された画像は、デバイスでの格納又はテレビ会議中の伝送のために、(やはりエンコーダドライバ320及びメディア交換モジュール310を通じて)ビデオ処理モジュール325に戻される。デバイスがテレビ会議に参加している場合に、(ビデオ処理モジュール325によって初期化された)ネットワークマネージャは、その後、これらの符号化された画像を読み出し、これらの画像をパケット化してデバイスのネットワークインタフェース(不図示)を通じて1つ以上の他のデバイスに伝送する。
【0037】
II.取り込まれた画像の処理
A.単一のパイプライン
一部の実施形態のデュアルカメラ携帯デバイスのカメラによって取り込まれた画像は、処理されていないRAW画像である。これらの画像は、(例えば、テレビ会議中の)別のデバイスへの画像の伝送、画像の格納又は画像の表示などの他の動作に使用されうる前に、特定の色空間への変換を必要とする。さらに、カメラによって取り込まれた画像は、誤り及び/又は歪みを補正し、画像の色、サイズなどを調整するために処理される必要がありうる。したがって、一部の実施形態では、このような画像を格納、伝送及び表示する前に、画像に対していくつかの処理動作を実行する。このような画像の処理の一部は、CIPU330によって実行される。
【0038】
このようなCIPUの一例が
図4に示される。具体的には、この図は、一部の実施形態の取り込み済画像処理ユニット(CIPU)400を概念的に示す。このCIPU400は、デバイスのカメラの1つのカメラのみからの画像を一度に処理するか、又はデバイスのカメラの両方からの画像を時分割多重化方式で(すなわち、時間インタリーブ方式で)同時に処理する単一の処理パイプライン485を含む。CIPU400の処理パイプライン485は、異なるカメラの異なる特性及び/又は動作設定に対処するように異なって構成されうる。一部の実施形態における異なるカメラ特性の例として、異なる解像度、雑音センサ、レンズのタイプ(固定レンズ又はズームレンズ)などを含む。また、デバイスが一部の実施形態においてカメラを動作できる異なる動作設定の例として、画像の解像度サイズ、フレームレート、ズームレベル、露出レベルなどを含む。
【0039】
図4に示すように、CIPU400は、センサモジュール415と、ライン/フレームバッファ417と、不良画素補正(BPC)モジュール420と、レンズシェーディング(LS)モジュール425と、デモザイキングモジュール430と、ホワイトバランス(WB)モジュール435と、ガンマモジュール440と、色空間変換(CSC)モジュール445と、色相、彩度、及びコントラスト(HSC)モジュール450と、スケーラモジュール455と、フィルタモジュール460と、統計エンジン465と、2組のレジスタ470と、コントローラモジュール475とを含む。一部の実施形態では、CIPU400のモジュールのすべては、ハードウェア(例えば、ASIC、FPGA、マイクロコントローラを有するSOCなど)として実装されるが、他の実施形態では、CIPU400のモジュールの一部又はすべては、ソフトウェアとして実装される。
【0040】
図4に示すように、センサモジュール415は、デバイスの2つのカメラの2つの画素アレイ410a及び410b並びに2組のセンサ405a及び405bに通信可能に結合する。一部の実施形態では、この通信可能な結合は、各カメラセンサのモバイルインダストリプロセッサインタフェース(MIPI)によって容易になる。
【0041】
この通信可能な結合によって、センサモジュール415は、各カメラの電力レベル、ズームレベル、フォーカス、露出レベルなどのその動作の種々の側面を制御するためにカメラに命令を転送できる。一部の実施形態では、各カメラは、4つの動作電力モードを有する。第1動作電力モードでは、カメラの電源が切れている。第2動作電力モードの場合、カメラの電源が投入されているが、まだ構成されていない。第3動作電力モードでは、カメラの電源は投入されており、カメラのセンサは構成されており、カメラセンサの画素は、光子を収集して、収集した光子をデジタル値に変換する。しかし、カメラセンサは、画像をセンサモジュール415にまだ送っていない。最後に、第4動作電力モードでは、カメラは、カメラがセンサモジュール415に画像を現在送っていることを除いて、第3電力モードと同じ動作電力モードである。
【0042】
デバイスの動作中に、カメラは、1つの動作電力モードから別のモードに任意の回数切り換わってもよい。動作電力モードを切り換える場合に、一部の実施形態では、カメラが、上述の順番で動作電力モードを切り換えることが必要とされる。したがって、これらの実施形態では、第1動作電力モードのカメラは、第2動作電力モードのみに切り換わることができる。カメラは、第2動作電力モードの場合に、第1動作電力モード又は第3動作電力モードに切り換わることができる。同様に、カメラは、第3動作電力モードから第2動作電力モード又は第4動作電力モードに切り換わることができる。カメラは、第4動作電力モードの場合に、第3動作電力モードに切り換わって戻ることのみができる。
【0043】
さらに、ある動作電力モードから次又は前の動作電力モードに切り換わるには、特定の量の時間がかかる。したがって、2つ又は3つの動作電力モードの間での切り換えは、1つ動作電力モードの切り換えよりも低速である。また、動作電力モードによって消費する電力量が異なる。例えば、第4動作電力モードは最も多くの量の電力を消費し、第3動作電力モードは、第1動作電力モード及び第2動作電力モードよりも多くの電力を消費し、第2動作電力モードは第1動作電力モードよりも多くの電力を消費する。一部の実施形態では、第1動作電力モードは、電力を全く消費しない。
【0044】
カメラは、画像を取り込む第4動作電力モードでない場合に、他の動作電力モードのうちの1つのままであってもよい。使用されていないカメラをそのままにしておくための動作モードの決定は、カメラがどれほど多くの電力を消費することを許可されているか、及びカメラが画像取り込み開始要求にどれほど迅速に応答する必要がありうるかに依存する。例えば、第3動作電力モード(例えば、スタンバイモード)で動作するように構成されたカメラは、第1動作電力モードであるように(すなわち、電源が切れているように)構成されたカメラよりも多くの電力を消費する。しかし、カメラが、画像を取り込むように命令された場合に、第3動作電力モードで動作しているカメラは、第1動作電力モードで動作しているカメラよりも迅速に第4動作電力モードに切り換わることができる。このように、カメラは、画像を取り込んでいない場合にさまざまな要件(例えば、画像の取り込み要求に対する応答時間、消費電力)に基づいて異なる動作電力モードで動作するように構成されうる。
【0045】
以下でさらに説明するように、ビデオ処理モジュール325が一方又は両方のカメラに画像を取り込み始めるように要求し、センサモジュール415がこの要求をコントローラモジュール475を通じて受け取る場合に、センサモジュール415は、各カメラとの通信可能な結合を通じて、一方又は両方のカメラセンサの集合に、画像を取り込み始めるように指示できる。カメラセンサのそれぞれにベイヤーフィルタが重畳され、したがって、各カメラセンサは、ベイヤーパターン画像を出力し、このベイヤーパターン画像は、各カメラセンサに関連する画素アレイに格納される。ベイヤーパターン画像とは、各画素が赤色、青色又は緑色のうち1色のみを格納する画像である。
【0046】
センサモジュール415は、画素アレイ410a及び410bとの自身の結合を通じて、カメラ画素アレイ410a及び410bに格納されているベイヤーパターンRAW画像を読み出す。センサモジュール415がカメラの画素アレイから画像を読み出す速度を制御することによって、センサモジュール415は、特定のカメラによって取り込まれているビデオ画像のフレームレートを制御できる。センサモジュール415は、自身の画像読み出し速度を制御することによって、CIPU処理パイプライン485による、異なるカメラから取り込まれた画像の画像処理をインタリーブするために、異なるカメラによって取り込まれた画像のフェッチをインタリーブすることもできる。センサモジュール415の画像読み出しの制御について、以下のサブセクションII.A.1及びII.A.2でさらに説明する。
【0047】
センサモジュール415は、画像ライン(すなわち、画像の画素行)をセンサモジュール415が画素アレイ410a及び410bから読み出して、ライン/フレームバッファ417に格納する。ライン/フレームバッファ417内の各画像ラインは、CIPU処理パイプライン485によって処理される。
図4に示すように、CIPU処理パイプライン485は、BPCモジュール420、LSモジュール425、デモザイキングモジュール430、WBモジュール435、ガンマモジュール440、CSCモジュール445、HSCモジュール450、スケーラモジュール455及びフィルタモジュール460によって形成される。一部の実施形態では、CIPU処理パイプライン485は、ライン/フレームバッファ417からの画像を1ラインずつ(すなわち、1行ずつ)処理するが、他の実施形態では、CIPU処理パイプライン485は、ライン/フレームバッファ417からの画像全体を1フレームずつ処理する。
【0048】
図4に示される例示的なパイプラインでは、BPCモジュール420は、ライン/フレームバッファ417から画像を読み出すモジュールである。このモジュールは、読み出された画像中の不良画素を補正するように試みる不良画素除去動作を実行し、この不良画素は、カメラセンサの1つ以上に欠陥があったこと(例えば、欠陥のある光センサが光をまったく検知しないか、光を間違って検知するなど)によって生じる可能性がある。一部の実施形態では、BPCモジュール420は、画像中の特定の画素を画像中の隣接する1つ以上の画素と比較することによって不良画素を検出する。特定の画素の値と隣接する画素の値との差がしきい値量よりも大きいならば、特定の画素の値は、特定の画素と同じ色(すなわち、赤色、緑色及び青色)の隣接するいくつかの画素の値の平均によって置き換えられる。
【0049】
BPCモジュール420の動作は、このモジュール用にCIPU400の2組のレジスタ470に格納された値によって一部が制御される。具体的には、デバイスの2つの異なるカメラによって取り込まれた画像を処理するために、一部の実施形態では、上述のように、CIPU処理パイプライン485は、各カメラに対して異なるように構成される。CIPU処理パイプライン485は、CIPU400の2つの異なるレジスタ470a(Ra)の集合及び470b(Rb)の集合に2つの異なる値の集合を格納することによって、2つの異なるカメラについて構成される。レジスタ470の各集合は、CIPU処理パイプライン485内にモジュール420〜460のそれぞれに対して1つのレジスタ(Ra又はRb)を含む。各レジスタセット内の各レジスタは、1つの処理パイプラインモジュールの動作を定義する1セットの値を格納する。したがって、
図4に示すように、レジスタセット470aは、デュアルカメラ携帯デバイスの一方のカメラ(カメラA)のための各処理パイプラインモジュールの動作のモードを示すためにあり、レジスタセット470bは、デュアルカメラ携帯デバイスの他方のカメラ(カメラB)のための各モジュールの動作のモードを示すためにある。
【0050】
各カメラ向けに異なるようにCIPU処理パイプライン485を構成する一例は、さまざまなサイズの画像を処理するようにCIPU処理パイプライン485のモジュールを構成することである。例えば、カメラセンサ405aが640×480画素で、カメラセンサ405bが2048×1536画素であるならば、レジスタ470aの集合は、CIPU処理パイプライン485のモジュールに640×480画素画像を処理するように命令する値を格納するように構成され、レジスタ470bの集合は、CIPU処理パイプライン485のモジュールに2048×1536画素画像を処理するように命令する値を格納するように構成される。
【0051】
一部の実施形態では、異なる処理パイプライン構成(すなわち、レジスタ値)は、異なるプロファイル設定に格納される。このような実施形態のうちの一部では、携帯デバイスのユーザは、カメラ(群)の動作を設定するために(例えば、携帯デバイスに表示されるユーザインタフェースによって)プロファイル設定のうちの1つを選択することを許可されている。例えば、ユーザは、高解像度ビデオを取り込むようにカメラを構成するためのプロファイル設定、低解像度ビデオを取り込むように同じカメラを構成するためのプロファイル設定、又は高解像度静止画像を取り込むように両方のカメラを構成するためのプロファイル設定を選択できる。さまざまな構成が可能であり、多数の異なるプロファイル設定に格納されうる。このような実施形態の他のものでは、ユーザにプロファイル設定を選択させる代わりに、プロファイル設定は、ユーザが選択したアプリケーション又はアクティビティに基づいて自動的に選択される。例えば、ユーザがテレビ会議アプリケーションを選択したならば、ビデオを取り込むように両方のカメラを構成するプロファイルが自動的に選択され、ユーザが写真アプリケーションを選択したならば、静止画像を取り込むようにカメラのうちの1つを構成するプロファイルが自動的に選択される、などである。
【0052】
BPCモジュール420の後に、LSモジュール425は、不良画素補正済みの画像を受け取る。LSモジュール425は、ライトフォールオフ効果を生じる(すなわち、光がカメラセンサの端に向かって減少する)カメラレンズによって引き起こされる画像の欠陥を補正するためにレンズシェーディング補正動作を実行する。このような効果によって、画像は不均一に照らされる(例えば、隅及び/又は端の方が暗い)。これらの画像の欠陥を補正するために、一部の実施形態のLSモジュール425は、レンズの照度フォールオフの数学的モデルを推定する。その後、推定されたモデルは、画像の不均一に照らされた部分を均一に照らすように画像のレンズフォールオフを補償するために使用される。例えば、画像の隅の明度が画像の中心の半分であるならば、一部の実施形態のLSモジュール425は、均一な画像を生成するために隅の画素値に2倍にする。
【0053】
デモザイキングモジュール430は、サンプリングされた色の画像からフルカラー画像を生成するためにデモザイキング動作を実行する。前述のように、カメラセンサがベイヤーパターン画像を出力するが、ベイヤーパターン画像の各画素は1色の値のみを格納するのでこのベイヤーパターン画像は不完全である。デモザイキングモジュール430は、ベイヤーパターン画像の各色集合に対する色値を補間することによって、ベイヤーパターン画像から赤色、緑色、青色(RGB)画像を再構成する。
【0054】
WBモジュール435は、画像のコンテンツの色が、実生活でヒトの眼に知覚されるこのようなコンテンツの色に類似するように、デモザイキングモジュール430から受け取ったRGB画像にホワイトバランス動作を実行する。WBモジュール435は、中間色(例えば、灰色、白色など)を適切にレンダリングするように画像の色を調整することによって、ホワイトバランスを調整する。例えば、白熱光下での1枚の白紙の画像は黄色に見えることがあるが、ヒトの眼は、この紙を白色と知覚する。センサが取り込んだ画像の色とヒトの眼が知覚する色との違いを考慮するために、WBモジュール435は、取り込まれた画像がヒトの眼によって知覚される色を適切に反映するように画像の色値を調整する。
【0055】
統計エンジン465は、CIPU処理パイプライン485の種々の段階において画像データを収集する。例えば、
図4は、統計エンジン465がLSモジュール425、デモザイキングモジュール430及びWBモジュール435の後に画像データを収集することを示す。さまざまな実施形態では、CIPU処理パイプライン485の任意の数のさまざまな段階からデータを収集する。統計エンジン465は、収集されたデータを処理し、処理されたデータに基づいて、コントローラモジュール475及びセンサモジュール415を通じてカメラセンサ405a及び405bの動作を調整する。このような動作の例としては、露出及びフォーカスがある。
図4は、統計エンジン465がコントローラモジュール475を通じてカメラセンサ405a及び405bを制御することを示しているが、統計エンジン465の他の実施形態は、まさにセンサモジュール415を通じてカメラセンサを制御する。
【0056】
処理されたデータは、CIPU400の種々のモジュールの動作を調整するために使用することもできる。例えば、一部の実施形態の統計エンジン465は、WBモジュール435の後で収集されたデータに基づいてWBモジュール435の動作を調整する。このような実施形態のうちの一部では、統計エンジン465は、処理されたデータを使用してWBモジュール435のホワイトバランス動作を調整することによって、自動ホワイトバランス(AWB)機能を提供する。他の実施形態では、CIPU処理パイプライン485の任意の数の段階から収集された処理済みのデータを使用してCIPU処理パイプライン485内の任意の数のモジュールの動作を調整できる。さらに、統計エンジン465は、CIPU処理パイプライン485の1つ以上のモジュールの動作を調整するためにコントローラモジュール475から命令を受け取ることもできる。
【0057】
ガンマモジュール440は、WBモジュール435から画像を受け取った後で、カメラシステムの輝度又は3刺激値を符号化し復号するために、ガンマ補正動作を画像に対して実行する。一部の実施形態のガンマモジュール440は、画像のガンマを補正するために10〜12ビットの線形信号を8ビットの非線形の符号化信号に変換することによってガンマを補正する。一部の実施形態では、ルックアップテーブルを使用することによってガンマを補正する。
【0058】
CSCモジュール445は、ガンマモジュール440から受け取った画像を、ある色空間から別の色空間に変換する。具体的には、CSCモジュール445は、RGB色空間から輝度及び色差(YUV)色空間に画像を変換する。しかし、CSCモジュール445の他の実施形態は、任意の数の色空間から、任意の数の色空間に画像を変換できる。
【0059】
HSCモジュール450は、CSCモジュール445から受け取った画像の色相、彩度、コントラスト又はそれらの任意の組み合わせを調整してもよい。HSCモジュール450は、例えば、これらの性質を調整して、ノイズを減少させたり画像を向上させたりできる。例えば、低ノイズカメラセンサによって取り込まれた画像の彩度は、画像をより鮮明に見えるようにするために増加できる。対照的に、高ノイズカメラセンサによって取り込まれた画像の彩度は、このような画像の色ノイズを抑えるように減少できる。
【0060】
HSCモジュール450の後で、スケーラモジュール455は、画像の画素解像度を調整するか又は画像のデータサイズを調整するために、画像をサイズ変更できる。スケーラモジュール455は、例えば、より小さな表示に適合させるために画像のサイズを低減してもよい。スケーラモジュール455は、いくつかの異なる方法で画像を拡大縮小できる。例えば、スケーラモジュール455は、画像を拡大したり(すなわち、引き伸ばす)縮小したり(すなわち、縮める)できる。スケーラモジュール455は、画像を比例して拡大縮小するか又は画像をアナモルフィックに拡大縮小することもできる。
【0061】
フィルタモジュール460は、画像の一部又は全部の画素の1つ以上の属性を変更するために、スケーラモジュール455から受け取った画像に1つ以上のフィルタ動作を適用する。フィルタの例としては、いくつかの例の中でも特に、ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、バイラテラルフィルタ、ガウシアンフィルタがある。このようなものとして、フィルタモジュール460は、画像に任意の数の異なるフィルタを適用できる。
【0062】
一部の実施形態のコントローラモジュール475は、CIPU400の動作を制御するマイクロコントローラである。一部の実施形態では、コントローラモジュール475は、(1)センサモジュール415を通じてカメラセンサの動作(例えば、露出レベル)、(2)CIPU処理パイプライン485の動作、(3)CIPU処理パイプライン485のタイミング(例えば、いつカメラセンサを切り換えるべきか、いつレジスタを切り換えるべきかなど)、及び(4)一部の実施形態のデュアルカメラ携帯デバイスの一部であるフラッシュ/ストロボ(不図示)を制御する。
【0063】
コントローラモジュール475の一部の実施形態は、統計エンジン465及びCIPUドライバ480から受け取った命令を処理する。一部の実施形態では、CIPUドライバ480から受け取った命令は、デュアルカメラ携帯デバイスからの(すなわち、ローカルデバイスから受け取った)命令であるが、他の実施形態では、CIPUドライバ480から受け取った命令は、別のデバイス(例えば、テレビ会議中のリモート制御)からの命令である。コントローラモジュール475は、処理された命令に基づいて、レジスタ470の値をプログラミングすることによって、CIPU400の動作を調整できる。さらに、コントローラモジュール475は、CIPU400の動作中にレジスタ470の値を動的に再プログラムできる。
【0064】
図4に示すように、CIPU400は、CIPU処理パイプライン485に複数のモジュールを含む。しかし、CIPU400はほんの数個の説明したモジュール又は異なる追加のモジュールで実装できることが当業者には理解されよう。さらに、異なるモジュールによって実行される処理は、
図4に示される順序とは異なる順序で画像に適用されうる。
【0065】
ここで、CIPU400の例示的な動作について、
図4を参照して説明する。説明のために、レジスタRaの集合は、デュアルカメラ携帯デバイスのカメラセンサ405aによって取り込まれた画像を処理するために使用され、レジスタRbの集合は、デュアルカメラ携帯デバイスのカメラセンサ405bによって取り込まれた画像を処理するために使用される。コントローラモジュール475は、デュアルカメラ携帯デバイスのカメラのうちの1つによって取り込まれた画像を生成するためにCIPUドライバ480から命令を受け取る。
【0066】
コントローラモジュール475は、その後、デュアルカメラ携帯デバイスのカメラのうちの1つによって取り込まれた画像を処理するためにCIPU処理パイプライン485の種々のモジュールを初期化する。一部の実施形態では、これは、レジスタ470のうちのレジスタの適切な集合が使用されていることをコントローラモジュール475が確認することを含む。例えば、CIPUドライバ480が、カメラセンサ405aによって取り込まれた画像を生成するようにコントローラモジュール475に命令するならば、コントローラモジュール475は、レジスタRaの集合が、CIPU400のモジュールの読み取るレジスタの集合であることを確認する。そうでないならば、コントローラモジュール475は、レジスタRaの集合が、CIPU400のモジュールによって読み取られる集合であるように、レジスタの集合を切り換える。
【0067】
CIPU処理パイプライン485の各モジュールに対して、動作のモードが、レジスタRaの集合に格納された値によって示される。前述したように、レジスタ470の集合の値は、CIPU400の動作中に動的に再プログラムされうる。したがって、1つの画像の処理は、次の画像の処理と異なりうる。CIPU400のこの例示的な動作の説明では、CIPU400の各モジュールが、モジュールの動作のモードを示すレジスタに格納された値を読み取ることが説明されているが、いくつかのソフトウェアで実装された実施形態では、その代わりに、パラメータがCIPU400の種々のモジュールに渡される。
【0068】
一部の実施形態では、コントローラモジュール475は、画素アレイ410aから画像を読み出した後で特定の量の時間だけ遅延するようにセンサモジュール415に命令することによってセンサモジュール415を初期化する。言い換えれば、コントローラモジュール475は、特定のレートで画素アレイ410aから画像を読み出すように、センサモジュール415に命令する。
【0069】
次に、コントローラモジュール475は、画像を取り込むように、センサモジュール415を通じて、カメラセンサ405aに命令する。一部の実施形態では、コントローラモジュール475は、カメラセンサ405aに、露出及び他のカメラ動作のパラメータも提供する。他の実施形態では、カメラセンサ405aは、カメラセンサ動作パラメータにデフォルト値を使用する。カメラセンサ405aは、パラメータに基づいて、画素アレイ410aに格納されたRAW画像を取り込む。センサモジュール415は、CIPU処理パイプライン485が画像を処理する前に、画素アレイ410aからRAW画像を読み出し、格納のために、この画像をライン/フレームバッファ417に送る。
【0070】
ある一定の状況では、画像は、ライン/フレームバッファ417によって破棄されうる。カメラセンサ405a及び/又は405bが高速で画像を取り込んでいる場合に、センサモジュール415は、BPCモジュール420がライン/フレームバッファ417から画像を読み出すことができる(例えば、高フレームレートビデオを取り込む)よりも高速に、画像を受け取ってライン/フレームバッファ417に格納でき、ライン/フレームバッファ417はいっぱいになるだろう。これが発生すると、一部の実施形態のライン/フレームバッファ417は、先入れ先出し方式に基づいて画像(すなわち、フレーム)を破棄する。すなわち、ライン/フレームバッファ417が画像を破棄する場合に、ライン/フレームバッファ417は、ライン/フレームバッファ417の他のすべての画像の前に受け取った画像を破棄する。
【0071】
CIPU処理パイプライン485による画像の処理は、画像の不良画素を補正するためにBPCモジュール420がライン/フレームバッファ417から画像を読み出すことによって開始する。その後、BPCモジュール420は、画像の不均一な照度を補正するためにLSモジュール425に画像を送る。画像の照度が補正された後、LSモジュール425は、RAW画像を処理してRAW画像からRGB画像を生成するデモザイキングモジュール430に画像を送る。次に、WBモジュール435は、デモザイキングモジュール430からRGB画像を受け取り、RGB画像のホワイトバランスを調整する。
【0072】
前述のように、統計エンジン465は、CIPU処理パイプライン485の種々の時点で何らかのデータを収集していてもよい。例えば、統計エンジン465は、
図4に示すように、LSモジュール425、デモザイキングモジュール430及びWBモジュール435の後でデータを収集する。この収集されたデータに基づいて、統計エンジン465は、カメラセンサ405aからの以後の画像の取り込みを調整するために、カメラセンサ405aの動作、CIPU処理パイプライン485の1つ以上のモジュールの動作、又は両方を調整できる。例えば、収集したデータに基づいて、統計エンジン465は、現在の画像の露出レベルが低すぎ、したがって、その後で取り込まれる画像に対する露出レベルを増加させるようにセンサモジュール415を通じてカメラセンサ405aに命令することを決定してもよい。したがって、一部の実施形態の統計エンジン465は、一部の処理動作のためのフィードバックループとして動作する。
【0073】
WBモジュール435は、画像のホワイトバランスを調整した後、ガンマ補正のため(例えば、画像のガンマ曲線を調整するため)にガンマモジュール440に画像を送る。CSCモジュール445は、ガンマモジュール440からガンマ補正済みの画像を受け取り、色空間変換を実行する。この例では、CSCモジュール445は、RGB画像をYUV画像に変換する。言い換えれば、CSCモジュール445は、RGB色空間で表される画像をYUV色空間で表される画像に変換する。HSCモジュール450は、CSCモジュール445からYUV画像を受け取り、画像の種々の画素の色相属性、彩度属性及びコントラスト属性を調整する。HSCモジュール450の後で、スケーラモジュール455は、画像をサイズ変更する(例えば、画像を引き伸ばす又は縮める)。フィルタモジュール460は、スケーラモジュール455から画像を受け取った後、画像に対して1つ以上のフィルタを適用する。最後に、フィルタモジュール460は、処理された画像をCIPUドライバ480に送る。
【0074】
上述のCIPU400の動作のこの例では、CIPU処理パイプライン485の各モジュールは、何らかの方式で画像を処理した。しかし、CIPU400によって処理される他の画像は、CIPU処理パイプライン485のすべてのモジュールによる処理を必要としなくてもよい。例えば、画像は、ホワイトバランス調整、ガンマ補正、拡大縮小又はフィルタ処理を必要としなくてもよい。したがって、CIPU400は、例えば、CIPUドライバ480からの命令などのさまざまな受け取った入力又は統計エンジン465によって収集されたデータに基づいて任意の複数の手法で画像を処理できる。
【0075】
異なる実施形態は、画像が処理される速度(すなわち、フレームレート)を異なるように制御する。フレームレートを制御する1つの方式は、垂直帰線消去期間(VBI)の操作によるものである。画像を1ラインずつ処理するために画像ラインを読み出す一部の実施形態では、VBIは、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオの画像の最後のラインを画素アレイから読み出すことと、ビデオの次の画像の最初のラインを画素アレイから読み出すこととの時間差である。他の実施形態では、VBIは、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオの1つの画像を画素アレイから読み出すことと、ビデオの次の画像を画素アレイから読み出すこととの時間差である。
【0076】
VBIを使用できる1つの例は、センサモジュール415と画素アレイ410a及び410bとの間である。例えば、センサモジュール415の一部の実施形態は、画素アレイ410a及び410bから画像を1ラインずつ読み出し、センサモジュール415の他の実施形態は、画素アレイ410a及び410bから画像を1画像ずつ読み出す。したがって、フレームレートは、センサモジュール415のVBIを調整することによって制御されうる。VBIを増加させると、フレームレートが減少し、VBIを減少させると、フレームレートが増加する。
【0077】
1.シングルカメラのためのVBIの使用:フレームレート制御
図5は、異なるVBIに基づいた異なるフレームレート505、510及び515の例を概念的に示す。各シーケンスは、デュアルカメラ携帯デバイスのカメラのうちの1つによって取り込まれた、タイムライン520に沿った種々の時刻525〜555でのギターを持つ人の画像を示す。さらに、各時刻525〜555間の時間は同じであり、1単位時間と呼ばれる。説明のために、ここで
図5について、
図4のセンサモジュール415及び画素アレイ410aに関して説明する。したがって、各画像は、センサモジュール415が画素アレイ410aから画像を読み出す時刻をタイムライン520に沿って表す。
【0078】
例示的なフレームレート505では、画素アレイ410aのためのセンサモジュール415のVBIは、(例えば、コントローラモジュール475によって)3単位時間に設定される。すなわち、センサモジュール415は、タイムライン520に沿って3時刻ごとに画素アレイ410aから画像を読み出す。例示的なフレームレート505に示されるように、センサモジュール415は、時刻525、540、及び555に画像を読み出す。したがって、例示的なフレームレート505は、3単位時間ごとに1画像のフレームレートを有する。
【0079】
例示的なフレームレート510は、VBIが2単位時間に設定されることを除いて、例示的なフレームレート505と同様である。したがって、センサモジュール415は、タイムライン520に沿って2時刻ごとに画素アレイ410aから画像を読み出す。例示的なフレームレート510は、センサモジュール415が時刻525、535、545及び555に画素アレイ410aから画像を読み出すことを示す。例示的なフレームレート510のVBIは例示的なフレームレート505のVBIよりも小さいので、例示的なフレームレート510のフレームレートは例示的なフレームレート505のフレームレートよりも高い。
【0080】
例示的なフレームレート515も、画素アレイ410aのためのセンサモジュール415のVBIが1単位時間に設定されることを除いて、例示的なフレームレート505と同様である。したがって、センサモジュール415は、タイムライン520に沿って1時刻ごとに画素アレイ410aから画像を読み出すように命令される。図示のように、センサモジュール415は、時刻525〜555に画素アレイ410aから画像を読み出す。例示的なフレームレート515のVBIは、例示的なフレームレート505及び510のVBIよりも小さい。したがって、例示的なフレームレート515のフレームレートは、例示的なフレームレート505及び510よりも高い。
【0081】
2.2つのカメラのためのVBIの使用
一部の実施形態では、デュアルカメラ携帯デバイスの両方のカメラを同時に動作する(例えば、テレビ会議中に両方のカメラからビデオを伝送する)ことが望まれうる。単一の処理パイプラインを含むデュアルカメラ携帯デバイスの異なる実施形態は、デュアルカメラ携帯デバイスの両方のカメラを同時に動作するための異なる機構を提供する。
【0082】
このような1つの機構は、各カメラのVBIを制御することによって、両方のカメラにより取り込まれた画像の処理をインタリーブすることである。すなわち、一方のカメラによって取り込まれた1つ以上の画像が、他方のカメラのVBI中に取り込まれて処理され、一方のカメラのVBI中に、他方のカメラによって取り込まれた1つ以上の画像が取り込まれて処理される。上述のCIPU400は単一の処理パイプライン485を有するので、この機構は一部の実施形態のCIPU400で実施されうる。このような実施形態では、センサモジュール415は、画素アレイ410a及び410bのうちの1つから画像を読み出し、読み出された画像は、センサモジュール415の他の画素アレイのためのVBI中にCIPU400によって処理される。
【0083】
各画素アレイのためのセンサモジュール415のVBIは、特定の値に設定されうる。しかし、一部の実施形態では、VBIは、CIPU400が1つの画像を読み出して処理するのにかかる時間よりも小さな値に設定されない。一部の実施形態では、各画素アレイのためのセンサモジュール415のVBIは、同じ値に設定される。例えば、各画素アレイのためのセンサモジュール415のVBIが同じ値に設定される場合に、センサモジュール415は、画素アレイ410a及び410bから交互に画像を読み出す。他の実施形態では、各画素アレイのためのセンサモジュール415のVBIは、異なる値に設定される。このような実施形態のうちの一部では、一方の画素アレイのためのセンサモジュール415のVBIは、他方の画素アレイのためのセンサモジュール415のVBIの倍数に設定される。例えば、一方の画素アレイのためのセンサモジュール415のVBIは、2単位時間に設定され、他方の画素アレイのためのセンサモジュール415のVBIは4単位時間に設定される。この例では、センサモジュール415は、センサモジュール415が他方の画素アレイから1つの画像を読み出すごとに、一方の画素アレイから2つの画像を読み出す。
【0084】
図6は、異なるVBIに基づいた異なるインタリーブフレームレート605、610及び615の例を概念的に示す。
図6がタイムライン620に沿って13の時刻625〜685を含むことを除いて、
図6は
図5と同様である。さらに、ギターを持つ人の画像は、タイムライン620に沿って、画像が一方の画素アレイから読み出される時刻を表すが、大学帽(すなわち、角帽)をかぶった人の画像は、タイムライン620に沿って、他方の画素アレイから画像が読み出される時刻を表す。
【0085】
説明のために、ギターを持つ人の画像はデュアルカメラ携帯デバイスのカメラセンサ405aによって取り込まれたものと想定し、大学帽をかぶった人の画像は、デュアルカメラ携帯デバイスのカメラセンサ405bによって取り込まれたものと想定する。さらに、ここで
図6について、
図4のセンサモジュール415及び画素アレイ410a及び410bに関して説明する。
【0086】
例示的なインタリーブフレームレート605では、画素アレイ410a及び画素アレイ410bの両方に対するセンサモジュール415のVBIは、2単位時間に設定される。例示的なインタリーブフレームレート605に示されるように、センサモジュール415は、タイムライン620に沿って時刻625、635、645、655、665、675及び685に画素アレイ410aから画像を読み出し、センサモジュール415は、タイムライン620に沿って時刻630、640、650、660、670及び680に画素アレイ410bから画像を読み出す。すなわち、センサモジュール415は、単位時間ごとに画素アレイから交互に画像を読み出す。
【0087】
画素アレイ410a及び画素アレイ410bの両方に対するセンサモジュール415のVBIが4単位時間に設定されることを除いて、例示的なインタリーブフレームレート610は例示的なインタリーブフレームレート605と同様である。例示的なインタリーブフレームレート610は、センサモジュール415がタイムライン620に沿って時刻625、645、665及び685に画素アレイ410aから画像を読み出し、センサモジュール415がタイムライン620に沿って時刻635、655及び675に画素アレイ410bから画像を読み出すことを示す。例示的なインタリーブフレームレート610のVBIは例示的なインタリーブフレームレート605のVBIよりも高いので、例示的なインタリーブフレームレート610のフレームレートは例示的なインタリーブフレームレート605のフレームレートよりも小さい。
【0088】
例示的なインタリーブフレームレート615も、画素アレイ410a及び画素アレイ410bの両方に対するセンサモジュール415のVBIが6単位時間に設定されることを除いて、例示的なインタリーブフレームレート605と同様である。
図6に示すように、センサモジュール415は、タイムライン620に沿って時刻625、655及び685に画素アレイ410aから画像を読み出し、センサモジュール415は、タイムライン620に沿って時刻640及び670に画素アレイ410bから画像を読み出す。例示的なインタリーブフレームレート615のVBIは、例示的なインタリーブフレームレート605及び610のVBIよりも大きい。したがって、例示的なインタリーブフレームレート615のフレームレートは、例示的なインタリーブフレームレート605及び610よりも小さい。
【0089】
B.複数のパイプライン
図7は、一部の実施形態の取り込み済画像処理ユニット(CIPU)700を概念的に示す。CIPU700が単一の処理パイプラインの代わりに2つのフロントエンド処理パイプライン、記憶装置及びバックエンド処理パイプラインによって実装されることを除いて、CIPU700は上述のCIPU400と同じ機能を実行する。したがって、CIPU700の機能の説明について、CIPU400のモジュールを参照して説明する。
【0090】
図示のように、CIPU700は、カメラセンサ405a及び画素アレイ410aのためのフロントエンド処理パイプライン715と、カメラセンサ405b及び画素アレイ410bのためのフロントエンド処理パイプライン720と、記憶装置725と、コントローラモジュール730と、バックエンド処理パイプライン735とを含む。一部の実施形態のカメラセンサ405a及び405bは、デュアルカメラ携帯デバイスのカメラのセンサである。
【0091】
一部の実施形態のフロントエンド処理パイプライン715及び720は、CIPU400の画像処理の一部分を実行する。したがって、異なる実施形態は、CIPU400の異なる数のモジュールを含むことができる。例えば、一部の実施形態のフロントエンド処理パイプライン715及び720のそれぞれは、CIPU400のセンサモジュール415と、BPCモジュール420と、LSモジュール425と、デモザイキングモジュール430と、WBモジュール435と、統計エンジン465とを含む。
【0092】
フロントエンド処理パイプライン715及び720は、同じモジュールを有することによって同じタイプの画像処理を実行するが、フロントエンド処理パイプライン715及び720のそれぞれの各モジュールは、CIPU400に関して上述したように、異なるレジスタ値によって異なるように構成されうる。さらに、カメラセンサ405a及び405bのそれぞれがそれ自体のフロントエンド処理パイプラインを有するので、フロントエンド処理パイプライン715及び720は、互いと無関係に画像を処理できる。例えば、フロントエンド処理パイプライン715及び720は、異なる時間に異なる速度で並列に(すなわち、同時に)画像を処理できる。
【0093】
一部の実施形態では、フロントエンド処理パイプライン715及び720のそれぞれは、その対応するカメラセンサ及び画素アレイから画像を読み出せる。例えば、フロントエンド処理パイプライン715は、カメラセンサ405aによって取り込まれた画像を画素アレイ410aから読み出し、フロントエンド処理パイプライン720は、カメラセンサ405bによって取り込まれた画像を画素アレイ410bから受け取る。フロントエンド処理パイプライン715及び720のうちの1つが画像をその対応するカメラセンサ及び画素アレイから読み出す場合に、当該フロントエンド処理パイプラインは、画像を処理し、処理された画像を記憶装置725に送る。同様に、フロントエンド処理パイプライン715及び720のそれぞれは、上述のように(例えば、各フロントエンド処理パイプラインの統計エンジンを通じて)コントローラモジュール730と通信する。
【0094】
一部の実施形態の記憶装置725は、バックエンド処理パイプライン735が処理を完了させるために、部分的に処理された画像を格納する。これらの実施形態では、記憶装置725は、部分的に処理された画像をフロントエンド処理パイプライン715及び720から受け取り、この部分的に処理された画像をバックエンド処理パイプライン735に送る。一部の実施形態では、記憶装置725が揮発性記憶装置(例えば、ランダムアクセスメモリ(RAM))として実施されるが、他の実施形態では、記憶装置725が不揮発性記憶装置(例えば、フラッシュメモリ、ハードディスク、光ディスクなど)として実施される。さらに、一部の実施形態の記憶装置725は、内部記憶装置(例えば、RAM)であるが、他の実施形態の記憶装置725は、外部記憶装置(例えば、コンパクトフラッシュ(登録商標)(CF)カード、セキュアデジタル(SD)カードなど)である。
【0095】
バックエンド処理パイプライン735の一部の実施形態は、CIPU700の画像処理の一部分を実行する。一部の実施形態では、バックエンド処理パイプライン735は、フロントエンド処理パイプライン715及び720が含まないCIPU400のモジュールを含む。例えば、上記の例を参照すると、バックエンド処理パイプライン735は、CIPU400のCSCモジュール445と、ガンマモジュール440と、HSCモジュール450と、スケーラモジュール455と、フィルタモジュール460とを含むだろう。したがって、このような実施形態のバックエンド処理パイプライン735は、フロントエンド処理パイプライン715及び720が実行しないCIPU400の残りの画像処理を実行する。したがって、バックエンド処理パイプライン735は、記憶装置725から部分的に処理された画像を読み出し、部分的に処理された画像に関する残りの画像処理を実行する。画像を処理した後、バックエンド処理パイプライン735は、処理された画像をCIPUドライバ480に送る。
【0096】
コントローラモジュール730は、
図4に関して上述した同じ機能を実行する。
図7に示すように、コントローラモジュール730は、フロントエンド処理パイプライン715及び720並びにバックエンド処理パイプライン735と対話する。一部の実施形態では、コントローラモジュール730は、バックエンド処理パイプライン735に含まれるが、他の実施形態では、コントローラモジュール730は、フロントエンド処理パイプライン715及び720のうちの1つに含まれる。
【0097】
ここで、CIPU700の動作について、
図7に示されるカメラセンサ405a及び405b、画素アレイ410a及び410b、フロントエンド処理パイプライン715及び720、記憶装置725並びにバックエンド処理パイプライン735に関して説明する。フロントエンド処理パイプライン715及び720のうちの1つが画像をその対応するカメラセンサ及び画素アレイから読み出す場合に、そのフロントエンド処理パイプラインは、画像を処理し、部分的に処理された画像を記憶装置725に送る。例えば、フロントエンド処理パイプライン715は、カメラセンサ405aによって取り込まれた画像を画素アレイ410aから読み出してもよいし、又はフロントエンド処理パイプライン720は、カメラセンサ405bによって取り込まれた画像を画素アレイ410bから読み出してもよい。前述のように、各フロントエンド処理パイプライン715及び720は、画像を並列に処理できる。
【0098】
バックエンド処理パイプライン735は、部分的に処理された画像を記憶装置725から読み出し、この部分的に処理された画像を処理して、画像の画像処理を完了させる。一部の実施形態では、バックエンド処理パイプライン735は、記憶装置725に格納された画像を先入れ先出し方式で読み出して処理する。言い換えれば、記憶装置725内の特定の画像は、特定の画像の前に受け取られて記憶装置725に格納されたすべての画像の後に処理されるが、この特定の画像は、特定の画像の後に受け取られて記憶装置725に格納された画像の前に処理される。バックエンド処理パイプライン735は、画像を処理した後、処理された画像をCIPUドライバ480に送る。
【0099】
図8は、一部の実施形態の別の取り込み済画像処理ユニット(CIPU)800を概念的に示す。CIPU800は、2つの別個の処理パイプラインによってCIPU800が実施され、各カメラセンサがそれ自体の別個の処理パイプラインを有することを除いて、上述のCIPU400と同じ機能を実行する。したがって、CIPU800の機能の説明について、CIPU400のモジュールを参照して説明する。
【0100】
図示のように、CIPU800は、カメラセンサ405a及び画素アレイ410aのための処理パイプライン815と、カメラセンサ405b及び画素アレイ410bのための処理パイプライン820とを含む。一部の実施形態の処理パイプライン815及び820のそれぞれは、CIPU400に含まれるすべてのモジュールを含む。したがって、これらの実施形態の処理パイプライン815及び820のそれぞれの動作は、CIPU400の動作と同じである。
【0101】
カメラセンサ405a及び405bのそれぞれがそれ自体の処理パイプラインを有するので、処理パイプライン815及び820は、互いと無関係に画像を処理できる。例えば、処理パイプライン815及び820は、異なる時間に異なる速度で並列に(すなわち、同時に)画像を処理できる。さらに、一部の実施形態の処理パイプライン815及び820のそれぞれは、CIPU400を参照して上述したように、異なるレジスタ値を通じて異なるように構成されうる。
【0102】
一部の実施形態では、CIPU400のいくつかのモジュールは、モジュールの動作のうちの一部又は全部を実行するための1つ以上のライン/フレームバッファを含む。例えば、一部の実施形態のフィルタ処理モジュール460は、3×3のローパスフィルタを実行するために実施される。このような実施形態では、3×3のローパスフィルタは、3つの連続するラインの中央のラインに3×3のローパスフィルタを適用するように、画像内の3つの連続するラインを処理する。したがって、このような実施形態のフィルタ処理モジュール460は、3×3のローパスフィルタを実行するために少なくとも3つのライン/フレームバッファを必要とする。CIPU400の他のモジュールも、例えば、BPCモジュール420及びLSモジュール425のような1つ以上のライン/フレームバッファを含む。
【0103】
CIPU800の処理パイプラインはそれぞれ、その対応するカメラの特性に合わせて画像処理をカスタマイズするために、異なるライン/フレームバッファサイズを有しうる。例えば、デュアルカメラ携帯デバイスの一方のカメラが2048×1500画素センサを有するならば、2048×1500画素センサの処理パイプラインは、2048画素幅であるライン/フレームバッファを含むことができる。同様に、デュアルカメラ携帯デバイスの他方のカメラが640×480画素センサを有するならば、640×480画素センサの処理パイプラインは、640画素幅であるライン/フレームバッファを含むことができる。すなわち、1つの処理パイプラインのモジュールに含まれるライン/フレームバッファのサイズは、別の処理パイプラインのモジュールに含まれるライン/フレームバッファのサイズとは異なってもよい。
【0104】
III.テレビ会議
A.テレビ会議アーキテクチャ
図9は、一部の実施形態のデュアルカメラ携帯デバイスのテレビ会議及び処理モジュール900のためのソフトウェアアーキテクチャを概念的に示す。テレビ会議及び処理モジュール900は、
図3に関して上述した対応するモジュール及びドライバ305、310及び320と同様であるCIPUドライバ905と、メディア交換モジュール910と、エンコーダドライバ920とを含む。テレビ会議及び処理モジュール900は、テレビ会議モジュール925と、テレビ会議クライアント945と、さまざまなテレビ会議機能を実行するためのネットワークインタフェース950とも含む。ビデオ処理及び符号化モジュール300のように、テレビ会議及び処理モジュール900は、デュアルカメラ携帯デバイスのカメラから取り込まれた画像を処理して符号化する。
【0105】
図3に関して上述したように、メディア交換モジュール910を使用することによって、デバイス内のメディアコンテンツの消費者及び製作者は、メディアコンテンツの処理に関するメディアコンテンツ及び命令を交換し、CIPUドライバ905は、取り込み済画像処理ユニット(CIPU)955との通信インタフェースとして機能し、エンコーダドライバ920は、エンコーダハードウェア960(例えば、エンコーダチップ、システムオンチップ上の符号化コンポーネントなど)との通信インタフェースとして機能する。
【0106】
一部の実施形態のテレビ会議モジュール925は、画像処理、テレビ会議管理及びネットワーキングなどの種々のテレビ会議機能を扱う。図示のように、テレビ会議モジュール925は、メディア交換モジュール910、テレビ会議クライアント945及びネットワークインタフェース950と対話する。一部の実施形態では、テレビ会議モジュール925は、テレビ会議クライアント945から命令を受け取り、テレビ会議クライアント945に命令を送る。一部の実施形態のテレビ会議モジュール925はまた、ネットワークインタフェース950を通じて、ネットワーク(例えば、ローカルエリアネットワーク(LAN)、無線ローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、ネットワークのネットワーク、符号分割多元接続(CDMA)ネットワーク、GSM(登録商標)ネットワークなど)にデータを送信し、ネットワークからデータを受信する。
【0107】
テレビ会議モジュール925は、画像処理層930と、管理層935と、ネットワーク層940とを含む。一部の実施形態では、画像処理層930は、テレビ会議の画像に関する画像処理動作を実行する。例えば、一部の実施形態の画像処理層930は、以下でさらに詳細に説明するように、露出調整、画像サイズ変更、パースペクティブ補正及びダイナミックレンジ調整を実行する。一部の実施形態の画像処理層930は、メディア交換モジュール910を通じて、CIPU955からの画像の要求を送信する。
【0108】
一部の実施形態の管理層935は、テレビ会議モジュール925の動作を制御する。例えば、一部の実施形態では、管理層935は、デュアルカメラ携帯デバイスの1つのカメラ/複数のカメラを初期化し、リモートデバイスに伝送するために画像及びオーディオを処理し、リモートデバイスから受け取った画像及びオーディオを処理する。一部の実施形態では、管理層935は、デバイスのための合成(例えば、PIP)表示を生成する。さらに、管理層935は、ネットワーク層940から受け取ったネットワーキング報告に基づいて、テレビ会議モジュール925の動作を変更してもよい。
【0109】
一部の実施形態では、ネットワーク層940は、テレビ会議のためのネットワーキング機能のうちの一部又は全部を実行する。例えば、一部の実施形態のネットワーク層940は、以下で説明するように、いくつかの機能の中でも特に、テレビ会議のデュアルカメラ携帯デバイスとリモートデバイスとの間のネットワーク接続(不図示)を確立し、リモートデバイスに画像を伝送し、リモートデバイスから画像を受信する。さらに、ネットワーク層940は、いくつかのタイプのデータの中でも特に、パケット損失、片道レイテンシ(one-way latency)及びラウンドトリップ遅延時間などのネットワーキングデータを受信し、このようなデータを処理し、このデータを管理層935に報告する。
【0110】
一部の実施形態のテレビ会議クライアント945は、テレビ会議アプリケーション、ボイスオーバーIP(VOIP)アプリケーション(例えば、スカイプ)又はインスタントメッセージングアプリケーションなどのテレビ会議モジュール925のテレビ会議機能を使用してもよいアプリケーションである。一部の実施形態では、テレビ会議クライアント945はスタンドアロンアプリケーションであるが、他の実施形態では、テレビ会議クライアント945は別のアプリケーションに統合される。
【0111】
一部の実施形態では、ネットワークインタフェース950は、テレビ会議モジュール925及びテレビ会議クライアント945がネットワークインタフェース950を通じてネットワーク(例えば、セルラーネットワーク、ローカルエリアネットワーク、無線ネットワーク、ネットワークのネットワーク、インターネットなど)を介してデータを送信しデータを受信できるようにする通信インタフェースである。例えば、テレビ会議モジュール925がデータ(例えば、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像)をインターネット上で別のデバイスに送信することを望むならば、テレビ会議モジュール925は、ネットワークインタフェース950を通じて他のデバイスに画像を送信する。
【0112】
B.テレビ会議のセットアップ
図10は、一部の実施形態の例示的なテレビ会議要求メッセージシーケンス1000を概念的に示す。この図は、デバイス1005上で実行されるテレビ会議クライアント1010、テレビ会議サーバ1015、及びデバイス1020上で実行されるテレビ会議クライアント1025の間のテレビ会議要求メッセージシーケンス1000を示す。一部の実施形態では、テレビ会議クライアント1010及び1025は、
図9に示されるテレビ会議クライアント945と同じである。
図10に示すように、1つのデバイス(すなわち、デバイス1005)がテレビ会議を要求し、別のデバイス(すなわち、デバイス1020)がこのような要求に応答する。本出願で説明するデュアルカメラ携帯デバイスは、両方の動作を実行する(すなわち、要求を行い、要求に応答する)ことができる。
【0113】
一部の実施形態のテレビ会議サーバ1015は、複数のテレビ会議クライアントの間でメッセージを経路制御する。一部の実施形態では、1つのコンピューティングデバイス上でテレビ会議サーバ1015を実施するが、他の実施形態では、複数のコンピューティングデバイス上でテレビ会議サーバ1015を実施する。一部の実施形態では、テレビ会議サーバは、一度に多数の会議のためのメッセージを扱って経路制御できる公にアクセス可能なサーバである。一部の実施形態のテレビ会議クライアント1010及び1025のそれぞれは、上述のネットワークインタフェース950などのネットワークインタフェースを通じてネットワーク(例えば、セルラーネットワーク、ローカルエリアネットワーク、無線ネットワーク、ネットワークのネットワーク、インターネットなど)を介してテレビ会議サーバ1015と通信する。
【0114】
一部の実施形態のテレビ会議要求メッセージシーケンス1000は、テレビ会議クライアント1010が、デバイス1020とのテレビ会議開始要求をデバイス1005のユーザから(動作1で)受信した場合に開始する。一部の実施形態のテレビ会議クライアント1010は、デバイス1005のユーザがデバイス1005に表示されるユーザインタフェースのユーザインタフェース(UI)項目を選択した場合に、テレビ会議開始要求を受信する。このようなユーザインタフェースの例は、以下で説明する
図11から
図14に示される。
【0115】
テレビ会議クライアント1010が要求を受信した後、テレビ会議クライアント1010は、ユーザからの入力に基づいてデバイス1020を受信者として示すテレビ会議要求をテレビ会議サーバ1015に(動作2で)送信する。テレビ会議サーバ1015は、テレビ会議要求をデバイス1020のテレビ会議クライアント1025に(動作3で)転送する。一部の実施形態では、テレビ会議サーバ1015は、テレビ会議要求をテレビ会議クライアント1025にプッシュ技術を使用して転送する。すなわち、テレビ会議サーバ1015は、クライアント1025が何らかのメッセージ要求を送信するのを待つのではなく、テレビ会議クライアント1010から受信すると、テレビ会議クライアント1025へのテレビ会議要求の伝送を始める。
【0116】
一部の実施形態のテレビ会議クライアント1025がテレビ会議要求を受信した場合に、デバイス1005のユーザがテレビ会議開始要求を送信したことをデバイス1020のユーザに示し、テレビ会議要求を承諾するか又は拒否するかをデバイス1020のユーザに確認するために、ユーザインタフェースがデバイス1020に表示される。このようなユーザインタフェースの一例が、以下で説明する
図12に示されている。一部の実施形態では、テレビ会議クライアント1025がテレビ会議要求承諾要求をデバイス1005のユーザから(動作4で)受信した場合に、テレビ会議クライアント1025は、テレビ会議サーバ1015にテレビ会議承諾を(動作5で)送信する。一部の実施形態のテレビ会議クライアント1025は、例えば、デバイス1020のユーザが、
図12に示されるユーザインタフェースのユーザインタフェース項目を選択した場合に、テレビ会議要求承諾要求を受信する。
【0117】
テレビ会議サーバ1015がテレビ会議承諾をテレビ会議クライアント1025から受信した後、テレビ会議サーバ1015は、テレビ会議クライアント1010にテレビ会議承諾を(動作6で)転送する。テレビ会議サーバ1015の一部の実施形態は、上述のようにプッシュ技術を使用してテレビ会議クライアント1010にテレビ会議承諾を転送する。
【0118】
テレビ会議承諾を受信すると、一部の実施形態では、デバイス1005とデバイス1020の間にテレビ会議を(動作7で)確立する。異なる実施形態では、テレビ会議を異なるように確立する。例えば、一部の実施形態のテレビ会議確立は、デバイス1005とデバイス1020の間の接続の交渉、ビデオを符号化するビットレートの決定、及びデバイス1005とデバイス1020の間のビデオの交換を含む。
【0119】
上記の例では、デバイス1020のユーザはテレビ会議要求を承諾する。一部の実施形態では、デバイス1020は、着信するテレビ会議要求を、UIを表示せずに自動的に承諾するように(例えば、デバイスの基本設定(preference setting)によって)構成されうる。さらに、デバイス1020のユーザは、(例えば、デバイス1020に表示されるユーザインタフェースのユーザインタフェース項目を選択することによって)テレビ会議要求を(動作4で)拒否することもできる。テレビ会議承諾を送信する代わりに、テレビ会議クライアント1025は、テレビ会議拒否をテレビ会議サーバ1015に送信し、テレビ会議サーバ1015は、テレビ会議拒否をテレビ会議クライアント1010に転送する。その場合、テレビ会議は確立されない。
【0120】
1.テレビ会議セットアップユーザインタフェース
一部の実施形態では、テレビ会議は、進行中の通話に基づいて始められる。すなわち、携帯デバイスのユーザが第2ユーザとの通話に関わる間に、ユーザは、他の当事者の許可を得て、通話をテレビ会議に変えることができる。本発明の一部の実施形態では、
図11は、デュアルカメラハンドヘルド携帯デバイス1100によるこのようなテレビ会議の開始を示す。この図は、デバイス1100のユーザインタフェース(「UI」)1105の5つの動作段階1110、1115、1120、1125及び1130としてテレビ会議の開始を示す。
【0121】
図11に示すように、UI1105は、名前フィールド1135と、選択メニュー1140と、選択可能UI項目1145とを含む。名前フィールド1135は、ユーザがテレビ会議要求を希望するだろう、通話の相手側の人の名前を表示する。この例では、(選択可能なボタンとして実施できる)選択可能UI項目1145は、ユーザが通話を終了させるために選択可能な「通話終了」オプションを提供する。選択メニュー1140は、スピーカフォン項目1142、消音項目1144、キーパッド項目1146、電話帳項目1148、保留項目1152、テレビ会議項目1154などの、選択可能UI項目のメニューを表示する。異なる実施形態では、選択メニューを異なるように表示する。
図11によって示される実施形態では、選択メニュー1140は、それぞれが異なる動作を表す、サイズの等しいいくつかのアイコンを含む。他の実施形態は、スクロール可能なメニューを提供するか、又は(例えば、項目を大きくすることによって)特定の項目を優先する。
【0122】
ここで、UI1105の動作について、
図11に示されている5つの段階1110、1115、1120、1125及び1130におけるこのUIの状態に関して説明する。第1段階1110では、ハンドヘルド携帯デバイスユーザとナンシー・ジョーンズの間に通話が確立されている。第2段階1115は、ユーザが選択可能なテレビ会議オプション1154を(例えば、指1150によるシングルフィンガータップを通じて)選択してテレビ会議ツールを起動した後のUI1105を表示する。この例では、(選択可能アイコンとして実施できる)テレビ会議オプション1154によって、ユーザが通話中にテレビ会議を開始できる。第2段階では、テレビ会議オプション1154は、テレビ会議ツールが起動されたことを示すために強調表示される。異なる実施形態は、異なる仕方で(例えば、項目の境界線又はテキストを強調表示することによって)このような選択を示してもよい。
【0123】
第3段階1120は、テレビ会議オプション1154の選択によりデバイス1100がテレビ会議プロセスを開始した後のUI1105を表示する。第3段階は、テレビ会議が確立されるのをデバイスが待つ間(例えば、通話の相手側のデバイスがテレビ会議を承諾するか又は拒否するのをデバイスが待つ間)の移行待機段階である。第3段階1120では、デバイス1100のユーザは、テレビ会議接続が確立されている間、依然として他のデバイスのユーザ(すなわち、ナンシー・ジョーンズ)と話をできる。さらに、一部の実施形態により、デバイス1100のユーザは、テレビ会議要求をキャンセルするための、UI1105に表示された選択可能UI項目(不図示)を選択することによって、第3段階1120でテレビ会議要求をキャンセルできる。この待機段階において、異なる実施形態では、待ち状態を示すためにUI1105の異なる表示を使用する。
【0124】
図11に示すように、一部の実施形態では、第3段階の待ち状態は、このビデオの下部における「プレビュー」表記と共に、デバイス1100によって取り込まれたビデオの全画面表示として示されている。具体的には、
図11では、第3段階1120は、デバイスのカメラによって取り込まれているビデオの全画面提示をUI1105の表示域1160に表示することによってテレビ会議処理の開始を示す。一部の実施形態では、前面カメラは、テレビ会議の開始時にデバイスによって選択されるデフォルトのカメラである。多くの場合に、この前面カメラは、テレビ会議の開始時にデバイスのユーザを指す。したがって、
図11に示される例では、第3段階1120は、デバイス1100のユーザの全画面ビデオを提示するものとしてデバイス1100を示す。デバイスの待ち状態は、第3段階1120中に表示域1160に現れるビデオの下の「プレビュー」標識1165によってさらに強調表示される。
【0125】
移行期の第3待機段階1120は、一部の実施形態では異なるように表されうる。例えば、一部の実施形態により、デバイス1100のユーザは、テレビ会議を開始するためのカメラとして背面カメラを選択できる。この選択を可能にするため、一部の実施形態により、ユーザは、テレビ会議の開始のためのデフォルトのカメラとして背面カメラを(例えば、メニューの基本設定によって)指定でき、及び/又は、ユーザは、テレビ会議オプション1154を選択した後で、背面カメラ及び前面カメラを表示するメニューから背面カメラを選択できる。これらの状況のいずれにおいても、UI1105(例えば、表示域1160)は、第3待機段階1120中に背面カメラによって取り込まれたビデオを表示する。
【0126】
同様に、他の実施形態では、デバイス1100によって取り込まれたビデオの小型バージョンを表示することによって、デバイス1100に格納された静止画像を表示することによって、デバイスの待ち状態を強調表示するメッセージを提供することによって(例えば、「会議の確立中」を示すことによって)、「プレビュー」標識を表示しないことなどによって、テレビ会議ツールの起動を示すことができる。同様に、第3段階1120において、一部の実施形態のUI1105は、ユーザがこの段階で(例えば、リモートユーザが要求に応答するのをユーザが待っている間に)テレビ会議に入らないことを決心したならば、テレビ会議に入るのをキャンセルして通話に戻ることを可能にするために、終了ボタン(不図示)を提供する。
【0127】
第4段階1125は、リモートユーザがテレビ会議要求を承諾してテレビ会議接続が確立された後の移行状態のUI1105を示す。この移行状態では、矢印1175で示されるように、(この例では、前面カメラによって取り込まれている)ローカルユーザのビデオを表示する表示域1160のサイズが段階的に減少する(すなわち、段階的に縮む)。表示域1160(すなわち、ローカルユーザのビデオ)が縮んで、その結果、UI1105は、リモートデバイスのカメラからのビデオを含む表示域1170(例えば、表示ウィンドウ1170)を表示域1160の後ろに表示できる。言い換えれば、ローカルユーザのビデオ1160が縮むことによって、ローカルユーザのビデオの前景挿入表示1160とリモートユーザの背景メイン表示1170とを有するPIP表示1180が生成される。この例では、背景メイン表示1170は、リモートデバイスの前面カメラによって取り込まれている婦人(例えば、リモートデバイスのユーザであるナンシー・ジョーンズ)又はリモートデバイスの背面カメラによってビデオが取り込まれている婦人(例えば、ナンシー・ジョーンズによってビデオが取り込まれている婦人)のビデオを提示する。
図11に示される移行期の第4段階が一部の実施形態によって使用される1つの例示的な手法に過ぎず、他の実施形態は移行期の第4段階を異なるようにアニメーション化できることが当業者には理解されよう。
【0128】
第4段階1125は、下部の表示域1155にある選択可能UI項目1132も示す。(選択可能なボタンとして実施されうる)選択可能UI項目1132は、PIP表示1180の下に、選択可能会議終了オプション1132を提供する。ユーザは、この会議終了オプション1132を選択して(例えば、シングルフィンガータップを通じて)、テレビ会議を終了できる。異なる実施形態により、ユーザは、携帯デバイス上のスイッチを切り換えることによって、音声コマンドを与えることによってなどの、異なる仕方で、会議を終了してもよい。さらに、異なる実施形態により、会議終了オプション1132がテレビ会議中に表示されなくなることができ、それによって、PIP表示1180が表示域1185全体を占有してもよい。その後、表示域1185の下部をシングルフィンガータップすると、会議終了オプション1132が再表示され、会議終了オプション1132へのアクセスをユーザに提供できる。一部の実施形態では、表示域1155のレイアウトは、以下でさらに詳細に説明する表示域1155と同じである。
【0129】
第5段階1130は、第4移行状態1125のアニメーションが終了した後のUI1105を示す。具体的には、第5段階1130は、テレビ会議中にUI1105によって提示されるPIP表示1180を示す。上述のように、このPIP表示1180は、2つのビデオ表示、すなわちリモートカメラからの大きい方の背景表示1170と、ローカルカメラからの小さい方の前景挿入表示1160とを含む。
【0130】
このPIP表示1180は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの仕方にすぎない。この合成ビューに加えて、一部の実施形態のデバイスは、他の合成ビューを提供する。例えば、リモートユーザに関する大きい方の背景表示1170を有する代わりに、大きい方の背景表示1170は、ローカルユーザに関するものにでき、小さい方の前景挿入表示1160はリモートユーザに関するものにできる。以下でさらに説明するように、一部の実施形態により、ユーザは、PIP表示1180の挿入ビュー及びメインビュー用のカメラとしてローカルカメラ及び/又はリモートカメラをテレビ会議中に切り換えることができる。
【0131】
同様に、一部の実施形態により、ローカルビデオ及びリモートビデオは、UI1105内の並んだ2つの表示域(例えば、左右の表示ウィンドウ、又は上下の表示ウィンドウ)又は斜めに整列した2つの表示域に表示されうる。以下でさらに説明するように、PIP表示の仕方又はデフォルトの表示モードは、一部の実施形態では、デバイスの基本設定を通じて又はテレビ会議中にユーザが選択できる制御を通じてユーザによって指定されてもよい。
【0132】
図11のデバイス1100のユーザがリモートユーザをテレビ会議に招待した場合に、リモートユーザは、その招待を承諾してもよいし、拒否してもよい。
図12は、リモートユーザのデバイスでテレビ会議招待を提示し承諾するための動作のシーケンスを示す6つの異なる段階1210、1215、1220、1225、1230及び1235におけるリモートユーザのデバイス1200のUI1205を示す。UI1205の以下の説明は、デバイス1200(すなわち、テレビ会議要求を受信するデバイス)のユーザを招待受信者と呼び、デバイス1100(すなわち、テレビ会議要求を送信するデバイス)のユーザを招待依頼者と呼ぶ。また、この例では、招待受信者のデバイス1200は、招待依頼者のデバイスのように、デュアルカメラデバイスであると想定される。しかし、他の例では、これらのデバイスの一方又は両方はシングルカメラデバイスである。
【0133】
第1段階1210は、招待受信者が招待依頼者のジョン・スミスからテレビ会議への招待を受信したときのUI1205を示す。
図12に示すように、この段階のUI1205は、名前フィールド1235と、メッセージフィールド1240と、2つの選択可能UI項目1245及び1250とを含む。名前フィールド1235には、テレビ会議を要求している人の名前が表示される。一部の実施形態では、名前フィールド1235には、テレビ会議を要求している人の名前の代わりに、その人の電話番号が表示される。メッセージフィールド1240には、招待依頼者から招待受信者への招待が表示される。この例では、フィールド1240の「テレビ会議招待」は、招待依頼者が招待受信者とのテレビ会議を要求していることを示す。(選択可能ボタンとして実施されうる)選択可能UI項目1245及び1250は、招待受信者が招待を拒否するか承諾するために使用するための選択可能な要求拒否オプション1245及び要求承諾オプション1250を提供する。異なる実施形態では、これらのオプションを異なるように表示し、及び/又は他のオプションを表示できる。
【0134】
招待受信者は、「テレビ会議招待」表記がメッセージフィールド1240に表示されているのを見たら、UIの要求拒否オプション1245又は要求承諾オプション1250をそれぞれ選択することによって、要求を拒否するか、承諾することができる。第2段階1215は、
図12に示される例においてユーザが要求承諾オプション1250を選択することを示す。この例では、この選択は、ユーザの指が要求承諾オプション1250をタップすることによってなされ、この選択は、このオプション1250の強調表示によって示されている。一部の実施形態では、選択を示す(例えば、UI項目の境界線又はテキストを強調表示する)ために要求承諾オプション1245又は要求拒否オプション1250を選択する他の技術(例えば、ダブルタップなど)が提供される。
【0135】
第3段階1220は、招待受信者がテレビ会議への参加に同意した後のUI1205を示す。この段階では、UI1205は、リモートデバイスの前面カメラからのビデオの全画面提示を表示域1244に示すプレビューモードに入る。前面カメラは、この場合、リモートデバイスのユーザ(すなわち、この例ではナンシー・ジョーンズ)に向けられる。したがって、このプレビューモードでは、彼女の画像が示される。このプレビューモードによって、招待受信者は、自分のビデオが適切に表示され、テレビ会議が始まる前(例えば、ビデオの実際の伝送が始まる前)に自分の外見に満足することを確認できる。一部の実施形態では、招待受信者がプレビューモードであることを示すために、「プレビュー」表記などの表記が表示域1244の下に表示されてもよい。
【0136】
以下でさらに説明するように、一部の実施形態により、招待受信者は、テレビ会議の開示時のデフォルトのカメラとして背面カメラを選択でき、又はテレビ会議の冒頭で前面カメラ又は背面カメラを選択できる。また、他の実施形態では、招待受信者のプレビュー表示が、異なるように(例えば、表示域1244の隅に置かれた小さい方の画像に)表示される。さらに他の実施形態では、このプレビューモードを含まず、招待受信者が要求を承諾した直後にテレビ会議を開始する。
【0137】
第3段階では、UI1205は、2つの選択可能UI項目1275及び1246を示し、その一方は表示域1244に重なり、他方は、この表示域1244の下にある。選択可能UI項目1275は、テレビ会議を開始するためにユーザが選択してもよい承諾ボタン1275である。選択可能UI項目1246は、招待受信者がこの段階でテレビ会議に参加しないことを決めた場合に選択できる終了ボタン1246である。
【0138】
第4段階1225は、招待受信者が承諾ボタン1275を選択した後のUI1205を示す。この例では、承諾ボタン1275は、招待受信者がテレビ会議を開始する準備ができたことを示すように強調表示されている。このような選択は、他の実施形態では、異なる仕方で示されうる。
【0139】
第5段階1230は、招待受信者がテレビ会議要求を承諾した後の移行状態であるUI1205を示す。この移行段階では、矢印1260で示されるように、(この例では、前面カメラによって取り込まれている)招待受信者のビデオを表示する表示域1244のサイズが段階的に減少する(すなわち、段階的に縮む)。招待受信者のビデオが縮んで、その結果、UI1205は、招待依頼者のカメラからのビデオを表示域1244の後ろに含む表示域1265(例えば、表示ウィンドウ1265)を表示できる。言い換えれば、招待受信者のビデオが縮むことによって、招待受信者のビデオの前景挿入表示域1244と招待依頼者の背景メイン表示1265とを有するPIP表示1280が生成される。
【0140】
この例では、背景メイン表示1265は、ローカルデバイスの前面カメラによってビデオが取り込まれている男性のビデオ(すなわち、ローカルデバイス1100のユーザであるジョン・スミス)を提示する。別の例では、このビデオは、ローカルデバイスの背面カメラによってビデオが取り込まれている男性(例えば、ジョン・スミスによってビデオが取り込まれている男性)のビデオにできる。異なる実施形態では、この移行期の第5段階を異なるようにアニメーション化できる。
【0141】
第5段階1230におけるUIは、以下でさらに詳細に説明する、テレビ会議中に他のユーザの音声を消音するための選択可能UI項目1285(例えば、消音ボタン1285)と、テレビ会議を終了するための選択可能UI項目1287(例えば、会議終了ボタン1287)と、カメラを切り換えるための選択可能UI項目1289(例えば、カメラ切り換えボタン1289)とを含む表示域1155(例えば、ツールバー又はメニューバー)も表示する。したがって、招待受信者は、テレビ会議中に所望の動作を実行するために、選択可能UI項目1285〜1289のいずれかを(例えば、シングルフィンガータップによって)選択できる。異なる実施形態により、招待受信者は、例えば、携帯デバイス上のスイッチを切り換えることによって、音声コマンドを与えることによってなどのような、異なる仕方の動作のいずれかを実行できる。
【0142】
図12は、表示域1155の例示的なレイアウトを示しているが、一部の実施形態は、テレビ会議を終了するための会議終了の選択可能UI項目1132だけを含む、
図11の表示域1155のレイアウトなどの表示域1155の異なるレイアウトを提供する。表示域1155の他のレイアウトは、異なる機能を実行するための任意の数の異なる選択可能UI項目を含むことができる。さらに、第5段階1230は、UI1205の下部に表示された表示域1155を示す。表示域1155の異なる実施形態は、UI1205内部の異なる位置に表示されうるか、及び/又は異なる形状として規定されうる。
【0143】
図12は、表示域1155を静的な表示域として示す(すなわち、表示域1155は常に表示される)。しかし、一部の実施形態では、表示域1155は動的な表示域である。いくつかのこのような実施形態では、表示域1155は、通常は表示されない。むしろ、表示域1155は、トリガになるイベント(例えば、表示域1280をこのように一回タップするユーザの選択、音声コマンドなど)が受け取られた場合に表示される。ユーザの選択が受け取られた(例えば、選択可能消音UI項目1285を選択する)又は定義された時間量(例えば、3秒)の後で、表示域1155は非表示になり、この時間量は、携帯デバイス又はテレビ会議アプリケーションの基本設定を通じてユーザによって指定されうる。一部のこのような実施形態では、表示域1155は、テレビ会議が開始した後で自動的に表示され、上述した同じ仕方で非表示になる。
【0144】
第6段階1235は、第5移行段階のアニメーションが終了した後のUI1205を示す。具体的には、第6段階は、テレビ会議中にUI1205によって提示されるPIP表示1280を示す。上述のように、このPIP表示1280は、2つのビデオ表示、すなわちローカルカメラからの大きい方の背景表示1265と、リモートカメラからの小さい方の前景挿入表示1244とを含む。このPIP表示1280は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの仕方にすぎない。この合成ビューに加えて、一部の実施形態のデバイスは、他の合成ビューを提供する。例えば、招待受信者に関する大きい方の背景表示を有する代わりに、大きい方の背景表示は、招待依頼者に関するものにでき、小さい方の前景挿入表示は招待受信者に関するものにできる。以下でさらに説明するように、一部の実施形態により、ユーザは、ローカルカメラ及びリモートカメラを切り換え可能に表示するようにPIP表示の挿入ビュー及びメインビューを制御できる。同様に、一部の実施形態により、ローカルビデオ及びリモートビデオは、UI1205内の並んだ2つの表示域(例えば、左右の表示ウィンドウ、又は上下の表示ウィンドウ)又は斜めに整列した2つの表示域に表示されうる。以下でさらに説明するように、PIP表示の方式又はデフォルトの表示モードは、一部の実施形態では、デバイスの基本設定を通じて又はテレビ会議中にユーザが選択できる制御を通じてユーザによって指定されてもよい。
【0145】
図12は、テレビ会議招待を提示して承諾するための動作のシーケンスを、6つの異なる動作段階として示しているが、一部の実施形態では、より少ない数の段階で動作を実施できる。例えば、このような実施形態のうちの一部では、第3段階1220及び第4段階1225を提示することを省略し、ユーザが要求承諾オプション1250を選択した後で第2段階1215から第5段階1230に進むことができる。より少ない数の段階でその動作(すなわち、テレビ会議招待を提示して承諾すること)を実施する他の実施形態では、第1段階1210及び第2段階1215を省略し、招待受信者が招待依頼者からテレビ会議への招待を受信した場合に、ユーザに第3段階1220を提示できる。
【0146】
図13は、第1段階と第3段階とを1つの段階に結合し、かつ第2段階と第4段階とを1つの段階に結合することによって、より少ない数の段階で
図12に示される動作を実行する一例を示す。具体的には、この図は、5つの異なる段階1390、1392、1394、1230及び1235におけるリモートユーザのデバイス1200のUI1205を示す。第1段階1390は、通話の相手側の人の名前を示すために名前フィールド1235が名前「ジョン・スミス」を表示することを除いて、段階1110と同様である。すなわち、リモート携帯デバイスのユーザとローカルデバイスのユーザ(すなわち、この例ではジョン・スミス)との間に通話が確立されている。第2段階1392及び第3段階1394は、第2段階1392及び第3段階1394ではリモート携帯デバイスのユーザ(すなわち、この例ではナンシー・ジョーンズ)のプレビューも示されることを除いて、
図12の第1段階1210及び第2段階1215と同様である。第4段階1230及び第5段階1235は、
図12の第5段階1230及び第6段階1235と同じである。
【0147】
通話中に選択可能なオプションを通じてテレビ会議ツールを起動することに加えて、一部の実施形態により、デュアルカメラデバイスのユーザは、最初に電話をかける必要なしにテレビ会議を直接始めることができる。
図14は、テレビ会議を始める別のこのような代替方法を示す。この図は、テレビ会議を開始するための動作の代替シーケンスを示す7つの異なる段階1410、1415、1420、1425、1430、1435及び1440におけるUI1405を示す。
【0148】
第1段階1410では、ユーザは、電話する連絡先をどのようにして探すかと同様にして、この携帯デバイスの連絡先リストからユーザがテレビ会議で関与したい人を探している。第2段階1415では、ユーザは、ユーザがテレビ会議を行いたい人1455を(例えば、人の名前1455へのシングルフィンガータップ1460を通じて)選択する。この選択は、連絡先の情報及び種々のユーザ選択可能なオプションを表示するUI1405をトリガする。この例では、ジョンソンの名前1455が強調表示されて、これが、ユーザがテレビ会議を行いたい人であることを示す。異なる実施形態は、このような選択を異なる仕方で示すことができる。第2段階1415では、デバイス1400のユーザは、ユーザがテレビ会議を行いたい人を連絡先リストを通じて選択できるが、一部の実施形態により、ユーザは、デバイス1400のユーザが最近テレビ会議又は通話を行った人の具体的な番号又は名前をリストする「最近」の通話履歴を通じて人を選択できる。
【0149】
第3段階1420では、UI1405は、人の名前1455が選択された後に、選択された人の情報1462並びに種々の選択可能UI項目1468、1472及び1470を表示する。この例では、(選択可能なアイコン又はボタンとして実施できる)種々の選択可能UI項目1472のうちの1つは、テレビ会議ツールを提供する。テレビ会議オプション1472を使用して、ユーザは、連絡先1466によって識別された人をテレビ会議に招待できる。異なる実施形態では、情報1462並びに選択可能UI項目1468、1472及び1470が異なるように(例えば、異なる構成で)表示される。
【0150】
第4段階1425は、ユーザがテレビ会議オプション1472を(例えば、シングルフィンガータップを通じて)選択することを示す。この例では、テレビ会議オプション1472は、テレビ会議ツール1472が起動されたことを示すために強調表示される。このような選択は、異なる実施形態で異なるように(例えば、選択されたアイコンのテキスト又は境界線を強調表示することによって)示されうる。
【0151】
第5段階1430、第6段階1435及び第7段階1440は、
図11に示される第3段階1120、第4段階1125及び第5段階1130と同様であり、これらの段階の説明を参照することによって理解されうる。要するに、第5段階1430は、リモートユーザがテレビ会議への招待に応答するのを待つ移行待機段階を示す。第6段階1435は、リモートユーザがテレビ会議要求を承諾した後で、(ローカルユーザのビデオを表示する)表示域1480のサイズが段階的に減少し、したがってUI1405はリモートユーザのカメラからのビデオを含む表示域1492を表示域1480の後ろに示すことができることを示す。第7段階1440では、PIP表示1447がテレビ会議中にUI1405によって提示される。一部の実施形態では、第6段階1435及び第7段階1440における表示域1155のレイアウトは、上述の
図12の表示域1155のレイアウトに似ている。
【0152】
図10、
図11、
図12、
図13及び14は、テレビ会議を確立するいくつかの仕方を示す。一部の実施形態では、通話中に、オーディオデータ(例えば、声)が1つの通信チャネルを通じて(回線交換通信ネットワーク又はパケット交換通信ネットワークのような通信ネットワークを介して)伝送され、テレビ会議中に、オーディオデータが別の通信チャネルを通じて伝送される。したがって、このような実施形態では、テレビ会議が確立される前にオーディオデータ(例えば、声)が通信チャネルを通じて伝送され、テレビ会議が確立されると、オーディオが(通話中に使用される通信チャネルの代わりに)異なる通信チャネルを通じて伝送される。
【0153】
通話からテレビ会議へのオーディオデータの切れ目のない移行(例えば、ハンドオフ)を提供するために、一部の実施形態では、テレビ会議を確立する前に通話を終わらせない。例えば、一部の実施形態では、(例えば、
図10に示されるメッセージシーケンスを完了した後で)ピアツーピアテレビ会議接続を確立してから、通話を終わらせ、ピアツーピア通信セッションを通じてオーディオ/ビデオデータを送信し始める。あるいは、他の実施形態では、(例えば、
図10に示されるメッセージシーケンスを完了した後で)ピアツーピアテレビ会議接続を確立し、ピアツーピアテレビ会議セッションを通じてオーディオ/ビデオデータを送信し始めてから、通話を終わらせ、受信したオーディオ/ビデオデータを提示し始める。
【0154】
一部の実施形態のピアツーピアテレビ会議接続により、テレビ会議中の携帯デバイスは、(例えば、中央サーバを通じて通信する代わりに)互いと直接通信できる。ピアツーピアテレビ会議の一部の実施形態によって、テレビ会議中の携帯デバイスが、リソースを互いと共有しうる。例えば、以下でさらに詳細に説明するように、テレビ会議の制御通信チャネルを通じて、1つの携帯デバイスは、露出調整動作、焦点調整動作及び/又はカメラ切り換え動作などの、画像を異なるように処理する(すなわち、その画像処理リソースを共有する)ように他の携帯デバイスに指示するために1つの携帯デバイスから他の携帯デバイスに命令を送信することによって、テレビ会議中に別の携帯デバイスの動作を遠隔制御できる。
【0155】
2.動的なビットレートのセットアップ
典型的に、テレビ会議中の携帯デバイスは、さまざまなプライベート及びパブリックの無線通信ネットワーク(例えば、GSM、UMTSなどのようなセルラーネットワーク)などのさまざまなタイプの通信ネットワークの通信チャネルを通じて、データ(例えば、オーディオ及びビデオ画像)を互いに通信する。以下では、このような無線通信ネットワークの例について、
図91及び
図92に関して説明する。
【0156】
所与の時間に通信ネットワークにアクセスする携帯デバイスの数が変わることに起因して、テレビ会議を行うための通信ネットワークの利用可能な帯域幅は、時間によって異なる。利用可能な帯域幅は、テレビ会議中ですら変化しうる。さらに、最適なテレビ会議ビットレートを追跡しようとしてテレビ会議中に高いビットレート又は大量のシグナリングで通信ネットワークをあふれさせることは、望ましくない。
【0157】
これらの理由のため、一部の実施形態では、テレビ会議に最適な初期ビットレートを特定するための新規な方法を採用する。テレビ会議に最適な初期ビットレートを識別するため、この方法は、特定のビットレートでテレビ会議を開始し、これらの実施形態でテレビ会議品質を劣化させるネットワーク状態が検出されないならば、特定の間隔でビットレートを漸増する。
【0158】
このような実施形態の一例が
図15に示されている。この図は、テレビ会議用のビットレートを設定するための本発明の一部の実施形態のプロセス1500を概念的に示す。プロセス1500は、種々のネットワーク状態に基づいてデータ(例えば、オーディオ及びビデオ画像)を送信するためのビットレートを動的に決定するために、テレビ会議セットアップの一部として(例えば、
図10に示されるテレビ会議の確立の一部として)実行される。一部の実施形態では、プロセス1500は、
図9に関して上述したテレビ会議モジュール925の管理層935によって実行される。このテレビ会議モジュールのより詳細なバージョンについて、以下で
図16に関して説明する。
【0159】
図15に示すように、プロセス1500は、(1505において)ビットレートを初期ビットレートに設定することによって開始する。一部の実施形態では、初期ビットレートは、デバイスのデフォルトのベースラインレートである。しかし、一部の実施形態では、ユーザが初期ビットレートを指定できる。1505において、プロセス1500はまた、1つ以上の通信チャネルを通じてリモートデバイスにデータ(例えば、オーディオ及びビデオ画像)を初期ビットレートで伝送するテレビ会議を開始する。
【0160】
次に、プロセス1500は、(1510において)テレビ会議でリモートデバイスから受信したネットワーク状態パラメータ集合を識別する。一部の実施形態では、ローカルデバイスは、テレビ会議の開始時に確立されたリアルタイムトランスポートプロトコル(RTP)通信セッションを通じてリモートデバイスからネットワーク状態パラメータ集合を受信する。例えば、一部の実施形態は、RTPの拡張機能を通じてネットワーク状態パラメータを提供する。さらに、一部の実施形態のRTP拡張機能は、RTPパケットヘッダ内の拡張ヘッダの存在を示し、追加情報のための拡張ヘッダを定義することによって、いかなるタイプの情報(ネットワーク状態パラメータ集合など)も送信するために使用されうる。
【0161】
異なる実施形態では、テレビ会議中のデバイスは、ネットワーク状態/輻輳パラメータの異なる集合を中継する。以下で説明する実施形態では、ネットワーク状態パラメータ集合は、片道レイテンシ及び帯域幅推定ビットレートを含む。他の実施形態では、ネットワーク状態パラメータ集合は、パケット損失データ及びラウンドトリップ時間(RTT)遅延データを含む。したがって、異なる実施形態は、ネットワーク状態パラメータ集合に任意の数の異なるネットワーク状態パラメータを含むことができる。
【0162】
一部の実施形態では、テレビ会議のリモートデバイスから受信されるネットワーク状態パラメータ集合は、動作1505において設定された初期ビットレートでテレビ会議中にローカル携帯デバイス(すなわち、プロセス1500を実行する携帯デバイス)からリモートデバイスに伝送されるデータ(例えば、オーディオ及びビデオ)に基づく。例えば、一部の実施形態では、リモートデバイスは、オーディオパケットがローカル携帯デバイスからリモートデバイスにネットワーク接続を通じて伝播するのにかかる時間をオーディオパケットのタイムスタンプを使用して算出することによって、片道レイテンシを決定できる。具体的には、一部の実施形態では、各オーディオパケットにはタイムスタンプが付される。パケット遅延がない場合、リモートデバイスは、タイムスタンプの差に等しい設定された間隔でオーディオパケットを受信するはずである。しかし、片道レイテンシ遅延がある場合、リモートデバイスは、タイムスタンプの差よりも大きい間隔でオーディオパケットを受信する。
【0163】
また、一部の実施形態では、リモートデバイスは、ビデオパケットが受信された時刻、連続するビデオパケットが受信された時刻、及び連続するビデオパケットのサイズを調べることによって、帯域幅推定ビットレートを決定する。すなわち、2つの連続するビデオパケットの受信時刻の差と第2ビデオパケットのサイズとは、ネットワーク接続の利用可能な帯域幅を推定するために使用される。一部の実施形態では、複数ペアの連続するビデオパケットを調べることによって帯域幅推定ビットレートが決定される。上記の例では、特定のタイプのデータ(すなわち、片道レイテンシを決定するためのオーディオデータ及び帯域幅推定ビットレートを決定するためのビデオデータ)を使用する。しかし、一部の実施形態では、ローカル携帯デバイスとリモートデバイスの間でネットワーク接続を通じて通信された他のタイプのデータも使用されうる。
【0164】
(1510において)ネットワーク状態の集合を識別した後で、プロセス1500は、その後、定義されたしきい値量を超えて片道レイテンシが劣化したかどうかを(1515において)判定する。一部の実施形態では、しきい値量は特定のレイテンシ量として定義され、片道レイテンシは、現在の片道レイテンシと以前の片道レイテンシとの差が特定のレイテンシ量を超えた場合にしきい値量を超えて劣化したと判定される。他の実施形態では、しきい値量は、片道レイテンシの特定の変化率として定義される。したがって、片道レイテンシは、片道レイテンシの集合(例えば、現在の片道レイテンシと以前の片道レイテンシ)の変化率が特定の変化率を超えた場合にしきい値量を超えて劣化したと判定される。
【0165】
片道レイテンシがしきい値量を超えて劣化すると判定された場合に、プロセス1500が終了する。そうでない場合に、プロセス1500は、現在のビットレートが帯域幅推定ビットレートに達したかどうかを(1520において)はネイする。一部の実施形態では、帯域幅推定ビットレートは、ネットワーク接続に利用可能な帯域幅の量(例えば、15キロビット/秒(kbps))を示す。現在のビットレートが帯域幅推定ビットレートを超えたとプロセス1500が判定した場合に、プロセス1500は終了する。現在のビットレートが帯域幅推定ビットレートを超えていないとプロセス1500が判定した場合に、プロセス1500は動作1525に進む。
【0166】
1525において、プロセス1500は、現在のビットレートが、規定の最大ビットレートに達したかどうかを判定する。現在のビットレートが、規定の最大ビットレートを超えたとプロセス1500が判定した場合に、プロセス1500は終了する。そうでない場合に、プロセス1500は動作1530に進み、規定の量だけ現在のビットレートを増加させる。異なる実施形態では、ビットレートを増加させる量を異なるように規定する。現在のビットレートを増加させる規定の量の例は、ビットレートを増加させる任意の数の他の量の中でとりわけ、32kbps、64kbpsを含む。
【0167】
次に、プロセスは、規定の時間量が経過したかどうかを(1535において)判定する。異なる実施形態では時間量を異なるように規定するので、この規定の時間量は、1秒、2秒、5秒、又は他の任意の取りうる時間量でありうる。リモートデバイスが、(動作1530において)新たな増加したビットレートでローカル携帯デバイスから伝送されたデータ(例えば、オーディオ及びビデオ画像)を受信し、新たな増加したビットレートに基づいてネットワーク状態パラメータを決定するために、プロセス1500は、規定の時間量が経過するのを待つ。規定の時間量が経過していないとプロセス1500が判定した場合に、プロセス1500は、規定の時間量が経過するまで、動作1535に戻る。規定の時間量が経過したとプロセス1500が判定した場合に、プロセス1500は動作1510に戻る。プロセス1500の動作は、プロセス1500が終了するまで、上述したように1510から先に進む。
【0168】
プロセス1500が終了する場合に(すなわち、動作1515、1520又は1525の後)、テレビ会議のためのビットレートのセットアップは完了しており、最適なビットレートが決定されている。テレビ会議に利用可能な帯域幅はテレビ会議中に変わりうるので、一部の実施形態は、リモートデバイスから受信されたネットワーク状態パラメータの集合(すなわち、片道レイテンシ及び帯域幅推定ビットレート)に基づいてビットレートを調整し続ける。ビットレートを増加させることによって、テレビ会議中にビットレートが調整されうる。例えば、規定のしきい値量を超えて片道レイテンシが劣化したのでプロセス1500が終了し、テレビ会議中に片道レイテンシが改善したならば、一部の実施形態では、ビットレートが増加される。同様に、ビットレートが帯域幅推定ビットレートを超えたのでプロセス1500が終了し、テレビ会議中に、帯域幅推定ビットレートが増加したならば、一部の実施形態では、ビットレートが増加される。
【0169】
対照的に、ビットレートを減少させることによって、テレビ会議中にビットレートが調整されうる。例えば、規定のしきい値量を超えて片道レイテンシがテレビ会議中に劣化し続けるならば、一部の実施形態では、ビットレートが減少される。また、ビットレートがテレビ会議中に帯域幅推定ビットレートを超え続ける(例えば、帯域幅推定ビットレートが減少し続ける)ならば、一部の実施形態では、ビットレートが減少される。
【0170】
さらに、プロセス1500の説明では、ビットレートを増加させるかどうかを判定するために片道レイテンシ及び帯域幅推定ビットレートを使用する。しかし、異なる実施形態では、任意の数のネットワーク状態パラメータが、ビットレートを増加させるかどうかを判定するために使用できることが当業者に理解されよう。例えば、ビットレートを増加させるかどうかの判定は、単にRTT遅延データ又はパケット損失データだけに基づくことができる。
【0171】
C.テレビ会議アーキテクチャ
上述のように、
図16は、一部の実施形態のデュアルカメラ携帯デバイスのテレビ会議及び処理モジュール1600のためのソフトウェアアーキテクチャを概念的に示す。図示のように、テレビ会議及び処理モジュール1600は、クライアントアプリケーション1665と、テレビ会議モジュール1602と、メディア交換モジュール1620と、バッファ1625と、取り込み済画像処理ユニット(CIPU)ドライバ1630と、エンコーダドライバ1635と、デコーダドライバ1640とを含む。一部の実施形態では、バッファ1625は、デュアルカメラ携帯デバイスのディスプレイ1645に表示するためのビデオの画像を格納するフレームバッファである。
【0172】
一部の実施形態では、クライアントアプリケーション1665は、
図9のテレビ会議クライアント945と同じである。上述のように、クライアントアプリケーション1665は、別のアプリケーションに統合されてもよいし、スタンドアロンアプリケーションとして実施されてもよい。クライアントアプリケーション1665は、テレビ会議アプリケーション、ボイスオーバーIP(VOIP)アプリケーション(例えば、スカイプ)、又はインスタントメッセージングアプリケーションなどのテレビ会議モジュール1602のテレビ会議機能を使用するアプリケーションであってもよい。
【0173】
一部の実施形態のクライアントアプリケーション1665は、会議を開始する命令及び会議を終了する命令などの命令をテレビ会議モジュール1602に送信し、テレビ会議モジュール1602から命令を受信し、命令をデュアルカメラ携帯デバイスのユーザからテレビ会議モジュール1602に経路制御し、デュアルカメラ携帯デバイスに表示されてユーザにアプリケーションとの対話を可能にするユーザインタフェースを生成する。
【0174】
D.テレビ会議マネージャ
図16に示すように、テレビ会議モジュール1602は、テレビ会議マネージャ1604と、画像処理マネージャ1608と、ネットワーキングマネージャ1614と、バッファ1606、1610、1612、1616及び1618とを含む。一部の実施形態では、テレビ会議モジュール1602は、
図9に示されるテレビ会議モジュール925と同じであり、したがって、テレビ会議モジュール925に関して上述した同じ機能のうちの一部又は全部を実行する。
【0175】
一部の実施形態では、テレビ会議マネージャ1604は、テレビ会議が開始する際のテレビ会議モジュール1602の他のモジュールのうちの一部(例えば、画像処理マネージャ1608及びネットワーキングマネージャ1614)又は全部の初期化、テレビ会議中のテレビ会議モジュール1602の動作の制御、及びテレビ会議が終了した際のテレビ会議モジュール1602の他のモジュールの一部又は全部の動作の中止を担当する。
【0176】
一部の実施形態のテレビ会議マネージャ1604は、テレビ会議で1つ以上のデバイスから受信された画像及びデュアルカメラ携帯デバイスに表示するためにデュアルカメラ携帯デバイスの両方のカメラのうちの1つによって取り込まれた画像も処理する。例えば、一部の実施形態のテレビ会議マネージャ1604は、テレビ会議に参加している別のデバイスから受信された復号済みの画像をバッファ1618から読み出し、CIPU1650によって処理された画像(すなわち、デュアルカメラ携帯デバイスによって取り込まれた画像)をバッファ1606から読み出す。一部の実施形態では、テレビ会議マネージャ1604はまた、デュアルカメラ携帯デバイスに画像を表示する前に、画像を拡大縮小し、合成する。すなわち、テレビ会議マネージャ1604は、一部の実施形態では、携帯デバイスに表示するPIPビュー又は他の合成ビューを生成する。一部の実施形態では、バッファ1606及び1618から読み出された画像を拡大縮小するが、他の実施形態では、単にバッファ1606及び1618のうちの一方から読み出された画像だけを拡大縮小する。
【0177】
図16は、テレビ会議モジュール1602の一部としてテレビ会議マネージャ1604を示しているが、テレビ会議マネージャ1604の一部の実施形態は、テレビ会議モジュール1602とは別個のコンポーネントとして実施される。したがって、単一のテレビ会議マネージャ1604は、いくつかのテレビ会議モジュール1602を管理及び制御するために使用されうる。例えば、一部の実施形態では、複数当事者による会議中に各当事者と対話するためにローカルデバイス上で別個のテレビ会議モジュールを実行し、ローカルデバイス上のこれらのテレビ会議モジュールのそれぞれは、1つのテレビ会議マネージャによって管理及び制御される。
【0178】
一部の実施形態の画像処理マネージャ1608がデュアルカメラ携帯デバイスのカメラによって取り込まれた画像を処理してから、画像がエンコーダ1655によって符号化される。例えば、画像処理マネージャ1608の一部の実施形態では、CIPU1650によって処理された画像に関する露出調整、焦点調整、パースペクティブ補正、ダイナミックレンジ調整及び画像サイズ変更のうちの1つ以上を実行する。一部の実施形態では、画像処理マネージャ1608は、テレビ会議で他のデバイスに伝送された符号化済みの画像のフレームレートを制御する。
【0179】
ネットワーキングマネージャ1614の一部の実施形態は、デュアルカメラ携帯デバイスとテレビ会議に参加している他のデバイスとの間の1つ以上の接続を管理する。例えば、一部の実施形態のネットワーキングマネージャ1614は、テレビ会議の開始時にデュアルカメラ携帯デバイスとテレビ会議の他のデバイスとの間の接続を確立し、テレビ会議の終了時にこれらの接続を切断する。
【0180】
テレビ会議中に、ネットワーキングマネージャ1614は、エンコーダ1655によって符号化された画像をテレビ会議の他のデバイスに伝送し、テレビ会議の他のデバイスから受信された画像を復号のためにデコーダ1660に経路制御する。一部の実施形態では、画像処理マネージャ1608ではなくネットワーキングマネージャ1614が、テレビ会議の他のデバイスに伝送された画像のフレームレートを制御する。例えば、ネットワーキングマネージャ1614の一部のこのような実施形態は、テレビ会議の他のデバイスに伝送されたと想定される符号化されたフレームの一部を破棄する(すなわち、伝送しない)ことによって、フレームレートを制御する。
【0181】
図示のように、一部の実施形態のメディア交換モジュール1620は、カメラソースモジュール1622と、ビデオ圧縮器モジュール1624と、ビデオ伸張器モジュール1626とを含む。メディア交換モジュール1620は、
図3に示されるメディア交換モジュール310と同じであり、これについて、より詳細に説明する。カメラソースモジュール1622は、CIPUドライバ1630を通じてテレビ会議モジュール1602とCIPU1650との間のメッセージ及びメディアコンテンツを経路制御し、ビデオ圧縮器モジュール1624は、エンコーダドライバ1635を通じてテレビ会議モジュール1602とエンコーダ1655との間のメッセージ及びメディアコンテンツを経路制御し、ビデオ伸張器モジュール1626は、デコーダドライバ1640を通じてテレビ会議モジュール1602とデコーダ1660との間のメッセージ及びメディアコンテンツを経路制御する。一部の実施形態では、カメラソースモジュール1622の一部としてメディア交換モジュール310に含まれるTNRモジュール315(
図16で不図示)を実施するが、他の実施形態では、ビデオ圧縮器モジュール1624の一部としてTNRモジュール315を実施する。
【0182】
一部の実施形態では、CIPUドライバ1630及びエンコーダドライバ1635は、
図3に示されるCIPUドライバ305及びエンコーダドライバ320と同じである。一部の実施形態のデコーダドライバ1640は、ビデオ伸張器モジュール1626とデコーダ1660との間の通信インタフェースとして機能する。このような実施形態では、デコーダ1660は、ネットワーキングマネージャ1614を通じてテレビ会議の他のデバイスから受信されビデオ伸張器モジュール1626を通じて経路制御された画像を復号する。画像が復号された後、画像は、デコーダドライバ1640及びビデオ伸張器モジュール1626を通じてテレビ会議モジュール1602に返送される。
【0183】
テレビ会議中にビデオ処理を実行することに加えて、一部の実施形態のデュアルカメラ携帯デバイスのためのテレビ会議及び処理モジュール1600は、テレビ会議中にオーディオ処理動作も実行する。
図17は、このようなソフトウェアアーキテクチャを示す。図示のように、テレビ会議及び処理モジュール1600は、(テレビ会議マネージャ1604と、画像処理マネージャ1608と、ネットワーキングマネージャ1614とを含む)テレビ会議モジュール1602と、メディア交換モジュール1620と、クライアントアプリケーション1665とを含む。
図16に示されているテレビ会議及び処理モジュール1600の他のコンポーネント及びモジュールは、説明を簡略化するため、
図17では省略されている。テレビ会議及び処理モジュール1600は、フレームバッファ1705及び1710と、オーディオ処理マネージャ1715と、オーディオドライバ1720とも含む。一部の実施形態では、オーディオ処理マネージャ1715は、別個のソフトウェアモジュールとして実施されるが、他の実施形態では、オーディオ処理マネージャ1715は、メディア交換モジュール1620の一部として実施される。
【0184】
オーディオ処理マネージャ1715は、テレビ会議において他のデバイスへの伝送のためにデュアルカメラ携帯デバイスによって取り込まれたオーディオデータを処理する。例えば、オーディオ処理マネージャ1715は、マイクロフォン1725によって取り込まれたオーディオデータを、オーディオドライバ1720を通じて受け取り、オーディオデータを符号化してから、他のデバイスへの伝送のために、符号化されたオーディオデータをバッファ1705に格納する。オーディオ処理マネージャ1715は、テレビ会議において他のデバイスによって取り込まれて他のデバイスから受信したオーディオデータも処理する。例えば、オーディオ処理マネージャ1715は、バッファ1710からオーディオデータを読み出し、このオーディオデータを復号し、その後、オーディオドライバ1720を通じてスピーカ1730に出力される。
【0185】
一部の実施形態では、テレビ会議モジュール1602は、オーディオ処理マネージャ1715及びその関連バッファと共に、より大きな会議モジュールの一部である。複数参加者によるオーディオ会議が、ビデオコンテンツを交換することなく、いくつかのデバイス間で行われる場合に、このテレビ会議及び処理モジュール1600は、インターネットプロトコル(IP)層を介したオーディオの交換を容易にするために、ネットワーキングマネージャ1614及びオーディオ処理マネージャ1715のみを使用する。
【0186】
ここで、一部の実施形態のテレビ会議マネージャ1604の動作について、
図18に関して説明する。
図18は、
図16に示されるテレビ会議マネージャ1604などの、一部の実施形態のテレビ会議マネージャによって実行されるプロセス1800を概念的に示す。これは、
図9の管理層935によって実行されるのに等しくなりうる。一部の実施形態では、デュアルカメラ携帯デバイスのユーザが(例えば、デュアルカメラ携帯デバイスに表示されるユーザインタフェースを通じて)テレビ会議要求を承諾する場合に、又は別のデバイスのユーザが、デュアルカメラ携帯デバイスのユーザによって送信された要求を承諾する場合に、テレビ会議マネージャ1604はプロセス1800を実行する。
【0187】
プロセス1800は、テレビ会議を開始する命令を(1805において)受信することによって始まる。一部の実施形態では、命令は、クライアントアプリケーション1665から受信されるか、又はデュアルカメラ携帯デバイスに表示されるユーザインタフェースを通じてユーザから受信され、クライアントアプリケーション1665によってテレビ会議マネージャ1604に転送される。例えば、一部の実施形態では、デュアルカメラ携帯デバイスのユーザがテレビ会議要求を承諾した場合に、命令はユーザインタフェースを通じて受信され、クライアントアプリケーションによって転送される。一方、他のデバイスのユーザが、ローカルデバイスから送信された要求を承諾した場合に、一部の実施形態では、(初期要求を送信するために以前のユーザインタフェースとの対話はあってもよいが)ユーザインタフェースと対話することなく、クライアントアプリケーションから命令を受信する。
【0188】
次に、プロセス1800は、テレビ会議マネージャ1604と対話する第1モジュールを(1810において)初期化する。テレビ会議マネージャ1604と対話する一部の実施形態のモジュールは、CIPU1650、画像処理マネージャ1608、オーディオ処理マネージャ1715及びネットワーキングマネージャ1614を含む。
【0189】
一部の実施形態では、CIPU1650を初期化することは、デュアルカメラ携帯デバイスの一方又は両方のカメラによって取り込まれた画像の処理を開始するようにCIPU1650に命令することを含む。一部の実施形態では、バッファ1610からの画像の読み出し並びに読み出された画像の処理及び符号化を開始するように画像処理マネージャ1608に命令することによって、画像処理マネージャ1608を初期化する。オーディオ処理マネージャ1715を初期化するため、一部の実施形態では、マイクロフォン1725によって取り込まれたオーディオデータの符号化及びスピーカ1730に出力するために(他のデバイスから受信されて)バッファ1710に格納されたオーディオデータの復号を始めるようにオーディオ処理マネージャ1715に命令する。一部の実施形態のネットワーキングマネージャ1614を初期化することは、テレビ会議において他のデバイスとのネットワーク接続を確立するようにネットワーキングマネージャ1614に命令することを含む。
【0190】
プロセス1800は、その後、初期化するべきモジュールが残されていないかどうかを(1815において)判定する。初期化するために残されているモジュールがある場合に、プロセス1800は、モジュールの別のものを初期化するために動作1810に戻る。必要なモジュールがすべて初期化された場合に、プロセス1800はデュアルカメラ携帯デバイス(すなわち、ローカル表示)に表示するための画像合成を(1820において)生成する。これらの合成画像は、以下に説明する、
図65に示される画像(すなわち、PIP又は他の合成表示)を含んでもよく、ローカルデュアルカメラ携帯デバイスのカメラからの画像及びテレビ会議に参加している他のデバイスのカメラからの画像の種々の組み合わせを含みうる。
【0191】
次に、プロセス1800は、テレビ会議に変更がなされたかどうかを(1825において)判定する。一部の実施形態では、デュアルカメラ携帯デバイスに表示されたユーザインタフェースを用いたユーザとの対話を通じてテレビ会議への変更を受け取るが、他の実施形態では、ネットワーキングマネージャ1614(すなわち、遠隔制御)を通じて他のデバイスからのテレビ会議への変更を受信する。一部の実施形態では、テレビ会議設定への変更は、クライアントアプリケーション1665又はテレビ会議モジュール1602内の他のモジュールから受信されてもよい。テレビ会議設定は、ネットワーク状態の変化によって変化してもよい。
【0192】
変更がなされた場合に、プロセス1800は、テレビ会議への変更がネットワーク設定への変更であるかどうかを(1830において)判定する。一部の実施形態では、変更はネットワーク設定への変更又は画像取り込み設定の変更のどちらかである。テレビ会議の変更がネットワーク設定への変更である場合に、プロセスは、ネットワーク設定を(1840において)変更し、それから動作1845に進む。一部の実施形態のネットワーク設定の変更は、画像が符号化されるビットレート又は画像が他のデバイスに伝送されるフレームレートの変更を含む。
【0193】
テレビ会議への変更がネットワーク設定への変更でない場合に、プロセス1800は、変更が画像取り込み設定への変更であると判定し、それから動作1835に進む。プロセス1800は、その後、画像取り込み設定への変更を(1835において)実行する。一部の実施形態では、画像取り込み設定への変更は、いくつかの設定変更の中でも特に、カメラの切り換え(すなわち、デュアルカメラ携帯デバイス上のどのカメラがビデオを取り込むかの切り換え)、焦点調整、露出調整、デュアルカメラ携帯デバイスの一方又は両方のカメラからの画像を表示するか又は表示しないか、及びデュアルカメラ携帯デバイスに表示される画像のズームイン又はズームアウトを含んでもよい。
【0194】
動作1845では、プロセス1800は、テレビ会議を終了するかどうかを判定する。テレビ会議が終了しないとプロセス1800が判定した場合に、プロセス1800は動作1820に戻る。テレビ会議が終了するとプロセス1800が判定した場合に、プロセス1800は終了する。プロセス1800の一部の実施形態は、プロセス1800がテレビ会議を終了する命令をクライアントアプリケーション1665から受け取った場合に(すなわち、ローカルデュアルカメラ携帯デバイスのユーザインタフェースを通じて受信された又はテレビ会議に参加している他のデバイスから受信された命令に起因して)、テレビ会議が終了すると判定する。
【0195】
一部の実施形態では、テレビ会議マネージャ1604は、テレビ会議が終了する場合に、プロセス1800に示されていない種々の動作を実行する。一部の実施形態では、画像の生成を止めるようにCIPU1650に命令し、テレビ会議中の他のデバイスとのネットワーク接続を切断するようにネットワーキングマネージャ1614に命令し、画像の生成及び符号化を止めるように画像処理マネージャ1608に命令する。
【0196】
E.時間ノイズ低減
一部の実施形態は、ビデオのノイズを低減するようにビデオ画像を処理するための個別の時間ノイズ低減モジュールを含む。一部の実施形態の時間ノイズ低減モジュールは、ビデオから望ましくないノイズを識別し消去するためにビデオシーケンスの後続の画像を比較する。
【0197】
図19は、一部の実施形態のこのような時間ノイズ低減(TNR)モジュール1900のためのソフトウェアアーキテクチャを概念的に示す。一部の実施形態では、TNRモジュール1900をアプリケーションの一部として(例えば、
図3に示すメディア交換モジュールの一部として)実施するが、他の実施形態では、他のアプリケーションによって使用されるスタンドアロンアプリケーションとしてTNRモジュール1900を実施する。さらに他の実施形態では、デュアルカメラ携帯デバイス上で実行されるオペレーティングシステムの一部としてTNRモジュール1900を実施する。一部の実施形態では、TNRモジュール1900は、TNRモジュール1900の機能のうちの一部又は全部を他のアプリケーションに提供するAPI集合によって実施される。
【0198】
図19に示すように、TNRモジュール1900は、TNRマネージャ1905と、差分モジュール1910、画素平均化モジュール1915と、動き履歴モジュール1920とを含む。
図19は、3つのモジュール1910、1915及び1920を別個のモジュールとして示しているが、一部の実施形態では、以下で説明するように、これらのモジュールの機能を単一のモジュールで実施する。一部の実施形態のTNRモジュール1900は、入力画像、参照画像及び動き履歴を入力として受け取る。一部の実施形態では、入力画像は現在処理されている画像であり、参照画像はビデオシーケンス内の直前の画像であり、これと入力画像が比較される。TNRモジュール1900は、出力画像(入力画像の、ノイズが低減されたバージョン)及び出力動き履歴を出力する。
【0199】
一部の実施形態のTNRマネージャ1905は、データの流れを、TNRモジュール1900を通るように向ける。図示のように、TNRマネージャ1905は、入力画像、参照画像及び動き履歴を受け取る。TNRマネージャ1905はまた、出力画像及び出力動き履歴を出力する。TNRマネージャ1905は、差分モジュール1910に入力画像及び参照画像を送り、差分モジュール1910から差分画像を受け取る。
【0200】
一部の実施形態では、差分モジュール1910は、TNRマネージャ1905から受け取ったデータを処理し、処理されたデータをTNRマネージャ1905に送る。図示のように、差分モジュール1910は、TNRマネージャ1905から入力画像及び参照画像を受け取る。一部の実施形態の差分モジュール1910は、ある画像の画素値を他の画像の画素値から減算することによって差分画像を生成する。差分画像はTNRマネージャ1905に送られる。一部の実施形態の差分画像は、直前の画像と比較して入力画像の変化した区画及び入力画像の同じままの区画を識別するために、2つの画像間の差分を示す。
【0201】
TNRマネージャ1905はまた、画素平均化モジュール1915に入力画像及び参照画像を送る。図示のように、一部の実施形態では、画素平均化モジュール1915に動き履歴も送る。しかし、他の実施形態では、動き履歴を送信せずに、入力画像及び参照画像のみを送ってもよいだろう。いずれの実施形態においても、TNRマネージャ1905は、処理された画像を画素平均化モジュール1915から受け取る。
【0202】
一部の実施形態の画素平均化モジュール1915は、画像の特定の位置に対して入力画像及び参照画像から画素の平均を取るかどうかを判定するために、動き履歴を使用する。一部の実施形態では、動き履歴は、入力画像の各画素に対する確率値を含む。特定の確率値は、参照画像の対応する画素に対して入力画像の対応する画素が変化した(すなわち、動的画素である)確率を表す。例えば、入力画像の特定の画素の確率値が20であるならば、それは、参照画像の対応する画素に対して入力画像の特定の画素が変化した確率が20%であることを示す。別の例として、入力画像の特定の画素の確率値が0であるならば、それは、参照画像の対応する画素に対して入力画像の特定の画素が変化していない(すなわち、静的画素である)ことを示す。
【0203】
異なる実施形態では、入力画像の確率値を異なるように格納する。一部の実施形態では、1つのデータ配列に入力画像の各画素の確率値を格納してもよいだろう。他の実施形態では、ビデオの画像の解像度と同じ寸法を有する行列(例えば、配列の配列)に確率値を格納してもよいだろう。例えば、ビデオの画像の解像度が320×240であるならば、行列も320×240である。
【0204】
画素平均化モジュール1915が入力画像及び参照画像に加えて動き履歴をTNRマネージャ1905から受け取る場合に、画素平均化モジュール1915は、入力画像の各画素の確率値を読み込む。入力画像の特定の画素に対する確率値が、規定のしきい値(例えば、5%、20%)を下回るならば、画素平均化モジュール1915は、特定の画素に動きがある可能性は低く、したがってその画素における画像間の差分はノイズに起因することがあるという前提に基づいて、参照画像の対応する画素値で特定の画素値を平均化する。
【0205】
入力画像の特定の画素のための確率が、規定のしきい値を下回らないならば、画素平均化モジュール1915は、入力画像の特定の画素を変更しない(すなわち、その画素の画素値は、入力画像と同じのままである)。これは、特定の画素で動きの可能性が高く、したがって、画像間の差分はノイズの結果でない可能性が高いからである。一部の実施形態では、動き履歴が画素平均化モジュール1915に送られない場合に、画素平均化モジュール1915は、参照画像の対応する画素で入力画像の各画素を平均化する。画素平均化モジュール1915によって出力されTNRマネージャ1905に送られる処理された画像は、平均化されなかったあらゆる画素のための入力画像画素値及び画素平均化モジュール1915によって平均化されたあらゆる画素ための平均化された画素値を含む。
【0206】
一部の実施形態では、動き履歴モジュール1920は、TNRマネージャ1905から受信されたデータを処理し、結果データをTNRマネージャ1905に返送する。一部の実施形態の動き履歴モジュール1920は、TNRマネージャ1905から入力画像及び動き履歴を受け取る。一部の実施形態では、次の入力画像のための画素平均化に使用されうる新たな動き履歴(すなわち、確率値の集合)を生成するために、ベイズ推定器にこのデータを入力する。他の実施形態では、他の推定器を使用して新たな動き履歴を生成する。
【0207】
ここで、TNRモジュール1900の動作について、
図20に関して説明する。この図は、ビデオの画像の時間ノイズを低減するための一部の実施形態のプロセス2000を概念的に示す。プロセス2000は、TNRマネージャ1905が入力画像、参照画像及び動き履歴を(2005において)受け取ることによって開始する。入力画像は、ノイズ低減のために現在処理されている画像である。一部の実施形態では、参照画像は、CIPUから受け取られたビデオの画像のシーケンスの直前の画像である。しかし、他の実施形態では、参照画像は、直前の入力画像の処理から生成された出力画像(すなわち、TNRモジュール1900の出力)である。動き履歴は、直前の入力画像の処理から生成された出力動き履歴である。
【0208】
入力画像がビデオの第1画像である場合に、一部の実施形態のTNRモジュール1900は、第1画像を処理しない(すなわち、第1画像にTNRを適用しない)。言い換えれば、TNRマネージャ1905は、第1画像を受け取り、単に第1画像を出力するだけである。他の実施形態では、入力画像がビデオの第1画像である場合に、第1画像は、入力画像及び参照画像として使用され、TNRモジュール1900は、以下で説明するように画像を処理する。さらに、入力画像がビデオの第1画像である場合に、動き履歴は空(例えば、ヌル、全ゼロなど)であり、TNRマネージャ1905は、単に空の動き履歴を出力動き履歴として出力するだけである。
【0209】
TNRマネージャ1905は、その後、入力画像が静的であるかどうかを(2010において)判定する。この判定を行うために、一部の実施形態では、差分モジュール1910に入力画像及び参照画像を送り、差分モジュール1910から差分画像を受け取る。2つの画像間の差分が、規定のしきい値(例えば、5%の差分、10%の差分など)を下回る場合に、一部の実施形態では、入力画像を静的として分類する。
【0210】
入力画像が静的画像である場合に、TNRマネージャ1905は、静的画像からのノイズを低減させる目的で、参照画像の画素で入力画像の画素を(2015において)平均化するために、入力画像及び参照画像を画素平均化モジュール1915に送る。プロセスはその後2040に進み、これについては以下で説明する。
【0211】
入力画像が静的画像でない場合に、TNRマネージャは、入力画像、参照画像及び動き履歴を画素平均化モジュール1915に処理のために送る。画素平均化モジュール1915は、入力画像の画素を(2020において)選択する。上述のように、画素平均化モジュール1915は、動き履歴を使用して、画素の動きの確率が特定のしきい値を下回るかどうかを(2025において)判定する。
【0212】
選択された画素の確率が特定のしきい値を下回るならば、画素平均化モジュール1915は、参照画像の対応する画素で入力画像の画素を(2030において)平均化する。そうでないならば、画素は平均化されず、その特定の画素において、出力画像は入力画像と同じである。画素平均化モジュール1915は、その後、選択されていない画素が入力画像に残っているかどうかを(2035において)判定する。いずれかの画素が処理されていないならば、プロセスは動作2020に戻り、次の画素を選択する。画素平均化モジュール1915は、すべての画素が評価されるまで、動作2020〜2030を実行する。
【0213】
プロセスは、その後、動き履歴を(2040において)更新する。
図19に示し、上述したように、動き履歴モジュール1920は、入力画像に基づいて動き履歴を更新する。画素平均化モジュールからの処理済みの画像と共に、新たな動き履歴がTNRマネージャによって出力される。
【0214】
F.画像処理マネージャ及びエンコーダ
一部の実施形態では、CIPU及び/又はCIPUドライバによって実行される時間ノイズ低減動作及び画像処理動作に加えて、さまざまな画像処理動作をテレビ会議モジュール925の画像処理層930において実行する。これらの画像処理動作は、いくつかある中でも特に、露出調整、焦点調整、パースペクティブ補正、ダイナミックレンジ調整及び画像サイズ変更を含みうる。
【0215】
図21は、このような画像処理動作を実行するためのプロセス2100を概念的に示す。一部の実施形態では、プロセス2100の動作のうちの一部又は全部は、
図16の画像処理マネージャ1608及びエンコーダドライバ1635の組み合わせによって実行される。このような実施形態のうちの一部では、画像処理マネージャ1608は、画素ベースの処理(例えば、サイズ変更、ダイナミックレンジ調整、パースペクティブ補正など)を実行する。一部の実施形態では、テレビ会議に参加している別のデバイスに伝送されるべき画像に対するプロセス2100をテレビ会議中に実行する。
【0216】
ここで、プロセス2100について、
図16に関して説明する。プロセスは、バッファ1606から画像を(2105において)読み出すことによって開始する。一部の実施形態では、読み出される画像は、ビデオの画像(すなわち、画像シーケンス内の画像)である。このビデオは、プロセス2100が実行されるデバイスのカメラによって取り込まれていてもよい。
【0217】
次に、プロセス2100は、読み出された画像に対して露出調整を(2110において)実行する。一部の実施形態では、デュアルカメラ携帯デバイスに表示されるユーザインタフェースを通じて露出調整を実行する。
図22は、このような実施形態の例示的な露出調整動作を示す。
【0218】
この図は、露出調整動作を、デバイス2200のUI2205の3つの段階2210、2215及び2220に関して示す。第1段階2210は、表示域2225と表示域1155とを含むUI2205を示す。図示のように、表示域2225は、太陽と、顔及び身体の色が暗い男性との画像2230を表示する。顔及び身体の色が暗いことは、男性が適切に露出されていないことを示す。画像2230は、デバイス2200のカメラによって取り込まれたビデオ画像でありうるだろう。図示のように、表示域1155は、テレビ会議を終了させるために選択可能UI項目2250を含む。一部の実施形態では、表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。
【0219】
第2段階2215は、デバイス2200のユーザが表示域2225のエリアを選択することによって露出調整動作を始めることを示す。この例では、選択は、表示域2225内の任意の位置に指2235を置くことによってなされる。一部の実施形態では、ユーザは、取りうる画像設定調整のメニューから露出調整を選択する。
【0220】
第3段階2220は、露出調整動作が完了した後の男性の画像2240を示す。図示のように、画像2240は画像2230と同様であるが、画像2240の男性が適切に露出されている。一部の実施形態では、適切に露出された画像は、不適切に露出された画像の後に取り込まれた画像である。第2段階2215で始められた露出調整動作は、デバイス2200のカメラによって取り込まれた後続の画像の露出を調整する。
【0221】
図21に戻ると、プロセス2100は、次に、画像に対して焦点調整を(2115において)実行する。一部の実施形態では、デュアルカメラ携帯デバイスに表示されるユーザインタフェースを通じて焦点調整を実行する。
図23は、このような焦点調整動作の一例を概念的に示す。
【0222】
図23は、焦点調整動作を、デバイス2300のUI2305の3つの異なる段階2310、2315及び2320に関して示す。第1段階2310は、表示域2325と表示域1155とを含むUI2305を示す。表示域2325は、デバイス2300のカメラによって取り込まれた男性の不鮮明な画像2330を提示する。ぼやけていることは、男性の画像2330の焦点がずれていることを示す。すなわち、男性の画像2330がカメラによって取り込まれた際に、カメラのレンズが、男性にフォーカスを合わせていなかった。また、画像2330は、デバイス2300のカメラによって取り込まれたビデオ画像でありうる。図示のように、表示域1155は、テレビ会議を終了させるために選択可能UI項目2350を含む。一部の実施形態では、表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。
【0223】
第2段階2315は、デバイス2300のユーザが表示域2325のエリアを選択することによって焦点調整動作を始めることを示す。この例では、選択は、表示域2325内の任意の位置に指2335を置くことによってなされる。一部の実施形態では、ユーザは、取りうる画像設定調整のメニューから焦点調整を選択する。
【0224】
第3段階2320は、焦点調整動作が完了した後の男性の画像2340を示す。図示のように、画像2340は画像2330と同じであるが、画像2340の男性がより鮮明に表示される。このことは、カメラのレンズが適切に男性にフォーカスを合わせていることを示す。一部の実施形態では、適切にフォーカスが合わされた画像は、不適切にフォーカスが合わされた画像の後に取り込まれた画像である。第2段階2315で始められた焦点調整動作は、デバイス2300のカメラによって取り込まれた後続の画像のフォーカスを調整する。
【0225】
図21に戻ると、プロセス2100は、画像に対して画像サイズ変更を(2120において)実行する。一部の実施形態では、画像を符号化するために使用されるビット数を低減させる(すなわち、ビットレートを低下させる)目的で、画像に対して画像サイズ変更を実行する。一部の実施形態では、プロセス2100は、以下で
図26に関して説明するように、画像サイズ変更を実行する。
【0226】
プロセス2100は、次に、画像に対してパースペクティブ補正を(2125において)実行する。一部の実施形態では、プロセス2100は、以下で
図24で説明するようにパースペクティブ補正を実行する。このようなパースペクティブ補正は、デュアルカメラ携帯デバイスの向き及び移動を識別する1つ以上の加速度計及び/又はジャイロスコープセンサによって取得されたデータを使用することを含む。このデータは、その後、ずれているパースペクティブを補正する目的で画像を変更するために使用される。
【0227】
パースペクティブ補正が画像に対して実行された後、プロセス2100は、画像のダイナミックレンジを(2130において)調整する。一部の実施形態では、画像のダイナミックレンジとは、画像の各画素が有しうる取りうる値の範囲である。例えば、0〜255のダイナミックレンジを有する画像は、0〜128の範囲又は他の任意の範囲の値に調整されうる。画像のダイナミックレンジを調整することによって、画像を符号化するために使用されるビット量を低減させ(すなわち、ビットレートを低下させ)、それによって、画像を平滑化できる。
【0228】
画像のダイナミックレンジの調整は、種々の他の目的に使用されることもできる。1つの目的は、画像ノイズを低減させることである(例えば、画像はノイズの多いカメラセンサによって取り込まれた)。ノイズを低減させるため、黒レベルがより明るい黒を含む(すなわち、濃淡を調整する(crush blacks))ように再定義されるように画像のダイナミックレンジが調整される。このようにして、画像のノイズが低減される。ダイナミックレンジ調整の別の目的は、画像の質を向上させるために1つ以上の色又は色の範囲を調整することである。例えば、一部の実施形態では、前面カメラによって取り込まれた画像が人の顔の画像であると想定してもよい。したがって、画像のダイナミックレンジは、人の頬をバラ色/よりバラ色に表示させるために赤色及びピンク色を増加させるように調整されうる。ダイナミックレンジ調整動作は、他の目的にも使用されうる。
【0229】
最後に、プロセス2100は、画像を符号化するために使用される1つ以上のレートコントローラパラメータを(2135において)決定する。このようなレートコントローラパラメータは、一部の実施形態では、量子化パラメータ及びフレームタイプ(例えば、P(predictive)、B(bi-directional)、I(intra-coded))を含みうる。その後、プロセスが終了する。
【0230】
プロセス2100の種々の動作は、特定の順序で実行されるように示されているが、これらの動作(露出調整、焦点調整、パースペクティブ補正など)の多くは、任意の順序で実行でき、互いに依存しないことが当業者には理解されよう。すなわち、一部の実施形態のプロセスは、露出調整の前に焦点調整を実行することもできるし、
図21に示されるプロセスと同様の変更を実行することもできる。
【0231】
1.パースペクティブ補正
上述のように、一部の実施形態では、画像を表示又は送信する前に、画像に対してパースペクティブ補正を実行する。いくつかの場合では、デュアルカメラ携帯デバイス上のカメラのうちの1つ以上は、その被写体に適切に配向されず、その被写体は、未補正の画像では歪んで見える。パースペクティブ補正は、どのようにして画像内の物体が人に見えるのかを画像が密接に反映するように画像を処理するために使用されうる。
【0232】
図24は、
図16に示されるプロセスなどの、一部の実施形態の画像処理マネージャによって実行されるパースペクティブ補正プロセス2400を概念的に示す。一部の実施形態のプロセス2400は、
図9に示される(画像処理マネージャ1608を含むことができる)画像処理層930によって実行される。一部の実施形態では、画像を表示又は伝送する前に最近取り込まれたビデオ画像のパースペクティブを補正するために、プロセス2400をプロセス2100の動作2125において実行する。
【0233】
プロセス2400は、加速度計センサからデータを(2405において)受信することによって開始し、加速度計センサは、一部の実施形態ではデュアルカメラ携帯デバイスの一部である。一部の実施形態の加速度計センサは、デバイスの速度の変化率(すなわち、デバイスの加速度)を1つ以上の軸に沿って測定する。プロセスは、ジャイロスコープセンサからもデータを(2410において)受信し、ジャイロスコープセンサも、一部の実施形態ではデュアルカメラ携帯デバイスの一部であってもよい。一部の実施形態のジャイロスコープセンサ及び加速度計センサは、個別に使用されてもよいし、デュアルカメラ携帯デバイスの向きを識別するために組み合わせて使用されてもよい。
【0234】
次に、プロセス2400は、加速度計センサ及びジャイロスコープセンサから得られたデータに基づいて実行するパースペクティブ補正量を(2415において)決定する。一般に、向きがさらに軸からはずれている場合に、最適な画像を生成するために、より多くのパースペクティブ補正が必要とされる。一部の実施形態では、デバイスの向きに基づいてパースペクティブ補正量を表す歪み(warp)パラメータを算出する。
【0235】
実行するパースペクティブ補正量を決定した後、プロセス2400は、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像を(2420において)受信する。このプロセスは、カメラによって取り込まれたビデオシーケンスの各画像に対して実行されうる。一部の実施形態では、デュアルカメラ携帯デバイス上の2つのカメラのそれぞれから到着する画像のために別個の算出を実行しうる。
【0236】
プロセスは、その後、決定されたパースペクティブ補正量に基づいて画像を(2425において)変更する。一部の実施形態では、パースペクティブ補正量の歪みパラメータ又は他の表記に加えて、ベースライン画像又は他の情報(例えば、どの補正が実行されるべきかに関してユーザが入力した点)も使用する。画像を変更した後、プロセス2400は終了する。
【0237】
図25は、一部の実施形態の例示的な画像処理動作を概念的に示す。この図は、パースペクティブ補正を使用しない第1画像処理モジュール2520によって実行される第1画像処理動作2505と、パースペクティブ補正を使用する第2画像処理モジュール2565によって実行される第2画像処理動作2550とを示す。
【0238】
図示のように、第1画像処理動作2505は、ブロックに向かってある角度で下方向を見る大気遠近法からブロック2515の第1画像2510に対して実行される。そのパースペクティブから、ブロック2515の上部はブロックの下部よりも近い。したがって、ブロック2515は、第1画像2510を取り込んだカメラの方に傾くように見える。
図25は、第1画像処理モジュール2520による処理の後の処理済み第1画像2525も示す。図示のように、処理された第1画像2525のブロック2515は、第1画像処理モジュール2520がパースペクティブ補正を実行しなかったので、同じ後処理に見える。
【0239】
第2画像処理動作2550は、ブロック2560の第2画像2555に対して実行される。ブロック2560は、第1画像2510のブロック2515と同じである。
図25は、第2画像処理モジュール2565のパースペクティブコレクタ2570による第2画像2555の処理の後の処理済み第2画像2575も示す。パースペクティブコレクタ2570は、第2画像2555のパースペクティブを補正するためにプロセス2400を使用してもよい。第2画像2555を取り込んだカメラが下向きの角度で傾斜していることを示す加速度計及びジャイロスコープからのデータに基づいて(及び、場合によっては他のデータに基づいて)、パースペクティブコレクタ2570は、処理済みの第2画像2575上でブロックがまっすぐに表示されるように見えるように、第2画像を補正できる。
【0240】
2.サイズ変更及びビットストリーム操作
一部の実施形態の画像処理層930によって実行される、
図21に関して上述した機能の中には、画像サイズ変更及びビットストリーム操作がある。一部の実施形態では、(動作2130において実行される)画像サイズ変更は、画像を拡大又は縮小すること(すなわち、画像を表すために使用される画素数を変更すること)を含む。一部の実施形態では、ビットストリーム操作は、サイズ変更後の画像のサイズを示すデータをビットストリームに挿入することを含む。このサイズ変更及びビットストリーム操作は、一部の実施形態では、エンコーダドライバ(例えば、ドライバ1635)によって実行される。
【0241】
図26は、一部の実施形態のこのようなエンコーダドライバ2600のためのソフトウェアアーキテクチャを概念的に示し、例示的な画像2605に対してエンコーダドライバ2600によって実行される例示的なサイズ変更及びビットストリーム操作動作を示す。一部の実施形態では、画像2605は、テレビ会議で別のデバイス(群)への伝送のためにデュアルカメラ携帯デバイスのカメラによって取り込まれたビデオの画像である。
図16を参照すると、一部の実施形態では、ビデオ画像は、CIPU1650からCIPUドライバ1630及びカメラソースモジュール1622を経てバッファ1606まで進むことになり、バッファ1606から画像処理マネージャ1608によって読み出される。画像処理マネージャ1608で画像処理(例えば、焦点調整、露出調整、パースペクティブ補正)に供された後、画像は、バッファ1610及びビデオ圧縮器モジュール1624を通じてエンコーダドライバ1635に送られる。
【0242】
図示のように、エンコーダドライバ2600は、処理層2610と、レートコントローラ2645とを含む。一部の実施形態のレートコントローラの例が、以下で説明する
図30に示されている。処理層2610は、画像リサイザ2615と、ビットストリームマネージャ2625とを含む。一部の実施形態では、これらのモジュールは、画像が符号化される前と後の両方で画像に対して種々の動作を実行する。この例では、画像リサイザは、エンコーダドライバ2600の処理層2610の一部として示されているが、一部の実施形態では、エンコーダドライバ2600ではなく画像処理マネージャ1608の一部として画像リサイザを実施する(すなわち、画像サイズ変更は、画像及びサイズデータをエンコーダドライバに送る前に行われる)。
【0243】
図示のように、画像リサイザ2615は、画像がレートコントローラ2645を通じてエンコーダ2650に送られる前に画像をサイズ変更する。画像2605は、リサイザ2615を通じて送られ、画像2630に縮小される。一部の実施形態では、画像の縮小に加えて、画像を拡大することもできる。
【0244】
図26に示すように、一部の実施形態では、到来する画像(例えば、画像2605)を縮小し、その後、縮小画像(例えば、画像2630)を、到来する画像と(画素単位で)同じサイズである(すなわち、画像2605の画素の行及び列の数が空間的に冗長な画像2635の画素の行及び列の数と同じである)空間的に冗長な画像(例えば、画像2635)に重畳する。一部の実施形態では、縮小画像2630を、(図示のように、合成画像2640を生成するために)空間的に冗長な画像の左上隅に重畳するが、他の実施形態では、縮小画像を、空間的に冗長な画像の異なる区画(例えば、中央、右上、上部中央、下部中央、右下など)に重畳する。
【0245】
一部の実施形態では、空間的に冗長な画像は、実質的にすべて1色(例えば、黒色、青色、赤色、白色など)である画像、又は繰り返しパターン(例えば、チェック、ストライプなど)を有する画像である。例えば、
図26に示される空間的に冗長な画像2635は、十字の繰り返しパターンを有する。合成画像2640の空間的に冗長な部分は、反復性があるために、エンコーダによって少量のデータに容易に圧縮されうる。そのうえ、画像のシーケンスがすべて縮小され、使用される空間的に冗長な画像がシーケンス中の各画像に対して同じであるならば、符号化された画像を現すのに必要なデータ量をさらに減少させるために時間的圧縮が使用されうる。
【0246】
画像リサイザ2615の一部の実施形態では、サイズ変更された画像のサイズ(例えば、縮小画像2630のサイズ)を示すサイズデータ2620も生成し、この生成されたサイズデータ2620をビットストリームマネージャ2625に送る。一部の実施形態のサイズデータ2620は、サイズ変更された画像2630のサイズを、サイズ変更された画像2630の画素の行の数及び画素の列の数(すなわち、高さ及び幅)で示す。一部の実施形態では、サイズデータ2620は、合成画像2640内のサイズ変更された画像2630の位置も示す。
【0247】
画像がサイズ変更された後、合成画像2640はレートコントローラ2645を通じてエンコーダ2650に送られる。レートコントローラ2645は、一部の実施形態では、以下でさらに詳細に説明するように、エンコーダ2650によって出力される画像のビットレート(すなわち、データサイズ)を制御する。一部の実施形態のエンコーダ2650は、画像を圧縮して符号化する。エンコーダ2650は、H.264符号化法又は別の符号化法を使用してもよい。
【0248】
一部の実施形態のビットストリームマネージャ2625は、1つ以上の符号化された画像のビットストリームをエンコーダ2650から受け取り、サイズデータをビットストリームに挿入する。例えば、一部の実施形態では、ビットストリームマネージャ2625は、サイズデータ2620を画像リサイザ2615から受け取り、サイズデータ2620を、エンコーダ2650から受け取った符号化された合成画像2640のビットストリーム2655に挿入する。ビットストリームマネージャ2625の出力は、この場合、サイズデータ2620を含む変更されたビットストリーム2660である。異なる実施形態において、サイズデータ2620をビットストリーム2655の異なる位置に挿入する。例えば、ビットストリーム2660は、ビットストリーム2660の先頭に挿入されたサイズデータ2620を示す。しかし、他の実施形態では、サイズデータ2620を、ビットストリーム2655の最後、ビットストリーム2655の中央、又はビットストリーム2655内の他の任意の位置に挿入する。
【0249】
一部の実施形態では、ビットストリーム2655は、合成画像2640を含む1つ以上の符号化された画像のシーケンスのビットストリームである。このような実施形態のうちの一部において、シーケンス内の画像はすべて同じサイズにサイズ変更され、サイズデータ2620は、それらのサイズ変更された画像のサイズを示す。画像がテレビ会議の相手側のデバイスに伝送された後、受信デバイスは、ビットストリームからサイズ情報を抽出し、受信された画像を適切に復号するためにサイズ情報を使用できる。
【0250】
図27は、ドライバ2600などの、デュアルカメラ携帯デバイスのエンコーダドライバによって実行される画像サイズ変更プロセス2700を概念的に示す。プロセス2700は、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像(例えば、画像2605)を(2705において)受信することによって始まる。デュアルカメラデバイスが両方のカメラで画像を取り込んでいる場合に、一部の実施形態では、両方のカメラからの画像に対してプロセス2700を実行する。
【0251】
次に、プロセス2700は、受信した画像を(2710において)サイズ変更する。前述のように、異なる実施形態では、画像2605を異なるようにサイズ変更する。例えば、
図26の画像2605は縮小され、合成画像2640を生成するために空間的に冗長な画像2635上に重畳される。
【0252】
プロセス2700は、その後、サイズ変更された画像(例えば、サイズ変更された画像2630を含む合成画像2640)を符号化するためにエンコーダ2650に(2715において)送る。プロセス2700の一部の実施形態では、(合成画像2640に含まれる)サイズ変更された画像2630を、エンコーダが画像を符号化するビットレートを決定するレートコントローラを通じて、エンコーダ2650に送る。一部の実施形態のエンコーダ2650は、(例えば、離散コサイン変換、量子化、エントロピー符号化などを使用して)画像を圧縮して符号化し、符号化された画像を有するビットストリームをエンコーダドライバ2600に戻す。
【0253】
次に、プロセス2700は、サイズ変更された画像のサイズ(例えば、サイズデータ2620)を示すデータをビットストリームマネージャに(2720において)送る。
図26に示すように、この動作は、一部の実施形態ではエンコーダドライバ2600内で実行される(すなわち、エンコーダドライバ2600のあるモジュールが、エンコーダドライバ2600の別のモジュールにサイズデータを送る)。
【0254】
サイズ変更された画像がエンコーダ2650によって符号化された後、プロセス2700は、エンコーダからビットストリームを(2725において)受け取る。図示のように、一部の実施形態では、ビットストリームマネージャにおいてビットストリームを受け取り、ビットストリームマネージャは、サイズデータも受け取っている。受け取られたビットストリームは、符号化された合成画像を含み、ビデオシーケンスに1つ以上の追加画像も含んでもよい。
【0255】
プロセス2700は、その後、サイズ変更された画像のサイズを示すデータ(例えば、サイズデータ2620)をビットストリームに(2730において)挿入して、終了する。
図26に示すように、この動作は、一部の実施形態ではビットストリームマネージャによっても実行される。上述のように、異なる実施形態では、サイズデータをビットストリームの異なる部分に挿入する。図示の例では、サイズデータ2620は、結果として生成されるビットストリーム2660に示されるように、ビットストリーム2655の先頭に挿入される。このビットストリームは、この時点で、テレビ会議に参加している別のデバイスに伝送でき、別のデバイスで復号されて視聴されうる。
【0256】
一部の実施形態では、デコーダドライバ(例えば、ドライバ1640)は、エンコーダドライバの反対の機能を実行する。すなわち、デコーダドライバは、受け取ったビットストリームからサイズデータを抽出し、このビットストリームをデコーダに渡し、復号された画像を、サイズデータを使用してサイズ変更する。
図28は、一部の実施形態のこのようなデコーダドライバ2800のためのソフトウェアアーキテクチャを概念的に示し、例示的なビットストリーム2825に対してデコーダドライバ2800によって実行される例示的なビットストリーム操作及びサイズ変更動作を示す。
【0257】
一部の実施形態では、ビットストリーム2825は、テレビ会議でデバイスのカメラによって取り込まれたビデオの符号化された画像を含むビットストリーム(例えば、ドライバ2600などのエンコーダドライバからのビットストリーム)であり、デコーダドライバ2800が動作するデバイスに伝送される。
図16を参照すると、一部の実施形態では、ビットストリームは、ネットワーキングマネージャ1614によって受信され、バッファ1616に送られ、バッファ1616からビデオ伸張器モジュール1626によって読み出され、デコーダドライバ1640に送られる。
【0258】
図示のように、デコーダドライバ2800は、処理層2805を含む。処理層2805は、画像リサイザ2810と、ビットストリームマネージャ2820とを含む。一部の実施形態では、これらのモジュール2810及び2820は、画像が符号化される前と後の両方で、受け取られた画像に対して種々の動作を実行する。この例では、画像リサイザ2810は、デコーダドライバ2800の処理層2805の一部として示されているが、一部の実施形態は、デコーダドライバではなく画像処理マネージャ1608の一部として画像リサイザを実施する(すなわち、画像サイズ変更は、デコーダドライバ2800から画像を送った後に行われる)。
【0259】
図示のように、一部の実施形態のビットストリームマネージャ2820は、1つ以上の符号化された画像(すなわち、ビデオシーケンス内の画像)のビットストリームを受け取り、復号のためにビットストリームをデコーダ2835に送る前にビットストリームからサイズデータを抽出する。例えば、
図28に示されるように、ビットストリームマネージャ2820は、符号化された画像のビットストリーム2825を受け取り、ビットストリーム2825からサイズデータ2815を抽出し、復号のために、結果として生成される(サイズデータ2815のない)ビットストリーム2830をデコーダ2835に送る。図示のように、ビットストリームマネージャ2820は、一部の実施形態では、抽出されたサイズデータ2815を画像リサイザ2810に送る。
【0260】
一部の実施形態のサイズデータ2815は、エンコーダドライバ2600によってビットストリームに挿入されるサイズデータ2620と同じである。
図26の説明で上述したように、一部の実施形態のサイズデータ2815は、サブ画像2845のサイズを、サブ画像2845の画素の行の数及び画素の列の数として示す。サイズデータ2815は、より大きな空間的に冗長な画像2840内のサブ画像2845の位置も示してもよい。この例では、ビットストリーム2825は、ビットストリーム2825の先頭に挿入されたサイズデータ2815を示す。しかし、前述のように、異なる実施形態では、サイズデータ2815をビットストリーム2825の異なる位置に挿入する。
【0261】
一部の実施形態の画像リサイザ2810は、ビットストリームマネージャ2820から受け取られたサイズデータを使用して、画像からサブ画像を抽出する。例えば、
図28は、画像リサイザ2810が、サブ画像2845を含む画像2840をデコーダ2835から受け取るところを示す。図示のように、一部の実施形態の画像リサイザ2810は、画像2840からサブ画像2845を抽出する。その後、この抽出された画像は、デュアルカメラ携帯デバイスに表示されうる。
【0262】
図29は、ドライバ2800などの、テレビ会議に参加しているデバイスのデコーダドライバによって実行される一部の実施形態の画像抽出プロセス2900を概念的に示す。プロセスは、符号化された画像のビットストリーム(例えば、ビットストリーム2825)を(2905において)受け取ることによって始まる。ビットストリームは、デコーダドライバが動作しているデバイスとのテレビ会議に参加しているデバイスから送信されてもよいし、デバイスの記憶装置に格納されてもよい。デバイスが複数のソースから画像を受信している場合に、一部の実施形態は、各ソースからの画像に対してプロセス2900を実行する。
【0263】
次に、プロセス2900は、ビットストリームからサイズデータを(2910において)抽出する。前述のように、このサイズデータは、ビットストリーム内のさまざまな位置で見つけられてもよい。一部の実施形態は、どこでサイズデータを探すべきかが分かっているが、他の実施形態は、受け取られたビットストリーム内のどこにサイズデータがあるかを示す特定の署名を探す。一部の実施形態では、サイズデータは、符号化された画像内のサブ画像のサイズ(例えば、各行における画素の数及び各列における画素の数)及び位置を示す。
【0264】
プロセス2900は、その後、抽出したサイズデータを画像リサイザに(2915において)送信する。
図28に示すように、この動作は、一部の実施形態ではデコーダドライバ内で実行される(すなわち、デコーダドライバのあるモジュールがデコーダドライバの別のモジュールにサイズデータを送る)。
【0265】
プロセス2900は、復号のためにビットストリームもデコーダに(2920において)送信する。デコーダは、一部の実施形態では、ビットストリームを(例えば、逆離散コサイン変換、逆量子化などを使用して)伸張して復号し、再構成した画像をデコーダドライバに戻す。
【0266】
ビットストリームがデコーダによって復号された後、プロセス2900は、復号された画像をデコーダから(2925において)受け取る。図示のように、一部の実施形態は、画像リサイザにおいて画像を受け取り、画像リサイザは、ビットストリームマネージャからサイズデータも受け取っている。プロセスは、その後、受け取ったサイズデータを使用して、復号された画像からサブ画像を(2930において)抽出する。図示のように、サブ画像2845は、サイズデータ2815に示されるように、復号された画像2840の左上から抽出される。この抽出されたサブ画像は、この時点で、表示デバイス(例えば、デュアルカメラ携帯デバイスの画面)に表示されうる。
【0267】
3.レートコントローラ
一部の実施形態では、デバイスの2つのカメラは、異なる特性の集合を有する。例えば、一部の実施形態では、前面カメラは、動きビデオ画像の取り込みに最適化された、解像度の低い方のカメラであり、背面カメラは、静止画像の取り込みに最適化された解像度の高い方のカメラである。デバイスのコスト、機能及び/又は形状などの理由で、他の実施形態は、異なる特性を持つカメラの異なる組み合わせを使用してもよい。
【0268】
異なる特性を有するカメラは、異なるアーチファクトをもたらしうる。例えば、解像度が高いカメラほど、解像度の低いカメラよりも多くのノイズが露見しうる。解像度の高いカメラによって取り込まれた画像は、解像度の低いカメラによって取り込まれた画像よりも高いレベルの空間的又は時間的な複雑さを示しうる。同様に、異なる光学的性質を有する異なるカメラは、取り込まれた画像に異なるガンマ値をもたらしうる。画像を取り込むために異なるカメラによって使用される異なる光検知機構も、異なるアーチファクトをもたらしうる。
【0269】
これらのカメラ固有のアーチファクトのうちの一部は、他のソースから生成されたアーチファクトを隠蔽する。例えば、高いレベルのノイズを有する高解像度カメラによって取り込まれた画像では、ビデオ符号化プロセスの副産物であるアーチファクトは視認しにくくなる。カメラ固有のアーチファクトに隠れるように(量子化歪みなど)ノイズを符号化する場合に、ビデオ符号化プロセスは、ビットレートの低下を達成するために、より大きな量子化ステップサイズを使用できる。一方、(解像度の低いカメラの場合のように)カメラがもたらすアーチファクトが少ない場合に、ビデオ符号化プロセスは、量子化による許容できないレベルの視覚的歪みを回避するために、より細かい量子化ステップサイズを使用できる。したがって、これらのカメラ固有の特性を活用する又は補償するために最適化されたビデオ符号化プロセスは、これらのカメラ固有の特性を考慮しないビデオ符号化プロセスよりも優れたレート−歪みトレードオフを達成できる。
【0270】
レート−歪みトレードオフを実行する目的でこれらのカメラ固有の特性を利用するために、一部の実施形態は、2つのビデオ符号化プロセスを実施し、各プロセスは、2つのカメラのそれぞれに最適化される。
図30は、2つのカメラ3060及び3070のための2つのビデオ符号化プロセスを有するシステムの一例を示す。
図30に示すように、システム3000は、エンコーダドライバ3010と、レートコントローラ3020及び3040と、ビデオエンコーダ3030とを含む。エンコーダ3030は、ビデオカメラ3060及び3070から取り込まれたビデオ画像をビットストリーム3080及び3090に符号化する。
【0271】
一部の実施形態では、ビデオエンコーダドライバ3010は、1つ以上の処理ユニット上で実行されるソフトウェアモジュールである。ビデオエンコーダドライバ3010は、ビデオエンコーダ3030と、ビデオカメラ、画像処理モジュール、ネットワーク管理モジュール及び記憶装置バッファなどのシステムの他のコンポーネントとの間のインタフェースを提供する。エンコーダドライバ3010は、カメラ及び画像処理モジュールからビデオエンコーダ3030までの取り込まれたビデオ画像の流れを制御し、記憶装置バッファ及びネットワーク管理モジュールへの、符号化されたビットストリーム3080及び3090のための経路(conduit1)も提供する。
【0272】
図30に示すように、エンコーダドライバ3010は、レートコントローラの2つの異なるインスタンス3020及び3040を含む。これらの複数のインスタンスは、2つの異なるカメラのための2つの異なるレートコントローラであってもよいし、2つの異なるカメラのために2つの異なる方式で構成された1つのレートコントローラであってもよい。具体的には、一部の実施形態では、2つのレートコントローラ3020及び3040は、2つの別個のレートコントローラを表す。あるいは、他の実施形態では、2つのレートコントローラ3020及び3040は、単一のレートコントローラの2つの異なる構成である。
【0273】
図30は、テレビ会議中に使用するレート制御動作のための符号化された状態情報を格納する状態バッファ3015を含むエンコーダドライバ3010も示す。具体的には、一部の実施形態では、2つの異なるレートコントローラ又は同じレートコントローラの2つの異なる構成は、状態バッファ3015に格納された同じ符号化状態情報をテレビ会議中に共有する。このように状態情報を共有することによって、デュアルビデオ取り込みテレビ会議において、均一なレートコントローラ動作が可能になる。この共有によって、単一のビデオ取り込みテレビ会議中のカメラ切り換え動作中に最適なビデオ符号化も可能になる(すなわち、現在のカメラによって取り込まれたビデオの符号化のためのレート制御動作が、直前のカメラによって取り込まれたビデオの符号化のためのレート制御動作によって維持された符号化状態情報を使用することが可能になる)。
図30は、エンコーダドライバ3010の一部である状態バッファ3015を示しているが、他の実施形態では、エンコーダドライバ3010の外に状態バッファ3015を実装する。
【0274】
状態バッファ3015では、異なる実施形態は、符号化状態情報を表す異なるタイプのデータ(例えば、異なるタイプの符号化パラメータ)を格納する。このような符号化状態情報の一例が、テレビ会議用の現在の目標ビットレートである。目標ビットレートを識別するための1つの方式は、セクションIII.Bにおいて上述した。このような符号化状態情報の他の例は、いくつかある符号化状態情報の中でも特に、バッファ占有量(buffer fullness)、最大バッファ占有量及び最近符号化されたフレームのビットレートのうちの1つ以上を含む。
【0275】
その後、レートコントローラは、そのレート制御動作で使用される1つ以上のパラメータを算出するために、目標ビットレート(又は状態バッファに格納された別の符号化状態パラメータ)を使用できる。例えば、以下でさらに説明するように、一部の実施形態のレートコントローラは、マクロブロック又はフレームのための量子化パラメータQPを算出するために現在の目標ビットを使用する。例を挙げると、一部の実施形態では、マクロブロック及び/又はフレームの量子化パラメータQPを導出する量子化調整パラメータを計算するために、現在の目標ビットレートを使用する。したがって、テレビ会議のカメラ切り換え動作中に、(2つのレートコントローラの、又は1つのレートコントローラの2つの異なる構成の)2つのレート制御動作間で目標ビットレートを共有することによって、現在のカメラによって取り込まれたビデオを符号化するためのレート制御動作は、直前のカメラによって取り込まれたビデオを符号化するための直前のレート制御動作からの符号化状態データの恩恵を受ける。
【0276】
図30は、2つの異なるレート−コントローラインスタンス3020及び3040を含むようにエンコーダドライバ3010を示す。しかし、他の実施形態では、これらのレートコントローラインスタンス3020及び3040は、ビデオエンコーダ3030に組み込まれる。ビデオエンコーダ3030は、カメラ3060及び3070から取り込まれたビデオ画像をデジタルビットストリーム3080及び3090に符号化する。一部の実施形態では、ビデオエンコーダは、従来のビデオ符号化標準(例えば、H.264 MPEG−4)に準拠するビットストリームを生成する。これらの実施形態のうちの一部では、ビデオエンコーダは、動き推定、離散コサイン変換(「DCT」)、量子化及びエントロピー符号化を含む符号化動作を実行する。ビデオエンコーダは、符号化動作の逆の機能である復号動作も実行する。
【0277】
一部の実施形態では、エンコーダ3030は、量子化を実行するための量子化器モジュール3032を含む。量子化器モジュールは、レートコントローラ3020又は3040から量子化パラメータ3022又は3042によって制御される。一部の実施形態では、各量子化パラメータは、以下でさらに説明するように、対応するレートコントローラによって設定され、レートコントローラに関連するカメラの1つ以上の属性の関数である。レートコントローラは、より粗い量子化ステップサイズの設定に従って符号化に使用されるビット数を減少させることもできるし、より細かい量子化ステップサイズの設定によって使用されるビット数を増加させることもできる。量子化ステップサイズを制御することによって、レートコントローラはまた、符号化されたビデオ画像にどれほど多くの歪みがもたらされているかを判定する。したがって、レートコントローラは、ビットレートと画像品質とのトレードオフを実行できる。レート−歪みのトレードオフを実行するにあたり、レートコントローラは、メモリバッファのオーバーフロー、メモリバッファのアンダーフロー、又は伝送チャネル容量の超過を起こさないように、ビットレートを監視する。レートコントローラはまた、実現しうる最高の画像品質を提供し、量子化による画像品質の許容できない歪みを回避するために、ビットレートを制御しなければならない。一部の実施形態では、各レートコントローラは、監視されたデータを状態データ値の集合として状態バッファ3015に格納する。一部の実施形態では、レートコントローラ3020及び3040は、レート−歪みのトレードオフを最適化するために、カメラ固有の属性を使用する。
【0278】
一部の実施形態では、各レートコントローラは、その量子化パラメータに変更係数を直接適用することによって、レート−歪みのトレードオフを最適化する。これらの実施形態のうちの一部では、変更係数は事前に決められており、カメラと共にデバイスに組み込まれている。デバイスは、これらの変更係数を動的に計算する必要はない。他の実施形態では、システムは、カメラに固有の適切な変更係数を動的に決定するために、カメラによって取り込まれた到来する画像を使用する。これらの実施形態のうちの一部では、システムは、カメラに関する特定の統計を収集するために、複数の符号化経路(pass)でカメラによって取り込まれた到来するビデオ画像のシーケンスを分析する。その後、システムは、これらの統計を使用して、カメラに最適化された量子化パラメータに対する変更係数を導出する。
【0279】
一部の実施形態では、これらのカメラ固有の変更係数は、ビデオ画像の視覚マスキング属性を介して量子化パラメータに適用される。画像又は画像の一部分の視覚マスキング属性は、画像又は画像部分にどれほど多くの符号化アーチファクトが容認できるかの指標である。一部の実施形態は、画像又は画像部分の輝度エネルギーを定量化する視覚マスキング属性を計算するが、他の実施形態は、画像又は画像部分の活動エネルギー(activity energy)又は複雑さを定量化する視覚マスキング属性を計算する。視覚マスキング属性がどのようにして算出されるかに関係なく、一部の実施形態は、ビデオフレームのための変更された又はマスクされた量子化パラメータを算出するために視覚的マスキング属性を使用する。これらの実施形態のうちの一部は、マスクされた量子化パラメータを、フレームレベルの視覚マスキング属性φ
frame及び参照視覚マスキング属性φ
Rの関数として算出する。一部の実施形態では、視覚マスキング属性φ
frame及びφ
Rによって変更された量子化パラメータは、以下のように表される。
【0280】
MQP
frame=QP
nom+β
frame*(φ
frame−φ
R)/φ
R (1)
上式で、MQP
frameは、フレームのマスクされた又は変更された量子化パラメータであり、QP
nomは、初期量子化値又は名目量子化値であり、β
frameは、局所統計量に適合する定数である。一部の実施形態では、参照視覚マスキング属性φ
R及び名目量子化パラメータQP
nomは、ネットワーク状態の初期評価又は定期的評価から事前に決められている。
【0281】
一部の実施形態では、式(1)の視覚マスキング属性φ
frameは、以下のように算出される。
【0282】
φ
frame=C・(E・avgFrameLuma)
β・(D・avgFrameSAD)
α (2)
上式で、avgFrameLumaはフレームの平均輝度値であり、avgFrameSADは、フレームの平均絶対値差分和である。定数α、β、C、D及びEは、局所統計量に適合する。これらの定数は、一部の実施形態では、カメラ固有の特性に適合する。
【0283】
一部の実施形態は、マクロブロックなどのビデオ画像の一部分のためのマスクされた量子化パラメータも算出する。それらの例では、マスクされた量子化パラメータは、以下のように、マクロブロック視覚マスキング属性φ
MBの関数として算出される。
【0284】
MQP
MB=MQP
frame+β
MB*(φ
MB−φ
frame)/φ
frame (3)
上式で、β
MBは局所統計量に適合する定数であり、MQP
frameは一部の実施形態では式(1)及び式(2)を使用して算出される。一部の実施形態では、式(3)の視覚マスキング属性φ
MBは、以下のように算出される。
【0285】
φ
MB=A・(C・avgMBLuma)
β・(B・MBSAD)
α (4)
上式で、avgMBLumaはマクロブロックの平均輝度値であり、avgMBSADはマクロブロックの平均絶対値差分和である。定数α、β、A、B及びCは、局所統計量に適合する。これらの定数は、一部の実施形態では、カメラ固有の特性に適合する。
【0286】
一部の実施形態は、上述のように複数のカメラ固有の定数を使用して変更された量子化パラメータを算出するのではなく、単一のカメラ固有の係数のみを使用して量子化パラメータを計算することによってカメラ固有のレート制御を実行する。例えば、視覚マスキング属性φ
frame及びφ
MB並びに量子化パラメータQP
frameを前提として、一部の実施形態は、単一のカメラ固有の係数μを使用して、マクロブロックの量子化パラメータを以下のように算出する。
【0287】
QP
MB=μ*(φ
frame−φ
MB)+QP
frame (5)
式(5)を計算するため、一部の実施形態は、フレーム及びマクロブロックの複雑性尺度をそれぞれ視覚マスキング属性φ
frame及びφ
MBとして使用する。
【0288】
一部の実施形態は、QP
MBの算出に異なるカメラ固有の係数を適用する。例えば、一部の実施形態では、QP
MBは以下のように算出される。
【0289】
QP
MB=ρ・(1−φ
MB/φ
frame)・QP
frame+QP
frame (6)
上式で、ρは、カメラ固有の特性に合わされた係数である。
【0290】
上述のように、状態バッファ3015は、2つの異なるレートコントローラインスタンス3020及び3040がレート制御動作からより良い符号化結果を得るためにテレビ会議中に共有しうる符号化状態情報を格納する。目標ビットレートR
Tは、一部の実施形態では、このような共有される状態情報の一例である。このレートは、フレームのシーケンスを符号化するのに望ましいビットレートである。典型的には、このビットレートは、ビット/秒の単位で表記され、セクションIII.Bで上述したプロセスのようなプロセスに基づいて決定される。
【0291】
上述のように、一部の実施形態のレートコントローラは、ビデオエンコーダ3030に出力するフレーム及び/又はマクロブロック量子化パラメータ(群)QPを算出するために目標ビットレートを使用する。例えば、一部の実施形態は、マクロブロック及び/又はフレームについての量子化パラメータQPを導出する量子化調整パラメータを算出するために、現在の目標ビットレートを使用する。一部の実施形態では、量子化調整パラメータは、直前のフレームのビットレート又は直前のフレームのビットレートの移動平均のいずれかを現在の目標ビットレートで除算することによって計算される比で表される。他の実施形態では、この調整パラメータは、このように正確に計算されるのではなく、より一般的には、(1)直前のフレームのビットレート又は直前のフレームのビットレートの移動平均に比例し、及び(2)現在の目標ビットレートに反比例する。
【0292】
このような量子化調整パラメータを計算した後、一部の実施形態のレートコントローラは、このパラメータを使用し、マクロブロック及び/又はフレームの量子化パラメータ(群)を計算して調整する。このような調整を行う1つの方式は、計算されたマクロブロック及び/又はフレームの量子化パラメータ(群)に量子化調整パラメータを乗算することである。この調整を行う別の方式は、量子化調整パラメータから量子化パラメータオフセット値を計算し、その後、このパラメータオフセットを、計算されたマクロブロック及び/又はフレームの量子化パラメータ(群)に適用(例えば、減算)することである。その後、これらの実施形態のレートコントローラは、調整されたマクロブロック及び/又はフレームの量子化パラメータ(群)をビデオエンコーダ3030に出力する。
【0293】
他の実施形態では、レートコントローラは、目標ビットレートを使用して、そのレート制御動作で使用される他のパラメータを算出する。例えば、一部の実施形態では、レートコントローラは、このビットレートを使用して、マクロブロック又はフレームの視覚マスキング強度を変更する。
【0294】
G.ネットワーキングマネージャ
図31は、
図16に示されるネットワーキングマネージャ1614などの一部の実施形態のネットワーキングマネージャ3100のためのソフトウェアアーキテクチャを概念的に示す。上述のように、ネットワーキングマネージャ3100は、テレビ会議においてネットワーキングマネージャ3100が動作するデュアルカメラ携帯デバイスとリモートデバイスとの間のネットワーク接続(例えば、接続の確立、接続の監視、接続の調整、接続の切断など)を管理する。テレビ会議中に、一部の実施形態のネットワーキングマネージャ3100はまた、リモートデバイスへの伝送のためにデータを処理し、リモートデバイスから受信したデータを処理する。
【0295】
図31に示すように、ネットワーキングマネージャ3100は、セッションネゴシエーションマネージャ3105と、送信器モジュール3115と、汎用伝送バッファ3120と、汎用伝送バッファマネージャ3122と、仮想トランスポートプロトコル(VTP)マネージャ3125と、受信器モジュール3130と、メディアトランスポートマネージャ3135とを含む。
【0296】
セッションネゴシエーションマネージャ3105は、プロトコルマネージャ3110を含む。プロトコルマネージャ3110は、送信器モジュール3115が適切な通信プロトコルを使用してテレビ会議中にデータをリモートデバイスに伝送し、使用される通信プロトコルのルールを実施することを保証にする。プロトコルマネージャ3110の一部の実施形態は、とりわけ、リアルタイムトランスポートプロトコル(RTP)、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)及びハイパーテキスト転送プロトコル(HTTP)などのいくつかの通信プロトコルをサポートする。
【0297】
セッションネゴシエーションマネージャ3105は、デュアルカメラ携帯デバイスとテレビ会議に参加している1つ以上のリモートデバイスとの間の接続の確立並びに会議後のこれらの接続の切断を担当する。一部の実施形態では、セッションネゴシエーションマネージャ3105は、(例えば、セッション開始プロトコル(SIP)を使用して)テレビ会議におけるデュアルカメラ携帯デバイスとリモートデバイスとの間の(例えば、ビデオストリーム及び/又はオーディオストリームを送受信するための)マルチメディア通信セッションの確立も担当する。
【0298】
セッションネゴシエーションマネージャ3105はまた、メディアトランスポートマネージャ3135からフィードバックデータを受け取り、このフィードバックデータに基づいて、汎用伝送バッファマネージャ3122を通した汎用伝送バッファ3120の動作(例えば、パケット/フレームを伝送するか破棄するか)を決定する。このフィードバックは、一部の実施形態では、片道レイテンシ及び帯域幅推定ビットレートを含んでもよい。他の実施形態では、フィードバックは、(例えば、テレビ会議においてリモートデバイスに送信されるパケット及びそのデバイスからの確認応答の受信に基づいて決定される)パケット損失情報及びラウンドトリップ遅延時間を含む。セッションネゴシエーションマネージャ3105は、メディアトランスポートマネージャ3135からの情報に基づいて、送信されているパケットが多すぎるかどうかを判定し、汎用伝送バッファマネージャ3122に、汎用伝送バッファ3120に送るパケットをより少なくするように(すなわち、
図15で説明するようにビットレートを調整するように)命令できる。
【0299】
送信器モジュール3115は、符号化された画像を(例えば、ビットストリームとして)ビデオバッファ(例えば、
図16のバッファ1612)から読み出し、汎用伝送バッファ3120及び仮想トランスポートプロトコルマネージャ3125を通じてテレビ会議でのリモートデバイスへの伝送のために画像をパケット化する。符号化された画像が作製され送信器モジュール3115に送られる方式は、メディアトランスポートマネージャ3135及び/又はセッションネゴシエーションマネージャ3105から受け取った命令又はデータに基づくことができる。一部の実施形態では、画像のパケット化は、受け取ったビットストリームを、それぞれ特定のサイズ(すなわち、特定のプロトコルに従ってセッションネゴシエーションマネージャ3105によって指定されたサイズ)を有するパケットのグループに分解すること、及び任意の必要なヘッダ(例えば、アドレスヘッダ、プロトコル指定ヘッダなど)を追加することをも含む。
【0300】
汎用伝送バッファマネージャ3122は、セッションネゴシエーションマネージャ3105から受け取ったデータ及び/又は命令に基づいて、汎用伝送バッファ3120の動作を制御する。例えば、汎用伝送バッファマネージャ3122は、データを送る、データの送出を中止する、データを破棄するなどのように汎用伝送バッファ3120に指示するよう命令されうる。上述のように、一部の実施形態では、会議に参加しているリモートデバイスは、パケットを破棄しているように見えるが、これは、リモートデバイスから受信された確認応答に基づいて認識されよう。パケット破棄を低減するため、汎用伝送バッファマネージャ3122は、より遅いレートでリモートデバイスにパケットを伝送するように命令されうる。
【0301】
汎用伝送バッファ3120は、送信器モジュール3115から受け取ったデータを格納し、VTPマネージャ3125を介してリモートデバイスにデータを伝送する。前述のように、汎用伝送バッファ3120は、汎用伝送バッファマネージャ3122から受け取った命令に基づいてデータ(例えば、ビデオの画像)を破棄してもよい。
【0302】
一部の実施形態では、RTPは、テレビ会議中にUDPを介してデータパケット(例えば、オーディオパケット及びビデオパケット)を通信するために使用される。他の実施形態は、テレビ会議中にTCPを介してデータパケットを通信するためにRTPを使用する。異なる実施形態では、他のトランスポート層プロトコルも使用できる。
【0303】
一部の実施形態は、1対のポート番号(すなわち、送信元ポート番号及び宛先ポート番号)によって、2つの携帯デバイス間の特定の通信チャネルを定義する。例えば、携帯デバイス間のある通信チャネルは、あるポート番号ペア(例えば、送信元ポート50及び宛先ポート100)によって定義でき、携帯デバイス間の別の異なる通信チャネルは、別の異なるポート番号ペア(例えば、送信元ポート75及び宛先ポート150)によって定義されうる。一部の実施形態は、通信チャネルを定義するにあたって、1対のインターネットプロトコル(IP)アドレスも使用する。一部の実施形態では、異なる通信チャネルが、異なるタイプのデータパケットを伝送するために使用される。例えば、ビデオデータパケット、オーディオデータパケット及び制御信号データパケットが、別個の通信チャネルで伝送されうる。したがって、ビデオ通信チャネルはビデオデータパケットを搬送し、オーディオ通信チャネルはオーディオデータパケットを搬送する。
【0304】
一部の実施形態では、制御通信チャネルは、テレビ会議中にローカル携帯デバイスとリモートデバイスとの間でメッセージを伝送するためのものである。このようなメッセージ伝送の例は、要求、通知及びこのような要求及び通知に対する確認応答の送受信を含む。メッセージ伝送の別の例は、あるデバイスから別のデバイスへの遠隔制御命令メッセージの送信を含む。例えば、以下で説明する遠隔制御動作(例えば、ある特定のカメラからの画像のみを送信するように、又は特定のカメラで画像のみを取り込むように、デバイスに命令すること)は、ローカルデバイスがリモートデバイスの動作を遠隔制御するために、制御通信チャネルを通じてローカルデバイスからリモートデバイスに命令を送信することによって実行されうる。異なる実施形態は、リアルタイムトランスポート制御プロトコル(RTCP)、RTP拡張、SIPなどのようなさまざまなプロトコルを使用して制御通信を実施する。例えば、一部の実施形態は、テレビ会議において2つの携帯デバイス間で、ある制御メッセージ集合を中継するためにRTP拡張を使用し、テレビ会議中に携帯デバイス間で別の制御メッセージ集合を中継するためにSIPパケットを使用する。
【0305】
一部の実施形態のVTPマネージャ3125により、異なる通信チャネルを通じて(例えば、異なるポート番号ペアを使用して)伝送されるように指定された異なるタイプのデータパケットが、単一の通信チャネルを介して(例えば、同じポート番号ペアを使用して)伝送されることが可能になる。これを行うための1つの技術は、データパケットタイプを識別すること、データパケットの指定されたポート番号ペアを抽出することによってデータパケットが伝送されるように指定された通信チャネルを識別すること、及び単一の通信チャネルのポート番号ペアとなるようにデータパケットのポート番号ペアを変更する(すなわち、すべてのデータパケットが同じポート番号ペアを介して伝送される)ことによって単一の通信チャネルを通じて伝送されるべきデータパケットを指定することを含む。
【0306】
各タイプのデータパケットに対する元のポート番号ペアを追跡するため、一部の実施形態は、データパケットタイプに対する元のポート番号ペアのマッピングを格納する。その後、これらの実施形態のうちの一部は、1つの通信チャネルに多重化されている異なるパケットを区別するために、プロトコルのパケットタイプフィールドを使用する。例えば、VTPマネージャにオーディオパケット、ビデオパケット及び制御パケットを1つのRTPストリームに多重化させる一部の実施形態は、テレビ会議において他のデバイスに1つのRTPチャネルで伝送されるオーディオパケット、ビデオパケット及び制御パケットを区別するために、RTPパケットタイプフィールドを使用する。これらの実施形態のうちの一部では、VTPマネージャはまた、他のデバイスへのSIPパケットにおける制御メッセージ伝送を経路制御する。
【0307】
一部の実施形態では、異なるプロトコルを使用して通信された異なるパケットを区別するために(例えば、RTPを使用して搬送されたパケットとSIPを使用して搬送されたパケットとを区別するために)、データパケット署名(すなわち、パケットヘッダフォーマット)を識別して調べる。このような実施形態では、異なるプロトコルのデータパケットが判定された後、同じプロトコルを使用するデータパケット(例えば、RTPを使用するオーディオデータ及びビデオデータ)のフィールドが上述のように調べられて、異なるデータタイプを識別する。このようにして、VTPマネージャ3125は、異なる通信チャネルを通じて伝送されることを意図された異なるデータパケットを単一の通信チャネルを通じて伝送する。
【0308】
単一の通信チャネルを通じて異なるタイプのデータを結合する1つの手段について上述したが、他の実施形態では、他の技術を利用して、異なるパケットタイプを1つの通信ストリームに多重化する。例えば、一部の実施形態の1つの技術は、データパケットの元のポート番号ペアを追跡すること、及び後で抽出するためにデータパケット自体に元のポート番号ペアを格納することを含む。2人のテレビ会議参加者間での異なるタイプのデータを1つのポートペアチャネルに結合するためのさらに他の仕方が存在する。
【0309】
VTPマネージャ3125がリモートデバイスから仮想通信チャネルを通じてデータパケットを受信する場合に、VTPマネージャ3125は、異なるプロトコルを使用して送信される異なるパケットを識別するためにデータパケットの署名を調べる。このような署名は、RTPパケットからSIPパケットを区別するために使用されうる。一部の実施形態のVTPマネージャは、単一の仮想チャネルに多重化された種々の異なるタイプのパケット(例えば、オーディオパケット、ビデオパケット及び制御パケット)を逆多重化するためにも、パケットの一部又は全部のパケットタイプフィールドを使用する。これらの異なるタイプのパケットを識別した後、VTPマネージャは、それが管理するポートペア番号とパケットタイプとのマッピングに基づいて、それぞれ異なるタイプのパケットをその対応するポートペア番号と関連付ける。その後、VTPマネージャ3125は、データパケットのポート番号ペアを、識別されたポート番号ペアで変更し、逆パケット化されるべきデータパケットを転送する。異なるパケットタイプを単一のチャネルに多重化するために異なる技術を使用する他の実施形態では、VTPマネージャは、パケットを解析するための異なる技術を使用する。
【0310】
VTPマネージャ3125は、異なるパケットの多重化及び逆多重化を行うためのこのような技術を使用することによって、単一の仮想通信チャネル(例えば、単一のポート番号ペア)を生成し、この単一の仮想通信チャネルを通じてビデオデータ、オーディオデータ及び制御信号データを伝送し、この単一の仮想通信チャネルを通じてリモートデバイスからオーディオパケット、ビデオパケット及び制御パケットを受信する。したがって、ネットワークの観点からは、この単一の仮想通信チャネルを介してデータが伝送されるが、セッションネゴシエーションマネージャ3105及びプロトコルマネージャ3110の観点からは、異なる通信チャネルを通じてビデオデータ、オーディオデータ及び制御信号データが伝送される。
【0311】
テレビ会議においてリモートデバイスに伝送される画像と同様に、テレビ会議においてリモートデバイスから伝送される画像はパケット形式で受信される。受信器モジュール3130は、パケットを受信し、そのパケットを逆パケット化して、画像を再構成してから、復号されるべき画像をビデオバッファ(例えば、
図16のバッファ1616)に格納する。一部の実施形態では、画像を逆パケット化することは、任意のヘッダを削除すること、及びパケットから画像データ(及び場合によってはサイズデータ)のみを有するビットストリームを再構成することを含む。
【0312】
メディアトランスポートマネージャ3135は、データ伝送の速度(すなわち、ビットレート)を動的かつ適応的に調整するために、ネットワークから受信したフィードバックデータ(例えば、片道レイテンシ、帯域幅推定ビットレート、パケット損失データ、ラウンドトリップ遅延時間データなど)を処理する。メディアトランスポートマネージャ3135はまた、一部の他の実施形態では処理されたフィードバックデータに基づいて誤り耐性を制御し、拡大縮小、サイズ変更及び符号化などのテレビ会議モジュール1602の他の動作を調整するためにテレビ会議マネージャ1604にフィードバックデータを送信してもよい。会議においてリモートデバイスがパケットのすべてを処理できるとは限らない場合に汎用伝送バッファにパケットを破棄させることに加えて、テレビ会議モジュール及びエンコーダは、画像ごとにより少ないパケットが送信されるように、画像を符号化するためにより低いビットレートを使用できる。
【0313】
一部の実施形態では、メディアトランスポートマネージャ3135はまた、上述のように、カメラの動作電力モードがどのように構成されるかに影響を及ぼしうる、消費電力及び熱的レベルなどのデバイスの他の変数を監視してもよい。このデータは、フィードバックデータへの追加入力として使用されてもよい(例えば、デバイスが熱くなりすぎているならば、メディアトランスポートマネージャ3135は、処理速度を落とさせようとしてもよい)。
【0314】
ここで、ネットワーキングマネージャ3100のいくつかの例示的な動作について、
図16に関して説明する。テレビ会議においてデュアルカメラ携帯デバイスのカメラによって取り込まれた画像のリモートデバイスへの伝送について最初に説明し、続いて、リモートデバイスからの画像の受信について説明する。送信器モジュール3115は、符号化された画像をバッファ1612から読み出し、この画像は、テレビ会議においてリモートデバイスに伝送されうる。
【0315】
プロトコルマネージャ3110は、使用するのに適切なプロトコル(例えば、オーディオ及びビデオを伝送するためのRTP)を決定し、セッションネゴシエーションマネージャ3105は、このようなプロトコルを送信器モジュール3115に通知する。次に、送信器モジュール3115は、画像をパケット化し、パケット化された画像を汎用伝送バッファ3120に送る。汎用伝送バッファマネージャ3122は、セッションネゴシエーションマネージャ3105から命令を受け取り、画像を伝送又は破棄するように汎用伝送バッファ3120に指示する。VTPマネージャ3125は、汎用伝送バッファ3120からパケットを受け取り、単一の通信チャネルを通じてリモートデバイスにパケットを伝送するためにパケットを処理する。
【0316】
リモートデバイスから画像を受信した場合に、VTPマネージャ3125は、仮想化された単一の通信チャネルを通じてリモートデバイスからパケット化された画像を受信し、画像を受信するために割り当てられた通信チャネル(例えば、ビデオ通信チャネル)を通じて受信器モジュール3130に画像を向けるためにパケットを処理する。
【0317】
受信器モジュール3130は、画像を再構成するためにパケットを逆パケット化し、デコーダ1660によって復号するためにバッファ1616に画像を送信する。受信器モジュール3130はまた、メディアトランスポートマネージャ3135に制御信号メッセージ(例えば、テレビ会議においてリモートデバイスから受信したパケットの確認応答)を転送する。
【0318】
ネットワーキングマネージャ3100のいくつかの例示的な動作について上述した。これらは、例示的な例にすぎない。その理由は、種々の他の実施形態は、異なるモジュールを使用して、又はモジュール間に異なるように拡散された機能を用いて、これらの又は異なる動作を実行するからである。そのうえ、ネットワーキングマネージャ3100のモジュール又は他のモジュールによって動的なビットレート調整などの追加の動作が実行されてもよい。
【0319】
IV.会議中の調整及び制御動作
A.ピクチャインピクチャの変更
1.コーナー向けスナップ
本発明の一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、合成表示を形成する1つ以上の表示域を移動させることによって、デバイスに表示された合成表示を変更する。1つのこのような例は、PIP表示の挿入表示域を移動させることである。
図32は、テレビ会議中に実行されるこのような例を示す。テレビ会議では、ユーザは、このエリアが背景表示域の関心エリアを遮っている場合など、さまざまな理由で前景挿入表示域を移動させたいかもしれない。
【0320】
図32は、デバイスのUI3205における挿入表示域3240の移動を、このUIの5つの異なる段階3210、3215、3220、3225及び3230として示す。第1段階3210は、デバイスのローカルユーザとリモートデバイスのリモートユーザとの間のテレビ会議中のUI3205を示す。
図32のUI3205は、テレビ会議が開始した後の
図11の第5段階に示されている同じPIP表示であるPIP表示を示す。この例では、ローカルユーザのデバイスによって取り込まれたビデオが挿入表示域3240に表示され、リモートユーザのデバイスによって取り込まれたビデオが背景表示域3235に表示されている。図示のように、表示域1155は、テレビ会議を終了させるために選択可能UI項目3245を含む。一部の実施形態では、表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。
【0321】
第2段階3215は、ユーザが挿入表示域3240を選択することによってコーナー向けスナップ動作を開始することを示す。この例では、挿入表示域3240内の任意の位置に指3255を置くことによって選択がなされる。図示のように、この選択は、挿入表示域3240の太い境界線3260として表示される。異なる実施形態は、表示域3240を強調表示することによって、表示域3240を振動させることによってなど、異なる仕方でこのような選択を示してもよい。
【0322】
第3段階3220は、ユーザがPIP表示3250内のあるエリアからこの表示内の別のエリアにPIP表示3250の挿入表示域3240を移動させ始めた後のUI3205を示す。この例では、挿入表示域3240は、矢印3265によって示されるように、PIP表示3250の左下隅からこの表示の右下隅に移動し始めている。この例では、挿入表示域3240は、第2段階3215で挿入表示を選択した後でユーザが自身の指3255をPIP表示3250の右下隅に向かってドラッグすることによって、移動される。一部の実施形態は、PIP表示3250において挿入表示域3240を移動させるための他の技術を提供する。
【0323】
第4段階3225は、ユーザがデバイス3200の画面から自身の指3255を離した後の状態にあるUI3205を示す。この状態では、挿入表示域3240は、依然として、第3段階3220におけるユーザの指の移動に基づいて識別された、PIP表示3250の右下隅に向かって移動している。言い換えれば、指3255がPIP表示3250の右下隅に向かっての挿入表示域3240の移動を開始した後、UI3205は、指3255を離した後でさえも、この移動を維持する。この移動を維持するため、一部の実施形態のUI3205は、ユーザが自身の指3255を離す前に、ユーザのドラッグ動作が特定のしきい値量よりも大きい(例えば、特定の距離又は特定の時間長よりも大きい)ことを必要とする。そうでない場合、これらの実施形態は、挿入表示域3240をわずかに移動させた後、又はまったく移動させなかった後、この表示域3240をその元の左隅位置に保つ。
【0324】
しかし、一部の実施形態により、挿入表示域がその新たな位置に到達する前にユーザがドラッグ動作を止めた後でさえも、挿入表示域が移動できるが、他の実施形態は、挿入表示域がその新たな位置に到達するまで自身のドラッグ動作を維持するようにユーザに要求する。一部の実施形態は、挿入表示域を移動させるためのさらに他の技術を提供する。例えば、一部の実施形態は、挿入表示域3240が実際に移動し始める前に挿入表示域3240をどこに向けるべきかなどを指定することがユーザに要求してもよい。一部の実施形態は、携帯デバイスを異なる角度に傾斜させるだけで、表示域がスライド可能であり、コーナー向けスナップ動作が可能になってもよい。
【0325】
第5段階3230は、挿入表示域3240がPIP表示3250の右下隅でその新たな位置に到達した後のUI3205を示す。第5段階3230における太い境界線3260の除去は、コーナー向けスナップ動作が完了したことを示す。
【0326】
上述の第3段階3220、第4段階3225及び第5段階3230に示されている移動を容易にするため、一部の実施形態のUI3205は、ユーザが挿入表示域をPIP表示3250の隅に向かって移動させると、挿入表示域がその隅にすばやくスナップできるスナップルールを用いる。例えば、ユーザが特定の隅に向かってしきい値量を超えて挿入表示域3240をドラッグした場合に、一部の実施形態のUI3205は、挿入表示域3240の動きの方向を特定し、動きがしきい値量を超えたと判定し、その後、挿入表示域3240をスナップできるUI3205内の次のグリッド点をユーザがさらに入力しなくても、挿入表示域3240を自動的に移動する。一部の実施形態では、挿入表示域3240をスナップするために提供されるグリッド点のみが、PIP表示3250の4つの隅におけるグリッド点である。他の実施形態は、UI3205内に(例えば、PIP表示3250内に)、挿入表示域3240がスナップできる(すなわち、エリア3240の辺又は頂点に置くか又は位置合わせされうる)他のグリッド点を提供する。
【0327】
さらに他の実施形態は、挿入表示域をPIP表示3250の任意の点に配置できるように、グリッド点を採用しなくてもよい。さらに他の実施形態は、ユーザがUIのグリッド点機能へのスナップをオン又はオフにできる機能を提供する。さらに、異なる実施形態により、ユーザは、デバイスから取り込まれたビデオに加えて、アイコンなどの種々の項目を用いたコーナー向けスナップ動作が可能になってもよい。
【0328】
図33は、UI3205におけるコーナー向けスナップ動作の他の2つの例3330及び3335を示す。これらの他のコーナー向けスナップ動作は、ユーザの垂直又は斜めのドラッグ動作に基づいて、挿入表示域3240がPIP表示3250内で垂直又は斜めに移動されることを示す。
【0329】
図32及び
図33はPIP表示内での挿入表示域の移動を示しているが、他の実施形態は、同様の技術を利用して、他のタイプのPIP表示又は他のタイプの合成表示において表示域を移動することが当業者には理解されよう。例えば、以下でさらに説明するように、一部の実施形態のPIP表示は2つ以上の前景挿入表示を有し、これらの挿入表示は、
図32及び
図33に関して上述した技術と同様の技術を使用して、PIP表示において移動されうる。また、一部の実施形態は、同様の技術を使用して、合成表示で表示域を移動させる(例えば、ユーザのドラッグ移動を通じて、ある表示域を画面の左側から画面の右側に移動させる)。そのうえ、合成表示の表示域(群)の移動によって、テレビ会議マネージャ1604にユーザの入力に応答して合成表示で表示域を再合成させるなどの、デュアルカメラ携帯デバイスの画像処理動作の変更を引き起こすことができる。以下でさらに説明するように、一部の実施形態は、第1表示域を第1位置から押すと第2表示域が第3位置から第1位置に移動されるスナップアンドプッシュ(snap and push)技術を採用する。
【0330】
2.回転
一部の実施形態は、テレビ会議に使用される携帯デバイスのユーザが会議中にデバイスを回転した場合に、テレビ会議中に提示されるPIP表示を回転する。
図34は、デバイスが垂直位置から水平位置に回転した場合のデバイス3400のUI1105の回転を示す。画面の長辺が垂直である場合にデバイス3400は垂直に保持され、画面の長辺が水平である場合にデバイス3400は水平に保持される。
図34に示される例では、UI1105は、デバイスの垂直保持に最適化された縦ビューから、デバイス3400の水平保持に最適化された横ビューに回転する。この回転機能によって、ユーザは、携帯デバイス3400が垂直又は水平のどちらに保持されている場合にも直立位置に表示されたUI1105を見ることができる。
【0331】
図34は、UI1105の回転を、6つの異なる動作段階3410、3415、3420、3425、3430及び3435として示す。第1段階3410は、デバイスのローカルユーザとリモートデバイスのリモートユーザとの間のテレビ会議中のUI1105を示す。
図34のUI1105は、テレビ会議が確立された後の
図11の第5段階に示されているのと同じPIP表示であるPIP表示1180を示す。この例では、ローカルユーザのデバイスによって取り込まれたビデオが挿入表示域1160に表示され、リモートユーザのデバイスによって取り込まれたビデオが背景表示域1170に表示されている。PIP表示1180の下の表示域1155には、選択可能UI項目3485(例えば、会議終了ボタン3485)が含まれ、ユーザは、このUI項目を、テレビ会議を終了するために(例えば、シングルフィンガータップを通じて)選択してもよい。
【0332】
第2段階3415は、ユーザがデバイス3400を横に傾斜させ始めた後のUI1105を示す。この例では、ユーザは、矢印3460によって示されるように、デバイス3400を垂直に保持されている状態から水平に保持されている状態に傾斜させ始めている。UI1105の外見は変化しない。他の状況では、ユーザが、デバイス3400を水平に保持されている状態から垂直に保持されている状態に傾斜させたいと考える場合もあり、これらの状況では、UI1105は、水平に最適化されたビューから垂直に最適化されたビューに切り換わる。
【0333】
第3段階3420は、デバイス3400が垂直に保持されている状態から水平に保持されている状態に傾斜された後の状態のUI1105を示す。この状態では、UI1105の外見はまだ変化していない。一部の実施形態では、デバイス3400がしきい値量を過ぎても傾斜されており、この点を超えて、ある期間保たれた後で、回転動作がトリガされる。
図34に示される例では、デバイスが水平位置に置かれた後、ある短期間の間隔が経過するまで、しきい値量及び回転の速度によってUI1105が回転しないと想定されている。異なる実施形態は、回転動作をトリガするための異なるしきい値量及び待ち期間を有する。例えば、一部の実施形態は、デバイス3400の向きとは関係なくUI1105が常に直立位置に表示されるように見えさせるように、回転動作をトリガするためのしきい値が低くてもよい。他の実施形態では、デバイス3400のユーザは、いつ回転動作をトリガできるかを(例えば、メニュー基本設定を通じて)指定してもよい。また、一部の実施形態は、デバイスがしきい値量を超えても傾斜されている後の回転を遅延させなくてもよい。さらに、異なる実施形態により、携帯デバイス上のスイッチを切り換えることによって、音声コマンドを与えることによって、メニューによる選択時などの、異なる仕方で、回転動作をトリガできてもよい。
【0334】
第4段階3425は、回転動作が開始した後のUI1105を示す。一部の実施形態は、回転動作に関するフィードバックをユーザに提供するために、回転表示域をアニメーション化する。
図34は、このようなアニメーションの一例を示す。具体的には、
図34は、その第4段階3425で、表示域1180及び1155が一緒に回転し始めるところを示している。表示域1180及び1155は、UI1105の中心を通る軸3465(すなわち、z軸)のまわりを回転する。表示域1180及び1155は、デバイス3400の回転の反対方向に(例えば、デバイス3400の傾斜を通じて)同じ量だけ回転する。この例では、デバイス3400が(垂直に保持される状態から水平に保持される状態に移ることによって)時計回り方向に90度回転したので、この回転動作によって、表示域1180及び1155は反時計回り方向に90度回転される。表示域1180及び1155が回転すると、表示域1180及び1155が依然としてUI1105上で全体的に見えるように、表示域1180及び1155はUI1105に合うように比例して縮む。一部の実施形態は、このデバイス3400の状態を示すメッセージを(例えば、「回転中」という単語を表示することによって)提供してもよい。
【0335】
第5段階3430は、表示域1180及び1155が縦ビューから横ビューに反時計回りに90度回転した後のUI1105を示す。この段階では、表示域1180及び1155は回転されているが、まだUI1105の幅全体に拡張されていない。矢印3475は、第5段階の終了時に、表示域1180及び1155がUI1105の幅全体に合うように側方に拡張し始めることを示す。拡張は第4段階3425での回転と同時に実行できるので、異なる実施形態は、この段階を含まなくてもよい。
【0336】
第6段階3435は、表示域1180及び1155がUI1105の表示全体を占有するように拡張された後のUI1105を示す。上述のように、他の実施形態は、この回転を異なるように実施してもよい。一部の実施形態では、しきい値量を超えてデバイスの画面を回転するだけで、デバイス3400の向きに関係なく、回転動作をトリガしてもよい。
【0337】
また、他の実施形態は、回転動作を示すための異なるアニメーションを提供してもよいだろう。
図34で実行される回転動作は、表示域1180及び1155がUI1105の中心のまわりを回転することを含む。あるいは、表示域は、これらの個別の表示域の中心軸のまわりを個別に回転してもよい。1つのこのような手法が
図35に示されている。
図35は、UI1105のPIP表示1180の表示域1170及び1160の回転をアニメーション化する代替方法を示す。
図35に示されるPIP表示1180は、
図11に示されるのと同じPIP表示1180である。
【0338】
図35は、PIP表示1180の回転を、6つの異なる動作段階3410、3415、3420、3525、3530及び3535として示す。UI1105の動作の前半の3つの段階は、
図34のUI1105に関して説明した動作の前半の3つの段階と同一である。
図34と
図35の両方に対する第3段階では、デバイス3500は、垂直に保持された状態から水平に保持された状態に移っており、UI1105の回転はまだ開始していない。
【0339】
第4段階3525は、回転をアニメーション化する代替方法を示す。この段階では、回転動作が開始している。具体的には、第4段階3525では、表示域1170及び1160が回転し始めるところが示されている。表示域1170及び1160は、それぞれ表示域のそれぞれの中心を通る軸3567及び3565(すなわち、z軸)のまわりをそれぞれ回転する。表示域1170及び1160は、(例えば、デバイス3500の傾斜による)デバイス3500の回転の反対方向に同じ量だけ回転する。上記の
図34の第4段階3425に示されているのと同様に、デバイス3500が(垂直に保持される状態から水平に保持される状態に移ることによって)時計回り方向に90度回転したので、回転動作によって、表示域1170及び1160は反時計回り方向に90度回転される。表示域1170及び1160が回転すると、表示域1170及び1160が依然としてUI1105上で全体的に見えるように、表示域1170及び1160はUI1105に合うように比例して縮む。
【0340】
第5段階3530は、表示域1170及び1160のそれぞれが縦ビューから横ビューに反時計回りに90度回転した後のUI1105を示す。この段階では、表示域1170及び1160は回転したが、まだUI1105の幅全体に拡張されていない。さらに、表示域1160は、その最終位置に移動していない。PIP表示1180内の挿入表示域1160の最終位置は、第1段階3410に示されるPIP表示1180内の挿入表示域1160の位置(例えば、PIP表示1180の左下隅の挿入表示域1160)によって決定される。この段階では、挿入表示域1160は、まだUI1105の右上隅にある。
【0341】
矢印3580は、第5段階3530の終了時に、水平に保持されているデバイスのUI1105の幅全体にメイン表示域1170が合うまで、表示域1170及び1160が側方に拡張し始めることを示す。さらに、矢印3575は、挿入表示域1160がPIP表示1180の左下隅にスライドすることを示す。
【0342】
異なる実施形態は、これを異なるように実施してもよい。一部の実施形態では、挿入表示域1160の移動は、メイン表示域1170の拡張と同時に、又は順次、行われてもよい。さらに、一部の実施形態は、新たなPIP表示1180を生成するために、メイン表示域1170の拡張前、拡張中に、又は拡張後に、挿入表示域1160をサイズ変更してもよい。この例では、表示域1155は、表示域1160及び1170が回転されている間、非表示になる。しかし、一部の実施形態では、表示域1155は、回転中にUI1105に残存し、表示域1160及び1170と共に回転してもよい。
【0343】
第6段階3535は、挿入表示域1160がその新たな位置に到達し、表示域1160及び1170がUI1105の幅全体に合うように適切に拡張された後のUI1105を示す。この例では、挿入表示域1160は、この時点では、PIP表示1180の左下隅にあり、メイン表示域1170に重なっている。PIP表示1180は、この時点で、第1段階3410のPIP表示1180と同じ表示構成を有する。第6段階におけるPIP表示1180の下の表示域1155の外見は、回転動作が完了したことを示す。前述のように、しきい値量を超えてデバイスの画面を回転するだけで、デバイス3500の向きに関係なく、回転動作をトリガできる。
【0344】
図34及び
図35に関して上述した例では、表示域1170の向きも(すなわち、縦から横に)変化する。すなわち、表示域1170が第3段階3420で回転した後、UI1105全体を埋めるようにPIP表示1180を水平に拡張することによって、表示域1170の向きが縦から横に変化する。一部の実施形態では、デバイス3500が回転した場合に、リモートデバイスによって取り込まれたビデオが回転するが、リモートデバイスによって取り込まれたビデオを表示する表示域の向きは変化しないままである。1つのこのような例が
図36に示されている。この図は、表示域1170に表示されるビデオは回転するが表示域1170は縦向きに表示されたままであることを除いて、
図35と同様である。
【0345】
図36は、表示域1155が(
図35に示されるように、回転して、PIP表示1180を埋めるように水平に拡張するのではなく)同じ位置にあるままの回転動作の一例も示す。さらに、この図は、上述した
図12の表示域1155のレイアウトと同じである表示域1155のレイアウトを含む。図示のように、段階3640、3645、3650、3655、3685及び3690でデバイス3500が回転するとき、表示域1155は同じ位置のままである。
【0346】
一部の実施形態は、ローカルデバイスによって取り込まれたビデオを表示する表示域の向きが、(
図35に示すように同じ向きのままではなく)回転動作がローカルデバイスで実行された後のローカルデバイスの向きを反映するように変化する回転動作を提供する。
図36は、UI1105のこのような回転動作の一例を、6つの異なる段階3640、3645、3650、3655、3685及び3690として示す。この図では、第1段階3640は、デバイス3500のカメラによって取り込まれたビデオを表示する挿入表示域1160を縦向きで示す。第2段階3645及び第3段階3650は、回転動作の種々の段階におけるデバイス3500の傾斜を示しているので、
図35の第2段階3415及び第3段階3420と同様である。この時点で、デバイス3500のカメラは、画像を横向きで取り込んでいる。この移行を示すために、一部の実施形態は、第4段階3655及び第5段階3685に示すアニメーションを提供するが、他の実施形態は、アニメーションをまったく提供しない。
【0347】
第4段階3655では、第2段階3445及び第3段階3650におけるデバイス3500の傾斜によって挿入表示域1160が横向きに回転されていたので、挿入表示域1160に表示された画像は回転されるが、挿入表示域1160自体は回転されない。第5段階3685では、挿入表示域1160における回転した画像は、挿入表示域1160を埋めるように水平に拡張され、挿入表示域1160は、第1段階3640のPIP表示内の挿入表示域1160と同じ相対的位置に挿入表示域1160を配置するために、PIP表示1180の左下エリアに向かって移動し始める。
【0348】
一部の実施形態では、リモートデバイスによって取り込まれたビデオを表示する表示域の向きも、回転動作がリモートデバイスで実行された後のリモートデバイスの向きを反映するように変化する。
図37は、デバイス3500のUI1105の4つの異なる段階を示し、これらの段階では、(1)ローカルデバイスによって取り込まれたビデオを表示する表示域(この例では表示域1160)の向きが、回転動作がローカルデバイスで実行された後のローカルデバイスの向きを反映するように変化し、(2)リモートデバイスによって取り込まれたビデオを表示する表示域(この例では表示域1170)の向きが、リモートデバイスで回転動作が実行された後のリモートデバイスの向きを反映するように変化する。
【0349】
第1段階3705では、UI1105は、
図36のUI1105と同じである。具体的には、デバイス3500が縦向きで示され、リモートデバイスが縦向きである(不図示)ので、第1段階3705は表示域1160及び1170を縦向きで示す。第1段階3705から第2段階3710にかけて、デバイス3500を直立位置から横向き位置に90度回転することによって、回転動作がローカルデバイスで実行される。第2段階3710は、デバイス3500の回転動作が完了した後のUI1105を示す。この段階では、表示域1170及び1160に表示されたビデオは直立位置に回転している。しかし、回転動作がローカルデバイス(すなわち、デバイス3500)でのみ実行されたので、ローカルで取り込まれたビデオの表示域1160のみが縦向きから横向きに回転した。表示域1170は縦向きのままである。
【0350】
第2段階3710から第3段階3715にかけて、リモートデバイスを直立位置から横向き位置に回転することによって、回転動作がリモートデバイスで実行される(不図示)。第3段階3715は、リモートデバイスの回転動作が完了した後のUI1105を示す。この段階では、回転動作がリモートデバイスのみで実行されるので、表示域1170に表示されたビデオ及びリモートで取り込まれたビデオの表示域1170が、縦向きから横向きに回転されている。したがって、UI1105のこの段階は、ローカルで取り込まれたビデオの表示域1160及びリモートで取り込まれたビデオの表示域1170をいずれも横向きで表示する。
【0351】
第3段階3715から第4段階3720にかけて、デバイス3500を横向き位置から直立位置に90度回転することによって、回転動作がローカルデバイスで実行される。第4段階3720は、この回転動作の完了後のUI1105を示す。この第4段階3720では、表示域1160及び1170に表示されたビデオが直立位置に回転されている。しかし、回転動作がローカルデバイス(すなわち、デバイス3500)でのみ実行されたので、ローカルで取り込まれたビデオの表示域1160のみが横向きから縦向きに回転している。表示域1170は横向きのままである。
【0352】
第4段階3720から第1段階3705にかけて、リモートデバイスを横向き位置から直立位置に90度回転することによって、回転動作がリモートデバイスで実行される(不図示)。この場合、第1段階3705は、この回転動作の完了後の表示域1170を示す。したがって、この段階のUI1105は、表示域1160及び1170を縦向きで示す。
図37は異なる回転動作のシーケンスを示しているが、他の実施形態は、任意の数の異なるシーケンスで任意の数の回転動作を実行できる。
【0353】
図34、
図35、
図36及び
図37は、テレビ会議中にローカルデバイス及びリモートデバイスで実行される回転動作を説明する。回転動作がローカル携帯デバイスで実行された場合に、一部の実施形態は、リモートデバイスがローカルデバイスのビデオに対する(ローカルデバイスのビデオを表示している表示域を回転するなどの)任意の変更も実行するために、リモートデバイスに回転動作を通知する。同様に、回転動作がリモートデバイスで実行された場合に、ローカルデバイスがリモートデバイスのビデオに対する任意の変更を実行できるようにするために、リモートデバイスはローカルデバイスにこの動作を通知する。一部の実施形態は、テレビ会議中にローカルデバイスとリモートデバイスとの間の回転動作の通知を通信するための制御通信チャネルを提供する。
【0354】
図34、
図35、
図36及び
図37は回転のアニメーションを実行できる異なる方式を示しているが、他の実施形態は他の異なる仕方で回転のアニメーションを表示してもよいことが当業者には理解されよう。さらに、回転動作のアニメーションによって、テレビ会議マネージャ1604にUI1105において異なる角度で表示域(群)を再合成させ、表示域(群)に表示される画像を拡大縮小させるなどの、ローカル携帯デバイスの画像処理動作への変更を引き起こすことができる。
【0355】
3.ウィンドウサイズの調整
一部の実施形態により、携帯デバイスのユーザは、テレビ会議中に提示されるPIP表示の挿入表示域のサイズを調整できる。異なる実施形態は、挿入表示域をサイズ変更するための異なる技術を提供する。
図38は、挿入表示域をサイズ変更するための1つの手法を示す。この手法では、携帯デバイスのユーザは、挿入表示域の隅を選択し、その後、挿入表示域を拡張する又は縮めることによって、挿入表示域のサイズを調整する。
【0356】
図38では、携帯デバイス3825のUI3800は、別の携帯デバイスのリモートユーザとのテレビ会議中にPIP表示3865を提示する。このPIP表示3865は、2つのビデオ表示、すなわち背景メイン表示域3830と、前景挿入表示域3835とを含む。背景メイン表示域3830はPIP表示3865の大半を占めるが、前景挿入表示域3835は背景メイン表示域3830よりも小さく、これに重なる。この例では、背景メイン表示域3830は、ギターを持つ人のビデオを提示し、この人は、リモートデバイスの前面カメラによってビデオが取り込まれている人又はリモートデバイスの背面カメラによってビデオが取り込まれている人であると想定される。前景挿入表示域3835は、帽子をかぶった人のビデオを提示し、この人は、この例では、ローカルデバイスの前面カメラによってビデオが取り込まれている人又はローカルデバイスの背面カメラによってビデオが取り込まれている人であると想定される。PIP表示3865の下は、選択することによってユーザがテレビ会議を終了できる「会議終了」と標示された選択可能UI項目3860(例えばボタン3860)を含む表示域1155である。
【0357】
このPIP表示3865は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、他の合成ビューを提供してもよい。例えば、リモートデバイスからのビデオのための大きい方の背景表示を有する代わりに、大きい方の背景表示1170は、ローカルデバイスからのビデオのものであり、小さい方の前景挿入表示はリモートデバイスからのビデオのものでありうる。同様に、一部の実施形態により、ローカルビデオ及びリモートビデオは、UI3800内の並んだ2つの表示域(例えば、左右の表示ウィンドウ又は上下の表示ウィンドウ)又は斜めに整列した2つの表示域に表示されうる。一部の実施形態では、PIP表示の方式又はデフォルトの表示モードは、ユーザによって指定されてもよい。他の実施形態では、PIP表示はまた、大きい方の背景表示と2つの小さい方の前景挿入表示とを含むことができる。
【0358】
図38は、サイズ変更動作を、UI3800の4つの動作段階として示す。第1段階3805では、前景挿入表示3835は、背景メイン表示域3830よりもかなり小さい。また、この例では、前景挿入表示域3835は、PIP表示3865の右下隅にある。他の例では、前景挿入表示域3835は、異なるサイズであってもよいし、PIP表示3865内の異なるエリアにあってもよい。
【0359】
第2段階3810では、サイズ変更動作が始められる。この例では、ユーザがサイズ変更を希望する挿入表示域3835の隅を選択することによって(例えば、指3840で挿入表示域3835の左上隅を押すことによって)動作が始められる。UI3800の第2段階3810は、この選択を、挿入表示域3835の太い境界線3845として示す。この段階で、ユーザは、(例えば、PIP表示3865上で挿入表示域3835から離れるように又は挿入表示域3835に向かって自身の指3840をドラッグすることによって)挿入表示域3835を拡大する又は縮めることができる。
【0360】
第3段階3815は、矢印3850によって示されるように、挿入表示域3835から離れるように自身の指3840を移動することによって(すなわち、この例では、UI3800の左上隅に向かって斜めに自身の指を移動することによって)ユーザが挿入表示域3835を拡張し始めた後のUI3800を示す。また、矢印3855によって示されるように、指3840の移動によって、高さ及び幅の両方に関して比例するように挿入表示域3835が拡張される。他の例では、ユーザは、同じ技術を使用して(すなわち、指を挿入表示域3835に向かってドラッグすることによって)挿入表示域3835を縮めることができる。
【0361】
第4段階3820は、挿入表示域3835のサイズ変更が完了した後のUI3800を表示する。この例では、ユーザは、挿入表示域3835が所望のサイズに達したら自身の指3840のドラッグを止めてPIP表示3865から自身の指を離すことによって、挿入表示域3835のサイズ変更を完了する。この手順の結果、サイズ変更された挿入表示域3835は、第1段階3805におけるその元のサイズよりも大きい。太い境界線3845の除去は、挿入表示域サイズ変更動作がこの時点で完了したことを示す。
【0362】
一部の実施形態は、ユーザがテレビ会議中にPIP表示3865において挿入表示域3835をサイズ変更できるための他の技術を提供する。
図39は、1つのこのような他の技術を示す。この図は、挿入表示域3835の端(すなわち、この表示域3835の各辺のうちの1つ)を選択し、その後、挿入表示域3835を拡張する又は縮めることによって挿入表示域3835をサイズ変更するための技術を示す。
【0363】
図39は、このサイズ変更動作を、
図38のUI3800の4つの動作段階として示す。
図39の第1段階3805は、
図38の第1段階3805と同じである。具体的には、この段階で、デバイス3925のUI3800は、大きな方の背景メイン表示域3830と小さな方の前景挿入表示域3835とをPIP表示3865の右下隅に有するPIP表示3865を示す。
図38及び
図39は、同じUI3800で挿入表示域3835をサイズ変更するための2つの異なる技術を示しているが、一部の実施形態は、同じUIでこれらの技術の両方ともを提供しないことが当業者には理解されよう。
【0364】
第2段階3910は、サイズ変更動作の開始を示す。この例では、ユーザがサイズ変更を希望する挿入表示域3835の辺を選択することによって(例えば、挿入表示域3835の上端又は側端に指3840を置くことによって)、ユーザは動作を始める。この例では、ユーザは、この選択を行うために挿入表示域3835の上端に自身の指3840を置く。第2段階3910は、この選択を、挿入表示域3835の太い境界線3845として示す。
【0365】
第3段階3915は、矢印3950によって示されるように、挿入表示域3835から離れるように(すなわち、PIP表示3865の上部に向かって垂直に)自身の指3840を移動することによってユーザが挿入表示域3835を拡張し始めた後のUI3800を示す。また、矢印3955によって示されるように、指3840の移動によって、高さ及び幅の両方に関して比例するように挿入表示域3835が拡張される。他の例では、ユーザは、同じ技術を使用して(例えば、指3840を挿入表示域3835に向かってドラッグすることによって)挿入表示域3835を縮めることができる。
【0366】
第4段階3920は、挿入表示域3835のサイズ変更が完了した後のUI3800を表示する。この例では、ユーザは、挿入表示域3835が所望のサイズに達したら自身の指3840のドラッグを止めてデバイスの表示画面から自身の指3840を離すことによって、挿入表示域3835のサイズ変更を完了する。この手順の結果、サイズ変更された挿入表示域3835は、第1段階3805におけるその元のサイズよりも大きい。太い境界線3845の削除は、挿入表示域サイズ変更動作がこの時点で完了したことを示す。
【0367】
図38及び
図39によって示されるように、一部の実施形態は、ドラッグ動作に応答して、挿入表示域3835のサイズを高さ及び幅に比例して調整する。他の実施形態では、ユーザは、他の属性に影響を及ぼすことなく、挿入表示域3835の高さ及び/又は幅を調整できてもよい。
図40は、このようなサイズ変更手法の一例を示す。
【0368】
具体的には、
図40は、挿入表示域3835の端のうちの1つが選択され、水平又は垂直に移動される場合に、
図40のUI3800によって挿入表示域3835が水平方向及び/又は垂直方向に拡張できることを除いて、
図38のUI3800と同様の携帯デバイス4025のUI3800を示す。UI3800の説明を簡略化するため、
図40は、この時点で挿入表示域3835がPIP表示3865の右上隅にあることを除いて、
図38のPIP表示3865と同様のUI3800におけるPIP表示3865を示す。PIP表示3865は、2つのビデオ表示、すなわち背景メイン表示域3830と、前景挿入表示域3835とを含む。この例では、背景メイン表示域3830は、リモートデバイスの前面カメラ又は背面カメラによって取り込まれているビデオを提示する。前景挿入表示域3835は、ローカルデバイスの前面カメラ又は背面カメラによって取り込まれているビデオを提示する。
【0369】
図38と同様に、
図40は、サイズ変更動作をUI3800の4つの動作段階として示す。第1段階4005は、この時点で挿入表示域3835が右上隅にあることを除いて、
図38の第1段階3805と同様である。他の3つの段階4010、4015及び4020は、挿入表示域3835の下端の選択及び移動によって、挿入表示域3835の幅に影響を及ぼすことなく、挿入表示域3835が垂直方向にのみ拡張したことを除いて、3つの段階3910、3915及び3920と同様である。
【0370】
図38、39及び40は、ユーザが挿入表示域3835の隅又は辺を選択することによってPIP表示3865の挿入表示域3835をサイズ変更できる例示的な実施形態を提供する。一部の実施形態は、挿入ウィンドウ3835をサイズ変更するための他の技術を提供する。例えば、
図41は、一部の実施形態により挿入表示域3835の内部を選択することによって挿入表示域3835をサイズ変更できることを示す。この手法では、ユーザは、画面に2本の指4155及び4156を置き、互いに遠ざけるか又は近づけるかのどちらかに指をドラッグすることによって、挿入表示域3835のサイズを調整する。
【0371】
図41では、携帯デバイス4140のUI3800は、別の携帯デバイスのリモートユーザとのテレビ会議中にPIP表示3865を提供する。UI3800の説明を簡略化するため、
図41は、
図38のPIP表示3865と同様のこのUI3800におけるPIP表示3865を示す。
【0372】
図41は、サイズ変更動作を、UI3800の7つの動作段階として示す。前半の4つの段階3805、4110、4115及び4120は挿入表示域3835の拡張を示すが、後半の3つの段階は、挿入表示域3835の縮みを示す。
図41の第1段階3805は、
図38の第1段階3805と同じである。具体的には、この段階で、UI3800は、大きな方の背景メイン表示域3830と小さな方の前景挿入表示域3835とを有するPIP表示3865を示す。この例では、背景メイン表示域3830は、リモートデバイスの前面カメラ又は背面カメラによって取り込まれているビデオを提示する。前景挿入表示域3835は、ローカルデバイスの前面カメラ又は背面カメラによって取り込まれているビデオを提示する。
【0373】
第2段階4110は、サイズ変更動作が始められた後のUI3800を示す。この例では、ユーザがサイズ変更を希望する挿入表示域3835を選択することによって(例えば、挿入表示域3835内に2本の指4155及び4156を置くことによって)、ユーザは動作を始める。UI3800の第2段階4110は、この選択を、挿入表示域3835の太い境界線4190として示す。
【0374】
第3段階4115は、矢印4160によって示されるように、指4155及び4156を互いから離れるように移動する(すなわち、指4155をPIP表示3865の左上隅に向かって移動し、指4156をPIP表示3865の右下隅に向かって移動する)ことによってユーザが挿入表示域3835を拡張し始めた後のUI3800を示す。矢印4165によって示されるように、指4155及び4156の移動によって、高さ及び幅の両方に関して比例するように挿入表示域3835が拡張される。
【0375】
第4段階4120には、挿入表示域3835のサイズ変更が完了した後のUI3800が表示されている。この例では、ユーザは、指4155及び4156のドラッグを止めてデバイスの表示画面から自身の指4155及び4156を離すことによって、挿入表示域3835のサイズ変更を完了する。この手順の結果、サイズ変更された挿入表示域3835は、第1段階3805におけるその元のサイズよりも大きい。太い境界線4190の削除は、挿入表示域サイズ変更動作がこの段階で完了したことを示す。
【0376】
第5段階4125では、ユーザは、2つの指4155及び4156を挿入表示域3835に置くことによって、挿入表示域3835を再選択する。第6段階4130は、矢印4170によって示されるように、指4155及び4156を互いに近づけることによってユーザが挿入表示域3835を縮め始めた後のUI3800を示す。矢印4175によって示されるように、指4155及び4156の移動によって、高さ及び幅の両方に関して比例するように挿入表示域3835が縮小される。
【0377】
第7段階4135は、動作の結果、挿入表示域3835のサイズが縮小したことを除いて、
図41の第4段階4120と同様である。太い境界線4190の除去は、挿入表示域サイズ変更動作がこの段階で完了したことを示す。
【0378】
図38〜
図41の上記の説明は、ユーザがPIP表示の挿入表示域をサイズ変更できるいくつかの例示的なユーザインタフェースを示す。一部の実施形態では、挿入表示域のサイズ変更によって、テレビ会議マネージャ1604が、ユーザの入力に応答してPIP表示における挿入表示域の拡大縮小及び合成を変更するように、デュアルカメラ携帯デバイスの画像処理動作への変更が起こる。さらに、一部の実施形態では、
図38〜
図41の表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。
【0379】
4.関心領域の識別
一部の実施形態により、ユーザは、画像処理(例えば、
図16の画像処理マネージャ1608)、符号化(例えば、
図16のエンコーダ1655)、テレビ会議中の携帯デバイス及びそのカメラの挙動、又はそれらの組み合わせを変更するために、テレビ会議中に表示されるビデオにおける関心領域(ROI)を識別できる。異なる実施形態は、ビデオにおいてこのような関心領域を識別するための異なる技術を提供する。
図42は、ビデオの画像品質を向上するためにビデオにおいて関心領域を識別するための一部の実施形態のユーザインタフェースを示す。
【0380】
図42では、携帯デバイス4225のUI4200は、別の携帯デバイスのリモートユーザとのテレビ会議中にPIP表示4265を提示する。
図42のPIP表示は、
図41のものと実質的に同様である。具体的には、
図42のPIP表示42は、2つのビデオ表示、すなわち背景メイン表示4230と、前景挿入表示4235とを含む。この例では、背景メイン表示域4230は、木と帽子を被った人とのビデオを提示し、これは、リモートデバイスの前面カメラによってビデオが取り込まれている木及び人又はリモートデバイスの背面カメラによってビデオが取り込まれている木及び人であると想定される。前景挿入表示4235は、男性のビデオを提示し、これは、この例では、ローカルデバイスの前面カメラによってビデオが取り込まれている男性又はローカルデバイスの背面カメラによってビデオが取り込まれている男性であると想定される。PIP表示の下は、選択することによってユーザがテレビ会議を終了できる「会議終了」と標示された選択可能UI項目4260(例えばボタン4260)を含む表示域1155である。
【0381】
このPIP表示は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、他の合成ビューを提供してもよい。例えば、リモートデバイスからのビデオのための大きい方の背景表示を有する代わりに、大きい方の背景表示はローカルデバイスからのビデオのものであってもよく、小さい方の前景挿入表示は、リモートデバイスからのビデオのものであってもよい。同様に、一部の実施形態により、ローカルビデオ及びリモートビデオは、UI内の並んだ2つの表示域(例えば、左右の表示ウィンドウ又は上下の表示ウィンドウ)又は斜めに整列した2つの表示域に表示されうる。他の実施形態では、PIP表示はまた、大きい方の背景表示と2つの小さい方の前景挿入表示とを含んでもよい。一部の実施形態では、PIP表示の方式又はデフォルトの表示モードは、ユーザによって指定されてもよい。
【0382】
図42は、ROI識別動作を、UI4200の4つの動作段階として示す。第1段階4205に示すように、背景表示4230に提示されるビデオは、非常に低い品質を有する(すなわち、ビデオ画像がぼやけている)。この例では、携帯デバイス4225のユーザは、人の顔4270が表示される背景表示4230のエリアを関心領域として識別することを望んでいる。
【0383】
第2段階4210では、関心領域を識別する動作が始められる。この例では、ユーザが関心領域として識別することを希望する背景表示4230に提示されたビデオ内のあるエリアを選択することによって(例えば、背景表示4230内に表示された人の顔4270のまわりの位置でデバイスの画面を指4250でタップすることによって)、動作が始められる。
【0384】
第3段階4215に示すように、ユーザのエリアの選択によって、UI4200は、ユーザの選択のエリアを取り囲む囲い(enclosure)4275(例えば、破線の方形4275)が描かれる。第4段階4220は、関心領域の識別が完了した後のUI4200を表示する。このプロセスの結果、関心領域内のビデオの品質は、第1段階4205における品質から実質的に向上する。囲い4275の除去は、ROI選択動作がこの時点で完了したことを示す。一部の実施形態では、ROI識別プロセスはまた、ローカルデバイス4225に対して引き起こすように、リモートデバイスに表示される同じビデオの同じ変更を引き起こす。この例では、例えば、リモートデバイスに表示された同じビデオの関心領域内の画質も実質的に向上する。
【0385】
一部の実施形態では、ユーザは、第3段階4215で(例えば、指4250で表示を押し、囲い4275を引き伸ばすために画面の右上隅に向かって指4250を移動するか又は囲い4275を縮めるために画面の左下隅に向かって指4250を移動することによって)囲い4275を引き伸ばす又は縮めてもよい。また、一部の実施形態により、ユーザは、第3段階4215で(例えば、指4250で表示を押し、表示上で水平又は垂直に指4250を移動することによって)囲い4275を配置し直すことができる。一部の他の実施形態では、エリアの選択によって、UI4200が第3段階4215で囲い4275をまったく描かなくてもよい。
【0386】
他の実施形態は、ユーザがビデオ内で関心領域を識別できるようにするための異なる技術を提供する。
図43は、1つのこのような他の技術を示す。
図43では、ユーザは、領域の境界となる形状を描くことによって、関心領域を識別する。この例では、形状は長方形であるが、他の形状(例えば、他の任意の多角形、円、楕円など)にできる。一部の実施形態は、
図42に示される技術も提供するデバイスUIにおいて、
図43のこの代替技術を提供する。しかし、他の実施形態は、同じUIにおいてこれらの技術の両方ともは提供しない。
【0387】
図43は、このROI識別動作を、UI4200の5つの動作段階として示す。
図43の第1段階4205は、
図42の第1段階4205と同一である。具体的には、この第1段階4205では、UI4200は、大きな方の背景メイン表示域4230と小さな方の前景挿入表示域4235とをPIP表示4265の右下隅に有するPIP表示4265を示す。
【0388】
第2段階4310では、関心領域を識別する動作が始められる。この例では、背景表示域4230に提示されたビデオにおいて関心領域を規定するための第1位置をある期間選択することによって(例えば、デバイスの画面において背景表示4230に表示される人の顔4270のまわりの位置を指4350である期間押すことによって)、動作が始められる。第3段階4315では、UI4200は、第1位置4370が選択されたことを、背景表示域4230上での選択された第1位置の隣の点4355として示す。
【0389】
第4段階4320は、ユーザが関心領域を規定するための第2位置4375を選択した後のUI4200を示す。この例では、矢印4360によって示されるように、ユーザは、点4355が表示された後で第1位置からデバイスの画面をわたって指4350をドラッグし、背景表示域4230内の表示されている帽子と表示されている木との間の位置で止めることによって、この第2位置4375を選択する。第4段階に示すように、このドラッグによって、UI4200は、その対向する頂点に第1位置4370及び第2位置4375を有する関心領域エリアのための方形の境界線4365が描かれた。
【0390】
第5段階4325は、関心領域の識別が完了した後のUI4200を示す。この例では、ユーザは、所望の関心領域エリアが識別されたら指4350のドラッグを止めてデバイスの表示画面から指4350を離すことによって、関心領域の識別を完了する。第5段階4325は、描画プロセスの結果、関心領域内のビデオの品質が第1段階4205における品質から実質的に向上したことを示す。一部の実施形態では、描画プロセスはまた、ローカルデバイス4225に対して引き起こされたものと同じ変更をリモートデバイス上の表示に引き起こす。この例では、例えば、リモートデバイスに表示された同じビデオの関心領域内の画質が実質的に向上する。
【0391】
上記の
図42及び
図43の説明は、識別された領域の画質を向上させるためにビデオ内の関心領域を識別する異なる方式を示す。一部の実施形態では、識別された関心領域の画質を向上させることによって、ビデオを符号化する際に、識別された領域により多くのビットを割り当てるなどの、デュアルカメラ携帯デバイスの符号化動作への変更が生じる。
【0392】
一部の実施形態により、ユーザは、携帯デバイス又はそのカメラへのさまざまな変更を行うためにビデオにおいて関心領域を識別できる。例えば、
図44は、表示上で関心領域エリアを拡張する又は縮めるためにビデオにおいて関心領域を識別する一例を示す。この手法では、ユーザは、表示上でエリアを関心領域の中心として選択し、その後、関心領域エリアを拡張する又は縮めることによって、ビデオにおける関心領域を識別する。
【0393】
図44では、携帯デバイス4425のUI4400は、別の携帯デバイスのリモートユーザとのテレビ会議中にPIP表示4265を提示する。
図44のPIP表示4265は、
図42のPIP表示4265と実質的に類似しているが、
図44の前景挿入表示4235は、PIP表示4265の左下隅にある。
【0394】
図44は、ROI選択動作を、UI4400の4つの動作段階として示す。第1段階4405に示すように、背景表示4430は、表示4430の左に男性を有し、右に木4440を有するビデオを提示する。さらに、木4440は比較的小さく、背景表示域4430の右側のみを占有する。この例では、携帯デバイス4425のユーザは、表示4430において木4440が表示されるエリアを関心領域として識別することを望んでいる。
【0395】
第2段階4410では、関心領域を識別する動作が始められる。この例では、ユーザが関心領域として識別することを希望する背景表示4430に提示されたビデオ内のあるエリア4440を選択することによって(例えば、木4440が表示される背景表示域4430を2本の指4445及び4446で押すことによって)、動作が始められる。この段階4410では、ユーザは、指4445及び4446を互いからさらに遠ざかるようにドラッグすることによって、関心領域エリア4440を拡張させ、背景表示域4430のより大きな部分を取得させることができる。ユーザは、自身の指4445及び4446を互いに近づけるようにドラッグすることによって、関心領域4440を縮めさせ、背景表示域4430のより小さな部分を取得させることもできる。
【0396】
第3段階4415は、矢印4450によって示されるように、自身の指4445及び4446を互いから離れるように移動する(すなわち、指4445を背景表示域4430の左上隅に向かって移動し、指4446を表示4430の右下隅に向かって移動する)ことによって、ユーザが関心領域4440を拡張させ、背景表示域4430のより大きな部分を占めさせ始めた後のUI4400を示す。一部の実施形態では、指の移動はまた、ローカルデバイスに対して引き起こしたのと同じ変更を、リモートデバイスの表示に引き起こす。この例では、例えば、同じビデオの関心領域は、拡張し、リモートデバイスの背景表示域4430のより大きな部分を占める。一部の実施形態では、以下でさらに説明するように、ローカル表示及び/又はリモート表示における関心領域の拡張によって、携帯デバイス又はそのカメラの一方又は両方が、他の動作のうちの1つ以上を変更する。
【0397】
第4段階4420は、関心領域の識別が完了した後のUI4400を表示する。この例では、ユーザは、関心領域が背景表示域4430において所望の比率に達したら自身の指4445及び4446のドラッグを止めてデバイスの表示画面から指4445及び4446を離すことによって、関心領域の識別を完了する。このプロセスの結果、関心領域は、背景表示4430の大半を占める。関心領域動作の識別は、この時点で完了している。
【0398】
上記の例のうちの一部は、(例えば、ビデオの関心領域部分を符号化するためにビットレートを増加させることによって)ビデオの選択された関心領域内の画像品質を向上するためにユーザがビデオ内の関心領域をどのように識別できるかを示す。一部の実施形態では、ビデオ内の関心領域を識別することによって、露出、拡大縮小、フォーカスなどの、携帯デバイスの画像処理動作への変更が生じる。例えば、ビデオ内の関心領域を識別することによって(例えば、ズームすべき関心領域を識別することによって)、テレビ会議マネージャ1604に、ビデオの画像を異なるように拡大縮小及び合成させうる。
【0399】
他の実施形態では、ビデオ内の関心領域を識別することによって、携帯デバイスのカメラ(群)の動作(例えば、フレームレート、ズーム、露出、拡大縮小、フォーカスなど)への変更が生じる。さらに他の実施形態では、ビデオ内の関心領域を識別することによって、識別された領域へのより多くのビットの割り当て、拡大縮小などのような、携帯デバイスの符号化動作への変更が生じる。さらに、上述の例示的なROI特定動作は、携帯デバイス又はそのカメラへの上述の変更のうちの1つのみを引き起こしてもよいが、一部の他の実施形態では、ROI識別動作は、携帯デバイス又はそのカメラの動作への変更のうちの複数を引き起こしてもよい。さらに、一部の実施形態では、
図42〜
図44の表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。
【0400】
B.カメラの切り換え
一部の実施形態は、テレビ会議中にカメラを切り換える(すなわち、画像が取り込まれるカメラを変更する)手順を提供する。異なる実施形態は、カメラ切り換え動作を実行するための異なる手順を提供する。一部の実施形態は、デバイスのカメラを切り換える(すなわち、ローカル切り換え)ためにデュアルカメラ携帯デバイスによって実行される手順を提供するが、他の実施形態は、デュアルカメラ携帯デバイスがテレビ会議中の別のデュアルカメラ携帯デバイスに当該他のデバイスのカメラを切り換える(すなわち、リモート切り換え)ように命令するための手順を提供する。さらに他の実施形態は、この両方のための手順を提供する。セクションIV.B.1では、デュアルカメラ携帯デバイス上でローカルカメラ切り換え動作を実行するためのプロセスについて説明する。セクションIV.B.2では、デュアルカメラ携帯デバイス上でリモートカメラ切り換え動作を実行するためのプロセスについて説明する。
【0401】
1.ローカルカメラ切り換え
図45は、少なくとも1つのカメラを含むリモート携帯デバイスとのテレビ会議中にデバイスの2つのカメラを切り換えるためにローカルデュアルカメラ携帯デバイス上で一部の実施形態が実行するプロセス4500を示す。一部の実施形態では、プロセス4500は、
図16に示されるテレビ会議マネージャ1604によって実行される。説明のために、この説明では、ローカルデュアルカメラ携帯デバイスの一方のカメラをカメラ1と呼び、ローカルデュアルカメラ携帯デバイスの他方のカメラをカメラ2と呼ぶ。
【0402】
プロセス4500は、ローカルデュアルカメラ携帯デバイスとリモート携帯デバイスとの間のテレビ会議を(4505において)開始することによって始まる。次に、プロセス4500は、リモート携帯デバイスに表示するために、ローカルデュアルカメラ携帯デバイスの現在選択されているカメラ(例えば、カメラ1)からリモート携帯デバイスにビデオ画像を(4510において)送信する。4510では、プロセスは、このビデオ画像及びリモート携帯デバイスから受信したビデオ画像に基づいて、合成表示も生成して表示する。
【0403】
プロセス4500は、その後、テレビ会議終了要求が受信されているかどうかを(4515において)判定する。上述のように、一部の実施形態では、テレビ会議は、(例えば、ローカルデュアルカメラ携帯デバイスのユーザインタフェースを通じた)ローカルデュアルカメラ携帯デバイスのユーザの要求又は(例えば、リモート携帯デバイスのユーザインタフェースを通じた)リモート携帯デバイスのユーザの要求で終了できる。プロセス4500がテレビ会議終了要求を受信した場合に、プロセス4500は終了する。
【0404】
プロセス4500がテレビ会議終了要求を受信しない場合に、プロセス4500は、その後、ローカルデュアルカメラ携帯デバイスのユーザがテレビ会議用のカメラを切り換えるようにデバイスに指示したかどうかを(4520において)判定する。デバイスがカメラを切り換えるように指示されていないと(4520において)プロセス4500が判定した場合に、プロセス4500は動作4510に戻る。しかし、デバイスがカメラを切り換えるように指示されたと(4520において)プロセス4500が判定した場合に、プロセス4500は4525に移行する。
【0405】
プロセス4500は、4525で、ローカルデュアルカメラ携帯デバイスがカメラを切り換えていることを示す通知をリモート携帯デバイスに送信する。一部の実施形態では、プロセス4500は、上述のようなVTPマネージャ3125によってオーディオチャネル及びビデオチャネルで多重化されたテレビ会議制御チャネルを通じて通知を送信する。
【0406】
その通知を送信した後、プロセス4500は、カメラ切り換え動作を(4530において)実行する。一部の実施形態では、カメラ切り換え動作を(4530において)実行することは、カメラ1によるビデオ画像の取り込みを止めてカメラ2によるビデオ画像の取り込みを開始するようにCIPUに命令することを含む。これらの命令は、カメラ2に関連する画素アレイから画像の取り込みに切り換えて、これらの画像の処理を開始するようにCIPUに単に指示できる。あるいは、一部の実施形態では、CIPUに対する命令は、(1)設定の特定の集合に基づいてカメラ2を動作するように、(2)特定のフレームレートでカメラ2によって生成されたビデオを取り込むように、及び/又は(3)設定の特定の集合(例えば、解像度など)に基づいてカメラ2からのビデオ画像を処理するようにCIPUに指示する初期化パラメータ集合を伴う。
【0407】
一部の実施形態では、(4530における)カメラ切り換え命令は、使用されていないカメラを上述の第4動作電力モードに切り換えるための命令も含む。この例では、カメラ切り換え命令は、カメラ2がその第4動作電力モードに切り換わるための命令を含む。さらに、カメラ切り換え命令は、画像を取り込むように要求された場合に第4動作電力モードにすばやく切り換わり、取り込みを開始できるように、カメラ1がその第4動作電力モードから電力を節約する第1動作電力モードなどの別の動作電力モード又は第3動作電力モードに切り換わるための命令も含む。カメラ切り換え動作4530は、(カメラ1によって取り込まれた画像ではなく)ローカルデュアルカメラ携帯デバイスのカメラ2によって取り込まれた画像をローカルデュアルカメラ携帯デバイスに表示するためにリモート携帯デバイスから受信した画像と合成することも含む。
【0408】
4530においてカメラ切り換えを指示した後、プロセス4500は、カメラ1からの画像の表示とカメラ2からの画像の表示との間の移行を表示するためにローカルデュアルカメラ携帯デバイス上でカメラ切り換えアニメーションを(4535において)実行する。ローカルデュアルカメラ携帯デバイス上でのカメラ切り換えアニメーションに続いて、テレビ会議終了要求又は新たなカメラ切り換え要求が受信されるまで、プロセス4500は、動作4510〜4520を一巡して戻る。
【0409】
図46は、一部の実施形態によりデュアルカメラデバイスのUI1105を介してカメラ切り換え動作をどのようにして要求できるか、及びこれらの実施形態がカメラ切り換え動作をアニメーション化するかの一例を示す。この図は、カメラ切り換え動作を、デバイスのUI1105の8つの異なる動作段階4610、4615、4620、4625、4630、4635、4640及び4645として示す。UI1105の前半の4つの段階4610、4615、4620及び4625は、カメラを切り換えるというユーザの要求を受信する一例を示す。本発明の一部の実施形態では、デバイスのユーザは、このような要求を行うための他の機構を有する。
【0410】
第1段階4610は、
図11のUI1105の第5段階1130と同じであり、テレビ会議がセットアップされた後のUI1105を示す。この段階で、UI1105は、2つのビデオ表示、すなわちリモートカメラからの大きい方の背景表示と、ローカルカメラからの小さい方の前景挿入表示とを含むPIP表示を表示する。この例では、背景メイン表示域1170は、この例ではリモートデバイスによってビデオが取り込まれている婦人と想定される婦人のビデオを提示し、前景挿入表示域1160は、この例ではローカルデバイスの前面カメラによってビデオが取り込まれている男性と想定される男性のビデオを提示する。
【0411】
その後、第2段階4615は、UI1105のPIP表示域1180の選択を通じたカメラ切り換え動作の始まりを示す。図示のように、PIP表示1180にユーザの指4670を置くことによって選択が行われる。第3段階4620は、テレビ会議中のローカルデバイス4600のカメラ間の切り換えを要求するための選択可能UI項目4675(例えば、カメラ切り換えボタン4675)を含むUI1105を示す。第4段階4625は、ローカルデバイス4600のユーザが選択可能UI項目4675を(例えば、シングルフィンガータップによって)選択し、この選択が選択可能UI項目4675の強調表示を通じて示された後のUI1105を示す。この選択可能UI項目4675を選択することによって、ユーザは、テレビ会議中にデバイス4600の前面カメラからデバイス4600の背面カメラに切り換えるようにデバイス4600に指示している。デバイス4600の背面カメラがビデオを取り込んでいる他の例では、選択可能UI項目4675のユーザの選択は、デバイス4600の背面カメラからデバイス4600の前面カメラに切り換えるようにデバイス4600に指示する。第4段階の後で、テレビ会議マネージャは、カメラ切り換え動作を開始するようにCIPU及びリモートデバイスに命令を送信する。
【0412】
UI1105の後半の4つの段階4630、4635、4640及び4645は、ローカルデバイス上でのカメラ切り換えアニメーションの一例を示す。このアニメーションは、ローカルデバイスの前面カメラ及び背面カメラから取り込まれたビデオがビューペイン(viewing pane)の2つの対向する側に現在表示されており、この2つの側のうちの1つのみが任意の時点でユーザによって視認可能である印象(impression)を提供することを目的とする。カメラ切り換えがテレビ会議の途中で要求された場合に、このビューペインは、垂直軸のまわりを回転したと見えるようになされ、その結果、以前は1つのカメラのビデオをユーザに示していたビューペインの一方の側での1つのカメラのビデオの提示は、これがビューペインの他方の側によって置き換えられるまで、ユーザから遠ざかって回転し、ビューペインの他方の側が他方のカメラのビデオを示す。知覚されるビューペインの回転のこのアニメーション及び外見は、(1)一方のカメラ表示域におけるそのカメラからのビデオ画像が段階的に小さくなって、それに対してパースペクティブ補正動作を適用し、続いて(2)表示域における他方のカメラからのビデオ画像を段階的に拡張し、それに対するパースペクティブ補正動作を減少させることによって達成される。
【0413】
したがって、第5段階4630は、垂直軸4682のまわりでの「ビューペインの回転」の開始を示す。ビューペインの回転の外見を付与するため、UI1105は、ビデオ表示域1160における前面カメラのビデオ画像のサイズを減少させ、パースペクティブ動作を適用して、ビデオ画像の左側に比べてビデオ画像の右側がユーザから遠く見えるようにした。
【0414】
第6段階4635は、表示域1160の中央に表示される細い線4686によって示されるように、ユーザがこのペインの端のみを見ることが可能なようにビューペインが90度回転したことを示す。第7段階4640は、ユーザの背面カメラから取り込まれたビデオを示すために今度はビューペイン4688の裏面がユーザに段階的に見えるように、ビューペインが回転し続けていることを示す。この場合もやはり、一部の実施形態では、回転アニメーションのこの表示は、ビデオ表示域4688における背面カメラのビデオ画像のサイズを減少させ、パースペクティブ動作を適用して、ビデオ画像の右側に比べてビデオ画像の左側がユーザから遠く見えるようにすることによって達成される。
【0415】
第8段階4645は、カメラ切り換え動作を示すアニメーションの完了を示す。具体的には、この段階は、デバイス4600の背面カメラによって取り込まれている自動車のビデオ画像を表示域1160に表示する。
【0416】
図46に関する上述の例は、カメラ切り換えユーザインタフェースを通じてカメラ切り換え動作を起動する。他の実施形態は、カメラ切り換え動作を異なるように起動する。例えば、一部の実施形態は、
図47のUI1105などのテレビ会議中にUIに永久的に表示されるカメラ切り換え選択可能UI項目を有することによって、カメラ切り換え動作を起動する。
図47では、カメラ切り換えボタン1289は、消音ボタン1285及び会議終了ボタン1287と共に表示域1155に示されている。一部の実施形態では、表示域1155のレイアウトは、
図12に関して上述した表示域1155のレイアウトと同じである。
【0417】
図47は、UI1105のカメラ切り換え動作を、6つの段階すなわち4610、4790、4630、4635、4640及び4645として示す。
図47の第1段階4610は、表示域1155のレイアウトが、単一の会議終了ボタンではなく、消音ボタン1285、会議終了ボタン1287及びカメラ切り換えボタン1289を示すことを除いて、
図46の第1段階4610と同様である。第2段階4790は、ローカルデバイス4600のユーザがカメラ切り換え選択可能UI項目1289を(例えば、指4670を使用したシングルフィンガータップを通じて)選択した後のUI1105を示す。この例では、この選択可能UI項目1289を選択することによって、ユーザは、テレビ会議中にデバイス4600の前面カメラからデバイス4600の背面カメラに切り換えるようにデバイス4600に指示する。
図47の後半の4つの段階は、表示域1155のレイアウトが第1段階4610における上述のレイアウトと同じであることを除いて、
図46の後半の4つの段階と同様であり、したがって、不必要な詳細で本発明の説明をあいまいにしないために、さらなる説明はしない。
【0418】
一部の実施形態では、リモート携帯デバイスがローカルデュアルカメラ携帯デバイスの異なるカメラから画像を受信した(すなわち、ローカルデュアルカメラ携帯デバイスがカメラを切り換えた)場合に、リモート携帯デバイスは、ローカルデュアルカメラ携帯デバイスの一方のカメラからの画像の表示とローカルデュアルカメラ携帯デバイスの他方のカメラからの画像の表示との間の移行を表示するために、カメラ切り換えアニメーションも実行する。
図48は、このようなカメラ切り換えアニメーションのうちの1つの例を、UI4805の5つの動作段階4810、4815、4820、4825及び4830として示す。この図は、リモート携帯デバイス4800上での例示的なカメラ切り換えアニメーションを示す。動作段階は、表示域4835に表示された画像上でアニメーションが実行されることを除いて、
図46の例示的なアニメーションと同じであり、表示域4835は、ローカルデュアルカメラ携帯デバイスからの画像がリモート携帯デバイス4800に表示される位置である。したがって、表示域4835に表示された男性の画像は、表示域4835における男性の画像の表示と自動車4870の画像の表示との間の移行を示すように表示域4850の中央にある垂直軸4855に対して180度回転するように見えるようにアニメーション化される。一部の実施形態のカメラ切り換えアニメーションの実装は、上述のアニメーションの実装と同じである。
【0419】
上記の例は、特定のユーザインタフェースレイアウトを有するリモートデバイス上でのカメラ切り換えアニメーションを示す。他の実施形態は、異なるユーザインタフェースレイアウトを有するリモートデバイス上でのこのカメラ切り換えアニメーションを実行してもよいだろう。例えば、
図49は、異なるユーザインタフェースレイアウト4805を有するリモートデバイス4800のこのような一例を示す。特に、
図49のUI4805は、表示域1155に含まれる、消音ボタン1285と、会議終了ボタン1287と、カメラ切り換えボタン1289とを有し、表示域1155は、テレビ会議中に合成表示4850の1辺に永久的に表示される。3つのボタンのレイアウトについては、
図48に関して上述した。異なるユーザインタフェースレイアウト以外に、
図49の5つの段階4810、4815、4820、4825及び4830は、
図48の5つの段階4810、4815、4820、4825及び4830と同一である。
【0420】
2.リモートカメラ切り換え
図50は、テレビ会議中にリモートデュアルカメラデバイスの2つのカメラを切り換えるためのプロセス5000を示す。このプロセス5000は、少なくとも1つのカメラを含むデバイスのテレビ会議マネージャによって実行される。以下の説明では、ユーザがリモートカメラ切り換えを指示するデバイスはローカルデバイスと呼ばれ、自身の2つのカメラを切り換えるデバイスはリモートデバイスと呼ばれる。同様に、以下の説明では、リモートデバイスは、その前面カメラ(すなわちカメラ1)とその背面カメラ(すなわちカメラ2)を切り換えると言われる。
【0421】
図50のプロセス5000について、
図51、
図52、
図53及び
図54に関して説明する。
図51は、リモートデバイスがテレビ会議中にその2つのカメラを切り換えることをユーザが要求するために用いるローカルデバイス5100のUI5105を示す。この図は、このUI5105の8つの異なる動作段階5110、5115、5120、5125、5130、5135、5140及び5145を示す。
図54は、ローカルデバイス5100からカメラ切り換え要求を受信するリモートデバイス5400のUI5405を示す。
図54は、UI5405の6つの異なる動作段階5410、5415、5420、5425、5430及び5435を示す。
【0422】
図50に示すように、プロセス5000は、ローカルデバイスとリモートデバイスとの間のテレビ会議を(5005において)開始することによって始まる。その後、プロセス5000は、各デバイスの1つのカメラから(例えば、各デバイスの前面カメラから)画像を(5010において)受信し、これらの画像に基づいてテレビ会議のための合成ビューを生成する。5010で、プロセス5000は、ローカルデバイスからリモートデバイスにビデオ画像も送信する。
【0423】
その後、プロセス5000は、テレビ会議終了要求が受信されたかどうかを(5015において)判定する。上述のように、テレビ会議は、一部の実施形態では、ローカルデバイス又はリモートデバイスのユーザの要求により終了できる。プロセス5000がテレビ会議終了要求を受信した場合に、プロセス5000は終了する。
【0424】
プロセス5000がテレビ会議終了要求を受信しない場合に、その後、プロセス5000を実行中であるデバイスのユーザ(すなわち、ローカルデバイスのユーザ)が、テレビ会議のためにリモートデバイスがそのカメラを切り換えることを要求するようにデバイスに指示したかどうかを(5020において)プロセス5000が判定する。モートカメラ切り換えを開始するように指示されていないと(5020において)プロセス5000が判定した場合に、プロセス5000は動作5010に戻る。デバイスはリモートカメラ切り換えを開始するように指示されたと(5020において)プロセス5000が判定した場合に、プロセス5000は、以下でさらに説明する5025に移行する。
【0425】
図51のUI5105の最初の4つの段階5110、5115、5120及び5125は、リモートデバイスのカメラを切り換えるためのユーザの要求を受信する一例を示す。第1段階5110及び第2段階5115は、
図46の第1段階4610及び第2段階4615と同じである。第3段階5120は、第3段階5120が、ローカルデバイス5100にカメラを切り換えることを要求するための選択可能UI項目5175に加えて、カメラを切り換えることのリモートデバイス5100への要求のための選択可能UI項目5180を含むことを除いて、第3段階4620と同じである。第4段階5125は、リモートデバイスにカメラを切り換えるように要求するためのUI項目5180を(例えば、選択可能UI項目5180へのシングルフィンガータップ5170を通じて)ローカルデバイス5100のユーザが選択することを示す。選択可能UI項目5180の強調表示によって選択が示される。
図51はこの動作を実行する一例を示すが、他の実施形態は、リモートデバイスにカメラを切り換えるように要求するための動作を異なるように実行してもよい。
【0426】
図51に関する上述の例は、リモートカメラ切り換えユーザインタフェースを通じてリモートカメラ切り換え動作を起動する。他の実施形態は、リモートカメラ切り換え動作を異なるように起動する。例えば、一部の実施形態は、
図52のUI5105などのテレビ会議中にUIにカメラ切り換えの選択可能UI項目を永久的に表示させることによって、カメラ切り換え動作を起動する。
図52では、リモートカメラ切り換えボタン5288が、消音ボタン5282、会議終了ボタン5284及びローカルカメラ切り換えボタン5286と共に表示域1155に示されている。
【0427】
図52は、デバイス5100のUI5105のリモートカメラ切り換え動作を、6つの異なる段階5110、5290、5130、5135、5140及び5145として示す。
図52の第1段階5110は、表示域1155のレイアウトが消音ボタン5282、ローカルカメラ切り換えボタン5286、リモートカメラ切り換えボタン5288及び会議終了ボタン5284を示すことを除いて、
図51の第1段階5110と同様である。第2段階5290は、ローカルデバイス5100のユーザが選択可能リモートカメラ切り換えUI項目5288を(例えば、シングルフィンガータップ5170を通じて)選択した後のUI1105を示す。
図52の後半の4つの段階は、表示域1155のレイアウトが第1段階5110における上述のレイアウトと同じであることを除いて、
図51の後半の4つの段階と同様であり、したがって、不必要な詳細で本発明の説明をあいまいにしないために、さらなる説明はしない。
【0428】
一部の実施形態は、選択可能リモートカメラ切り換えUI項目が表示域1155ではなくPIP表示5165に表示されることを除いて、
図52に示されるレイアウトと同様のレイアウトを提供する。
図53はこのようなレイアウト5105を示す。特に、この図は、選択可能リモートカメラ切り換えUI項目5180と、消音ボタン5282、ローカルカメラ切り換えボタン5286及び会議終了ボタン5284を有する表示域1155とを有するPIP表示を示す。
【0429】
上述のように、ユーザがリモートカメラ切り換えを要求する場合に、プロセス5000は5025に移行する。5025では、プロセス5000は、カメラ切り換え要求をリモートデバイスに送信する。一部の実施形態では、この要求は、上述のようなVTPマネージャ3125によってオーディオチャネル及びビデオチャネルで多重化されたテレビ会議制御チャネルを通じて送信される。
【0430】
カメラ切り換え要求が受信された後に、プロセス5000は、リモートデバイスがカメラ切り換え要求に応答したかどうかを(5030において)判定する。一部の実施形態では、リモートデバイスは、テレビ会議制御チャネルを通じてローカルデバイスに承認応答を自動的に送信する(すなわち、確認応答を送信する)。しかし、他の実施形態では、リモートデバイスのユーザは、リモートデバイスのユーザインタフェースを通じて、この要求を承諾しなければならない。
【0431】
図54のUI5405の最初の2つの段階5410及び5415は、リモートデバイス5400のカメラ切り換え要求をリモートユーザが承諾する一例を示す。第1段階5410は、(1)リモートユーザに要求を通知するテキストを表示するための表示域5440、(2)リモートデバイスのカメラ切り換え要求を承諾するための選択可能UI項目5465(例えば、許可ボタン5465)、及び(3)リモートデバイスのカメラ切り換え要求を拒否するための選択可能UI項目5470(例えば、拒否ボタン5470)を示す。その後、第2段階5415は、選択可能UI項目5465の強調表示によって示されるように、カメラ切り換え要求を承諾するためのUI項目5465をリモートデバイスのユーザが(例えば、シングルフィンガータップ5480を通じて)選択した後のUI5405を示す。
【0432】
リモートデバイスから応答をまだ受信していないと(5030において)プロセス5000が判定した場合に、プロセス5000は、テレビ会議終了要求が受信されたかどうかを(5035において)判定する。テレビ会議終了要求が受信された場合に、プロセス5000は終了する。そうでない場合に、プロセスは、リモートデバイス及びローカルデバイスの現在使用されているカメラから画像を(5040において)受信し、これらの画像に基づいてテレビ会議のための合成ビューを生成し、ローカルデバイスのビデオ画像をリモートデバイスに伝送し、その後5030に移行する。
【0433】
リモートデバイスから応答をまだ受信したと(5030において)プロセス5000が判定した場合に、プロセス5000は、リモートデバイスがカメラ切り換え要求を承諾したかどうかを(5045において)判定する。承諾していないならば、プロセス5000は動作5010に戻り、他のデバイスのカメラから画像を受信し続ける。そうでないならば、プロセスは、リモートデバイスの他のカメラから画像を(5050において)受信し、その後、ローカルデバイスでカメラ切り換えアニメーションを(5055において)実行し、以前に利用したリモートカメラのビデオと現在利用されているリモートカメラのビデオ(すなわち、動作5050において受信した画像)との間の移行を表示する。5055の後で、プロセスは、上述した5010に移行する。
【0434】
図51のUI5105に示される後半の4つの動作段階5130、5135、5140及び5145は、ローカルデバイス5100上でのこのようなリモートカメラ切り換えアニメーションの一例を示す。例示的なアニメーションは、
図51がリモートデバイスの前面カメラによって取り込まれた女性のビデオを、リモートデバイスの背面カメラによって取り込まれた木のビデオと置き換えるアニメーションを表示域5150に示すことを除いて、
図48の段階4815、4820、4825及び4830に示される例示的なアニメーションと同様である。
図52及び
図53の後半の4つの段階は、
図52及び
図53の表示域1155が
図51の表示域1155と異なる選択可能UI項目を含むことを除いて、
図51のアニメーションと同じアニメーションを示す。
【0435】
一部の実施形態では、リモートデバイスがカメラを切り換える場合に、リモートデバイスのUIも、2つのカメラ間の移行を表示するためにカメラ切り換えアニメーションを実行する。
図54のUI5405に示される後半の4つの動作段階5420、5425、5430及び5435は、リモートデバイス5400がカメラを切り換える場合にリモートデバイス5400に表示されるカメラ切り換えアニメーションの一例を示す。このアニメーションは、表示域5445のアニメーションがリモートデバイス5400の前面カメラによって取り込まれた女性のビデオを、リモートデバイス5400の背面カメラによって取り込まれた木のビデオと置き換えることを除いて、
図46の段階4630、4635、4640及び4645に示されるアニメーションと同様である。
【0436】
前述のように、
図46、
図47、
図48、
図49、
図51、
図52、
図53及び
図54は、ユーザインタフェースで実行されるカメラ切り換えアニメーションの種々の例を示す。一部の実施形態では、カメラ切り換えアニメーションによって、例えばテレビ会議マネージャ1604及び画像処理マネージャ1608によって実行できる、拡大縮小、合成及びパースペクティブ歪みなどのそれぞれのデュアルカメラ携帯デバイスの画像処理動作への変更を引き起こす。
【0437】
C.露出調整
デュアルカメラ携帯デバイスと別の携帯デバイスとの間のテレビ会議中に、異なる実施形態は、どちらかの携帯デバイスのカメラによって取り込まれた画像の露出を調整するための異なる技術を提供する。一部の実施形態は、デュアルカメラ携帯デバイスのユーザが他のデバイスのカメラによって取り込まれた画像の露出を調整するための技術を提供するが、他の実施形態は、ユーザがデュアルカメラ携帯デバイスのカメラによって取り込まれた画像の露出を調整するための技術を提供する。いくつかの例示的な技術について、以下で詳細に説明する。
【0438】
図55は、テレビ会議中に一部の実施形態のデュアルカメラ携帯デバイスでリモート露出調整動作を実行するためのプロセス5500を示す。以下の説明では、ユーザがリモートデバイスにその露出レベルを調整するように指示するデバイスは、ローカルデバイスと呼ばれる。一部の実施形態では、プロセス5500は、ローカルデバイスのテレビ会議マネージャによって実行される。さらに、プロセス5500について、
図56、
図57及び
図58に関して説明する。これらの図は、ローカルデバイスのユーザが露出調整動作を実行するようにリモートデバイスに要求するための種々の仕方を示す。
【0439】
図55に示すように、プロセス5500は、ローカルデバイスとリモートデバイスとの間のテレビ会議を(5505において)開始することによって始まる。その後、プロセス5500は、ローカルデバイスの表示画面に表示するためのリモートデバイスからのビデオを(5510において)受信する。次に、プロセス5500は、テレビ会議終了要求が受信されたかどうかを(5515において)判定する。上述のように、一部の実施形態は、ローカルデバイス又はリモートデバイスのユーザからテレビ会議終了要求を受信できる。プロセス5500がテレビ会議終了要求を受信した場合に、プロセス5500は終了する。
【0440】
しかし、プロセス5500がテレビ会議終了要求を受信しない場合に、プロセス5500は、その後、リモートデバイスのカメラの露出を調整するための要求が受信されたかどうかを(5520において)判定する。リモートデバイスのカメラの露出を調整するための要求が受信されたとプロセス5500が判定した場合に、プロセス5500は動作5510に戻り、リモートデバイスから取り込まれた追加のビデオを受信する。
図56、
図57及び
図58は、ユーザがこのような要求を行うための仕方を提供する3つの異なる例を示す。
図56、
図57及び
図58では、第1段階5610、5710及び5810はすべて、2つのビデオ、すなわちローカルデバイスのカメラによって取り込まれたビデオ及びリモートデバイスのカメラによって取り込まれたビデオを表示する、ローカルデバイス5600、5700及び5800のPIP表示5625、5750及び5835を示す。第1段階5610、5710及び5810では、背景表示5635、5760及び5845の男性は暗く、男性が適切に露出されていないことを示す。
【0441】
図56の第2段階5615は、ローカルデバイス5600のユーザがリモートデバイスのビデオを(例えば、背景表示5635のシングルタップを通じて)選択することによって露出調整を実行するようにリモートデバイスに要求するための1つの仕方を示す。この仕方では、UI5605は、ボックス5645によって規定されたユーザの関心領域の選択を、関心領域に対して露出調整を実行するようにリモートデバイスに指示し、したがって露出調整動作を実行するためにリモートデバイスに連絡するようにローカルデバイスのテレビ会議マネージャに指示したいというユーザの希望に自動的に関連付ける。規定の関心領域は、リモートデバイスによって露出調整の算出に使用される。
【0442】
図56の第2段階5615のように、
図57の第2段階5715は、第3段階5720に示す選択可能UI項目5770を表示するようにこの選択がUI5705に指示することを除いて、リモートデバイスのビデオのローカルユーザの選択を示す。第4段階5725は、ローカルデバイスのユーザが上述の露出調整動作を実行するようにリモートデバイスに指示するために選択可能UI項目5770を選択することを示す。
【0443】
図58の第2段階5815は、
図57の第2段階5715と同様であるが、リモートデバイスのビデオのユーザの選択が単一の選択可能UI項目を表示するようにUIに指示するのではなく、第3段階5820に示すように、ユーザの選択が、選択可能UI項目5855、5860、5865及び5870のメニューを表示するようにUI5805に指示する。選択可能UI項目は、オートフォーカス項目5855と、自動露出項目5860と、カメラ切り換え項目5865と、キャンセル項目5870とを含む。一部の実施形態では、カメラ切り換えの選択可能UI項目5865は、ローカルカメラ切り換え動作を要求するために使用されるが、他の実施形態では、カメラ切り換えの選択可能UI項目5865はリモートカメラ切り換え動作を要求するために使用される。第4段階5825は、ユーザが上述の露出調整動作を実行するようにリモートデバイスに指示するために自動露出項目5860を選択することを示す。
【0444】
ローカルユーザが露出調整動作を要求するようにローカルデバイスに指示したと(5520において)プロセス5500が判定した場合に、プロセス5500は、現在ビデオを取り込んでいてローカルデバイスに伝送しているカメラによって取り込まれたビデオの露出を調整するために、テレビ会議制御チャネルを通じてリモートデバイスにコマンドを(5525において)送信する。動作5525の後に、プロセス5500は、上述した動作5510に移行する。
【0445】
一部の実施形態では、リモートデバイスのユーザは、リモートデバイスが露出調整動作を実行する前に承認を与えるように要求されるが、他の実施形態では、リモートデバイスは、ローカルデバイスから要求を受信すると、露出調整動作を自動的に実行する。さらに、一部の実施形態では、テレビ会議機能のうちの一部は、テレビ会議マネージャ1604によって実施される。これらの実施形態のうちの一部では、テレビ会議マネージャ1604は、使用されているリモートデバイスカメラのセンサの露出設定を調整するようにCIPU1650に命令することによって、露出調整動作を実行する。
【0446】
図56、
図57及び
図58の最後の段階5620、5730及び5830は、リモートデバイスのビデオをより明るく示し、男性が適切に露出されていることを示す。
図56、
図57及び
図58は、リモートデバイスの露出を補正するという露出調整要求を受信する例を提供するが、一部の実施形態は、ローカルデバイスがローカルデバイスのカメラの露出を調整することをローカルデバイスのユーザが要求するための仕方を提供する。このような要求は、リモートデバイスにそのカメラの露出を調整するように要求するための、
図56、
図57及び
図58に示される仕方と同様にしてなされうる。
【0447】
上述の
図56〜58は、露出調整動作を実行するためのいくつかのユーザインタフェースを示す。一部の実施形態では、露出調整動作は、以下でさらに詳細に説明する露出調整プロセス5900の起動などのデュアルカメラ携帯デバイスの画像処理動作への変更を引き起こすことができる。露出調整動作は、例えば、カメラの露出レベル設定の変更のようなビデオを取り込んでいるデュアルカメラ携帯デバイスのカメラの動作の変更も引き起こすことができる。
【0448】
1.露出調整方法
図59は、
図16に示されるプロセスなどの、一部の実施形態の画像処理マネージャによって実行される露出調整プロセス5900を概念的に示す。一部の実施形態では、プロセス5900は、
図55、
図56、
図57及び
図58に関して上述した露出調整動作の一部である。このような実施形態のうちの一部では、画像処理マネージャ1608は、プロセス5900を実行し、テレビ会議マネージャ1604に命令を送信することによってカメラの露出設定を調整し、テレビ会議マネージャ1604は、上述のように、カメラセンサ405a又は405bを調整するようにCIPU1650に命令する。
【0449】
一部の実施形態では、プロセス5900は、
図9に示される画像処理層930によって実行されるが、他の実施形態では、プロセス5900は、
図4に示される統計エンジン465によって実行される。一部の実施形態は、テレビ会議中に(ローカル又はリモートの)デバイスのカメラによって取り込まれた画像に対してプロセス5900を実行するが、他の実施形態は、
図21に示されるプロセス2100(例えば、動作2110)の一部としてプロセス5900を実行する。一部の実施形態は、デュアルカメラ携帯デバイスのカメラによって取り込まれた、明る過ぎも暗すぎもしない画像を露出させるために露出調整動作を実行する。言い換えれば、プロセス5900は、詳細の量をできる限り最大にする方式で画像を取り込むために実行される。
【0450】
プロセス5900は、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像を(5905において)受信することによって始まる。一部の実施形態では、受信された画像がテレビ会議においてデバイスのカメラによって取り込まれた第1画像である場合に、プロセス5900は、第1画像に対して実行されない(すなわち、第1画像よりも前に、露出値を判定するための画像はない)。その後、プロセス5900は、受信した画像の規定の領域の画素値を(5910において)読み取る。異なる実施形態は、領域を異なるように規定する。このような実施形態のうちの一部は、正方形、長方形、三角形、円形などの異なる形状をした領域を規定するが、このような実施形態の他のものは、中央、上部中央、下部中央などの画像内の異なる位置に領域を規定する。
【0451】
次に、プロセス5900は、画像の規定の領域における画素値の平均を(5915において)算出する。プロセス5900は、画素値の算出された平均が特定の規定の値に等しいかどうかを(5920において)判定する。異なる実施形態は、異なる特定の値を定義する。例えば、一部の実施形態は、画像のダイナミックレンジのメジアン画素値として特定の値を定義する。一部の実施形態では、単一の値ではなく、値の範囲が定義される。このような実施形態では、プロセス5900は、画素値の算出された平均が規定の値の範囲内にあるかどうかを(5920において)判定する。
【0452】
画素値の算出された平均が特定の規定の値に等しくない場合に、プロセス5900は、算出された平均に基づいて露出値を(5925において)調整する。画素値の算出された平均が特定の規定の値に等しい場合に、プロセス5900は終了する。一部の実施形態では、露出値は、カメラセンサが光に露光される時間量を表す。一部の実施形態では、調整された露出値は、受信した画像を取り込んだカメラによって取り込まれるべき次の画像を露出させるために使用される。算出された平均に基づいて露出値が調整された後、プロセス5900は終了する。
【0453】
一部の実施形態では、画素値の算出された平均が特定の規定の値に等しくなる(又は、値の規定の範囲内に入る)まで、プロセス5900は反復して実行される。一部の実施形態は、テレビ会議中にプロセス5900を常に実行するが、他の実施形態は、テレビ会議中に規定の間隔(例えば、5秒、10秒、30秒など)でプロセス5900を実行する。そのうえ、テレビ会議中に、一部の実施形態のプロセス5900は、プロセス5900を実行する前に特定の画素値を動的に再定義する。
【0454】
図60は、一部の実施形態の露出調整動作の例を概念的に示す。例6000、6010及び6015のそれぞれは、デュアルカメラ携帯デバイスのカメラによって取り込まれた画像6020を左側に示す。具体的には、画像6020は、色の暗い人を太陽の前に示す。色の暗い人は、画像の露出レベルが、人の顔又は身体を露出させるのに十分なほど高くないことを示す。各例6000、6010及び6015の右側はそれぞれ、画像6020の後に取り込まれた画像6025、6030及び6035を示す。一部の実施形態では、画像6020及び右側の画像は、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオの画像である。他の実施形態では、画像6020及び右側の画像は、依然として、異なる時点でデュアルカメラ携帯デバイスのカメラによって取り込まれた静止画像である。
【0455】
第1例6000は、露出調整のされていない動作を示す。したがって、画像6025は、画像6020と同じように見える。露出調整が実行されなかったので、画像6025の人は、画像6020の人のように、色の暗いままである。
【0456】
第2例6010では、露出調整動作が画像6020に対して実行される。一部の実施形態では、露出調整動作は、規定の領域6040を使用して、プロセス5900によって実行される。露出調整動作に基づいて、カメラの露出レベルが調整され、カメラは、調整された露出レベルを使用して画像6030を取り込む。
図60に示すように、画像6030の人は、画像6025ほど暗くはない。しかし、画像6030の人の顔及び身体は、依然として明瞭ではない。
【0457】
第3例6015は、画像6020に対して実行される露出調整動作を示す。第2例6010と同様に、一部の実施形態の例6015の露出調整動作は、規定の領域6045を使用してプロセス5900によって実行される。露出調整動作に基づいて、カメラの露出レベルが調整され、カメラは、調整された露出レベルを使用して画像6035を取り込む。
図60で分かるように、人の顔及び身体が認識できるので、画像6035の人は完全に露出される。
【0458】
一部の実施形態では、規定の領域の選択は、デュアルカメラ携帯デバイスのユーザによってなされうる。デバイス自体はまた、CIPU400で上述した露出調整のフィードバックループを通じた露出調整動作のために、その規定の領域を自動的に調整できる。
図4の統計エンジン465は、取り込まれた画像に対して露出レベルが適切であるかどうかを判定し、それに応じて(例えば、センサモジュール415への直接接続を通じて)カメラセンサを調整するためにデータを収集してもよい。
【0459】
D.焦点調整
図61は、テレビ会議中にデュアルカメラ携帯デバイスのフォーカスを調整するためのプロセス6100を示す。以下の説明では、ユーザがリモートデバイスにそのカメラのフォーカスを調整するように指示するデバイスが、ローカルデバイスと呼ばれる。一部の実施形態では、
図61のプロセス6100は、ローカルデバイスのテレビ会議マネージャ1604によって実行される。また、このプロセスについて、以下で
図62及び
図63に関して説明する。これらの図は、リモートデバイスによって焦点調整動作が実行されることをローカルデバイスのユーザが要求するための2つの例示的な方式を提供する。
【0460】
図61に示すように、プロセス6100は、ローカルデバイスとリモートデバイスとの間のテレビ会議を(6105において)開始することによって始まる。その後、プロセス6100は、ローカルデバイスの表示画面に表示するためのビデオをリモートデバイスから(6110において)受信する。次に、6115では、プロセス6100は、テレビ会議終了要求が受信されたかどうかを判定する。上述のように、テレビ会議は、一部の実施形態では、ローカルデバイス又はリモートデバイスのユーザの要求により終了できる。プロセス6100がテレビ会議終了要求を受信した場合に、プロセス6100は終了する。
【0461】
そうでない場合に、プロセスは、リモートデバイスのリモートカメラのフォーカスを調整することの要求を受信したかどうかを(6120において)判定する。リモートデバイスのリモートカメラのフォーカスを調整するための要求を受信していないとプロセス6100が判定した場合に、プロセス6100は、動作6110に戻り、リモートデバイスから追加のビデオを受信する。
図62、
図63及び
図64は、異なる実施形態がこのような要求を行うためにユーザに提供する3つの異なるやり方を示す。
図62、
図63及び
図64では、第1段階6210、6310及び6472はすべて、2つのビデオ、すなわちローカルデバイスによって取り込まれたビデオ及びリモートデバイスによって取り込まれたビデオを表示するローカルデバイス6200、6300及び6471のPIP表示6225、6335及び6482を示す。
図62及び
図63の表示域1155及び1155は、会議終了ボタンを示す。しかし、
図64では、表示域1155のレイアウトは、上述した
図12の表示域1155のレイアウトと同じである。さらに、表示域1155に示されるカメラ切り換えボタン6488は、一部の実施形態ではローカルカメラ切り換え動作を、又は他の実施形態ではリモートカメラ切り換え動作を起動するために選択されうる。第1段階6210、6310及び6472に示すように、背景表示6235、6345及び6480に表示されるリモートデバイスのビデオは不鮮明である。
【0462】
図62の第2段階6215は、ローカルデバイスのユーザが(例えば、リモートデバイスのビデオのシングルタップ6240を通じて)リモートデバイスのビデオを選択するだけで焦点調整を要求するための1つの手法を示す。この手法では、UI6205は、ボックス6245によって規定されたユーザの関心領域の選択を、関心領域に対して(フォーカスなどの)動作を実行するようにリモートデバイスに指示し、したがって(焦点調整動作などの)調整動作を実行するためにリモートデバイスに連絡するようにローカルデバイス6200のテレビ会議マネージャ1604に指示したいというユーザの希望に自動的に関連付ける。規定の関心領域は、リモートデバイスによって焦点調整の算出に使用される。
【0463】
図63の第2段階6315は、同様に、(例えば、ユーザのリモートデバイスのビデオへのタップを通じて)ローカルユーザのリモートビデオの選択を示す。しかし、
図62に示される例とは異なり、
図63のこの選択は、第3段階6320に示すように、(選択可能なボタンとして実装できる)選択可能UI項目6355、6360、6365及び6370のメニューを表示するようにUI6305に指示する。これらの選択可能UI項目は、オートフォーカス項目6360と、自動露出項目6365と、カメラ切り換え項目6370と、キャンセル項目6355とを含む。一部の実施形態では、カメラ切り換えの選択可能UI項目6370は、ローカルカメラ切り換え動作を要求するために使用されるが、他の実施形態では、カメラ切り換えの選択可能UI項目6370は、リモートカメラ切り換え動作を要求するために使用される。その後、第4段階6325は、ローカルユーザがオートフォーカス項目6360を選択することを示す。
【0464】
図64の第2段階6474は、この場合もやはり同様に、(例えば、ユーザのリモートデバイスのビデオのタップを通じて)ローカルユーザのリモートビデオの選択を示す。しかし、
図63に示される例とは異なり、
図64のこの選択は、焦点調整動作を(すなわち、第2段階6474において)要求するようにUI6478に指示する。焦点調整動作が完了した後、UI6478は、選択可能なボタンとして実装できる選択可能UI項目6484及び6486のメニューを(すなわち、第3段階6476において)表示する。これらの選択可能UI項目は、自動露出項目6486とキャンセル項目6484とを含む。
【0465】
ローカルユーザが焦点調整動作を要求するようにローカルデバイスに指示したと(6120において)プロセスが判定した場合に、プロセス6100は、リモートデバイスが現在ビデオを取り込んで伝送しているカメラのフォーカスを調整するために、テレビ会議制御チャネルを通じてリモートデバイスにコマンドを(6140において)送信する。6140の後で、プロセスは、上述した6110に移行する。
【0466】
一部の実施形態では、リモートデバイスのユーザは、リモートデバイスがこの動作を実行する前に承認を与えなければならないが、他の実施形態では、リモートデバイスは、ローカルデバイスのための要求を受信すると、この動作を自動的に実行する。また、一部の実施形態では、焦点調整動作は、テレビ会議中に使用されているリモートデバイスのカメラのフォーカス設定を調整する。このような実施形態のうちの一部では、テレビ会議機能のうちの一部は、上述のテレビ会議モジュール1602によって実施される。これらの実施形態では、テレビ会議マネージャ1604は、使用されているリモートデバイスカメラのセンサを調整するようにCIPU1650に命令する。
【0467】
図62、
図63及び
図64の最後の段階6220、6330及び6476は、適切にフォーカスが合わされたリモートデバイスのビデオを示す。
図62、
図63及び
図64は、リモートデバイスのフォーカスを補正することの焦点調整要求を受信する例を提供するが、一部の実施形態により、ローカルデバイスのユーザは、ローカルデバイスがローカルデバイスのカメラのフォーカスを調整することを要求できる。このような要求は、リモートデバイスにそのカメラのフォーカスを調整するように要求するための、
図62、
図63及び
図64に示される手法と同様にしてなされうる。
【0468】
図62、
図63及び
図64は、ユーザが焦点調整動作を実行できる3つの例示的なユーザインタフェースを示す。一部の実施形態では、焦点調整動作によって、カメラのフォーカスの変更などの、UIに表示されるビデオを取り込んでいるデュアルカメラ携帯デバイスのカメラの動作への変更が生じる。
【0469】
図56及び
図62で上述したように、規定の関心領域はそれぞれ、リモート携帯デバイスによってビデオの露出調整及び焦点調整の計算に使用された。しかし、一部の他の実施形態では、ユーザによる関心領域の選択は、1つ以上の動作を実行するようにリモートデバイスに指示するために使用されうる。例えば、一部の実施形態では、露出調整及び焦点調整の両方は、規定の関心領域に基づいて実行され、それによって、両方の動作を実行するようにリモートデバイスに指示されてもよい。
【0470】
E.フレームレート制御
テレビ会議中に、一部の実施形態は、デュアルカメラ携帯デバイスのカメラによって取り込まれるビデオの画像がテレビ会議において他のデバイスに伝送される速度(すなわち、フレームレート)の調整又は維持を希望してもよい。例えば、固定帯域幅を仮定すると、このような実施形態のうちの一部は、ビデオの画像の画質を向上させるためにビデオのフレームレートを減少させるが、このような実施形態の他のものでは、ビデオを平滑化するためにビデオのフレームレートを増加させる(すなわち、ジッタを減少させる)。
【0471】
異なる実施形態は、テレビ会議中にビデオの画像のフレームレートを制御するための異なる技術を提供する。以前に上述した一例は、カメラによって取り込まれた画像が処理される速度を制御するためのカメラのセンサモジュール415のVBIを調整する。別の例として、
図9に示されるテレビ会議モジュール925の管理層935の一部の実施形態は、画像を破棄することによってフレームレートを制御する。同様に、画像処理層930の一部の実施形態は、画像を破棄することによってフレームレートを制御する。一部の実施形態は、汎用伝送バッファ3120内のフレームの破棄などの、フレームレートを制御するためのさらに他の技術を提供する。
【0472】
V.デュアルカメラ
A.ビューの結合
1.ピクチャインピクチャ:2つのリモートカメラの表示
一部の実施形態により、デュアルカメラ携帯デバイスは、テレビ会議中に携帯デバイスから取り込まれたビデオ及び別のデュアルカメラ携帯デバイスから取り込まれたビデオをいくつかの表示構成のいずれかで表示できる。
図65は、1つ以上のデュアルカメラ携帯デバイスから取り込まれたビデオのための異なる表示構成の例を示す。
図65では、デュアルカメラ携帯デバイス6500(デバイスA)のユーザ及び第2デュアルカメラ携帯デバイス6505(デバイスB)の第2ユーザは、互いとのテレビ会議を行っている。
【0473】
図65は、デバイスAのための表示構成の4つの例を左に示す。デバイスAのための4つの表示構成は、第1ビュー6510、第2ビュー6515、第3ビュー6520及び第4ビュー6525である。さらに、
図65はまた、デバイスBのための表示構成の4つの例を右に示す。デバイスBのための4つの表示構成は、第1ビュー6565、第2ビュー6570、第3ビュー6575及び第4ビュー6580である。この例では、デバイスAは、デバイスAのカメラから取り込まれた2つのビデオのみを表示し、デバイスBは、デバイスAのカメラから取り込まれた2つのビデオだけでなく、デバイスBのカメラから取り込まれたビデオの一方又は両方を表示する。
【0474】
第1ビュー6510では、デバイスAのUI6585は、合成表示6512を提供する。合成表示6512は、2つの表示域、すなわちデバイスAの背面カメラから取り込まれたビデオを表示するための表示域6530と、デバイスAの前面カメラから取り込まれたビデオを表示するための表示域6535とを含む。この例では、表示域6530は合成表示6512の上半分にあり、表示域6535は合成表示6512の下半分にある。この2つの表示域は、第1ビュー6510では、等しいサイズである。上部表示域6530は、山のビデオを表示しており、これは、デバイスAの背面カメラによって取り込まれている山と想定される。表示域6535は、木と帽子を被った男性とを表示しており、これは、デバイスAの前面カメラによって取り込まれている木と帽子を被った男性とであると想定される。
【0475】
第2ビュー6515のUI6585は、(デバイスAの前面カメラから取り込まれたビデオを表示する)表示域6535がこの時点で合成表示6517の上半分にあり、かつ(デバイスAの背面カメラから取り込まれたビデオを表示する)表示域6530が合成表示6517の下半分にあることを除いて、第1ビュー6510と同じ2つの表示域を含む合成表示6517を提供する。
【0476】
第3ビュー6520では、UI6585は、PIP表示6595を提供する。PIP表示6595は、2つの表示域、すなわちデバイスAの前面カメラから取り込まれたビデオを背景表示域として表示する表示域6535と、デバイスAの背面カメラから取り込まれたビデオを前景挿入表示域として表示する表示域6530とを含む。このビューでは、背景表示域6535はPIP表示6595の大半を占めるが、挿入表示域6530は背景表示域6535よりも小さく、この一部分に重なる。
【0477】
第4ビュー6525のUI6585も、第3ビュー6520に示す表示域6530及び6535を含むPIP表示6598を提示する。PIP表示6595とは異なり、PIP表示6598は、(デバイスAの背面カメラから取り込まれた)表示域6530を背景メイン表示として含み、(デバイスAの前面カメラから取り込まれた)表示域6535を前景挿入表示として含む。さらに、PIP表示6598は、横ビューで提示される(すなわち、PIP表示6598の幅は高さよりも大きい)。
【0478】
上記の例は、デバイスAのUIのための4つの取りうる合成ビューを示し、そのうちの2つでは、第1デバイスの2つのカメラを表示するための2つの表示域6530及び6535が垂直に並べられ、2つはPIPビューである。他のビューも、デバイスAのUIで可能である。例えば、2つの表示域は、水平又は斜めに並べられることができ、又は異なるPIPビューが使用されうる。
【0479】
デバイスBのために示された種々のビューは、デバイスBのUIのための異なるビューが可能であることを示す。これらのビューは、デバイスAの両方のカメラだけでなく、デバイスBの1つ以上のカメラから取り込まれたビデオを含む。デバイスBの第1ビュー6565では、デバイスBのUI6590は、PIP表示6568を提供する。PIP表示6568は、デバイスAに表示される合成表示6512と同一である合成表示域6569だけでなく、デバイスBのカメラの一方(例えば、前面カメラ)によって取り込まれたビデオを表示する挿入表示域6550を含む。合成表示域6569は、デバイスAの背面カメラから取り込まれたビデオを表示するための表示域6531と、デバイスAの前面カメラから取り込まれたビデオを表示するための表示域6536とを含む。デバイスAからのビデオを表示する合成表示6569はPIP表示6568の大半を占めるが、挿入表示域6550は合成表示6569よりも小さく、これに重なる。表示域6550は、笑顔のビデオを表示しており、これは、デバイスBの前面カメラによってビデオが取り込まれている笑顔と想定される。
【0480】
第2ビュー6570のデバイスBのUI6590は、PIP表示6572を提供する。PIP表示6572は、(デバイスBの前面カメラから取り込まれたビデオを表示する)表示域6550と、デバイスAのカメラから取り込まれたビデオを表示する表示域6531及び6536を有する合成表示6573とを含む。合成表示6573は、デバイスAのための第2ビュー6515の合成表示6517と同一であり、PIP表示6572の大半を占める。第1ビュー6565のPIP表示6568と同様に、表示域6550は、合成表示6573よりも小さく、これに重なる。具体的には、両方のビューにおいて、表示域は、デバイスAの背面カメラから取り込まれたビデオを表示する表示域6531の一部分に重なる。
【0481】
第3ビュー6575では、UI6590は、デバイスAのための第3ビュー6520のPIP表示6595と同様であるPIP表示6577を提供する。PIP表示6577も、背景表示域6536に重なる第2挿入表示域として追加の表示域6550を含む。2つの挿入表示域6531及び6550は、背景主要表示域6536の下部に水平にタイル表示される。
【0482】
第4ビュー6580のUI6590は合成表示6582を提供する。合成表示6582は、3つの表示、すなわちPIP表示6583と、表示域6550と、(例えば、デバイスBの背面カメラによって取り込まれたビデオを表示するための)表示域6540とを含む。PIP表示6583は、デバイスAのための第4ビュー6525のPIP表示6598と同一であり、合成表示域6582の大半を占める。表示6540及び6550は、PIP表示域6583よりも小さく、この下に水平にタイル表示される。
【0483】
図65は、デバイスBのための4つの取りうるビューを示しているが、多くの他のビューが可能である。デバイスAからのビデオの背景合成表示は、垂直ではなく水平にタイル表示でき、背面カメラ表示域ではなくデバイスAの前面カメラ表示域に挿入が重なることができ、大きい方の表示域は、デバイスAのカメラではなく、デバイスBのカメラ(群)を表示でき、挿入は異なるように位置することなどができる。
【0484】
デバイスAの各ビューから生じる矢印6560の各集合は、デバイスAに示される表示とデバイスBに示される表示の間に相関関係がある必要はないことを示す。例えば、デバイスAが(例えば、デバイスAのユーザによるその構成の選択に従って)ビュー6510の構成でそのビデオを表示している場合であっても、デバイスBは、(例えば、デバイスBのユーザによるその構成の選択に従って)4つの示された構成のいずれか又は
図65に示されていない複数の他の構成のいずれかでビデオを表示できる。言い換えれば、デバイスAのための表示構成は、デバイスBの表示構成とは無関係である。一部の実施形態は、あるデバイスから別のデバイスに表示域を伝送せず、単にビデオを(例えば、符号化された形で)伝送し、その対応する表示域にデバイスによって表示される。
【0485】
2.特殊PIP
一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、テレビ会議中にPIP表示においてビデオの前景を別のビデオに重畳することができる。一部の実施形態では、ビデオの前景は、単一のカメラによって取り込まれた単一のビデオの表示として見えるような仕方で、他のビデオに混合する。
図66は、PIP表示において背景ビデオへの挿入ビデオの前景への重畳のこのような一例を示す。
【0486】
図66は、このビデオ重畳動作を、UI6670の7つの動作段階6620、6625、6630、6635、6640、6660及び6665として示す。第1段階6620は、リモートデバイスとのテレビ会議中のPIP表示6682を有するデュアルカメラ携帯デバイス6600のUI6670を示す。第1段階6620に示すように、PIP表示6682は2つのビデオ表示、すなわち背景メイン表示6610と、前景挿入表示6605とを含む。背景メイン表示6610はUI6670の大半を占めるが、前景挿入表示6605は背景メイン表示6610よりも小さく、これに重なる。
【0487】
この例では、背景表示域6610は、山のビデオを表示しており、これは、リモートデバイスのカメラのうちの一方によって取り込まれている山であると想定される。前景挿入表示域6605は、帽子を被った人のビデオを表示しており、これは、この例では、ローカルデバイスのカメラのうちの一方によってビデオが取り込まれる人であると想定される。PIP表示6682の下は、選択することによって(例えば、ボタンをシングルタップ又はダブルタップすることによって)ユーザがテレビ会議を終了できる会議終了と標示された選択可能UI項目6685(例えばボタン6685)である。
【0488】
第2段階6625は、選択可能メニュー6675の起動を示す。一部の実施形態では、選択可能UI項目6675のメニューは、PIP表示域6682を選択することによって(例えば、タッチすることによって)起動されうる。このような起動動作の代わりに、又はこれと共に、一部の実施形態により、ユーザは、異なるタッチスクリーン動作を通じてか、又はデバイスの1つ以上の他の物理的入力を使用するなどの、他の動作を通じて選択可能UI項目6675のメニューを起動することもできる。
【0489】
第3段階6630は、ビデオ重畳動作を選択するための選択可能UI項目の起動された集合を有するUI6670を表示する。この例では、いくつかの選択可能UI項目を有するポップアップメニュー6675が、PIP表示6682上に表示される。選択可能UI項目6675のメニューは、「PIPフリップ」選択可能UI項目6640(例えばボタン6640)と、「特殊PIP」選択可能UI項目6645(例えばボタン6645)と、「キャンセル」選択可能UI項目6690(例えばボタン6690)とを含む。この例では、「PIPフリップ」ボタン6640を選択することによって、UI6670は(次のセクションで詳細に説明するように)背景表示6610を挿入表示6605と交換し、「特殊PIP」ボタン6645を選択することによって、UI6670はビデオ重畳動作を開始し、「キャンセル」ボタン6690を選択することによって、PIP表示6682からポップアップメニュー6675を削除する。他の実施形態は、異なる又はこれより多い項目をPIPポップアップメニュー6675に含む。
【0490】
第4段階6635は、ユーザが(例えば、自身の指6695でボタン6645をタップすることによって)「特殊PIP」ボタン6645を選択した後のUI6670を示す。この選択は、UI表示6670上でのボタン6645の強調表示によって示される。一部の実施形態は、異なる標識(indication)表示(例えば、選択された項目の境界又は選択された項目のテキストの強調表示)を使用する。
【0491】
第5段階6640は、ビデオ重畳動作が始まった後のUI6670を示す。この段階で、UI6670により、ユーザは、重畳されるビデオにおいて、前景としてどのビデオから抽出したいかと、背景としてどのビデオを使用した以下を選定できる。UI6670は、いくつかの選択可能UI項目がPIP表示6682上に表示されたポップアップメニュー6680を通じてオプションを提供する。選択可能UI項目のポップアップメニュー6680は、「挿入を選択」選択可能UI項目6655(例えばボタン6655)と、「メインを選択」選択可能UI項目6650(例えばボタン6650)と、「キャンセル」選択可能UI項目6692(例えばボタン6692)とを含む。
【0492】
「挿入を選択」ボタン6655の選択によって、UI6670は、ローカルデバイスのカメラからの挿入ビデオ6605の前景(すなわち、帽子を被った男性)をリモートデバイスのカメラからの背景メインビデオ6610上に重畳する。一方、「メインを選択」ボタン6650の選択によって、UI6670は、リモートデバイスのカメラからの背景メインビデオ6610の前景(すなわち、山)をローカルデバイスのカメラからの挿入ビデオ6605上に重畳する。一部の実施形態では、これによって、挿入表示域6605に現在あるビデオがUI6670のほとんどを占有し、主要表示域6610に現在あるビデオは、この時点で主要ビデオに重畳されるように、2つのビデオフィードの切り換えが生じる。「キャンセル」ボタン6692の選択は、ビデオ重畳動作を中止し、PIP表示域6682からポップアップメニュー6680を削除する。
【0493】
第6段階6660は、ユーザが(例えば、自身の指6695でボタン6655をタップすることによって)「挿入を選択」ボタン6655を選択した後のUI6670を示す。この選択は、UI表示6670上でのボタン6655の強調表示によって示される。一部の実施形態は、異なる標識表示(例えば、選択された項目の境界線又は選択された項目のテキストの強調表示)を使用する。
【0494】
第7段階6665は、ビデオ重畳動作が完了した後のUI6670を示す。UI6670に示すように、挿入表示域6605の前景(すなわち、帽子を被った男性)が表示域6605から抽出される。挿入表示6605のウィンドウフレーム及び背景(すなわち、前景以外の他のすべてのもの)も、画面から削除される。最後に、前景(すなわち、帽子を被った男性)は、単一のビデオであるように見える仕方で背景ビデオ6610に混合される。挿入ビデオの背景を削除するために種々の異なる技術が使用されうる。一部の実施形態は、他の画素に対して移動していない画素を識別し、一定であるパターン又は色を探し、前景を含む画像と比較されるベースライン画像を使用し、差分を減算するか、又は異なる技術を使用する。
【0495】
図66の例は背景表示域6610に重畳された場合に挿入表示域6605の前景がUI6670の同じ所にとどまることを示すが、これは、重畳がどのように機能できるかの一例にすぎない。一部の実施形態は、前景ビデオをUI6670内の特定の位置(例えば、中央、隅の1つなど)に移動する。セクションIV.A.1及びIV.A.3に示される機能と同様に、一部の実施形態により、ローカルデバイスのユーザは、UI内で重畳された前景ビデオをドラッグしたり、又は重畳された前景ビデオのサイズを変更したりできる。
【0496】
ビデオ画像のどの部分(群)が上述のビデオ重畳動作のための「前景」であるかを判定するために異なる技術が使用されうる。一部の実施形態のこのような1つの方法は、あるとすれば、ビデオ画像のどの部分(群)が動的であるかを判定する。ビデオ画像の背景は一般に静的である(すなわち、動きがない)ので、動的な部分は「前景」であると考えられる。このような実施形態では、ビデオ画像は、特定の期間にわたって分析される。特定の期間の特定の画素の値の差が、規定のしきい値(例えば、5%、10%、15%)よりも大きくないならば、特定の画素は静的な画素であると考えられる。ビデオ画像の各画素が分析された後で、ビデオ画像の動的な(すなわち、静的でない)画素は、ビデオ画像の「前景」であると考えられる。
【0497】
図67は、例えば、テレビ会議マネージャ1604又は画像処理マネージャ1608によって実行されうるビデオ画像の前景を決定するためのこのような技術の一例を示す。具体的には、
図67は、帽子を被った人及び木を示すビデオの6つの画像6705〜6730のシーケンスを示す。この例では、人は、まったく静かに立っているわけではなく、話していてもよいことが想定される。上述のように、ビデオ画像の各画素は、画素が動的か静的かを判定するために分析される。例えば、画像6705〜6730の画素6735の値の差分は、それが規定のしきい値よりも大きいかどうかが判定される。この場合、画素6735は人ではなく地面の一部を表すので、画素6735は静的であると考えられる。画像6705〜6730の画素のすべてが分析された後、画像内の人が動的であり、画像の残りの部分が静的であると判定される。したがって、人は、上記で
図66に関して説明した動作によって抽出される「前景」である。
【0498】
3.ピクチャインピクチャ表示におけるビデオの交換
一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、テレビ会議中にPIP表示内の2つの表示域を交換できる(すなわち、挿入表示域がPIP表示内の背景表示域になり、背景表示域が挿入表示域になる)。
図68は、テレビ会議中にPIP表示6682の挿入表示域6605を背景表示域6610と交換する一例を示す。
【0499】
図68は、PIP交換動作を、
図66のデバイス6800のUI6670の8つの動作段階として示す。
図68の最初の3つの段階は、
図66の最初の3つの段階と同一である。これらの段階では、ユーザは、ローカルデバイスのタッチスクリーンを使用した選択を通じて、UI6670内でメニュー6675を展開した。
【0500】
図68の第4段階6840は、ユーザが(例えば、自身の指6695でボタン6640をタップすることによって)「PIPフリップ」ボタン6640を選択した後のUI6670を示す。この選択は、UI表示6670上でのボタン6640の強調表示によって示される。一部の実施形態は、異なる標識表示(例えば、選択された項目の境界線又は選択された項目のテキストの強調表示)を使用する。
【0501】
第5段階6845は、PIP交換動作が開始した後のUI6670が示されている。一部の実施形態は、フリップ動作を通じた挿入表示6605と背景表示6610との交換をアニメーション化する。
図68は、このようなアニメーションの一例を示す。この例では、アニメーションは、(交換動作が実行される前の)PIP表示6682が片側にあり、(交換動作が実行された後の)新たなPIP表示6684が他の側にあるビューペインのフリップを通じて説明されうる。ビューペインは、PIP表示6682の中央にある垂直軸6686のまわりを180度回転する。この第5段階6845で、ビューペインは、垂直軸6686のまわりを回転し始める。
【0502】
第6段階6850では、ビューペインは、約90度回転したように示される。これは、画面の中央に表示された細い線6688(すなわち、ビューペインの端)によって示される。第7段階6855は、完了に近いビューペインの回転を示す。新たなPIP表示6684は、ビューペインの他の側から見えはじめ、デバイスの画面を埋めるように水平に拡張する。PIP表示6684は、交換動作が実行された後の2つの表示域6605及び6610を含む。(ローカルデバイスのカメラからの)帽子を被った男性のビデオを提示する表示域6605はこの時点でPIP表示6684の背景にあり、(リモートデバイスのカメラからの)山のビデオを提示する表示6610はこの時点で表示6605に重なるPIP表示6684の前景にある。第8段階6860は、交換表示アニメーションの完了を示す。
【0503】
図68に示されるアニメーションがPIP挿入/背景交換動作の多数の取りうるアニメーションのうちの1つにすぎないことが当業者には理解されよう。例えば、異なる実施形態は、水平軸に沿ってビューペインを回転する、2つの表示域を瞬時に交換する、他方の表示域を縮めながら一方の表示域を拡張することなどができる。一部の実施形態は、交換動作に常に使用される1つのアニメーションを提供するが、他の実施形態により、ユーザは、いくつかのアニメーションから選定したり、異なるアニメーションを(例えば、ランダムな選択を通じて)使用したりできる。そのうえ、交換動作によって、ユーザの入力に応答してビデオの拡大縮小及び合成をテレビ会議マネージャ1604に変更させるなどの、デュアルカメラ携帯デバイスの画像処理動作への変更を生じさせることができる。
【0504】
4.コーナー向けスナップ
本発明の一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、合成表示を形成する1つ以上の表示域を移動させることによって、合成表示を変更できる。このような移動の一例は、セクションIV.A.1で上述した。挿入表示のこのような移動は、PIP表示が複数の挿入表示域を含む場合にも可能である。
【0505】
図69は、テレビ会議中に実行されるこのような例を示す。
図69に示されるこの例は、
図69がこのような1つの挿入表示域のみではなく、2つの挿入表示域6905及び6910を含むPIP表示6965の挿入表示域6910を移動することを示すことを除いて、
図3に示される例と同様である。
【0506】
図69では、携帯デバイス6900のUI6960は、別のデバイスのリモートユーザとのテレビ会議中にPIP表示6965を提示する。
図69のPIP表示6965は、3つのビデオ表示、すなわち背景メイン表示6915と、2つの前景挿入表示6905及び6910とを含む。この例では、背景メイン表示6915は、歌ってギターを演奏している人のビデオを提示し、これは、リモートデバイスの背面カメラによって取り込まれたビデオであると想定される。前面の挿入表示6905は、ラケットを持っている人のビデオを提示し、これは、この例では、ローカルデバイスの背面カメラによって取り込まれたビデオであると想定される。他方の前景挿入表示域6910は、帽子を被った人のビデオを提示し、これは、この例では、ローカルデバイスの前面カメラによってビデオが取り込まれている帽子を被った人であると想定される。PIP表示6965の下は、項目を選択することによってユーザがテレビ会議を終了できる「会議終了」と標示された選択可能UI項目6970(例えばボタン6970)である。
【0507】
このPIP表示6965は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、他の合成ビューを提供してもよい。例えば、リモートデバイスからのビデオのための大きい方の背景表示6915を有する代わりに、大きい方の背景表示6915はローカルデバイスからのビデオのものであり、小さい方の前景挿入表示6905及び6910は、リモートデバイスからのビデオのものでありうる。また、一部の実施形態により、ローカルビデオ及びリモートビデオは、挿入表示6905及び6910が片側にあり、背景表示6915が別の側にあるように有するか、又は3つすべてが隣り合うように有するUI6960に表示されうる。他の実施形態では、PIP表示6965はまた、大きい方の背景表示6915及び/又は小さい方の前景挿入表示を含んでもよい。一部の実施形態では、PIP表示6965の方式又はデフォルトの表示モードは、ユーザによって指定されてもよい。
【0508】
図69は、デバイス6900のUI6960の2つの挿入表示域のうちの1つの移動を、5つの異なる動作段階6920、6925、6930、6935及び6940として示す。第1段階6920は、デバイス6900のローカルユーザとリモートデバイスのリモートユーザとの間のテレビ会議中のUI6960を示す。
【0509】
第2段階6925は、ユーザが挿入表示域6910を選択することによってコーナー向けスナップ動作を開始することを示す。この例では、挿入表示域6910内の任意の位置に指6950を置くことによって選択がなされる。図示のように、この選択は、挿入表示6910の太い境界線6962として表示される。異なる実施形態は、挿入表示6910を強調表示することによって、挿入表示6910を振動させることによってなど、異なる仕方でこのような選択を示してもよい。
【0510】
第3段階6930は、ユーザがPIP表示6965内のあるエリアからこのPIP表示6965内の別のエリアにPIP表示6965の挿入表示域6910を移動させ始めた後のUI6960を示す。この例では、挿入表示域6910は、矢印6955によって示されるように、PIP表示6965の右下隅からこの表示の左上隅に移動し始めている。挿入表示6910は、ユーザが挿入表示691を選択した後に自身の指6950をPIP表示6965の右上隅に向かってドラッグすることによって移動される。一部の実施形態は、PIP表示6965において挿入表示6910を移動させるための他の技術を提供する。
【0511】
第4段階6935は、ユーザが自身の指6950をデバイス6900の画面から離した後の状態にあるUI6960を示す。この状態では、挿入表示域6910は、第3段階におけるユーザの指の移動に基づいて識別されたPIP表示6965の右上隅に向かって依然として移動している。言い換えれば、指6950がPIP表示6965の右上隅に向かっての挿入表示6910の移動を開始した後、UI6960は、指6950が離れた後でさえもこの移動を維持する。この移動を維持するため、一部の実施形態のUI6960は、ユーザが指を離す前に、ユーザのドラッグ動作が特定のしきい値量よりも大きい(例えば、特定の距離又は特定の時間の長さよりも大きい)ことを必要とする。そうでない場合に、これらの実施形態は、挿入表示域をやや移動させるか又はまったく移動させない後でこの挿入表示域をその元の右下隅位置に保つ。
【0512】
しかし、一部の実施形態では、挿入表示域がその新たな位置に到達する前にユーザが自身のドラッグ動作を止めた後でさえも挿入表示域が移動できるが、他の実施形態では、挿入表示域がその新たな位置に到達するまで自身のドラッグ動作を維持するようにユーザに要求する。一部の実施形態は、挿入表示域を移動するためのさらに他の技術を提供する。例えば、一部の実施形態では、表示域6910が実際に移動始める前に表示域6910をどこに向けるべきかなどをユーザが指定することが必要とされてもよい。一部の実施形態は、携帯デバイスを異なる角度に傾斜させるだけで表示域がスライド可能であり、コーナー向けスナップされうる。
【0513】
第5段階6940は、挿入表示域6910がPIP表示域6965の右上隅でその新たな位置に到達した後のUI6960を示す。第5段階における太い境界線6962の除去は、コーナー向けスナップ動作が完了したことを示す。
【0514】
上述の第3段階6930、第4段階6935及び第5段階6940に示されている移動を容易にするため、一部の実施形態のUI6960は、ユーザが挿入表示域6910をPIP表示6965の隅に向かって移動させると挿入表示域6910がその隅にすばやくスナップされうるスナップルールを採用する。例えば、ユーザが特定の隅に向かってしきい値量を超えて挿入表示域6910をドラッグした場合に、一部の実施形態のUI6960は、挿入表示6910の動きの方向を識別し、動きがしきい値量を超えたと判定し、その後、挿入表示6910がスナップされうるUI6960内の次のグリッド点をユーザがさらに入力しなくても、挿入表示域6910を自動的に移動する。一部の実施形態では、挿入表示6910をスナップするために提供されるグリッド点のみが、PIP表示6965の4つの隅におけるグリッド点である。他の実施形態は、UI6960において(例えば、PIP表示6965において)、挿入表示6910をスナップできる他のグリッド点を提供する。
【0515】
さらに他の実施形態は、挿入表示域6910をPIP表示の任意の点に配置できるように、グリッド点を採用しなくてもよい。さらに他の実施形態は、ユーザがUIのグリッド点機能へのスナップをオン又はオフにできる機能を提供する。さらに、異なる実施形態により、ユーザは、デバイスから取り込まれたビデオに加えて、アイコンなどの種々の項目に対してコーナー向けスナップ動作を実行できる。前述のように、合成表示の表示域(群)の移動によって、ユーザの入力に応答してテレビ会議マネージャ1604に合成表示で表示域を再合成させるなどの、デュアルカメラ携帯デバイスの画像処理動作への変更を引き起こすことができる。
【0516】
5.プッシュアンドスナップ
図69の例は、デュアルカメラ携帯デバイスのユーザが2つの挿入表示域のうちの1つを、PIP表示のある隅から挿入表示によって占有されていない別の隅に移動できるコーナー向けスナップ動作を示す。一部の実施形態により、第1挿入を第2挿入の位置に移動し、また、第2挿入を新たな位置にプッシュするプッシュ機能が可能になる。
図70は、テレビ会議中に実行されるこのような一例を示す。
【0517】
図70は、PIP表示のある隅からPIP表示の別の挿入表示によって占有された別の隅への挿入表示の移動を、このUI6960の6つの異なる段階7020、7025、7030、7035、7040及び7045として示す。第1段階7020は、デバイスのローカルユーザとリモートデバイスのリモートユーザとの間のテレビ会議中のUI6960を示す。
図70のUI6960は、テレビ会議が始まった後の
図69の第1段階に示されているのと同じPIP表示であるPIP表示6965を示す。この例では、ローカルユーザのデバイスによって取り込まれたビデオが挿入表示域6905及び6910に表示され、リモートユーザのデバイスによって取り込まれたビデオが背景表示域6915に表示されている。
【0518】
第2段階7025は、ユーザが挿入表示域6905を選択することによってコーナー向けスナップ動作を開始することを示す。この例では、挿入表示域6905内の任意の位置に指7055を置くことによって選択がなされる。図示のように、この選択は、挿入表示6905の太い境界線7065として表示される。異なる実施形態は、表示域6905を強調表示することによって、表示域6905を振動させることによってなど、異なる仕方でこのような選択を示してもよい。
【0519】
第3段階7030は、矢印7050によって示されるように、(第3段階において挿入表示6905を選択した後にPIP表示6965の右下隅に向かって自身の指7055をドラッグすることによって)ユーザがPIP表示6965の左下隅からPIP表示6965の右下隅に挿入表示域6905を移動し始めた後のUI6960を示す。一部の実施形態は、PIP表示6965において挿入表示域6905を移動させるための他の技術を提供する。
【0520】
第4段階7035は、挿入表示域6905が挿入表示域6910と接触した後のUI6960を示す。接触すると、挿入表示域6910は、次の最も近い隅に向かって移動する。この例では、挿入表示域6910は、(矢印7075によって示される)PIP表示6965の右上隅の方向に移動し始める。このプッシュ動作の起動は、挿入表示域6910の太い境界線7070として表示される。異なる実施形態は、表示6910を強調表示することによってなどの異なる仕方でこのような起動を示してもよい。
【0521】
第5段階7040は、以前は挿入表示域6910によって占有されていた右下隅に挿入表示域6905がスナップした後の状態にあるUIを示す。この状態では、挿入表示域は、PIP表示6965の右上隅に向かってなおも移動している。また、太い境界線7065は、もはや表示されない。第3段階7030からのユーザのドラッグ動作が、挿入表示域6905を右隅にスナップさせるしきい値よりも大きい限り、挿入表示域6910はその隅から除去され、次に近い隅までわざわざスナップする。
【0522】
一部の実施形態は、どの方向に第2挿入表示域6910をプッシュするべきかを判定するためのルールの集合を含む。
図70に示されるケースでは、一部の実施形態は、挿入表示域の回転を継続しようとする。すなわち、表示域6905が反時計回り方向に移動されるので、表示域6910も反時計回りに移動される。一部の実施形態は、プッシュされた挿入表示域6910が移動してリスト上の占有されていない最初の位置を選択できる取りうる位置の階層を提供する。例えば、右下の挿入表示域が、左下から来た挿入表示域によってプッシュされる場合に、右上隅は、このようなリストの最初の位置でありうる。しかし、第3挿入表示域が右上隅に既に存在しているならば、一部の実施形態は、リスト上の次のオプション(例えば、左上隅、中央、又は左下隅)に移動するだろう。他の実施形態は、第2挿入表示域で第3挿入表示域をプッシュし、その結果、デバイスは第3挿入表示域のための新たな位置を決定する必要がある。
【0523】
第6段階7045は、挿入表示域6910がPIP表示域6965の右上隅でその新たな位置に到達した後のUI6960を示す。この段階における太い境界線7070の除去は、コーナー向けスナップアンドプッシュ動作が完了したことを示す。
図68に関して説明したコーナー向けプッシュ動作と同様に、合成表示の表示域(群)の移動によって、ユーザの入力に応答してテレビ会議マネージャ1604に合成表示における表示域を再合成させるなどの、デュアルカメラ携帯デバイスの画像処理動作への変更を引き起こすことができる。
【0524】
6.回転
一部の実施形態は、テレビ会議に使用される携帯デバイスのユーザが会議中にデバイスを回転した場合に、テレビ会議中に提示されるPIP表示を回転する。
図71は、デバイスが垂直位置から水平位置に回転した場合のデバイス7100のUI表示7175の回転を示す。画面の長辺が垂直である場合にデバイス7100は垂直に保持されているが、画面の長辺が水平である場合にデバイス7100は水平に保持されている。
図71に示される例では、UI表示7175は、デバイスの垂直保持に最適化された縦ビューからデバイス7100の水平保持に最適化された横ビューに回転する。この回転機能によって、携帯デバイス7100が垂直又は水平のどちらかに保持されている場合にユーザは直立位置に表示されたUI7175を見ることができる。
図71に示されるこの例は、
図71が、1つの挿入表示域のみではなく2つの挿入表示域を含むPIP表示を回転することを示すことを除いて、
図34に示される例と同様である。
【0525】
図71では、携帯デバイス7100のUI7175は、別の携帯デバイスのリモートユーザとのテレビ会議中にPIP表示7180を提示する。
図71のPIP表示7180は、3つのビデオ表示、すなわち背景メイン表示7115と、2つの前景挿入表示7110及び7160とを含む。この例では、背景メイン表示7115は、山のビデオを提示し、これは、リモートデバイスの前面カメラ又は背面カメラによって取り込まれたビデオであると想定される。前面挿入表示7110は、部屋にいる笑顔のビデオを提示し、これは、ローカルデバイスの前面カメラ又は背面カメラによって取り込まれたものと想定される。他方の前景挿入表示7160は、歌っているギター奏者のビデオを表示し、これは、ローカルデバイスの他方のカメラによってビデオが取り込まれているギター奏者であると想定される。PIP表示7180の下は、ユーザがテレビ会議を終了するために(例えば、シングルフィンガータップを通じて)選択してもよい会議終了ボタン7155である。このPIP表示は、リモートデバイス及びローカルデバイスによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、タイル表示されたビュー又は異なるPIP表示などの、他の合成ビューを提供してもよい。
【0526】
図71は、UI7175の回転を、6つの異なる動作段階7120、7125、7130、7135、7140及び7145として示す。第1段階7120は、デバイスのローカルユーザとリモートデバイスのリモートユーザとの間のテレビ会議中のUI7175を示す。
【0527】
第2段階7125は、ユーザがデバイス7100を横に傾斜させ始めた後のUI7175を示す。この例では、デバイス7100は、矢印7185によって示されるように、デバイス7100を垂直に保持されている状態から水平に保持されている状態に傾斜させ始めている。UI7175の外見は変化していない。他の状況では、ユーザが、デバイス7100を水平に保持されている状態から垂直に保持されている状態に傾斜させたいと考えてもよく、これらの状況では、UI表示7175は、水平に最適化されたビューから垂直に最適化されたビューに切り換わる。
【0528】
第3段階7130は、デバイス7100が垂直に保持されている状態から水平に保持されている状態に傾斜された後の状態のUI7175を示す。この状態では、UI表示7175の外見はまだ変化しない。一部の実施形態では、デバイス7100がしきい値量を過ぎて傾斜され、この点を超えて、ある期間保たれた後で、回転動作がトリガされる。
図71に示される例では、デバイスが水平位置に置かれた後、ある短期間の間隔が経過するまで、しきい値量及び回転の速度によってUI表示7175が回転しないと想定されている。他の実施形態は、回転動作をトリガするしきい値量及び待ち期間が異なる。例えば、一部の実施形態は、デバイス7100の向きとは関係なくUI7175が常に直立位置に表示されるように見えるようにするために、回転動作をトリガするための低いしきい値を有しうる。他の実施形態では、デバイス7100のユーザは、(例えば、メニュー基本設定を通じて)いつ回転動作がトリガされうるかを指定してもよい。また、一部の実施形態は、デバイスがしきい値量を超えて傾斜された後の回転を遅延させなくてもよい。さらに、異なる実施形態を使用することによって、携帯デバイス上のスイッチを切り換えることによって、音声オーディオコマンドを与えることによって、メニューによる選択に応じてなどの、異なる仕方で、回転動作をトリガすることが可能になってもよい。
【0529】
第4段階7135は、回転動作が開始した後のUI7175を示す。一部の実施形態は、回転動作に関するフィードバックをユーザに提供するために、回転表示域をアニメーション化する。
図71は、このようなアニメーションの一例を示す。具体的には、
図71は、その第4段階7135に、表示域7110、7115及び7160が一緒に回転し始めるところを示している。表示域7110、7115及び7160は、UI表示7175の中央を通る軸7165(すなわち、z軸)のまわりを回転する。表示域7110、7115及び7160は、(例えば、デバイス7100の傾斜を通じた)デバイス7100の回転の反対方向に同じ量だけ回転する。この例では、デバイス7100が(垂直に保持される状態から水平に保持される状態に移ることによって)時計回り方向に90度回転したので、この回転動作によって、表示域7110、7115及び7160が反時計回りに90度回転される。表示域7110、7115及び7160が回転すると、表示域7110、7115及び7160が依然としてUI7175上で全体的に見えるように、表示域7110、7115及び7160はUI表示7175に合うように比例して縮む。一部の実施形態は、このデバイス7100の状態を示すメッセージを(例えば、「回転中」という単語を表示することによって)提供してもよい。
【0530】
第5段階7140は、表示域7110、7115及び7160が縦ビューから横ビューに反時計回りに90度回転した後のUI7175が示されている。この段階では、表示域7110、7115及び7160は回転されているが、まだUI7175の幅全体に拡張されていない。矢印7170は、第5段階の終了時に、表示域7110、7115及び7160がUI7175の幅全体に合うように側方に拡張し始めることを示す。拡張は第4段階7135での回転と同時に実行できるので、異なる実施形態はこの段階を含まなくてもよい。
【0531】
第6段階7145は、表示域7110、7115及び7160がUI7175の表示全体を占有するように拡張された後のUI7175を示す。上述のように、他の実施形態は、この回転を異なるように実施してもよい。一部の実施形態では、しきい値量を超えてデバイスの画面を回転するだけで、デバイス7100の向きに関係なく、回転動作をトリガしてもよい。
【0532】
また、他の実施形態は、回転動作を示すための異なるアニメーションを提供してもよい。
図71に実行される回転動作は、UI表示7175がUI表示7175の中心のまわりを回転することを含む。あるいは、表示域は、これらの個別の表示域の中心軸のまわりを個別に回転してもよい。このような1つの手法が
図72に示され、
図72はUI7175のPIP表示域7180の回転をアニメーション化する代替方法を示す。
図72に示されるPIP表示は、
図71に示されるのと同じPIP表示7180である。
【0533】
図72は、PIP表示7180を、6つの異なる動作段階7120、7125、7130、7220、7225及び7230として示す。UI7175の動作の前半の3つの段階は、
図71のUI7175に関して説明した動作の前半の3つの段階と同一である。
図71と
図72の両方に対する第3段階では、デバイスは、垂直に保持された状態から水平に保持された状態に移っており、UI7175の回転はまだ開始していない。
【0534】
第4段階7220は、回転をアニメーション化する代替方法を示す。この段階で、回転動作が開始している。具体的には、第4段階7220は、表示域7110、7115及び7160が回転し始めるところを示している。表示域7110、7115及び7160は、表示域のそれぞれの中心を通る軸7250(すなわち、z軸)のまわりをそれぞれ回転する。表示域7110、7115及び7160は、(例えば、デバイス7100の傾斜による)デバイス7100の回転の反対方向に同じ量だけ回転する。この例では、デバイス7100が(垂直に保持される状態から水平に保持される状態に移ることによって)時計回り方向に90度回転したので、この回転動作によって、表示域7110、7115及び7160が反時計回り方向に90度回転する。表示域7110、7115及び7160が回転すると、表示域7110、7115及び7160が依然としてUI7175上で全体的に見えるように、これらはまたUI表示7175に合うように比例して縮む。
【0535】
第5段階7225は、表示域7110、7115及び7160が縦ビューから横ビューに反時計回りに90度回転した後のUI7175を示す。この段階で、表示域7110、7115及び7160は回転されているが、まだUI7175の幅全体に拡張されていないか、それらの最終位置に到達してもいない。PIP表示7115内の表示域の最終位置は、第1段階7120に示されるPIP表示内の表示域の位置(例えば、PIP表示7180の左下隅にある挿入表示域7110及び右下隅にある挿入表示域7160)によって決定される。
【0536】
矢印7170は、第5段階の終了時に、メイン表示域7115がUI7175の幅全体に合うまで、表示域7110、7115及び7160が側方に拡張し始めることを示す。さらに、矢印7255は、挿入表示域7110及び7160が移動してPIP表示7180の最終位置に到達することを示す。言い換えれば、挿入表示域7110は、PIP表示7180の左下隅に向かって下方に移動し、他方の挿入表示域7160は、PIP表示7180の右下隅に移動する。異なる実施形態は、例えば
図71に示されるスナップアンドプッシュ動作を使用することによって、このアニメーションを異なるように実行してもよい。第6段階7230は、表示域7110、7115及び7160がUI7175の最終表示全体を占有するように拡張され、それらの最終位置に到達した後のUI110を示す。
【0537】
上述のように、他の実施形態は、この回転を異なるように実施してもよい。例えば、
図36及び
図37に同様に示されるように、一部の実施形態は、回転動作がローカルデバイスに対して実行された後のローカルデバイスの向きを反映するように、ローカルデバイスによって取り込まれたビデオを表示する表示域の向きが変化する回転動作を提供し、一部の実施形態は、回転動作がリモートデバイスに対して実行された後のリモートデバイスの向きを反映するように、リモートデバイスによって取り込まれたビデオを表示する表示域の向きが変化する回転動作を提供し、一部の実施形態は、表示域1155が同じ位置にあるままである回転動作を提供し、一部の実施形態は、表示域(例えば、
図12の表示域1155のレイアウト)における異なるレイアウト、又はこれらの組み合わせを提供する。
【0538】
一部の実施形態では、しきい値量を超えてデバイスの画面を回転するだけで、デバイス7100の向きに関係なく、回転動作をトリガしてもよい。また、上述したように、ローカルデバイス及びリモートデバイスは、回転動作がデバイスのうちの一方に対して実行されたことを制御通信チャネルを通じて互いに通知し、他方のデバイスが、この一方のデバイスのビデオに対する対応するいかなる変更も実行できるようにする。また、回転動作のアニメーションによって、テレビ会議マネージャ1604にUI1105において異なる角度で表示域(群)を再合成させ、表示域(群)に表示される画像を拡大縮小させるなどの、カメラの動作又はデュアルカメラデバイスの画像処理動作の変更を引き起こすことができる。
【0539】
7.視聴するリモートビューの選択
上述のように、一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、どのカメラをテレビ会議に使用するべきかをテレビ会議の開始前又はテレビ会議の開始時に選択できる。この機能の代わりに、又はこれと共に、一部の実施形態により、デバイスのユーザは、テレビ会議で表示されている2つのビデオであって、リモートデバイスの2つのビデオカメラからものであるか、ユーザのローカルデバイスの2つのビデオカメラからのものである2つのビデオの中から選択可能になる。
図73は、2つのリモートビデオからの1つのビデオの会議中の選択を示し、
図74は、2つのローカルビデオからの1つのビデオの会議中の選択を示す。
【0540】
図73は、リモートビデオの選択を、ローカルデバイス7300に表示されるUI7375の6つの動作段階7335、7340、7345、7350、7355及び7360として示す。第1段階7335は、2つのカメラを有する携帯デバイスのリモートユーザとのテレビ会議中に提示されている初期PIP表示7390を有するUI7375を示す。
【0541】
第1段階7335に示すように、初期PIP表示7390は、3つの表示、すなわち背景メイン表示7315と、2つの前景挿入表示7305及び7310とを含む。背景表示7315はPIP表示7390の大半を占めるが、前景挿入表示7305及び7310はUI7375上の背景表示7315の一部分に重なる。この例では、背景表示7315は、マイクロフォンの前にいる人のビデオを提示し、これは、リモートデバイスの背面カメラによって取り込まれたビデオであると想定される。第1前面挿入表示7305は、男性の顔のビデオを提示し、これは、この例では、ローカルデバイス7300のカメラの一方によって取り込まれたビデオであると想定される。第2前面挿入表示7310は、帽子を被った人のビデオを提示し、これは、この例では、リモートデバイスの前面カメラによって取り込まれたビデオであると想定される。
【0542】
初期PIP表示7390は、ローカルデバイス及びリモートデバイスのカメラによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、他の合成ビューを提供してもよい。例えば、背景表示は、ローカルデバイスのカメラの一方からのビデオを提示してもよく、小さい方の前景挿入表示は、リモートデバイスの前面カメラ及び背面カメラからのビデオを提示してもよい。また、一部の場合で、PIP表示は、1つの背景ビデオ表示と、1つの前景ビデオ表示とをのみ含み、これらの両方は、リモートデバイスから来る。一部の実施形態では、PIP表示の方式又はデフォルトの表示モードは、ユーザによって指定されてもよい。
【0543】
第2段階7340は、ビデオ選択動作の開始を示す。この例では、この動作は、PIP表示7390に表示されるべき選択可能UI項目の集合を起動することによって始められる。選択可能UI項目の集合は、表示用のリモートビデオを選択するためのオプションを提示する。一部の実施形態では、選択可能UI項目の集合は、UI7375上でリモートビデオを再生している任意の表示域を選択することによって(例えば、タッチすることによって)起動されうる。他の実施形態では、項目は、UI7375上の任意の位置を選択することによって(例えば、タッチすることによって)起動されうる。このような起動動作の代わりに、又はこれと共に、一部の実施形態により、ユーザは、異なるタッチスクリーン動作を通じて、又はデバイスの1つ以上の他の物理的入力を使用するなどの、他の動作を通じて選択可能UI項目の集合を起動することもできる。
【0544】
第3段階7345は、リモートビデオを選択するための選択可能UI項目7380の起動された集合を有するUI7375を表示する。この例では、ポップアップメニューの形をとる選択可能UI項目7380の集合は、PIP表示域7390に表示され、PIP表示に重なる。(選択可能なボタンとして実装できる)選択可能UI項目7380の集合は、「R1を選択」選択可能UI項目7320(例えばボタン7320)と、「R2を選択」選択可能UI項目7325(例えばボタン7325)と、「両方を選択」選択可能UI項目7330(例えばボタン7330)と、「キャンセル」選択可能UI項目7385(例えばボタン7385)とを含む。この例では、「R1を選択」ボタン7320を選択することによって、UI7375は、(背景表示7315に提示されている)リモートデバイスの背面カメラによって取り込まれたビデオのみを表示する。「R2を選択」ボタン7325を選択することによって、UI7375は、(前景挿入表示7310に提示されている)リモートデバイスの前面カメラによって取り込まれたビデオのみを表示する。「両方を選択」ボタン7330を選択することによって、UI7375は、リモートデバイスの前面カメラ及び背面カメラによって取り込まれた両方のビデオを表示し続ける。「キャンセル」ボタン7385を選択することによって動作がキャンセルされる。一部の実施形態では、ローカルデバイスによって取り込まれたビデオは、このメニューでなされた選択による影響を受けない。
【0545】
第4段階7350は、ユーザが(例えば、自身の指7365でボタン7320をタップすることによって)「R1を選択」ボタン7320を選択した後のUI7375を示す。この選択は、UI7375上でのボタン7320の強調表示によって示される。一部の実施形態は、異なる標識表示(例えば、選択された項目の境界線又は選択された項目のテキストの強調表示)を使用する。
【0546】
第5段階7355は、ユーザが表示のためにR1からビデオを選択した後のUI7375のアニメーションを示す。この例では、UI7375は、望まれない前景挿入表示域7310を、矢印7370によって示されるようなPIP表示7390の右端から外へスライドすることによって除去する。他の実施形態は、挿入をフェードアウト又はフェードオーバーする、挿入を異なる方向に移動する、又は単に挿入を瞬時に除去するなど、望まれない挿入表示域を除去するために異なるアニメーションを利用する。
【0547】
第6段階7360は、ビデオ選択動作が完了した後のテレビ会議中のUI7375を表示する。ビデオ表示域7310はもはやUI7375に表示されていない。この段階で、UI7375は、ビデオ表示域7315を背景メイン表示として含み、ビデオ表示域7305を挿入表示として含む新たなPIP表示7395を提示する。
【0548】
また、一部の実施形態では、このビデオ選択動作によって、選択されたビデオのみをリモートデバイスに表示させるが、他の実施形態では、この動作は、リモートデバイスに何ら影響を及ぼさない。一部の実施形態では、このビデオ選択動作によって、リモートデバイスは、望まれないビデオをローカルデバイスに伝送するのを止める。実際に、一部の実施形態において、このビデオ選択動作により、リモートデバイスのカメラは、望まれないビデオを取り込むのを止める。一部の実施形態では、リモートデバイスに対するこれらの影響は、リモートデバイスのユーザによって無効にされうる。
【0549】
上記の例は、選択されたリモートビューが、背景メイン表示に既に表示されているビューであるケースを示す。一部の実施形態では、ユーザが挿入表示のうちの1つに表示されているリモートビューを選択した場合に、選択されたリモートビューは、背景メイン表示に表示される。一部のこのような実施形態は、このケースでは、
図68に表示されているアニメーションのようなアニメーションを使用する。さらに、リモートビデオ(群)を選択することによって、ユーザ入力に応答してテレビ会議マネージャ1604に、合成表示において、選択されたリモートビデオ(群)のみを合成させるなどの、デュアルカメラ携帯デバイスの画像処理動作の変更を引き起こすことができる。
【0550】
8.視聴するローカルビューの選択
図74は、ローカルビデオの選択を、ローカルデバイス7400に表示されるUI7475の6つの動作段階7435、7440、7445、7450、7455及び7460として示す。第1段階7435は、少なくとも1つのカメラを有する携帯デバイスのリモートユーザとのテレビ会議中に提示されている初期PIP表示7490を有するUI7475を示す。PIP表示7490は、
図73とは異なり、背景表示7415がリモートデバイスのカメラによって取り込まれた男性のビデオを提示し、左の前景挿入表示7410がローカル携帯デバイスの背面カメラによって取り込まれたギターを持つ人のビデオを提示し、右の前景挿入表示7405がローカル携帯デバイス7400の前面カメラによって取り込まれた帽子を被った男性のビデオを提示することを除いて、
図73の第1段階と同様である。したがって、1つのリモートビデオのみが表示され、2つのローカルビデオが表示される。
【0551】
第2段階7440は、ビデオ選択動作の開始を示す。この例では、この動作は、表示用のリモートビデオを選択するためにPIP表示7490に表示されるべき選択可能UI項目の集合を起動することによって始められる。一部の実施形態では、選択可能UI項目の集合は、UI表示7475上でローカルビデオを再生している任意の表示域を選択することによって(例えば、タッチすることによって)起動されうる。他の実施形態では、項目は、UI表示7475上の任意の位置を選択することによって(例えば、タッチすることによって)起動されうる。このような起動動作の代わりに、又はこれと共に、一部の実施形態により、ユーザは、異なるタッチスクリーン動作によって、又はデバイスの1つ以上の他の物理的入力を使用するなどの、他の動作を通じて選択可能UI項目の集合を起動することもできる。
【0552】
第3段階7445は、ローカルビデオを選択するための選択可能UI項目7480の起動された集合を有するUI7475を表示する。この例では、ポップアップメニューの形をとる選択可能UI項目7480の集合は、PIP表示に重なるPIP表示域7490に表示される。選択可能UI項目7480の集合は、「L1を選択」選択可能UI項目7420(例えばボタン7420)と、「L2を選択」選択可能UI項目7425(例えばボタン7425)と、「両方を選択」選択可能UI項目7430(例えばボタン7430)と、動作をキャンセルするための「キャンセル」選択可能UI項目7485(例えばボタン7485)とを含む。この例では、「L1を選択」ボタン7420を選択することによって、UI7475は、(前景挿入表示7410に提示されている)ローカルデバイスの背面カメラによって取り込まれたビデオのみを表示する。「L2を選択」ボタン7425を選択することによって、UI7475は、(前景挿入表示7405に提示されている)ローカルデバイスの前面カメラによって取り込まれたビデオのみを表示する。「両方を選択」ボタン7430を選択することによって、UI7475は、ローカルデバイス上の両方のカメラによって取り込まれた両方のビデオを表示し続け、「キャンセル」ボタン7485を選択することによって、動作がキャンセルされる。一部の実施形態では、リモートデバイスによって取り込まれたビデオは、このメニューを通じてなされた選択による影響を受けない。
【0553】
第4段階7450は、ユーザが(例えば、自身の指7465でボタン7425をタップすることによって)「L2を選択」ボタン7425を選択した後のUI7475を示す。この選択は、UI表示7475上でのボタン7425の強調表示によって示される。一部の実施形態は、異なる標識表示(例えば、選択された項目の境界線又は選択された項目のテキストの強調表示)を使用する。
【0554】
第5段階7455は、ユーザが表示のためにL2からビデオを選択した後のUI7475のアニメーションを表示する。この例では、UI7475は、望まれない前景挿入表示7410を、矢印7470によって示されるPIP表示7490の左端から外へスライドすることによって除去する。他の実施形態は、挿入をフェードアウト又はフェードオーバーする、挿入を異なる方向に移動する、又は単に挿入を瞬時に除去するなど、望まれない挿入表示域を除去するために異なるアニメーションを利用する。
【0555】
第6段階は、ビデオ選択動作が完了した後のテレビ会議中のUI7475を表示する。ビデオ表示域7410は、もはやUI7425上にない。この段階で、UI7475は、リモートビデオ表示7415を背景メイン表示として含み、ローカルビデオ表示7405を挿入表示として含む新たなPIP表示7495を提示する。一部の実施形態では、両方のビデオ取り込みは依然としてリモートデバイスに伝送されているので、このビデオ選択動作は、ローカル表示にのみ影響を及ぼす。他の実施形態は、除去されたカメラからの取り込みを止める。
【0556】
上記の例は、選択されたローカルビューが、背景メイン表示に既に表示されているビューであるケースを示す。一部の実施形態では、ユーザが挿入表示のうちの1つに表示されているローカルビューを選択した場合に、選択されたローカルビューは、メイン背景表示に表示される。一部のこのような実施形態は、この場合、
図68に表示されているアニメーションのようなアニメーションを使用する。他の実施形態は、背景メイン表示内のローカルビューが除去された場合に、挿入リモートビューを使用する。
【0557】
図73に関して上述したリモートビュー選択動作と同様に、ローカルのビデオ(群)を選択することによって、ユーザの入力に応答してテレビ会議マネージャ1604に合成表示において、選択されたリモートビデオ(群)のみを合成させるなどの、ローカルデュアルカメラ携帯デバイスの画像処理動作への変更を引き起こすことができる。ローカルのビデオ(群)を選択することによって、ローカルデバイスのカメラ(群)の動作に変更を引き起こすこともできる。例えば、一部の実施形態により、選択されていないビデオのカメラは、望まれないビデオをリモートデバイスに伝送するのを止めるが、他の実施形態により、カメラは、望まれないビデオを取り込むのを止める。
【0558】
9.伝送するべきローカルビューの選択
上記のサブセクションは、ビデオ表示の会議中の変更を示す。一部の実施形態により、デュアルカメラ携帯デバイスのユーザは、どのカメラをテレビ会議に使用するべきかをテレビ会議の開始前に選択することもできる。
図75は、テレビ会議に使用するためにユーザのデュアルカメラ携帯デバイスによって取り込まれた2つのビデオからの1つのビデオの会議前の選択を示す。
【0559】
図75は、テレビ会議に使用するためのローカルビデオの選択を、UI7500の8つの動作段階として示す。第1段階7502は、ユーザが携帯デバイスのリモートユーザとのテレビ会議を開始するように要求した後に提示されている初期PIP表示7542を有するデュアルカメラ携帯デバイス7518のUI7500を示す。
【0560】
第1段階7502に示すように、初期PIP表示7542は、2つの表示、すなわち背景メイン表示7520と、前景挿入表示7522とを含む。背景メイン表示7520はデバイスの表示画面の大半を占めるが、前景挿入表示7522は背景メイン表示よりも小さく、これに重なる。この例では、背景表示7520はギターを持っている人のビデオを提示し、これは、デバイスの背面カメラによって取り込まれたビデオであると想定される。前景挿入表示7522は帽子を被った人のビデオを提示し、これは、この例では、デバイスの前面カメラによって取り込まれているビデオであると想定される。
【0561】
この初期PIP表示7542は、ローカルデバイスのカメラによって取り込まれているビデオの合成ビューを提示する1つの方式にすぎない。一部の実施形態は、他の合成ビューを提供してもよい。例えば、背景表示は、デバイスの前面カメラからのビデオを提示してもよく、小さい方の前景挿入表示は、デバイスの背面カメラからのビデオを提示してもよい。同様に、一部の実施形態により、2つのビデオは、UI7500内の並んだ2つの表示域(例えば、左右の表示ウィンドウ、又は上下の表示ウィンドウ)又は斜めに整列した2つの表示域に表示されうる。一部の実施形態では、PIP表示の方式又はデフォルトの表示モードは、ユーザによって指定されうる。PIP表示の下は、項目を選択することによってユーザがテレビ会議を終了できる「会議終了」と標示された選択可能UI項目7540(例えばボタン7540)である。
【0562】
第1段階7502では、携帯デバイス7518のユーザは、リモートユーザとのテレビ会議を行うように要求し、リモートユーザが応答するのを待っている。この待ち期間は、表示の下部の「プレビュー、応答を待っています...」表記によって説明される。
【0563】
第2段階7504は、ビデオ選択動作の開始を示す。この例では、動作は、PIP表示7542に表示されるべき選択可能UI項目の集合を起動することによって始められる。選択可能UI項目の集合は、テレビ会議のためにリモートデバイスに伝送するローカルビデオを選択するためのオプションを提示する。一部の実施形態では、選択可能UI項目の集合は、リモートユーザが応答するのを待っている間の会議前の時間中にUI表示7500上の任意の位置を選択する(例えば、タッチする)によって起動されうる。このような起動動作の代わりに、又はこれと共に、一部の実施形態により、ユーザは、異なるタッチスクリーン動作を通じて、又はデバイスの1つ以上の他の物理的入力を使用するなどの、他の動作によって選択可能UI項目を起動することもできる。
【0564】
第3段階7506は、ユーザがビデオを選択するための選択可能UI項目7526の起動された集合を有するUI7500を示す。この例では、ポップアップメニューの形をとる選択可能UI項目7526の集合は、PIP表示域7542に表示され、PIP表示に重なる。この例では、選択可能UI項目の集合は、「L1の伝送」項目7528(例えばボタン7528)と、「L2の伝送」項目7530(例えばボタン7530)と、「両方の伝送」項目7532(例えばボタン7532)と、「キャンセル」項目7534(例えばボタン7534)とを含む。この例では、「L1の伝送」ボタン7528を選択することによって、UI7500が、デバイスの背面カメラによって取り込まれたビデオのみをテレビ会議中にリモートデバイスに伝送する。「L2の伝送」ボタン7530を選択することによって、UI7500は、デバイスの前面カメラによって取り込まれたビデオのみをテレビ会議中にリモートデバイスに伝送する。「両方の伝送」ボタン7532を選択することによって、UI7500は、デバイスの前面カメラ及び背面カメラによって取り込まれた両方のビデオをテレビ会議のためにリモートユーザに伝送し、「キャンセル」ボタン7534を選択することによって、動作がキャンセルされる。
【0565】
第4段階7508は、ユーザが(例えば、自身の指7524でボタン7528をタップすることによって)「L1の伝送」ボタン7528を選択した後のUI7500を示す。この選択は、PIP表示域7542上でのボタン7528の強調表示によって示される。一部の実施形態は、異なる標識表示(例えば、選択された項目の境界線又は選択された項目のテキストの強調表示)を使用する。
【0566】
第5段階7510は、ユーザがリモートデバイスに伝送するためにデバイスの背面カメラからのビデオを選択した後のUI7500のアニメーションを示す。この例では、UI7500は、望まれない前景挿入表示7522を、矢印7536によって示されるPIP表示7542の右端から外へスライドすることによって除去する。第6段階7512では、挿入表示7522は、PIP表示域7542から完全に除去されている。異なる実施形態は、表示域をフェードアウト又はフェードオーバーする、表示域を異なる方向に移動する、又は単に表示域を瞬時に除去するなど、望まれない表示域を除去するために異なるアニメーションを使用する。
【0567】
第7段階7514は、リモートユーザがテレビ会議要求を承諾した後のUI7500のアニメーションを示す。テレビ会議要求の承諾は、表示上での「プレビュー、応答を待っています...」表記の除去によって強調表示される。この段階で、矢印7538によって示されるように、デバイスの背面カメラからのビデオである背景表示域7520のサイズは、PIP表示域7542の左下隅に向けて段階的に減少する。UI7500がリモートユーザのカメラからのビデオを含む表示域7544を表示域7520の後ろに示すことができるように、背景表示7520は縮む。一部の実施形態は、ローカルのカメラを異なる位置に合わせて縮め、表示されている2つのビデオのタイル表示された合成表示を使用するか、又はリモートビューをPIP表示の挿入表示域にする。
【0568】
第8段階7516は、ビデオ選択動作が完了した後のUI7500を示す。UI7500は、ローカルデバイスから取り込まれたビデオの挿入表示7520とリモートデバイスから伝送されたビデオの背景表示7544とを含む新たなPIP表示7546を提示する。
【0569】
B.帯域幅及びフレームレート
一部の実施形態では、テレビ会議中のリモート携帯デバイスの表示域のサイズの調整によって、ローカル携帯デバイスが、ローカル携帯デバイスの2つのカメラ(すなわち、前面カメラ及び背面カメラ)によって取り込まれた各ビデオに割り当てられた帯域幅を再割り当てできる。
図76は、ローカルデバイスの2つのカメラ間でこのような帯域幅の再割り当てを行う2つの例を示す。
【0570】
図76の例のそれぞれは、ローカルデバイスの背面カメラセンサ7605と、ローカルデバイスの前面カメラセンサ7610と、ローカルデバイスのテレビ会議モジュール7615と、リモート携帯デバイス7620のUI7635とを含む。背面カメラセンサ7605及び前面カメラセンサ7610は、ローカルデバイスの背面カメラ及び前面カメラそれぞれからビデオを取り込む。取り込まれたビデオはテレビ会議モジュール7615に送信され、テレビ会議モジュール7615はこのビデオを処理して、UI7635に表示するためにリモートデバイスに伝送する。
【0571】
図76では、リモートデバイスのUI7635は、合成表示を提示する。合成表示は、ローカルデバイスの前面カメラ及び背面カメラによって取り込まれたビデオを示す。前面カメラからのビデオは、木及び帽子を被った男性を取り込み、背面カメラからのビデオは、山の風景を取り込む。
図76に示されるように、2つのビデオは、ビデオを表示するための表示域の構成に基づいて、さらには表示域のサイズにも基づいて、多くの異なる方式でUI7635に表示されうる。各例では、テレビ会議モジュール7615は、最初に、リモートデバイスにおける表示域の相対サイズに従ってビデオのそれぞれに全出力帯域幅を割り当てる。具体的には、UI7635の大きい方の表示域に表示されるビデオは、全帯域幅のより大きな部分を割り当てられ、UI7635の小さい方の表示域に表示されるビデオは、帯域幅のより小さな部分を割り当てられる。一部の実施形態では、ビデオが同じサイズの表示域に表示される場合に、全出力帯域幅は、2つのビデオに均等に割り当てられる。
【0572】
2つのビデオのそれぞれに割り当てられる帯域幅の量は、各ビデオが処理される方式に影響を及ぼすことがある。例えば、ビデオが、そのビデオに割り当てられたものより高い帯域幅を必要しうる。このような場合、低い帯域幅に対応するために、ビデオのフレームレートを調整するか、又はビデオの画像のサイズを縮小する。ビデオのフレームレートを低減することによって、ビデオが「途切れる」ように見えるが、ビデオの画像のサイズを縮小すると、ビデオが表示されるエリアも低減される。したがって、ビデオが帯域幅のある量を割り当てられた場合に、一部の実施形態は、割り当てられた帯域幅内でビデオが伝送されるようにするために、ビデオのフレームレートを調整する、ビデオの画像のサイズを縮小する、又は両方の組み合わせを実行する。最適な全体的なビデオ品質を得るためにフレームレート及び平均フレームサイズの調整が変化しても、割り当てられた帯域幅内でビデオを伝送できるようにすることが可能であることが当業者には理解されよう。
【0573】
図76の例(1)は、UI7635の2つの動作段階で帯域幅の再割り当てを行う1つのシナリオを示す。第1段階7670におけるリモートデバイス7620のUI7635は、2つの表示を含む合成表示を提示する。2つの表示のうち、一方はUI7635の上部にあり、他方はUI7635の下部にある。この例では、上部表示域7625はローカルデバイスの前面カメラによって取り込まれているビデオを示し、下部表示域7630はローカルデバイスの背面カメラによって取り込まれているビデオを示す。第1段階7670に示すように、上部表示域7625は、下部表示域7630よりも大きい。したがって、ローカルデバイスの前面カメラからのビデオは帯域幅の80%を割り当てられ、ローカルデバイスの背面カメラからのビデオは、帯域幅の20%を割り当てられる。ローカルデバイスの背面カメラからのビデオを、割り当てられた帯域幅内でローカルデバイスからリモートデバイスに伝送できるようにするために、ビデオのフレームレート又は拡大縮小サイズ又はこれらの両方を調整する。
【0574】
第2段階7675は、上部表示域7625と下部表示域7630のサイズがほぼ同じとなるようにリモートデバイスのユーザが下部表示域のサイズを増加させた後のUI7635を示す。その結果、ビデオのそれぞれは、テレビ会議モジュール7615によって全帯域幅の50%を再割り当てされる。
【0575】
図76の例(2)は、UI7635の2つの動作段階で帯域幅の再割り当てを行うための別のシナリオを示す。例(2)の第1段階7680では、UI7635はPIP表示を提示する。PIP表示は、2つの表示、すなわち背景メイン表示域7650と、前景挿入表示域7655とを含む。背景表示域7650はPIP表示の大半を占めるが、前景挿入表示域7655は背景メイン表示域7650よりも小さく、これに重なる。この例では、背景表示域7650は、デバイスの前面カメラによって取り込まれているビデオを提示する。挿入表示域7655は、デバイスの背面カメラによって取り込まれているビデオを提示する。この段階に示すように、背景表示域7650は挿入表示域7655よりも大きい。したがって、デバイスの前面カメラからのビデオは帯域幅の80%を割り当てられ、デバイスの背面カメラからのビデオは、帯域幅の20%を割り当てられる。ローカルデバイスの背面カメラからのビデオを、割り当てられた帯域幅内でローカルデバイスからリモートデバイスに伝送できるようにするために、ビデオのフレームレート又は拡大縮小サイズ又はこれらの両方を調整する。
【0576】
第2段階7685は、リモートデバイスのユーザが2つのビデオの表示を入れ換えた後のUI7635を示す。具体的には、背景表示域7660は、この時点で、デバイスの背面カメラによって取り込まれているビデオを提示しており、挿入表示域7665は、この時点で、デバイスの前面カメラによって取り込まれているビデオを提示する。2つのビデオの表示域のサイズが変更されたので、デバイスの背面カメラからのビデオは帯域幅の80%を割り当てられ、デバイスの前面カメラからのビデオは帯域幅の20%を割り当てられる。したがって、ローカルデバイスの前面カメラからのビデオのフレームレート若しくは拡大縮小サイズ又はこれらの両方が低減する。
図76で説明する帯域幅の分配は、例にすぎず、テレビ会議中に2つのカメラに帯域幅を割り当てるための他の技術が可能であることは、当業者には理解されよう。
【0577】
1.フレームレート制御
上述の会議中のフレームレート制御動作のように、一部の実施形態は、デュアルカメラ携帯デバイスの各カメラによって取り込まれたビデオの画像がテレビ会議において他のデバイスに伝送される速度を個別に調整又は維持することが臨まれる場合がある。これらの実施形態のうちの一部は、上述の同様の技術を提供する。例えば、一部の実施形態は、各カメラのセンサモジュール415のVBIを調整することによって、各カメラのフレームレートを制御する。他の実施形態は、例えば、各カメラのセンサモジュール415及び/又は汎用伝送バッファ3120によって実行されうるフレーム間引き(frame dropping)などのさらなる技術も提供する。
【0578】
2.拡大縮小を通じた帯域幅制御
上述のように、デュアルカメラ携帯デバイスと別のデバイスの間のテレビ会議中に、特定の時間量において1つ以上のネットワーク接続を介して伝送できる画像データ量(すなわち、ネットワーク接続帯域幅)は制限されうる。ネットワーク接続のスループットを最大にして維持するために、デュアルカメラ携帯デバイスの異なる実施形態は、特定の時間量においてネットワーク接続を介して伝送される画像データ量を制御する異なる仕方を提供する。一部の実施形態では、スループットは、通信チャネル(例えば、ネットワーク接続)を介したメッセージ配信の平均成功率である。
【0579】
デュアルカメラ携帯デバイスの両方のカメラによって取り込まれた画像を伝送する場合に、1つのこのような仕方は、ネットワーク接続を介して伝送される画像データ量を制御するためにデュアルカメラ携帯デバイスの一方又は両方のカメラからの画像をサイズ変更する。一部の実施形態は、ネットワーク接続を介して伝送される画像データ量を低減するためにデュアルカメラ携帯デバイスによって取り込まれた画像のサイズを縮小するが、他の実施形態は、ネットワーク接続を介して伝送される画像データ量を増加するために画像のサイズを拡大する。
【0580】
一部の実施形態は、拡大縮小時に画像の高さと幅の比を維持する(すなわち、均一な拡大縮小)。他の実施形態は、拡大縮小された画像の高さと幅の比が元の画像と異なるように画像を拡大縮小する(すなわち、アナモルフィックな拡大縮小)。
【0581】
そのうえ、拡大縮小は、画像処理プロセスの異なる段階において実行されうる。一部の実施形態の拡大縮小は、カメラセンサによって実行されうる。このような実施形態では、カメラセンサは、画像のデータの行又は列(すなわち、画素値)を破棄しうる。このような実施形態のうちの一部では、残りの画像データは、画像の外見を平滑化するために補間される。
【0582】
他の実施形態の拡大縮小は、CIPU400のスケーラモジュール455によって実行される。一部の実施形態では、拡大縮小は、上述のようにテレビ会議マネージャ1604によって実行され、他の実施形態では、スケーラはエンコーダによって実行される。したがって、デュアルカメラ携帯デバイスの異なる実施形態は、拡大縮小を異なるように実行する。
【0583】
3.ビットレート制御
一部の実施形態は、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオが符号化されるビットレートを管理するための異なる機構を提供する。一部の実施形態では、デュアルカメラ携帯デバイスは、カメラごとにレートコントローラを含む。一部の実施形態は、固定ビットレート管理スキームを提供する。このスキームでは、レートコントローラのそれぞれは、携帯デバイス上の両方のカメラからのビデオの全ビットレートが一定であるように、固定ビットレートに設定される。他の実施形態は、全ビットレートを低減することが必要な場合にデバイスのカメラからの2つのビデオのうちの一方が常に他方よりも優先される優先順位スキームを提供する。
【0584】
一部の実施形態では、アービトレータモジュールは、2つのカメラの2つのレートコントローラを管理する。
図77は、このようなアービトレータモジュールの一例を示す。
図77に示すように、レートコントローラ7700は、前面カメラに対するビットレートを設定し、レートコントローラ7705は、背面カメラのビットレートを設定する。レートコントローラは、カメラセンサからエンコーダ7715に画像を送信する。アービトレータモジュール7710は、両方のレートコントローラに接続され、利用可能な帯域幅のもとで両方のビデオをリモートデバイスに伝送できることを保証するために、利用可能な帯域幅、2つのビデオのそれぞれのビデオサイズなどの情報に基づいて、レートコントローラ7700及び7705それぞれに対するビットレートの設定を多くの仕方で制御する。さらに、アービトレータ7710は、上述の固定レートスキーム又は優先順位スキームを実施するように構成されうる。
【0585】
一部の他の実施形態では、2つのカメラのための2つのレートコントローラは互いと通信できる。このスキームのもとで、レートコントローラは、それぞれのビデオの情報を交換し、それに応じてビデオのビットレートを設定できる。レートコントローラレート管理機構のいくつかの例が提供される。しかし、多くの他の異なる機構が可能である。
【0586】
4.ビデオ処理
デュアルカメラ携帯デバイスの一部の実施形態は、デュアルカメラ携帯デバイスの両方のカメラによって取り込まれた画像を異なる状況で異なるように処理する。例えば、デュアルカメラ携帯デバイスの両方のカメラによって取り込まれた画像を含むPIP合成画像を処理する場合に、一部の実施形態は、PIP合成画像に対してTNRプロセス2000を選択的に実行する。これらの実施形態のうちの一部は、PIP合成画像のメイン画像のみに対してTNRプロセス2000を実行するが、これらの実施形態のうち他の実施形態は、PIP合成画像の挿入画像のみに対してTNRプロセス2000を実行する。
【0587】
携帯デバイスの両方のカメラによって取り込まれた画像の処理の別の例として、一部の実施形態は、ビデオを表示する表示域のユーザによる調整など(例えば、PIP表示の挿入の引き伸ばし、表示されているビデオにおける関心領域の規定、PIP表示のメイン/挿入の入れ換えなど)のテレビ会議への種々の変更、利用可能な全帯域幅の変更などに基づいて、デュアルカメラ携帯デバイスの両方のカメラによって取り込まれた画像を拡大縮小する。これらの実施形態のうちの一部は、上述の方式で画像を拡大縮小する。すなわち、画像は、例えば、エンコーダ1655、テレビ会議マネージャ1604、スケーラモジュール455及び画像が取り込むのに用いられたカメラセンサ(すなわち、405a又は405b)によって拡大縮小されうる。
【0588】
5.符号化
上述のように、一部の実施形態は、デュアルカメラ携帯デバイスの両方のカメラからビデオを伝送する。したがって、これらの実施形態は、テレビ会議中にリモートデバイスに伝送するために、両方のカメラによって取り込まれたビデオを符号化しうる。異なる実施形態は、伝送のためにビデオを符号化する異なる仕方を提供する。
図78は、マルチプレクサ(MUX)7815、エンコーダモジュール7825、バッファ7830及び結合モジュール7835を使用して、伝送すべきビデオを処理する手法を示す。
【0589】
MUX7815は、選択信号に基づいて、1つの入力信号を受け取り、選択された入力信号をエンコーダ7825に出力する。例えば、選択信号が、C1から入力信号を受け取ることをMUX7815に示すならば、MUX7815は、その入力信号を選択し、その信号を出力する。この選択信号は、テレビ会議マネージャ1604からの命令などの多数の仕方で提供されうる。MUX7815を通じて、エンコーダ7825は、MUX7815から受け取った画像を交互にビットストリーム形式に符号化し、符号化された画像をバッファ7830に格納する。結合モジュール7835は、バッファ7830に格納された1つ以上のビットストリームを結合(すなわち、多重化)し、単一のビットストリームを出力する。
【0590】
ここで、この符号化手法の動作について、3つの段階7860、7865及び7870に関して説明する。第1段階7860では、MUX7815は、カメラC1によって取り込まれた画像7805を受け取って、符号化のためにエンコーダ7825に出力するように構成される。エンコーダ7825は、受け取った画像を符号化して、ビットストリーム7850を生成し、その後、ビットストリーム7850はバッファ7830に格納される。第2段階7865は、MUX7815が、カメラC2によって取り込まれた画像7810を受け取って、符号化のためにエンコーダ7825に出力するように構成されることを除いて、第1段階7860と同様である。この場合も、エンコーダは、受け取った画像を符号化して、ビットストリーム7855を生成し、ビットストリーム7855はバッファ7830に格納される。第3段階7870で、結合モジュール7835は、ビットストリーム7850及び7855をバッファ7830から読み出して、リモートデバイスへの伝送のために1つのビットストリームに結合する。
【0591】
図79は、テレビ会議中にリモートデバイスへの伝送のためにデュアルカメラ携帯デバイスからの2つのビデオを符号化するための別の手法を示す。この手法では、携帯デバイスの第1カメラからのビデオフレーム(すなわち画像)及び携帯デバイスの第2カメラからの別のビデオフレームが、1つのビデオフレームに合成されてから、合成されたビデオフレームが、リモートデバイスに送信されるべきビットストリームに符号化される。
図79に示すように、この手法は、合成器7915と、バッファ7920と、エンコーダ7925とを含む。
【0592】
図示のように、合成器7915は、第1カメラからの画像7905と第2カメラからの画像7910を合成して、合成画像7955を形成する。異なる実施形態は、画像7905と画像7910とを異なるように合成する。例えば、一部の実施形態の合成器7915は、
図80に示すように隣接する2つの画像を互いに整列することによって、画像を合成できる。合成画像8030及び8035は、この技術を使用する2つの例示的な合成画像を示す。合成画像8030では、第1カメラからの画像7905は、第2カメラからの画像7910の上に整列される。一方、合成画像8035は、画像7910の左に整列された画像7905を示す。
【0593】
いくつかの他の実施形態では、合成器7915は、2つの画像7905及び7910をより大きな背景画像の上に重ねることによって、2つの画像7905と画像7910とを合成できる。
図80の合成画像8040は、この技術を使用する例示的な合成画像を示す。合成画像8040では、画像7905と画像7910とが斜めに位置合わせされ、空白画像の上に重ねられる(すなわち、画像7905は背景画像の左上隅にあり、画像7910は右下隅にある)。一部の実施形態では、カメラセンサは、異なるサイズであってよく、したがって、異なる画素解像度を有する画像を取り込んでもよい。このような実施形態では、合成器7915は、
図80の合成画像8045によって示されるのと同様の方式で、画像7905と画像7910とを合成できる。2つの画像を合成した後、合成器7915は、合成画像をバッファ7920に格納する。エンコーダ7925は、合成画像をバッファ7920から読み出し、合成された画像をビットストリームに符号化して、それをテレビ会議のリモートデバイスに送信する。
【0594】
ここで、動作について、
図79に示される合成器7915、バッファ7920及びエンコーダ7925に関して説明する。最初に、第1カメラが、画像7905をビデオ内の画像のシーケンスの一部として合成器7915に送信する。同時に、第2カメラが、別の画像7910をビデオ内の画像のシーケンスの一部として合成器7915に送信する。その後、合成器7915は、上述した手段で、画像7905と画像7910とを合成して合成画像7955を形成する。次に、合成器7915は、合成画像7955をバッファ7920に送信する。その後、バッファ7920は、合成画像をエンコーダ7925に送信する前に合成画像を格納する。最後に、エンコーダ7925は、合成画像をビットストリームに符号化し、そのビットストリームをテレビ会議のリモートデバイスに送信する。
【0595】
図81は、テレビ会議中にリモートデバイスへの伝送のためにデュアルカメラ携帯デバイスからの2つのビデオを符号化するためのさらに別の手法を示す。この手法では、デバイスからの2つのビデオが合成表示に表示され、合成表示のスクリーンショットが撮影され、リモートデバイスに送信するべきビットストリームに符号化される。
図81に示すように、この手法は、エンコーダ8115を含む。一部の実施形態では、エンコーダ8115は、合成画像を符号化し、リモートデバイスに送信する。
【0596】
ここで、動作について、
図81に示されるエンコーダ8115に関して説明する。最初に、デュアルカメラ携帯デバイスの2つのカメラからのビデオが、デバイスの画面の合成表示に表示される。合成表示は、ビデオを任意の方式で提示できる。例えば、一部の実施形態における合成表示は、
図81に示されるPIP表示8105などのPIP表示に2つのビデオを提示できる。他の実施形態では、合成表示は、並んだ2つの表示域又は斜めに整列した2つの表示域に2つのビデオを提示しうる。画像8110などの、PIP表示8105のスクリーンショットが撮影され、エンコーダ8115に送信される。その後、エンコーダは、スクリーンショットのシーケンスをビットストリーム8120に符号化してから、ビットストリーム8120をテレビ会議のリモートデバイスに送信する。2つのビデオを符号化するためのいくつかの異なる手法を上述したが、他の手法も可能である。
【0597】
6.復号
デュアルカメラ携帯デバイスの一部の実施形態は、
図78〜
図81に関して上述した手法によって符号化されたビットストリームを受け取ってもよい。このような実施形態では、デュアルカメラ携帯デバイスは、ビデオを符号化するために使用された手法を示す情報を(例えば、テレビ会議制御チャネルを通じて)受け取ってもよい。
図82は、テレビ会議中にデュアルカメラ携帯デバイスに表示するために通信ネットワークを通じて別のデバイスから受け取った2つのビデオのビットストリームを復号する1つの手法を示す。具体的には、この手法は、上記で
図78に関して説明した符号化手法によって符号化されたビットストリームを復号するために使用される。
【0598】
図82に示すように、この手法は、分離モジュール8235、バッファ8230及び8290並びにデコーダモジュール8225を使用する。分離モジュール8235は、ビットストリームを1つ以上のビットストリームに分解(すなわち、逆多重化)し、それらのビットストリームをバッファ8230に格納する。デコーダ8225は、符号化されたビットストリームを読み出し、それを復号してビデオを生成し、その後このビデオをバッファ8290に格納する。
【0599】
ここで、この手法の動作について、
図82に示される分離モジュール8235、バッファ8230及び8290並びにデコーダモジュール8225に関して説明する。最初に、デュアルカメラ携帯デバイスが、テレビ会議において他のデバイスから通信ネットワークを通じて(例えば、ネットワーキングマネージャ1614において)ビットストリーム7845を受け取る。受け取ったビットストリームは、2つのビットストリームの多重化されたビットストリームであるので、分離モジュール8235は、受け取ったビットストリームを2つのビットストリーム8255及び8260に分解する。符号化された各ビットストリームは、デバイスの2つのカメラのうちの一方から取り込まれたビデオデータを表す。その後、分離モジュール8235は、ビットストリーム8255及び8260をバッファ8230に格納する。
【0600】
その後、デコーダ8225は、2つのビットストリーム8255及び8260のうちの一方であるビットストリーム8250をバッファ8230から読み出し、デコーダ8225は、ビットストリーム8250を復号し、ビデオ8280を生成して、ビデオ8280をバッファ8290に格納する。デコーダ8225は、ビットストリーム8255及び8260のうちの他方も復号し、生成されたビデオをバッファ8290に格納する。ここで、両方のビデオは、バッファ8290から読み出され、格納されることもできるし、デュアルカメラ携帯デバイスに表示されることもできる。
【0601】
図83は、
図79に関して説明した手法によって符号化されたビットストリームを復号する手法を示す。
図83に示すように、この手法は、デコーダ8325と、バッファ8320と、分解器8315とを含む。
【0602】
一部の実施形態では、デコーダ8325は、
図79に示される手法によって符号化されたビットストリームを受け取り、ビットストリームを1つ以上の合成画像に復号し、その後、この合成画像がバッファ8320に格納される。分解器8315は、各合成画像から2つの画像を抽出する。合成画像から2つの画像を抽出するために、分解器8315は、各画像の合成画像内部での位置を示す情報(例えば、画像を合成及び符号化したテレビ会議においてデバイスからテレビ会議通信制御チャネルを通じて受け取った情報)も受け取る。
【0603】
ここで、この手法の動作について、
図83に示されるデコーダ8325、バッファ8320及び分解器8315に関して説明する。最初に、デコーダ8325は、
図79に関して説明した手法によって作製されたビットストリームなどのビデオのビットストリームを、テレビ会議の別の携帯デバイスから受け取る。デコーダ8325は、ビットストリームを、合成画像7955を含む1つ以上の合成画像に復号し、その合成画像をバッファ8320に格納する。その後、バッファ8320は、合成画像を分解器8315に送信する前に合成画像を格納する。分解器が合成画像7955をバッファ8320から受け取ると、分解器は、合成画像7955を2つの画像7905及び7910に分解する。これらの画像は、
図79の画像7905及び7910と同一である。
【0604】
ビットストリームが、
図81で説明したシステムなどのシステムから受け取られた場合に、
図83のデコーダ8325などのデコーダは、ビットストリームをスクリーンショットのシーケンスに復号する。スクリーンショットのシーケンスは、さらなる処理を行わずに、デバイスの画面にビデオとして表示される。
【0605】
VI.複数のソース
上述のように、ビデオは、テレビ会議においてデュアルカメラ携帯デバイスの両方のカメラによって取り込まれ、別のデバイスに伝送されうる。一部の実施形態は、デュアルカメラ携帯デバイスの両方のカメラから取り込まれたビデオを伝送するのではなく、デュアルカメラ携帯デバイスのカメラから取り込まれたビデオと共にデュアルカメラ携帯デバイスに表示される異なるメディアコンテンツ又は任意のコンテンツを伝送してもよい。言い換えれば、これらの実施形態は、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオと共にいくつかのソースからのコンテンツを伝送できる。
【0606】
図84は、一部の実施形態のデュアルカメラ携帯デバイスのテレビ会議及び処理モジュールのための別のソフトウェアアーキテクチャを概念的に示す。
図84のテレビ会議及び処理モジュールは、テレビ会議及び処理モジュールがディスプレイドライバ8485と記憶装置8475とを含み、メディア交換モジュール1620がメディアソースモジュール8470と画面取り込みモジュール8480とを含むことを除いて、
図16のテレビ会議及び処理モジュール1600と同様である。
【0607】
一部の実施形態のメディアソースモジュール8470は、テレビ会議モジュール8402と記憶装置8475との間でメディアコンテンツを経路制御する。メディアコンテンツの例は、ビデオ、画像、文書及び音楽を含む。他の実施形態は、他のタイプのメディアコンテンツを記憶装置8475に格納する。一部の実施形態の記憶装置8475は内部記憶装置(例えば、RAM)であるが、他の実施形態の記憶装置8475は外部記憶装置(例えば、コンパクトフラッシュ(CF)カード、セキュアデジタル(SD)カードなど)である。
【0608】
一部の実施形態では、画面取り込みモジュール8480は、ディスプレイドライバ8485を通じてデュアルカメラ携帯デバイスのディスプレイに表示されるコンテンツの画像を経路制御する。一部の実施形態では、ディスプレイドライバ8485は、ディスプレイ上のコンテンツの取り込み及びコンテンツの画像への変換を担当する。異なる実施形態は、ディスプレイに表示される異なるコンテンツを取り込む。例えば、一部の実施形態は、ディスプレイに表示されるすべてのコンテンツを取り込む。他の実施形態は、ディスプレイの特定の表示域(例えば、現在のアクティブなウィンドウの表示域、PIP表示の表示域など)を取り込む。
【0609】
ここで、テレビ会議及び処理モジュールの一部の例示的な動作について、
図84に関して説明する。デュアルカメラ携帯デバイスのカメラから取り込まれたビデオと共にメディアコンテンツを伝送するために、一部の実施形態のテレビ会議モジュール8402は、CIPU1650から画像を読み出すのではなく、テレビ会議マネージャ1604がメディアソースモジュール8470を通じて記憶装置8475からメディアコンテンツを読み出すことを除いて、
図16で上述したテレビ会議モジュール1602と同じ動作を実行する。デュアルカメラ携帯デバイスのディスプレイに表示されるコンテンツの画像を伝送するために、テレビ会議マネージャ1604の一部の実施形態は、ディスプレイドライバ8485を通じてデュアルカメラ携帯デバイスのディスプレイに表示されるコンテンツの画像を読み出す。一部の実施形態は、ディスプレイに表示されるメディアコンテンツ又はコンテンツの画像に対して、CIPU1650から読み出された画像に対して実行されるのと同様の処理(例えば、パースペクティブ補正、サイズ変更など)を実行するが、他の実施形態は処理をまったく実行しない。
【0610】
上記の説明は、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオと共に種々のソースからのコンテンツを伝送する例のうちいくつかについて記載する。しかし、他の実施形態は、他の異なるタイプのコンテンツを伝送できる。例えば、複数の参加者が関与するテレビ会議では、一部の実施形態は、テレビ会議で、あるデバイスから受信したビデオ及びデュアルカメラ携帯デバイスのカメラによって取り込まれたビデオを別のデバイスに伝送する。したがって、任意の数のソースからの任意の数の異なるタイプのコンテンツが、デュアルカメラ携帯デバイスのカメラによって取り込まれたビデオと共に伝送されうる。
【0611】
VII.複数の参加者によるテレビ会議
テレビ会議に関連する上記のセクションは、2人の参加者によるテレビ会議について説明する。しかし、一部の実施形態の携帯デバイスを用いた複数の参加者(すなわち、3人以上の参加者)によるテレビ会議も可能である。一部の実施形態では、複数の参加者によるテレビ会議の参加者全員が互いに姿を見、声を聞くことができる。他の実施形態は、1人の参加者(例えば、放送者)が他の参加者全員の姿を見、声を聞くことができ、他の参加者全員も放送者の姿を見、声を聞くことができるが、他の参加者が(例えば、放送者によって許可されないかぎり)互いの姿を見、声を聞くことはできない、複数の参加者による放送型テレビ会議を提供する。
【0612】
A.複数の参加者によるテレビ会議のユーザインタフェース
複数の参加者によるテレビ会議中に、一部の実施形態は、テレビ会議の参加者を表示し、姿を見る特定の参加者(群)を選択するためのさまざまな異なるUIを提供する。例えば、携帯デバイスの一部の実施形態は、複数の参加者によるテレビ会議の参加者全員を同時に表示するUIを提供し、携帯デバイスのユーザは、姿を見る参加者の1人を(例えば、選択した参加者の画像を引き伸ばすことによって)選択できる。
図85は、このようなUIの一例を示す。
【0613】
この図は、複数の参加者によるテレビ会議の参加者全員を携帯デバイス8500のUI8530に同時に表示し、姿を見る参加者の1人を選択するための動作のシーケンスを、UI8530の5つの異なる段階8505、8510、8515、8520及び8525として示す。第1段階8505は、他のデバイスの他の3人のユーザ間の、複数の参加者によるテレビ会議が確立された後のUI8530を示す。図示のように、UI8530は、合成表示8535と、表示域1155とを含む。合成表示8535は、複数の参加者によるテレビ会議の参加者のカメラによって取り込まれた画像を表示する4つの表示域8565、8570、8575及び8580を含む。この例では、表示域8565は、携帯デバイス8500のユーザを示す(すなわち、表示域8565は、携帯デバイス8500の前面カメラによって取り込まれた画像を表示する)。表示域1155は、
図12のこれまでの上述した表示域1155と同じである。
【0614】
第2段階8510は、携帯デバイス8500のユーザが合成表示域8530の表示域のうちの1つを選択することによって参加者選択動作を開始することを示す。具体的には、第2段階8510は、ユーザが表示域8570を(例えば、指8550で表示域8570をタップすることによって)選択することを示す。
【0615】
UI8530の第3段階8515は、参加者選択動作が完了した後の合成表示8555を示す。一部の実施形態は、第2段階8510と第3段階8515との間の移行を表示するためにアニメーション(不図示)を提供する。合成表示8555は、第2段階8510で選択された参加者の表示域を示すPIP表示8560(すなわち、表示域8570)を背景表示域として含み、ユーザの表示域8565をPIP表示8560の挿入表示域として含む。この例では、PIP表示8560は、横向きに合うように水平に伸張された選択された表示域8570の画像を示す。一部の実施形態では、画像は伸張されず、選択した表示域の画像はその縦向きを維持する(すなわち、背景表示域の各辺の余分な空白は、
図36に示すように、黒いバーで満たされる)。そのうえ、合成表示8555は、2つの選択されていない表示域8575及び8580の縮小画像を示す合成表示8585も含む。
【0616】
第4段階8520は、PIP表示8560を選択することによって(例えば、指8550でPIP表示8560をタップすることによって)、携帯デバイス8500のユーザが参加者選択解除動作を始めているところを示す。第5段階8525は、参加者選択解除動作の完了後の合成表示8535を示す。
【0617】
図85は、複数の参加者によるテレビ会議の参加者全員を同時に表示し、参加者選択動作を実行し、参加者選択解除動作を実行するための動作の例示的なシーケンスを示す。動作の他のシーケンスが可能である。例えば、第3段階8515の後、ユーザは、参加者選択解除動作を開始する代わりに、表示域8585内の新たに選択された表示域をPIP表示8560の背景表示域(すなわち、以前に選択された表示域)と入れ換えるために合成表示8585に表示される選択されていない表示域のうちの1つを選択できる。したがって、ユーザは、複数の参加者によるテレビ会議中に、表示域8585内の表示域をPIP表示8560の背景表示域といつでも任意の回数入れ換えることができる。また、複数の参加者によるテレビ会議中にいつでも、ユーザは、参加者選択解除動作を実行して合成表示8535に戻ることができる。さらに、異なる実施形態により、ユーザは、携帯デバイス8500上のスイッチを切り換えることによって、音声コマンドを与えることによってなどの、異なる仕方で、特定の参加者を選択できる。
【0618】
一部の実施形態は、例えば、音声検出に基づいて参加者を自動的に選択するための技術を提供する。このような実施形態では、参加者の1人が話す場合に、その参加者の表示域がPIP表示8560の背景表示域として自動的に選択される。異なる参加者が話す場合に、その参加者の表示域がPIP表示8560の背景表示域として自動的に選択される。一部の実施形態では、複数の参加者によるテレビ会議の参加者のうちだれも話していない場合に、ディスプレイは、規定の量の沈黙(例えば、3秒)後に合成表示8535を表示する。一部の実施形態では、携帯デバイス8500のユーザが話す場合に、携帯デバイス8500のUI8530で何も起こらない。
【0619】
図86は、複数の参加者によるテレビ会議の参加者全員を同時に表示し、参加者のうちの見るべき1人を選択するための動作の別の例示的なシーケンスを示す。
図86は、この動作を携帯デバイス8500のUI8645に、UI8645の異なる7つの段階8505、8605、8610、8615、8620、8625及び8630として示す。第1段階8505は、他のデバイスの他の3人のユーザ間の複数の参加者によるテレビ会議が確立された後のUI8645を示す
図85に示される第1段階8505と同じである。
【0620】
第2段階8605は、表示域8570を選択することによって(例えば、2本の指を表示域8570に置くことによって)、携帯デバイス8500のユーザが参加者選択動作を開始しているところを示す。第3段階8610は、参加者選択動作の移行段階を示す。この段階で、ユーザは、表示域8570をより大きくさせ、合成表示8535となるために使用されたものの表示域を満たしながら、互いから離れるように2つの指をドラッグする。この例は、表示域8570が選択されていることを示すが、他の表示域8565、8575及び8580のいずれかが選択されうる。一部の実施形態では、携帯デバイス8500のユーザは、ユーザの表示域(すなわち、この例では表示域8565)を選択しないようにできる。
【0621】
UI8645の第4段階8615は、参加者選択動作が完了した後のPIP表示8635を示す。一部の実施形態は、ユーザが、表示域8570がPIP表示8635の背景表示域8640を満たすまで、互いから離れるような指のドラッグを継続することを必要とするが、他の実施形態は、ユーザが指を離す前に、ユーザが特定のしきい値量よりも大きくなる(例えば、特定の距離よりも長い、又は特定の時間量よりも大きい)ようなドラッグ動作を行うことのみが必要とされる。ユーザのドラッグ動作が特定のしきい値量を満たすか又はこれを超える場合に、UI8645は、PIP表示8635の背景表示域8640を満たすまで、表示域8570を拡大しつづける。そうでない場合に、参加者選択動作は完了せず、UI8645は合成表示8535に戻る。図示のように、選択された表示域(すなわち、表示域8570)はPIP表示8635の背景表示域8640であり、ユーザの表示域8565はPIP表示8635の挿入表示域である。一部の実施形態は、第3段階8610と第4段階8615との間の移行を表示するためにアニメーション(不図示)を提供する。
【0622】
第5段階8620は、携帯デバイス8500のユーザがPIP表示8635の表示域8640を選択することによって(例えば、2本の指を背景表示域8640に置くことによって)参加者選択解除動作を開始しているところを示す。第6段階8625は、参加者選択解除動作の移行段階を示す。この段階は、PIP表示8635の背景表示域8640となるように使用されるものの表示域を縮めるために、ユーザが指を互いに向かってドラッグするところを示す。第3段階8610で説明した動作と同様に、一部の実施形態は、ユーザが指を離す前に、ユーザのドラッグ動作がしきい値量よりも大きくなる(例えば、特定の距離よりも長い、又は特定の時間量よりも長い)ことを必要とする。そうでない場合に、参加者選択解除動作は完了せず、UI8645はPIP表示8635に戻る。UI8645の第7段階8630は、参加者選択解除動作の完了後の合成表示8535を示す。
【0623】
図86は、複数の参加者によるテレビ会議の参加者全員を同時に表示し、参加者選択動作を実行し、参加者選択解除動作を実行するための動作の別の例示的なシーケンスを示す。しかし、一部の実施形態により、携帯デバイス8500のユーザは、参加者選択動作及び参加者選択解除動作を反復して実行できる。
図87は、1つのこのような実施形態を示す。
【0624】
具体的には、
図87は、UI8730において参加者選択動作及び参加者選択解除動作を複数回実行する例示的なシーケンスを、UI8730の7つの異なる段階8505、8705、8615、8710、8715、8720及び8725として示す。第1段階8505は、上述の
図85及び
図86の第1段階8505と同じである。第2段階8705は、ユーザが(2本の指を表示域8570に置くのではなく)表示域8570を一度タップすることによって表示域8570を選択することを除いて、
図86の第2段階8605と同様である。第3段階8615は、参加者選択動作の完了後のPIP表示8635を示すので、
図86の第4段階8615と同じである。第4段階8710は、ユーザが(2本の指を背景表示域8640に置くのではなく)背景表示域8640を一度タップすることによってPIP表示8645の背景表示域8640を選択することを除いて、
図86の第5段階8620と同様である。
【0625】
第5段階8715は、参加者選択解除動作が完了した後の合成表示8535を示すので、
図86の第7段階8630と同じである。第6段階8720は、参加者選択動作が表示域8575に対して実行されることを除いて、第2段階8510と同様に示す。同様に、第7段階8725は、選択された表示域(すなわち、表示域8575)をPIP表示8635の背景表示域8640として示すので、第3段階8705と同様である。
図87は、少数の参加者選択動作及び参加者選択解除動作のみを示しているが、任意の数のこのような動作が、複数の参加者によるテレビ会議中に実行されうる。
【0626】
さらに、一部の実施形態は、テレビ会議中に異なる数の参加者を表示できるUIを提供する。例えば、一部の実施形態のUIは、携帯デバイスが直立位置(すなわち、縦向き)に保持される場合に複数の参加者によるテレビ会議の参加者の一部のみを表示し、携帯デバイスが横向き位置(すなわち、横向き)に保持される場合に追加の参加者を表示する。他の実施形態は、携帯デバイスが横向き位置に保持される場合に参加者全員を表示する。さらに、一部の実施形態は、
図34、
図35、
図36及び
図37に示されるのと同様に、携帯デバイスの異なる位置及び/又は向きの間での移行を示すアニメーションを提供する。他の異なるアニメーションも可能である。
【0627】
テレビ会議中に異なる数の参加者を表示するUIの別の例として、一部の実施形態により、携帯デバイスのユーザは、複数の参加者を選択してテレビ会議中に同時に姿を見ることができる。説明のために
図85の第1段階8505を参照すると、これらの実施形態のうちの一部により、携帯デバイス8500のユーザは、表示域8565、8570、8575及び8580の2つ以上を(例えば、合成表示8535の対応する表示域をタップすることによって)選択できる。選択された表示域は、他のタイプの複数の参加者の表示構成の中でも特に、合成表示、PIP表示、
図65に示される表示構成のいずれかなどの種々の方式で表示されうる。そのうえ、一部の実施形態の一例を説明しているが、異なる実施形態は、複数の参加者によるテレビ会議の複数の参加者を多くの異なる仕方で選択及び表示できることが当業者には理解されよう。
【0628】
B.複数の参加者による放送型テレビ会議のためのユーザインタフェース
前述のように、複数の参加者による放送型テレビ会議は、1人の参加者が他の参加者全員の姿を見て声を聞くことのみが可能であり、他の参加者は、互いに声を聞いたり姿を見たりすることはできない。複数の参加者による放送型テレビ会議を容易にするため、一部の実施形態は、複数の参加者による放送型テレビ会議の放送者及び他の参加者を表示するための多数の異なるUIを提供する。例えば、一部の実施形態は、
図85に示される第3段階8515のレイアウトと同様である学生と教師のような(student-teacher-like)UIレイアウトを提供する。したがって、その後、一部の実施形態の学生と教師のUIレイアウトについて、この段階に関して説明する。
【0629】
これらの実施形態では、放送者のみが、PIP表示8560の表示域全体に表示される(すなわち、挿入表示域は表示されない)。複数の参加者による放送型テレビ会議の他の参加者は、合成表示8585に表示される表示域と同様のPIP表示8560の下に表示される。一部の実施形態では、規定の数の他の参加者は、携帯デバイスが縦モードである場合に合成表示8585に表示されるが、追加又はすべての参加者は、携帯デバイスが上述したものと同様に横モードである場合に合成表示8585に表示されうる。さらに、他の実施形態は、複数の参加者による放送型テレビ会議の放送者及び他の参加者を表示するための異なるUIを提供する。
【0630】
C.複数の参加者によるテレビ会議のためのオーディオの制御
さらに、一部の実施形態の携帯デバイスは、複数の参加者によるテレビ会議の参加者のオーディオを制御するための異なる技術を提供する。例えば、携帯デバイスの一部の実施形態により、携帯デバイスのユーザは、このような実施形態のUIに表示されるボリューム制御の単一の集合(例えば、ボリュームスライダ)を通じて複数の参加者によるテレビ会議において各参加者のオーディオを制御できる。他の実施形態では、携帯デバイスにより、携帯デバイスのユーザは、各参加者の表表示域に表示されるボリュームスライダなどのボリューム制御の集合によって複数の参加者によるテレビ会議における各参加者のオーディオのボリュームを個別に制御できる。一部の実施形態は、ボリューム制御の集合の代わりに消音ボタンのみを提供する。したがって、一部のこのような実施形態では、携帯デバイスのユーザは、複数の参加者によるテレビ会議の参加者全員を消音又は消音解除することのみができるが、他のこのような実施形態では、携帯デバイスのユーザは、複数の参加者によるテレビ会議の各参加者を個別に消音又は消音解除できる。さらに、複数の参加者によるテレビ会議の参加者のオーディオを制御するための他の技術は、携帯デバイス上のスイッチを切り換えることによって、音声コマンドを与えることなどによって可能である。
【0631】
VIII.電子システム
上述の機能及び用途の多くは、(コンピュータ可読媒体とも呼ばれる)コンピュータ可読記憶媒体に記録された命令セットとして特定されるソフトウェアプロセスとして実施される。これらの命令が1つ以上の処理ユニット(例えば、1つ以上のプロセッサ、プロセッサのコア又は他の処理ユニット)によって実行される場合に、処理ユニット(群)に、命令に示された動作を実行させる。コンピュータ可読媒体の例は、CD−ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROMなどを含むが、これらに限定されない。コンピュータ可読媒体は、無線接続又は有線接続を通る搬送波及び電子信号を含まない。
【0632】
本明細書では、「ソフトウェア」という用語は、リードオンリメモリに常駐するファームウェア又は磁気記憶装置に格納されたアプリケーションを含むことを意味し、プロセッサによる処理のためにメモリに読み込まれることができる。また、一部の実施形態では、複数のソフトウェア発明は、別個のソフトウェア発明を残しながら、より大規模なプログラムのサブパーツ(sub-part)として実施されうる。一部の実施形態では、複数のソフトウェア発明は、別個のプログラムとして実施されることもできる。最後に、本明細書で説明するソフトウェア発明を一緒に実施する別個のプログラムのいかなる組み合わせも本発明の範囲内に含まれる。一部の実施形態では、ソフトウェアプログラムは、1つ以上の電子システム上で動作するようにインストールされた場合に、ソフトウェアプログラムの動作を実行及び実施する1つ以上の特定のマシン実装を規定する。
【0633】
一部の実施形態は、呼び出し側プログラムコードが1つ以上のインタフェースを通じて呼び出されている他のプログラムコードと対話する環境で、1つ以上のアプリケーションプログラミングインタフェース(API)を含むソフトウェアプロセスとして実施される。種々の種類のパラメータをさらに含みうる種々の関数呼び出し、メッセージ又は他のタイプの起動は、呼び出し側プログラムと呼び出されているコードの間のAPIを介して転送されうる。さらに、APIは、APIで定義され、かつ呼び出しされるプログラムコードで実装されるデータ型又はクラスを使用する能力を呼び出し側プログラムコードに提供しうる。
【0634】
少なくとも所定の実施形態は、呼び出し側ソフトウェアコンポーネントが、呼び出されるソフトウェアコンポーネントとAPIを通じて対話する環境を含む。この環境においてAPIを通じて動作するための方法は、APIを介した1つ以上の関数呼び出し、メッセージ、他のタイプの起動又はパラメータの転送を含む。
【0635】
一部の実施形態では、1つ以上のアプリケーションプログラミングインタフェース(API)を使用できる。例えば、メディア交換モジュール310(又は910)の一部の実施形態は、
図19に説明したTNRモジュール1900の機能などの
図3及び
図9に説明した種々のビデオ処理及び符号化機能にアクセスするために、API集合を他のソフトウェアコンポーネントに提供する。
【0636】
APIは、プログラムコードコンポーネント又はハードウェアコンポーネント(以下「API実装コンポーネント」と呼ぶ)によって実装されるインタフェースであり、異なるプログラムコードコンポーネント又はハードウェアコンポーネント(以下「API呼び出し側コンポーネント」と呼ぶ)は、これにアクセスして、API実装コンポーネントによって提供される1つ以上の関数、メソッド、プロシージャ、データ構造、クラス及び/又は他のサービスを使用できる。APIは、API呼び出し側コンポーネントとAPI実装コンポーネントとの間で渡される1つ以上のパラメータを定義できる。
【0637】
APIにより、(サードパーティの開発者であってもよい)API呼び出し側コンポーネントの開発者は、API実装コンポーネントによって提供される特定の機能を活用できる。1つのAPI呼び出し側コンポーネントもありうるし、複数のこのようなコンポーネントもありうる。APIは、アプリケーションからのサービスの要求をサポートするためにコンピュータシステム又はプログラムライブラリが提供するソースコードインタフェースでありうる。オペレーティングシステム(OS)は、OS上で実行されるアプリケーションがこれらのAPIのうちの1つ以上を呼び出すことを可能にするために複数のAPIを有することができ、(プログラムライブラリなどの)サービスは、サービスを使用するアプリケーションがそれらのAPIのうちの1つ以上を呼び出すために複数のAPIを有しうる。APIは、アプリケーションのビルド時に解釈実行又はコンパイルされうるプログラミング言語の観点で特定されうる。
【0638】
一部の実施形態では、API実装コンポーネントは、それぞれAPI実装コンポーネントによって実装される機能の異なる態様の異なるビュー又はこの異なる態様にアクセスする異なる態様を提供する複数のAPIを提供できる。例えば、API実装コンポーネントのあるAPIは、関数の第1集合を提供でき、サードパーティの開発者に公開でき、API実装コンポーネントの別のAPIは、隠されており(公開されておらず)、関数の第1集合の部分集合を提供し、関数の第1集合に含まれない関数のテスト又はデバッグなどの、関数の別の集合も提供する。他の実施形態では、API実装コンポーネント自体が、その基礎となるAPIを介して1つ以上の他のコンポーネントを呼び出し、したがってAPI呼び出し側コンポーネントとAPI実装コンポーネントとの両方を兼ねることができる。
【0639】
APIは、API実装コンポーネントの特定の機能にアクセスして使用する場合にAPI呼び出し側コンポーネントが使用する言語及びパラメータを定義する。例えば、API呼び出し側コンポーネントは、APIによって公開される(例えば、関数又はメソッドによって実施される)1つ以上のAPIの呼び出し又は起動を通じてAPI実装コンポーネントの特定の機能にアクセスし、APIの呼び出し又は起動を介してパラメータを使用してデータ及び制御情報を渡す。API実装コンポーネントは、API呼び出し側コンポーネントからのAPI呼び出しに応答してAPIを通じて値を返してもよい。APIは、API呼び出しの構文及び結果(例えば、どのようにしてAPI呼び出しを起動するか、及びAPI呼び出しが何を行うか)を定義するが、APIは、API呼び出しによって指定された関数をAPI呼び出しがどのように実現するかを明らかにしなくてもよい。種々のAPI呼び出しは、呼び出し側(API呼び出し側コンポーネント)とAPI実装コンポーネントとの間の1つ以上のアプリケーションプログラミングインタフェースを介して転送される。API呼び出しの転送は、関数呼び出し又はメッセージの発行、開始、起動、呼び出し、受信、返送、又は応答を含みうる。言い換えれば、転送は、API呼び出し側コンポーネント又はAPI実装コンポーネントのいずれかによる動作を記述できる。APIの関数呼び出し又は他の起動は、パラメータリスト又は他の構造を通じて1つ以上のパラメータを送信又は受信できる。パラメータは、定数、キー、データ構造、オブジェクト、オブジェクトクラス、変数、データ型、ポインタ、配列、リスト、又は関数若しくはメソッドへのポインタ、又はAPIを介して渡されるデータ若しくは他の項目を参照する別の仕方でありうる。
【0640】
そのうえ、データ型又はクラスは、APIによって提供され、API実装コンポーネントによって実装されうる。したがって、API呼び出し側コンポーネントは、APIで提供される定義を使用することによって、変数を宣言し、このような型又はクラスへのポインタを使用し、このような型又はクラスの定数値を使用又はインスタンス化できる。
【0641】
一般に、APIは、API実装コンポーネントによって提供されるサービス若しくはデータにアクセスするために、又はAPI実装コンポーネントによって提供される動作又は計算の実行を開始するために使用されうる。例を挙げると、API実装コンポーネント及びAPI呼び出し側コンポーネントはそれぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム又は他のモジュールの任意の1つであってもよい(API実装コンポーネント及びAPI呼び出し側コンポーネントは、同じタイプのモジュールであってもよいし、互いと異なるタイプのモジュールであってもよいことを理解されたい)。一部の場合では、API実装コンポーネントは、少なくとも一部がファームウェア、マイクロコード又は他のハードウェア論理回路において実施されうる。一部の実施形態では、APIにより、クライアントプログラムが、ソフトウェア開発キット(SDK)ライブラリによって提供されるサービスを使用することが可能になる。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークによって提供されるAPIを使用できる。これらの実施形態では、アプリケーション又はクライアントプログラムは、SDK及びAPIによって提供される関数又はメソッドへの呼び出しを組み込むことができ、又は、SDKで定義されAPIによって提供されるデータ型又はオブジェクトを使用できる。アプリケーションフレームワークは、これらの実施形態では、フレームワークによって定義された種々のイベントに応答するプログラムにメインイベントループを提供できる。APIにより、アプリケーションは、アプリケーションフレームワークを使用してイベント及びイベントへの応答を規定できる。いくつかの実装形態では、API呼び出しは、入力の能力及び状態、出力の能力及び状態、処理能力、電力状態、記憶装置の容量及び状態、通信能力などの態様に関連する能力又は状態を含む、ハードウェアデバイスの能力又は状態をアプリケーションに報告でき、APIは、一部において、ファームウェア、マイクロコード又は一部においてハードウェアコンポーネント上で実行する他の低レベル論理回路によって実装されうる。
【0642】
API呼び出し側コンポーネントは、ローカルコンポーネント(すなわち、API実装コンポーネントと同じデータ処理システム上にある)であってもよいし、ネットワークを介してAPIを通じてAPI実装コンポーネントと通信するリモートコンポーネント(すなわち、API実装コンポーネントと異なるデータ処理システム上にある)であってもよい。API実装コンポーネントは、API呼び出し側コンポーネントとして機能してもよく(すなわち、異なるAPI実装コンポーネントによって公開されているAPIへのAPI呼び出しを行ってもよく)、API呼び出し側コンポーネントは、異なるAPI呼び出し側コンポーネントに公開されるAPIを実装することによってAPI実装コンポーネントとして機能してもよいことを理解されたい。
【0643】
APIにより、異なるプログラミング言語で記述された複数のAPI呼び出し側コンポーネントが、API実装コンポーネントと通信できる(したがって、APIは、API実装コンポーネントとAPI呼び出し側コンポーネントとの間で呼び出し及び戻り値を変換するための機能を含むことができる)。しかし、APIは、特定のプログラミング言語の観点で実装されてもよい。API呼び出し側コンポーネントは、一実施形態では、OSプロバイダからのAPI集合及びプラグインプロバイダからの別のAPI集合及び別のプロバイダ又は別のAPI集合の作成者からの別のAPI集合(例えばソフトウェアライブラリのプロバイダ)などの異なるプロバイダからのAPIを呼び出せる。
【0644】
図88は、本発明の一部の実施形態で使用されてもよい例示的なAPIアーキテクチャを示すブロック図である。
図88に示すように、APIアーキテクチャ8800は、API8820を実装するAPI実装コンポーネント8810(例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア又は他のモジュール)を含む。API8820は、API呼び出し側コンポーネント8830によって使用されうるAPI実装コンポーネントの1つ以上の関数、メソッド、クラス、オブジェクト、プロトコル、データ構造、フォーマット及び/又は他の機構を規定する。API8820は、API実装コンポーネント8810の関数がどのようにAPI呼び出し側コンポーネント8830からパラメータを受け取るか、及び関数がどのようにAPI呼び出し側コンポーネントに結果を返すかを規定する少なくとも1つの呼び出し規約を規定できる。API呼び出し側コンポーネント8830(例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア又は他のモジュール)は、API8820によって規定されるAPI実装コンポーネント8810の機能にアクセスして使用するために、API8820を通じてAPI呼び出しを行う。API実装コンポーネント8810は、API呼び出しに応答してAPI8820を通じてAPI呼び出し側コンポーネント8830に値を返すことができる。
【0645】
API実装コンポーネント8810が、API8820を通じて規定されず、API呼び出し側コンポーネント8830が利用できないさらなる関数、メソッド、クラス、データ構造及び/又は他の機構を含んでもよいことが理解されよう。API呼び出し側コンポーネント8830が、API実装コンポーネント8810と同じシステム上にあってもよいし、リモートにあって、ネットワークを介してAPI8820を使用してAPI実装コンポーネント8810にアクセスしてもよいことを理解されたい。
図88は、API8820と対話する単一のAPI呼び出し側コンポーネント8830を示しているが、API呼び出し側コンポーネント8830とは異なる言語(又は同じ言語)で記述されうる他のAPI呼び出し側コンポーネントがAPI8820を使用してもよいことを理解されたい。
【0646】
API実装コンポーネント8810、API8820及びAPI呼び出し側コンポーネント8830は機械可読媒体に格納でき、機械可読媒体は、機械(例えば、コンピュータ又は他のデータ処理システム)によって読み取り可能な形で情報を格納するためのいかなる機構も含む。例えば、機械可読媒体は、磁気ディスク、光ディスク、ランダムアクセスメモリ、リードオンリメモリ、フラッシュメモリデバイスなどを含む。
【0647】
図89は、デュアルカメラモバイルコンピューティングデバイスアーキテクチャ8900の一例である。モバイルコンピューティングデバイスの実装形態は、1つ以上の処理ユニット8905と、メモリインタフェース8910と、周辺機器インタフェース8915とを含むことができる。コンピューティングデバイスアーキテクチャを構成するこれらのコンポーネントのそれぞれは、別個のコンポーネントとすることもできるし、1つ以上の集積回路に統合することもできる。これらの種々のコンポーネントは、1つ以上の通信バス又は信号線によって、まとめて結合されることもできる。
【0648】
周辺機器インタフェース8915は、カメラサブシステム8920、無線通信サブシステム(群)8925、オーディオサブシステム8930、I/Oサブシステム8935などを含む種々のセンサ及びサブシステムに結合されうる。周辺機器インタフェース8915により、プロセッサと周辺機器との間の通信が可能になる。方位センサ8945又は加速度センサ8950などの周辺機器は、向き及び加速度の機能を容易にするために周辺機器インタフェース8915に結合されうる。
【0649】
カメラサブシステム8920は、1つ以上の光センサ8940、例えば電荷結合素子(CCD)光センサ、相補型金属酸化膜半導体(CMOS)光センサに結合されうる。センサに結合されたカメラサブシステム8920は、画像及び/又はビデオのデータ取り込みなどのカメラの機能を容易にできる。無線通信サブシステム8925は、通信機能を容易にする働きをしうる。無線通信サブシステム8925は、無線周波数受信機と、無線周波数送信機と、光受信機と、光送信機とを含むことができる。無線通信サブシステムは、GSMネットワーク、Wi−Fiネットワーク、Bluetooth(登録商標)ネットワークなどの1つ以上の通信ネットワークで動作するように実施されうる。オーディオサブシステム8930は、オーディオ認識、デジタル記録などの音声対応機能を容易にするためにスピーカ及びマイクロフォンに結合される。
【0650】
I/Oサブシステム8935は、ディスプレイ、タッチスクリーンなどの入出力周辺デバイスと、CPUのデータバスとの間の周辺機器インタフェースを通じた転送を含む。I/Oサブシステム8935は、タッチスクリーンコントローラ8955と、他の入力コントローラ8960とを含み、これらの機能を容易にできる。タッチスクリーンコントローラ8955は、タッチスクリーン8965に結合され、複数の接触感度技術のいずれかを使用して画面上での接触及び移動を検出できる。他の入力コントローラ8960は、1つ以上のボタンなどの他の入力/制御デバイスに結合されうる。
【0651】
メモリインタフェース8910はメモリ8970に結合でき、メモリ8970は、高速ランダムアクセスメモリ及び/又はフラッシュメモリなどの不揮発性メモリを含むことができる。メモリは、オペレーティングシステム(OS)8972を格納できる。OS8972は、基本システムサービスを取り扱うため、及びハードウェアに依存するタスクを実行するための命令を含むことができる。
【0652】
メモリは、1つ以上の追加デバイスとの通信を容易にするための通信命令8974と、グラフィックユーザインタフェース処理を容易にするためのグラフィカルユーザインタフェース命令8976と、画像/ビデオに関連する処理及び機能を容易にするための画像/ビデオ処理命令8978と、電話に関連するプロセス及び機能を容易にするための電話命令8980と、メディア通信及び処理に関連するプロセス及び機能を容易にするためのメディア交換及び処理命令8982と、カメラに関連するプロセス及び機能を容易にするためのカメラ命令8984と、テレビ会議プロセス及び機能を容易にするためのテレビ会議命令8986とも含むことができる。上記で識別された命令は、別個のソフトウェアプログラム又はモジュールとして実装される必要はない。モバイルコンピューティングデバイスの種々の機能は、1つ以上の信号処理及び/又は特定用途向け集積回路を含むハードウェア及び/又はソフトウェアで実装されうる。
【0653】
上述の実施形態は、
図90に示すように、有線又は無線の通信チャネル9002を介してコンピューティングシステム9003と対話するためにタッチ入力を受け取り可能なタッチI/Oデバイス9001を含むことができる。タッチI/Oデバイス9001は、キーボード、マウスなどの他の入力デバイスの代わりに、又はこれと組み合わせて、コンピューティングシステム9003にユーザ入力を提供するために使用されうる。1つ以上のタッチI/Oデバイス9001は、コンピューティングシステム9003にユーザ入力を提供するために使用されうる。タッチI/Oデバイス9001は、コンピューティングシステム9003の一体部分(例えば、ラップトップ上のタッチスクリーン)であってもよいし、コンピューティングシステム9003とは別であってもよい。
【0654】
タッチI/Oデバイス9001は、全体的又は部分的に透過的、半透過的、非透過、不透明又はこれらの任意の組み合わせであるタッチセンサパネルを含むことができる。タッチI/Oデバイス9001は、タッチスクリーン、タッチパッド、タッチパッドとして機能するタッチスクリーン(例えば、ラップトップのタッチパッドを置き換えるタッチスクリーン)、他の任意の入力デバイスと結合若しくは組み合わせたタッチスクリーン若しくはタッチパッド(例えば、キーボード上に配されたタッチスクリーン又はタッチパッド)、又はタッチ入力を受け取るためのタッチセンサ面を有する任意の多次元物体として実施されうる。
【0655】
一例では、タッチスクリーンとして実施されたタッチI/Oデバイス9001は、ディスプレイの少なくとも一部分の上に部分的又は全体的に配置された透過的及び/又は半透過的なタッチセンサパネルを含むことができる。この実施形態によれば、タッチI/Oデバイス9001は、コンピューティングシステム9003(及び/又は別のソース)から送られたグラフィカルデータを表示するように機能し、また、ユーザ入力を受け取るように機能する。他の実施形態では、タッチI/Oデバイス9001は、タッチセンサコンポーネント/デバイスがディスプレイコンポーネント/デバイスと一体化された統合タッチスクリーンとして実施されうる。さらに他の実施形態では、タッチスクリーンは、補助又は同じグラフィカルデータを主要表示として表示してタッチ入力を受け取るための補助又は追加の表示画面として使用されうる。
【0656】
タッチI/Oデバイス9001は、容量測定、抵抗測定、光学測定、音響測定、誘導測定、機械的測定、化学的測定又はデバイス9001近傍での1つ以上のタッチ又はニアタッチの発生に関して測定できるあらゆる現象に基づいて、デバイス9001上の1つ以上のタッチ又はニアタッチの位置を検出するように構成されうる。ソフトウェア、ハードウェア、ファームウェア又はこれらの任意の組み合わせは、1つ以上のジェスチャーを識別して追跡する目的で、検出されたタッチの測定を処理するために使用されうる。ジェスチャーは、タッチI/Oデバイス9001上での定常的又は非定常的な、単一又は複数の、タッチ又はニアタッチに対応してもよい。ジェスチャーは、本質的に同じ時刻に、隣接して又は連続して、タップする、押す、固定する、こする、捻る、向きを変更する、圧力を変化させて押すなどの、タッチI/Oデバイス9001上で特定の方式で1つ以上の指又は他の物体を移動することによって実行されうる。ジェスチャーは、他の任意の1本以上の指で又は他の任意の1本以上の指により、挟む、スライドする、スワイプする、回転する、曲げる、ドラッグする又はタップする動きを特徴とできるが、これらに限定されない。単一のジェスチャーは、1つ以上の手を用いて、1人以上のユーザによって、又はこれらの任意の組み合わせによって実行されうる。
【0657】
コンピューティングシステム9003は、グラフィカルデータを用いて、ディスプレイにグラフィカルユーザインタフェース(GUI)を表示させてもよい。GUIは、タッチI/Oデバイス9001を介してタッチ入力を受け取るように構成されうる。タッチI/Oデバイス9001は、タッチスクリーンとして実施されているので、GUIを表示できる。あるいは、GUIは、タッチI/Oデバイス9001とは別のディスプレイに表示されうる。GUIは、インタフェース内の特定の位置に表示されるグラフィカル要素を含むことができる。グラフィカル要素は、仮想スクロールホイール、仮想キーボード、仮想ノブ、仮想ボタン、任意の仮想UIなどを含む、表示される様々な仮想入力デバイスを含みうるが、これらに限定されない。ユーザは、GUIのグラフィカル要素と関連付けられうるタッチI/Oデバイス9001上の1つ以上の特定の位置で、ジェスチャーを実行できる。他の実施形態では、ユーザは、GUIのグラフィカル要素の位置と無関係な1つ以上の位置でジェスチャーを実行できる。タッチI/Oデバイス9001上で実行されるジェスチャーは、GUI内のカーソル、アイコン、メディアファイル、リスト、テキスト、画像の前部又は一部などのグラフィカル要素を直接的又は間接的に操作し、制御し、変更し、移動し、作動し、開始し、又は一般に影響を及ぼすことができる。例えば、タッチスクリーンの場合に、ユーザは、タッチスクリーン上のグラフィカル要素を介してジェスチャーを実行することによって、グラフィカル要素と直接的に対話できる。あるいは、タッチパッドは、一般に間接的な対話を提供する。ジェスチャーはまた、表示されていないGUIエレメントに影響を及してもよいし(例えば、ユーザインタフェースを表示させる)、又はコンピューティングシステム9003内の他の動作に影響を及ぼしてもよい(例えば、GUI、アプリケーション又はオペレーティングシステムの状態又はモードに影響を及ぼす)。ジェスチャーは、表示されるカーソルと共にタッチI/Oデバイス9001上で実行されてもよいし、実行されなくてもよい。例えば、ジェスチャーがタッチパッド上で実行される場合に、カーソル(又はポインタ)は表示画面又はタッチスクリーンに表示されてもよく、カーソルは、表示画面上のグラフィカルオブジェクトと対話するためにタッチパッド上でのタッチ入力を介して制御されてもよい。ジェスチャーがタッチスクリーン上で直接的に実行される他の実施形態では、ユーザは、カーソル又はポインタがタッチスクリーンに表示されているかどうかにかかわらず、タッチスクリーン上のオブジェクトと直接的に対話できる。
【0658】
タッチI/Oデバイス9001上でのタッチ又はニアタッチに応答して又はこれに基づいて、通信チャネル9002を介してユーザにフィードバックが提供されうる。フィードバックは、光学的に、機械的に、電気的に、嗅覚的に、音響的になど、又はこれらの任意の組み合わせで、可変的な又は非可変的な方式で送られうる。
【0659】
上述したこれらの機能は、デジタル電子回路において、コンピュータソフトウェア、ファームウェア又はハードウェアにおいて実施されうる。技術は、1つ以上のコンピュータプログラムを使用して実施されうる。プログラム可能なプロセッサ及びコンピュータは、携帯デバイスに含まれるか又は携帯デバイスとしてパッケージ化されうる。プロセス及び論理フローは、1つ以上のプログラム可能なプロセッサによって、及び1つ以上のプログラム可能な論理回路によって実行されうる。通信ネットワークを通じて汎用コンピューティングデバイス及び記憶デバイス並びに専用コンピューティングデバイス及び記憶デバイスが相互接続されうる。
【0660】
一部の実施形態は、(コンピュータ可読記憶媒体、機械可読媒体又は機械可読記憶媒体とも呼ばれる)機械可読媒体又はコンピュータ可読媒体にコンピュータプログラム命令を格納する、マイクロプロセッサ、記憶装置及びメモリなどの電子コンポーネントを含む。このようなコンピュータ可読媒体の一部の例は、RAM、ROM、リードオンリーコンパクトディスク(CD−ROM)、レコーダブルコンパクトディスク(CD−R)、リライタブルコンパクトディスク(CD−RW)、リードオンリーデジタル多用途ディスク(例えば、DVD−ROM、2層DVD−ROM)、さまざまなリコーダブル/リライタブルDVD(例えば、DVD−RAM、DVD−RW、DVD+RWなど)、フラッシュメモリ(例えば、SDカード、miniSDカード、microSDカードなど)、磁気ハードドライブ及び/又は固体ハードドライブ、リードオンリーBlu−Ray(登録商標)ディスク及びレコーダブルBlu−Rayディスク、UDO(ultra density optical)ディスク、他の任意の光媒体又は磁気媒体並びにフロッピーディスク(登録商標)を含む。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能で種々の動作を実行するための命令セットを含むコンピュータプログラムを格納できる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及びインタプリタを使用してコンピュータ、電子コンポーネント又はマイクロプロセッサによって実行される高レベルコードを含むファイルを含む。
【0661】
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサについて言及しているが、一部の実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)などの1つ以上の集積回路によって実行される。一部の実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
【0662】
本明細書及び本出願の任意の請求項において使用されている「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」という用語はいずれも、電子デバイス又は他の技術的デバイスを指す。これらの用語は、人又は人のグループを除外する。特定するために、「表示」又は「表示する」という用語は、電子デバイスに表示することを意味する。本明細書及び本出願の任意の請求項において使用されている「コンピュータ可読媒体」という用語は、コンピュータによって読み取り可能な形で情報を格納する有形の物理的な物体に完全に限定される。これらの用語は、いかなる無線信号、有線ダウンロード信号及び他の任意の一時的な(ephemeral)信号も除外する。
【0663】
図91は、一部の実施形態によるテレビ会議の何人かの参加者を接続するのに使用される例示的な通信システム9100を概念的に示す。図示のように、通信システム9100は、いくつかの携帯デバイス9115と、いくつかのセルラー基地局(又はノードB)9110と、いくつかの無線ネットワークコントローラ(RNC)9105と、コアネットワーク9125とを含む。セルラー基地局及びRNCは、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)地上無線アクセスネットワーク(UTRAN)9130と総称される。各RNC9105は、1つ以上のセルラー基地局9110に接続され、合わせて無線アクセスネットワーク(RAN)と呼ばれる。
【0664】
各セルラー基地局9110は、サービス領域9120をカバーする。図示のように、各サービス領域内の携帯デバイス9115は、Uuインタフェースを通じてサービス領域9120のサービングセルラー基地局9110に無線接続される。Uuインタフェースは、2つのプレーン、すなわち制御プレーンとユーザプレーンとを有するプロトコルスタックを使用する。ユーザプレーンは、回線交換データストリーム、パケット交換データストリーム及びブロードキャストデータストリームをサポートする。制御プレーンは、ネットワークのシグナリングメッセージを搬送する。
【0665】
各セルラー基地局は、Iubインタフェースを通じてRNCに接続される。各RNC9105は、Iu−csインタフェース及びIu−psインタフェースによってコアネットワーク9125に接続される。Iu−csインタフェースは回線交換サービス(例えば、音声)のために使用され、Iu−psインタフェースは、パケット交換サービス(例えば、データ)に使用される。Iurインタフェースは、2つのRNCを互いに接続するために使用される。
【0666】
したがって、通信システム9100は、回線交換サービスとパケット交換サービスとの両方をサポートする。例えば、回線交換サービスにより、通信システム9100の回線交換機を通じて通話データ(例えば、音声)を伝送することによって、通話を行うことができる。パケット交換サービスにより、IPのようなインターネット層プロトコルを介してUDP又はTCPなどのトランスポートプロトコル層を使用して、通信システム9100のパケット交換機を通じてテレビ会議データを伝送することによって、テレビ会議を行うことができる。一部の実施形態では、テレビ会議セットアップセクションで前述したテレビ会議への通話の移行(例えば、ハンドオフ)は、通信システム9100のような通信システムによってサポートされる回線交換サービス及びパケット交換サービスを使用する。すなわち、このような実施形態では、通話は、通信システム9100の回線交換機を通じて行われ、テレビ会議は、通信システム9100のパケット交換機を通じて行われる。
【0667】
図91の例示的な通信システムは、第3世代(3G)技術であるUTRAN無線モバイル通信システムを示しているが、一部の実施形態では、会議の参加者の一部を接続するために、第2世代(2G)通信システム、3GPP2エボリューションデータオプティマイズド/エボリューションデータオンリー(EV−DO)及び第3世代パートナシッププロジェクト2(3GPP2)符号分割多元接続IX(CDMA IX)などの他の3G通信システム、第4世代(4G)通信システム、無線ローカルエリアネットワーク(WLAN)及びワールドワイドインタオペラビリティフォーマイクロ波接続(WiMAX)通信システムを使用できることに留意されたい。2Gシステムの例は、グローバルシステムフォーモバイルコミュニケーション(GSM)、汎用パケット無線サービス(GPRS)及びエンハンストデータレートフォーGSMエボリューション(EDGE)を含む。2G通信システムアーキテクチャは、2G通信システムアーキテクチャがノードB9110の代わりに無線基地局装置(BTS)を使用し、RNC9105の代わりに基地局コントローラ(BSC)を使用することを除いて、
図91に示されるアーキテクチャと同様である。2G通信システムでは、BSCとコアネットワークとの間のAインタフェースが回線交換サービスに使用され、BSCとコアネットワークとの間のGbインタフェースがパケット交換サービスに使用される。
【0668】
一部の実施形態では、通信システム9100は、サービスキャリアによって運用され、サービスキャリアは、最初に、携帯デバイス9115をプロビジョニングして、携帯デバイス9115が通信システム9100を使用できるようにする。一部の実施形態は、携帯デバイス9115に加入者識別モジュール(SIM)カードを構成し登録することによって、携帯デバイス9115をプロビジョニングする。他の実施形態では、携帯デバイス9115は、そうではなく、携帯デバイス9115のメモリを使用して構成され登録される。さらに、(顧客が携帯デバイス9115を購入した後で)GPRS、マルチメディアメッセージサービス(MMS)及びインスタントメッセージングのようなデータサービスなどの追加のサービスをプロビジョニングできる。携帯デバイス9115は、プロビジョニングされると、起動され、それによって、サービスキャリアによる通信システム9100を使用できるようになる。
【0669】
通信システム9100は、一部の実施形態ではプライベート通信ネットワークである。このような実施形態では、携帯デバイス9115は、互い(例えば、通信システム9100にプロビジョニングされた携帯デバイス9115)の間で通信する(例えば、音声通話を行う、データを交換する)ことができる。他の実施形態では、通信システム9100はパブリック通信ネットワークである。したがって、携帯デバイス9115は、通信システム9100にプロビジョニングされた携帯デバイス9115に加えて、通信システム9100の外部にある他のデバイスと通信できる。通信システム9100の外部にある他のデバイスのうちの一部は、電話機、コンピュータ及び公衆交換電話網又は別の無線通信ネットワークなどの他のネットワークを通じて通信システム9100に接続された他のデバイスを含む。
【0670】
ロングタームエボリューション(LTE)仕様は、4G通信システムを規定するために使用される。
図92は、一部の実施形態によるテレビ会議の何人かの参加者を接続するのに使用される4G通信システム9200の例を概念的に示す。図示のように、通信システム9200は、いくつかの携帯デバイス9115と、いくつかの発展型ノードB(eNB)9205と、モビリティ管理エンティティ(MME)9215と、サービングゲートウェイ(S−GW)9220と、パケットデータネットワーク(PDN)ゲートウェイ9225と、ホーム加入者サーバ(HSS)9235とを含む。一部の実施形態では、通信システム9200は、1つ以上のMME9215と、1つ以上のS−GW9220と、1つ以上のPDNゲートウェイ9225と、1つ以上のHSS9235とを含む。
【0671】
eNB9205は、携帯デバイス9115にエアインタフェースを提供する。図示のように、各NB9205はサービス領域9210をカバーする。各サービス領域9210内の携帯デバイス9115は、LTE−Uuインタフェースを通じてサービス領域9210のeNB9205に無線接続される。
図92は、X2インタフェースを通じて互いに接続されたeNB9205も示す。さらに、eNB9205は、S1−MMEインタフェースを通じてMME9215に接続され、S1−Uインタフェースを通じてS−GW9220に接続される。eNB9205は、発展型UTRAN(E−TRAN)9230と総称される。
【0672】
eNB9205は、無線リソース管理(例えば、無線ベアラ制御、接続モビリティ制御など)、S−GW9220へのユーザプレーンデータの経路制御、信号測定及び測定報告、携帯デバイスのアタッチ時のMMEの選択などの機能を提供する。MME9215の機能は、アイドルモードの携帯デバイスの追跡及びページング、無線ベアラの起動及び停止、携帯デバイスのアタッチ時のS−GW9220の選択、非アクセスストラタム(NAS)シグナリングの終了、HSS9235との対話によるユーザ認証などを含む。
【0673】
S−GW9220の機能は、(1)ユーザデータパケットの経路制御及び転送、並びに(2)IPベアラサービスのパラメータ及びネットワーク内部ルーティング情報などの携帯デバイスコンテキストの管理及び格納を含む。PDNゲートウェイ9225の機能は、携帯デバイス宛てのトラフィックの出口と入口とであることによる、携帯デバイスから外部パケットデータネットワーク(不図示)への接続の提供がある。移動局は、複数のパケットデータネットワークにアクセスするために、複数のPDNゲートウェイとの同時接続を有しうる。PDNゲートウェイ9225は、WiMAXと3GPP2(例えば、CDMA IX及びEV−DO)などの3GPP技術と3GPP以外の技術とのモビリティアンカーとしても機能する。
【0674】
図示のように、MME9215は、S11インタフェースを通じてS−GW9220に接続され、S6aインタフェースを通じてHSS9235に接続される。S−GW9220とPDNゲートウェイ9220とは、S8インタフェースを通じて接続される。MME9215、S−GW9220及びPDNゲートウェイ9225は、発展型パケットコア(EPC)と総称される。EPCは、3GPP LTE無線通信規格のコアネットワークアーキテクチャであるシステムアーキテクチャエボリューション(SAE)アーキテクチャの主要なコンポーネントである。EPCは純粋なパケットシステムである。例えば、EPCは、音声メディアゲートウェイを有しない。音声及びSMSのようなサービスは、パケット交換ルーティングされ、EPCサービスを利用するアプリケーション機能によって提供される。そのため、前述の通話からテレビ会議への移行を一例として使用すると、一部の実施形態では、通話とテレビ会議との両方が通信システム9200のパケット交換機を通じて行われる。一部のこのような実施形態では、通話に使用されるパケット交換チャネルは、通話終了後のテレビ会議のオーディオデータに使用され続ける。しかし、他のこのような実施形態では、異なるパケット交換チャネルが(例えば、テレビ会議の確立時に)作成され、オーディオデータは、通話終了時の通話のパケット交換チャネルではなく、新たに作成されたパケット交換チャネルを通じて伝送される。
【0675】
さらに、これらの異なる技術によって提供される帯域幅の量は、GPRSの44キロビット/秒(kbps)からLTEの10メガビット/秒(Mbps)超に及ぶ。LTEについては、将来的に、100Mbpsのダウンロード速度及び50Mbpsのアップロード速度が予測される。
【0676】
多くの特定の詳細を参照して本発明を説明してきたが、本発明は、本発明の趣旨の範囲から逸脱することなく他の特定の形態で実現できることが当業者には理解されるだろう。さらに、いくつかの図は、プロセスを概念的に示している。これらのプロセスの特定の動作は、図示及び説明したとおりの順序で実行されなくてもよい。特定の動作は、1つの連続的な一連の動作で実行されなくてもよく、異なる実施形態で異なる特定の動作が実行されてもよい。そのうえ、プロセスは、いくつかのサブプロセスを使用して、又はより大きなマクロプロセスの一部として実施されうる。
【0677】
また、多くの実施形態を、2つのデュアルカメラ携帯デバイス間のテレビ会議として上述した。しかし、これらの実施形態の多くが、デュアルカメラ携帯デバイスと、シングルカメラ携帯デバイス、コンピュータ、テレビ会議機能を有する電話機などの別のデバイスとの間でのテレビ会議を伴う場合に使用されることは、当業者には理解されよう。さらに、上述の実施形態の多くは、シングルカメラ携帯デバイス及びテレビ会議機能を有する他のコンピューティングデバイスにおいて使用できる。したがって、本発明は、上述の詳細によって限定されず、添付の請求の範囲によって規定されることが当業者には理解されよう。