【解決手段】ミラーリング・ノードは、レシーバ・ノードとのミラーリング関係を維持するよう動作する。このために、ミラーリング・ノードは、ポーリング・メッセージ415をレジストリへ送信すると、レジストリは、レシーバのフロー状態に関する応答メッセージ(フロー・メッセージ)417を送信する。次にミラーリング・ノードは、遠隔ノードのターゲット・レシーバのフロー状態をミラーリングするようローカルのレシーバを設定してレシーバ・ノードのフロー状態をコピーし、センダー1からフロー419を受ける。レシーバ・ノードが、センダー2からのフロー427の受信を開始すると、フロー状態が変化したことを示す通知メッセージ429がレジストリへ送信される。
上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングする処理が、上記ターゲット・レシーバと共用するセンダー・ノードから受けた共用のフローを上記ローカル・レシーバで取得する処理を含む請求項1のコンピュータ・プログラム。
ローカル・レシーバを含むローカル・デバイスを制御するノードにおいてネットワーク・メディア・オープン仕様(NMOS)のアプリケーション・プログラミング・インターフェース(API)を動作させる処理と、
遠隔ノードにおけるターゲット・レシーバのフロー状態に関するフロー・メッセージを上記NMOSのAPIを介して受ける処理と、
上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングするように、上記ローカル・デバイスにおける上記ローカル・レシーバを設定する処理と、
上記NMOSのAPIを介して、上記ローカル・デバイスの上記ローカル・レシーバのアップデートされたフロー状態に関してレジストリに通知する処理と
を具えるミラーリング方法。
上記プロセッサは、更に、上記接続マネージャに、上記ミラーリング・フロー関係を示す上記データを受けるのに応じて、上記ミラーリング・ノードへミラーリング・セットアップ・メッセージを送信させる請求項6のコンピュータ・プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0006】
メディア制作環境では、ビデオ録画装置、ビデオ処理装置、データ記憶装置、データ通信装置、オーディオ記録装置、オーディオ処理装置など、多様な物理的インフラ装置(infrastructure)を利用する。こうした多種多様な装置間のアプリケーション・レベルの通信を標準化するために、多くの努力がなされている。こうした標準化によれば、こうした装置の相互作用が容易に可能となる。これは、結果として、、既存の装置と相互作用する問題を緩和しつつ、個々の装置ベースでアップグレードすることが可能になる。こうした標準化は、また、メディア制作環境において、メンテナンス、試験及び自動化をサポートする。こうした標準化は、標準化された通信プロトコルによって生じるコンポーネント間の自動化された相互作用により、追加機能の追加さえもサポートする。
【0007】
本発明は、こうした環境において、機能を追加又は改善しようとするものである。
【課題を解決するための手段】
【0008】
以下では、本願で開示される技術の説明に有益な実施例が提示される。この技術の実施形態は、以下で記述する実施例の1つ以上及び任意の組み合わせを含んでいても良い。
【0009】
実施例1としては、コンピュータ・プログラムがあり、これは、ノードのプロセッサで実行されると、上記ノードが、ネットワーク・メディア・オープン仕様(NMOS)のアプリケーション・プログラミング・インターフェース(API)を動作させ、遠隔ノードにおけるターゲット・レシーバのフロー状態に関するフロー・メッセージをNMOSのAPIを介して受け、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングするようにローカル・デバイスにおけるローカル・レシーバを設定し、上記NMOSのAPIを介して、上記ローカル・デバイスの上記ローカル・レシーバのアップデートされたフロー状態に関してレジストリに通知する。
【0010】
実施例2としては、実施例1のコンピュータ・プログラムがあり、このとき、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングする処理には、上記ターゲット・レシーバと共用するセンダー・ノードから受けた共用のフローを上記ローカル・レシーバで取得する処理がある。
【0011】
実施例3としては、実施例1又は2のコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記ノードに、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態の情報を要求するポーリング・メッセージをレジストリへ周期的に送信させる。
【0012】
実施例4としては、実施例1〜3のいずれかのコンピュータ・プログラムがあり、このとき、上記フロー・メッセージは、上記レジストリから受ける。
【0013】
実施例5としては、実施例1又は2のコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記ノードに、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態の情報を要求するポーリング・メッセージを上記遠隔ノードへ周期的に送信させる。
【0014】
実施例6としては、実施例1、2又は5のコンピュータ・プログラムがあり、このとき、上記フロー・メッセージは、上記遠隔ノードから受ける。
【0015】
実施例7としては、実施例1〜6のいずれかのコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記ノードに、接続マネージャへミラーリング・セットアップ・メッセージを送信させる。
【0016】
実施例8としては、実施例1〜6のいずれかのコンピュータ・プログラムがあり、このとき、上記フロー・メッセージは、接続マネージャから受ける。
【0017】
実施例9としては、方法があり、ローカル・レシーバを含むローカル・デバイスを制御するノードにおいてネットワーク・メディア・オープン仕様(NMOS)のアプリケーション・プログラミング・インターフェース(API)を動作させる処理と、遠隔ノードにおけるターゲット・レシーバのフロー状態に関するフロー・メッセージをNMOSのAPIを介して受ける処理と、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングするように、上記ローカル・デバイスにおける上記ローカル・レシーバを設定する処理と、上記NMOSのAPIを介して、上記ローカル・デバイスの上記ローカル・レシーバのアップデートされたフロー状態に関してレジストリに通知する処理とを具えている。
【0018】
実施例10としては、実施例9の方法があり、このとき、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態をミラーリングする処理には、上記ターゲット・レシーバと共用するセンダー・ノードから受けた共用のフローを上記ローカル・レシーバで取得する処理がある。
【0019】
実施例11としては、実施例9又は10の方法があり、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態の情報を要求するポーリング・メッセージをレジストリへ周期的に送信する処理を更に具えている。
【0020】
実施例12としては、実施例9〜11のいずれかの方法があり、このとき、上記フロー・メッセージは、上記レジストリから受ける。
【0021】
実施例13としては、実施例9又は10の方法があり、上記遠隔ノードの上記ターゲット・レシーバの上記フロー状態の情報を要求するポーリング・メッセージを上記遠隔ノードへ周期的に送信する処理を更に具えている。
【0022】
実施例14としては、実施例9、10又は13の方法があり、このとき、上記フロー・メッセージは、上記遠隔ノードから受ける。
【0023】
実施例15としては、実施例9〜11のいずれかの方法があり、接続マネージャへミラーリング・セットアップ・メッセージを送信する処理を更に具えている。
【0024】
実施例16としては、実施例9〜11のいずれかの方法があり、このとき、上記フロー・メッセージは、接続マネージャから受ける。
【0025】
実施例17としては、コンピュータ・プログラムがあり、これは、接続マネージャのプロセッサで実行されると、上記接続マネージャが、レシーバ・ノード及びミラーリング・ノード間のミラーリング・フロー関係を示すデータを受け、上記レシーバ・ノードのネットワーク・メディア・オープン仕様(NMOS)のアプリケーション・プログラミング・インターフェース(API)へ上記レシーバ・ノードのターゲット・レシーバにフロー状態の変更を指示するフロー変更メッセージを送信し、上記フロー変更メッセージを送信するのに応じて上記ミラーリング・ノードのNMOSのAPIへ上記レシーバ・ノードの上記ターゲット・レシーバの上記フロー状態に関するフロー・アップデート・メッセージを送信する。
【0026】
実施例18としては、実施例17のコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記接続マネージャに、上記ミラーリング・フロー関係を示す上記データを受けるのに応じて、上記ミラーリング・ノードへミラーリング・セットアップ・メッセージを送信させる。
【0027】
実施例19としては、実施例17又は18のコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記接続マネージャに、ミラーリング・セットアップ・メッセージの一部として、上記ミラーリング・ノードから上記ミラーリング・フロー関係を示す上記データを受信させる。
【0028】
実施例20としては、実施例17〜19のいずれかのコンピュータ・プログラムがあり、このとき、上記プロセッサは、更に、上記接続マネージャに、ユーザの入力として、上記ミラーリング・フロー関係を示す上記データを受けさせる。
【0029】
本発明の実施形態の態様、特徴及び効果は、添付の図面を参照し、以下の実施形態の説明を読むことで明らかとなろう。
【発明を実施するための形態】
【0031】
NMOSは、メディア制作環境をコントロールする例示的な標準化された機構である。NMOSは、種々のアプリケーション・プログラミング・インターフェース(API)を利用しており、これによって、ビデオ制作のインフラ装置(基盤となる装置)を用いたネットワーク・ベースのアプリケーション・レベルの通信を可能にしている。例えば、NMOSは、ビデオ・カメラ、オーディオ・レコーダ、撮影後編集(post production)装置、モニタなどの間の通信を可能にしている。NMOSのAPIは、インターネット・プロトコル(IP)ベースの通信を利用し、これによって、種々のコンポーネントがパケット・ベースのメッセージを通信可能となっている。特定の実施例では、ビデオ制作モニタが、複数のビデオ・カメラで生成されて送信された複数のビデオ・ストリーム(「フロー」として知られる)間で、切り替えられても良い。試験を行うためには、ユーザは、このビデオ制作モニタに表示されるコンテンツと同じものを表示する(mirror:ミラーリングする、そっくりに再現する)第2のモニタを利用したいと考えることがあるかもしれない。
【0032】
本願では、モニタのような「ノード」が他のノードをミラーリング(そっくり再現、複製)するのを可能にする例示的なメカニズムを開示する。ノードとしては、例えば、複数のデバイス(device:装置)があって良く、これらとしては、センダー(sender:送信装置等)、レシーバ(receiver:受信装置等)、又は、これらの両方がある。ノードは、レジストリ(種々の設定のデータベース)に、そのノードの種々の設定が登録される。次いで、接続管理ノードは、複数ノード間の接続を制御する。ミラーリング・ノードは、ポーリング(polling:定期的な問い合わせ又は照会)を利用して、センダー(受信装置)ノードをミラーリングできる。ポーリングの例では、ミラーリング・ノードは、レシーバ・ノードとのミラーリング関係を認識するように設定される。ミラーリング・ノードは、周期的にレシーバ・ノード又はそのレジストリをポーリングする。これに応答して、ミラーリング・ノードは、レシーバ・ノードの現在のフロー状態を受ける。レシーバ・ノードが、新しいセンダー・ノードに切り替わると、ミラーリング・ノードは、次のポーリング・メッセージが送信された後に、新しいセンダーを示すアップデートされたフロー状態を受ける。ミラーリング・ノードは、次いで、レシーバ・ノードのフロー状態とマッチングするように再構成され、これによって、レシーバ・ノードが受信したフローを得る。接続マネージャに制御される例では、接続マネージャは、ミラーリング・ノードとレシーバ・ノード間のミラーリング関係の認識を維持する。また、接続マネージャは、レシーバ・ノードのフロー状態も制御する。これにより、接続マネージャが、レシーバ・ノードが新しいセンダーに切り替わるように設定変更すると、その接続ノードもミラーリング・ノードをレシーバ・ノードと同じセンダーに切り替わるように設定変更する。
【0033】
図1A〜1Cは、NMOSベースの通信プロトコルに従って、相互通信するように構成された例示的なメディア制作システム100の構成要素間の関係を示す図である。最初に
図1Aを参照すると、システム100には、1つ以上のデータ・センタ・ネットワーク110中のサーバ112上で動作する登録及び発見システム114がある。システム100には、登録及び発見システム114に登録されるよう構成されるノード131、132及び133もある。また、システム100には、ノード131〜133間の接続を管理できる接続マネージャ134もある。
【0034】
データ・センタ・ネットワーク110は、通信ネットワークを介して相互接続された演算リソースの任意のプールである。このデータ・センタ・ネットワーク110は、単一のビルディング内に収容されていても良いし、電気的又は光学的ケーブルによる基幹ネットワークを通じて接続できる、複数の場所に地理的に分散されたネットワークでも良い。一例としては、データ・センタ・ネットワーク110が、複数のサーバ112を含んでいても良い。これらサーバ112は、ラック中に並べて、電気的又は光学的ケーブルによって相互接続されていても良い。また、データ・センタ・ネットワーク110は、ネットワークのセキュリティを維持すると共に、異なるドメインに跨がってアドレス指定を行えるよう、異なるネットワークへ接続するためのゲートウェイを有していても良い。サーバ112は、演算リソースを提供できる任意のコンピュータ装置で良い。例えば、サーバ112としては、プロセッサ、メモリ、ネットワーク接続用リソースなどを有していても良い。これらサーバ112は、夫々が1つの特定データ・センタ・テナント専用であっても良いし、柔軟なリソースのプロビジョニング(必要に応じたリソースの割当)を用いて、クラウド・モデルで構成されても良い。サーバ112は、メディア・アクセス(MAC)レイヤ・ブロードキャスト・プロトコル(例えば、ブロードキャスト)、インターネット・プロトコル(IP)レイヤ・プロトコル(例えば、ユニキャスト)又はこれらの組み合わせによって通信を行って良い。
【0035】
登録及び発見システム114は、サーバ112のハードウェアを用いて動作する。例えば、登録及び発見システム114を動かす命令は、サーバ112上のキャッシュ、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)などに記憶されている。次いで、これら命令は、サーバ112上のプロセッサによって実行される。サーバ112のネットワーク・リソースは、ノード131〜133及び接続マネージャ134が、登録及び発見システム114と通信可能にするために利用される。データ・センタ・ネットワーク110は、クラウド・ネットワークとして動作する地理的に分散されたサーバ112を含むことがあるので、登録及び発見システム114も、複数のマシーンについての物理的に広いエリアに渡って同時に動作するように、分散されていても良い。登録及び発見システム114は、複数のローカル・ネットワークの複数のノードが、機能及び現在の状態を登録可能となるように構成される。こうしたノードは、他のノードの機能と状態を判断するために、登録及び発見システム114に照会(query:質問、問い合わせ)することができる。
【0036】
登録及び発見システム114は、複数の登録及び発見インスタンス120として動作するよう構成される。
図1Bを参照すると、登録及び発見インスタンス120には、レジストリ121、登録サービス125及び照会サービス123がある。レジストリ121は、データベースとして実現されても良い。例えば、レジストリ121は、ノードの機能及び現在の状態を記憶し、アップデート(更新)し、検索できる任意のメモリ構造であっても良い。登録サービス125は、ノードの機能又はノード状態を受けるための、例えば、APIを介してノードと通信できる任意のプロセスである。次いで登録サービス125は、こうしたノード機能やノード状態を記憶するために、レジストリ121へ伝送する。照会サービス123は、ノードの機能/状態に関する照会(query:問い合わせ)を受けて、こうした照会に対する応答を提供するために、例えば、APIを介してノードと通信できる任意のプロセスである。例えば、照会サービス123は、ノードからの照会を受けて、この照会に応答してレジストリ121からデータを取得し、要求されたデータを含む応答を提供する。登録サービス125や照会サービス123は、RESTful(Representational state transfer)、HTTP(Hypertext transfer protocol)やJSON(JavaScript(登録商標)object notation)のようなIPベースのプロトコルによってノードと通信する。ある特定の実施例では、登録サービス125や照会サービス123は、HTTPのGETやPOSTコマンドによって、複数ノード及びその関連する登録及び発見インスタンス120間のIPネットワーク(例えば、インターネット)を通じて、複数のノードと通信しても良い。これら登録及び発見インスタンス120は、異なるメディア制作環境をサポートするように分離されても良く、また、通信するために、異なるネットワーク・アドレスを用いても良い。従って、これら登録及び発見インスタンス120は、複数プロセスの分散されたグループと考えることもできる。しかし、レジストリ121は、レジストリ・エントリの複製を可能とするために、レジストリ・エントリを通知するように構成されても良い。このように、レジストリ121は、ノード、ノードの機能及びノード状態の完全な又は部分的なリストを含むように構成されても良い。
【0037】
図1Aを再度参照すると、複数のノードは、登録及び発見インスタンス120と相互に通信しても良い。簡単かつ明確に説明するため、4つのノードだけを示しているが、任意のもっと多数のノードが登録及び発見インスタンス120と相互に通信しても良いことに注意されたい。NMOSベースのメディア制作システム100では、1つのノードは、関連する機能ブロックを提供する1つ以上のデバイスに関するホストである。こうしたデバイスとしては、ビデオ・レコーダ、オーディオ・レコーダなどのようなデータを生成するデバイスや、モニタ、スピーカ、ビデオ/オーディオ処理装置などのようなデータを受ける装置が含まれていても良い。説明の都合上、データを生成するノードは、本願では、センダー・ノードと呼び、そうしたデータを受けるノードは、レシーバ・ノードと呼ぶことにする。図示するように、ノード131は、センダー・ノードとして機能し、これは、データ(例えば、ビデオやオーディオのストリーム)を生成し、こうしたデータをフロー140として伝送する。フロー140は、データの関連する任意のストリームである。ノード132及び133は、センダー・ノード131から送信されたフロー140を受けるので、レシーバ・ノード(例えば、モニタ)である。ノード132と133には、ミラーリング関係142がある。ミラーリング関係142は、一方のミラーリング・レシーバ・ノードが、もう1つのレシーバ・ノードと共通のフロー状態を維持するのに必要な処理を行うことを示している。本願で用いているように、フロー状態とは、対応するノードが、ある特定の時間に、フローを送信しているか、又は、受信していることを示す。明快な説明とするため、本願では、ノード132をレシーバ・ノードと呼び、ノード132のフロー状態をミラーリングするノード133をミラーリング・ノードと呼ぶことにする。言い換えると、レシーバ・ノード132が新しいセンダーから新しいフロー140を受け始めるたびに、ミラーリング・ノード133が、レシーバ・ノード132のフロー状態をコピーしてローカルのフロー状態をアップデートし、これによって、共通のセンダー・ノード131から共通のフローを受けることになる。ノード131〜133は、対応するデバイス、デバイスの機能や、フロー状態のような現在の状態を登録するために、登録及び発見インスタンス120の登録サービス125や照会サービス123と通信できる。
【0038】
接続マネージャ134は、制御ノードとして動作し、ノード131〜133のようなノードのグループに関する接続(例えば、フロー/フロー状態)を管理するよう構成される。例えば、接続マネージャ134は、表示装置とユーザの入力部を有していても良い。接続マネージャ134は、更に、照会サービス123とコンタクトして(連絡を取って)、ノード131〜133に関する登録された情報を決定する。接続マネージャ134は、また、登録サービス125とコンタクトしたり、ノード131〜133と直接コンタクトすることによって、フロー状態を変更しても良い。こうした変更は、ユーザ表示装置を介してユーザに表示され、また、こうした変更がユーザの入力(例えば、キーボード、マウス、トラックボール、タッチスクリーンなどからの入力)に基づいて行われても良い。
【0039】
ここで
図1Cを参照すると、ノード131〜133には、ノードAPI137と、1つ以上のデバイス138があり、そして、デバイス138には、レシーバ135やセンダー136がある。接続マネージャ134は、詳細には示していないが、ノード131〜133と実質的には類似している。デバイス138は、1つ以上のハードウェア・コンポーネントとして供給される任意の関連する機能ブロックである。よって、デバイス138は、1つ以上のビデオ・レコーダ、オーディオ・レコーダ、モニタ、スピーカ、オーディオ/ビデオ処理システムなどを含んでいても良い。ノード131〜133は、対応する複数のデバイス138の通信をホストし、結果として、これら通信を管理する。デバイス138は、レシーバ135やセンダー136を介して通信を行う。デバイス138は、特定の実施形態での必要に応じて、任意の個数のセンダー136及びレシーバ135を有することができる。センダー136は、データ・フローを送るのに利用される複数のリソースから構成されるグループである。例えば、センダー136は、ネットワーク・カード、ネットワーク・ポート、ワイヤレス・ネットワーク・アダプタ、ネットワーク・アドレスなどを有していても良い。レシーバ135は、データ・フローを受けるのに利用される複数のリソースから構成されるグループである。例えば、レシーバ135は、ネットワーク・カード、ネットワーク・ポート、ワイヤレス・ネットワーク・アダプタ、ネットワーク・アドレスなどを有していても良い。ノードAPI137は、遠隔のノードからの命令を、対応するデバイス138、レシーバ135又はセンダー136で解釈して、実行できる形式へと変換するプログラミング・インタフェースである。よって、接続マネージャ134は、ノードAPI137を介してノード131〜133に命令を伝えても良いし、その逆も同様である。更に、ノード131〜133は、ノードAPI137を介して、登録サービス125や照会サービス123と通信しても良い。こうしたノードAPI137を介した通信は、例えば、LAN(ローカル・エリア・ネットワーク)、VLAN(仮想ローカル・エリア・ネットワーク)、VXLAN(virtual extensible local area network)などを通じて、ブロードキャストを用いて、センダー136によってフロー140を送信したり、レシーバ135によってフロー140を受信することを可能にする。こうしたノードAPI137を介した通信は、また、ミラーリング・ノード133が、対応するレシーバ135において共通のセンダー136から共通のフロー140を受けることによって、レシーバ・ノード132とミラーリング関係142を維持することも可能にする。
【0040】
図2は、例示的なセンダー・ノード200のブロック図であり、これは、システム100において、センダー・ノード131を実現するものでも良い。具体的には、センダー・ノード200は、デバイスとしては、ビデオ・カメラとして動作する。センダー・ノード200のデバイスには、レンズ201がある。レンズ201は、屈折を利用して光線を収束させる透過性光学デバイスである。レンズ201で屈折された光は、画像センサのようなセンサ203によって捕捉される。センサ203は、レンズ201からの光を、画像を表すデータに対応する電気信号に変換/捕捉できる回路である。電気信号は、ビデオ・プロセッサ207へ送られる。ビデオ・プロセッサ207は、画像を表す捕捉されたデータに対して、種々のフィルタを適用できる処理回路である。これらフィルタは、視覚的なアーティファクトを除去したり、色の補正をしたり、その他のプリ処理技術を実行できる。例えば、ビデオ・プロセッサ207は、コーダ・デコーダ(codec:コーデック)205を利用して、画像データを圧縮された標準形式へエンコードしても良い。この圧縮によって、記憶空間を小さくでき、記憶及び伝送が容易になる。コーデック205は、標準化されたやり方で画像データをエンコードするので、レシーバ・ノードは、画像データを伸張して、センサ203/ビデオ・プロセッサ207で元々捕捉されたような画像を得ることができる。また、ビデオ・プロセッサ207は、メモリ211に記憶された命令を実行して、ノード200を動作させても良い。画像データは、メモリ211に記憶されても良い。メモリ211は、画像データや、ビデオ・プロセッサ207を動作させる実行可能な命令を記憶できる任意の形式のメモリ・コンポーネント(例えば、キャッシュ・メモリ、RAM、ROMなど)で良い。センダー・ノード200のビデオ・カメラ・デバイスは、ネットワーク・インタフェース209も有していて良く、これは、1つ以上のセンダーやレシーバとして機能する。ネットワーク・インタフェース209は、有線又は無線のインタフェースでも良く、対応するトランシーバ及びネットワーク通信装置を有している。センダー136のようなセンダーとして機能する場合は、ネットワーク・インタフェース209は、圧縮画像データを、ネットワークを通じたユニキャスト、ブロードキャスト又はマルチキャスト伝送用のパケットのフローに変換しても良い。レシーバ135のようなレシーバとして機能する場合は、ネットワーク・インタフェース209は、センダー・ノード200を動作させる命令を受けるのに加えて、他の関連するデータを受けても良い。センダー・ノード200は、また、必要に応じて、ネットワーク・インタフェース209を介してネットワークを通じて、音を記録したり、エンコードしたり、送信したりするコンポーネントも有していても良い。センダー・ノード200は、説明を明快にする都合上、記載したが、実施例は、これに限定されるものでないことに注意されたい。メディア制作環境における目的に合わせて、多くの異なるセンダー・ノード200の形式を利用できるが、そうした種々のものを全て説明するのは、本願の要旨を超えるものなので、割愛する。
【0041】
図3は、例示的なレシーバ・ノード300のブロック図であり、これは、システム100において、レシーバ・ノード132やミラーリング・ノード133を実現するのに利用できる。また、実施形態によっては、ノード300が、接続マネージャ134やサーバ114を実現するのに利用されても良い。ノード300は、ネットワーク・インタフェース307を用いても良く、これは、センダー・ノード200のネットワーク・インタフェース209とほぼ同様であっても良い。例えば、レシーバ・ノード300として機能する場合、ネットワーク・インタフェース307は、レシーバ135として機能し、よって、センダー・ノードからのフローを受けても良い。実施形態によっては、ネットワーク・インタフェース307が、他のノードとの通信、データの転送などをサポートするセンダー136としても機能しても良い。ネットワーク・インタフェース307からのデータは、プロセッサ305で処理される。実施形態によっては、プロセッサ305が、ASIC(application specific integrated circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)などのような任意の処理回路を含んでいても良い。プロセッサ305は、画像データをデコードしてスクリーン301上で表示するために、コーデックを用いても良い。プロセッサ305は、例えば、ビデオ編集処理を用いて、画像データを変更しても良い。プロセッサ305は、ユーザ入力部309からのユーザによる入力に基づいて動作しても良い。ユーザ入力部309は、マウス、キーボード、タッチスクリーンなど、ユーザによるデータに対する操作をサポートする任意のデバイスを有していても良い。また、プロセッサ305は、メモリ303に記憶された命令を実行することによって、ノード300を動作させても良い。ユーザ入力部309は、ノード300に直接結合されていても良いし、ネットワーク・インタフェース307を介してノード300と通信するようにしても良い。スクリーン301は、画像データを表示できる任意のデバイスである。スクリーン301は、ノード300に直接結合されていても良いし、ネットワーク・インタフェース307を介してノード300と通信するようにしても良い。スクリーン301は、命令に対するフィードバックをユーザに提供すると共に、タッチスクリーンである場合には、ユーザ入力部309の一部としても機能できる。ノード300にもメモリ303があり、これは、センダー・ノード200のメモリ211と同様のものである。よって、メモリ303は、更なる処理、長期間の記憶、スクリーン301での表示中だけの一時的な記憶などのために、メディア(ビデオやオーディオ、関連データなど)を記憶できるよう構成されても良い。また、レシーバ・ノード300は、スピーカ311を含んでいても良く、これは、例えば、センダー・ノードで捕捉され、ネットワーク・インタフェース307を介して受けた音を再生できる任意の変換器であっても良い。実施形態によっては、開示したコンポーネントの一部だけを利用して必ずしも全部は利用しないこともあるし、別の実施形態では、更に追加のコンポーネントを利用することもあることに注意されたい。レシーバ・ノード300は、明快な説明をサポートするため、レシーバ・ノード、ミラーリング・ノード、接続マネージャやサーバで利用できる種々の汎用のコンポーネントを開示すために示している。よって、ノード300が含むコンポーネントは、あくまで例示であって、これらに限定されるものではない。
【0042】
図4は、例えば、ノード200や300を利用してポーリングによってレシーバ・ノードをミラーリングすることでシステム100を実現する例示的なメカニズム400のプロトコルの処理フロー図である。メカニズム400は、プロセッサが、対応するノードにおいてメモリ中に記憶された命令を実行することによって実現されても良い。メカニズム400は、対応するノードを動作させる方法としても機能する。メカニズム400が、接続マネージャ、レジストリ(例えば、レジストリ121)、登録サービス125、照会サービス123、レシーバ・ノード、第1センダー・ノード(センダー1)、第2センダー・ノード(センダー2)、そして、ミラーリング・ノードを利用するのは、説明を明確にするのが目的であることに注意されたい。従って、特定の実施形態/用途によっては、追加のノードを利用しても良い。
【0043】
メカニズム400は、センダー1がレジスタ・メッセージ401をレジストリへ送ったときに始まるとしても良い。レジスタ・メッセージ401は、開始時に送信されても良く、センダー1の機能、アドレス、利用可能なフローなどを示す。次いで、センダー1は、動作を開始しても良い。例えば、センダー1がビデオ・カメラである場合では、センダー1がビデオの捕捉を開始し、そのフローをネットワークを通じて送信する。レシーバ・ノードも、例えば、開始時に、レジスタ・メッセージ403をレジストリへ送信しても良い。レジスタ・メッセージ403は、レシーバ・ノードの機能、ネットワーク・アドレス、現在のフロー状態などを含んでいる。
【0044】
次いで、接続マネージャは、レシーバ405がセンダー1からのフローを利用し始めるようにレシーバ405を設定する。例えば、接続マネージャは、レジストリの照会された情報に基づいて、ネットワーク中の利用可能なセンダー・ノード及びレシーバ・ノードを示すデータをスクリーンに追加しても良い。ユーザは、どのレシーバ・ノードが、対応するセンダー・ノードからのフローを受けるべきかを示しても良い。接続マネージャは、次いで、ユーザの入力に基づいて、レシーバ405を設定しても良い。設定後、レシーバは、センダー1からのフロー407の受信を開始する。フロー407を受けることによって、レシーバにおけるフロー状態が変化する。そこで、レシーバは、新しいフロー状態(例えば、センダー1からフローを受けている状態)を示す通知メッセージ409をレジストリへ送信する。
【0045】
しばらくして、ミラーリング・ノードが、レシーバ・ノードのミラーリングを開始しても良い。例えば、レシーバ・ノードには、ユーザの入力に基づいて、時間経過に応じて表示がシフトする、1つ以上のカメラからのフローを表示するモニタがあっても良い。ミラーリング・ノードは、例えば、レシーバ・ノード上で何が実際に表示されているのかを示すなど、試験のために利用されても良い。また、ミラーリング・ノードは、複数のユーザがライブのストリームを追いかけることができるように、レシーバをミラーリングするのに利用されても良い。例えば、レシーバは、複数カメラに基づいて、視聴者に届けるために放送される、送信される制作したビデオを表示するプライマリ(又はメイン)モニタであっても良く、そして、ミラーリング・ノードは、視聴者に放送されるコンテンツを表示するのに利用されても良い。いずれの場合でも、開始時に、ミラーリング・ノードは、レジスタ・メッセージ411をレジストリへ送信しても良い。レジスタ・メッセージ411は、ミラーリング・ノードの機能、ネットワーク・アドレス、現在のフロー状態などを含んでいても良い。ミラーリング・ノードは、レシーバ・ノードをミラーリングするように、ローカルで設定できても良いし、遠隔から設定できてもよい。例えば、ミラーリング・ノードが遠隔から(例えば、遠隔にある設定(configuration)マネージャにおいて)設定される場合なら、この設定マネージャは、ミラーリング・ノードがレシーバをミラーリングすべきことを示す、オプションのセットアップ・メッセージ412をミラーリング・ノードへ送信する。しかし、場合によっては、ユーザが、物理的にミラーリング・ノードを操作して、レシーバをミラーリングするようにミラーリング・ノードを設定しても良い。更に別の場合では、ミラーリング・ノードが、ローカルのユーザの入力に基づいて、セットアップ・メッセージ412を接続マネージャに送信しても良い。上述のいずれの場合も、ミラーリング・ノードは、レシーバをミラーリングするように設定され(ミラーリング・セットアップ413)、これによって、レシーバがフローを受けるたびに、ミラーリング・ノードもフローを受ける。こうした設定は、ミラーリング・ノードで動作しているNMOSのAPIによって実行されても良い。
【0046】
メカニズム400では、ミラーリング・ノードが、レシーバ・ノードとのミラーリング関係を維持する責任を持っている。このため、ミラーリング・ノードは、ポーリング・メッセージ415をレジストリへ送信する。ポーリング・メッセージ415は、レジストリがレシーバ・ノードの現在のフロー状態を示すことを要求するものである。言い換えると、ミラーリング・ノードの観点からすれば、ポーリング・メッセージ415は、遠隔のレシーバ・ノードにあるターゲット(対象とする)のレシーバのフロー状態(の情報)を要求するものである。すると、レジストリは、ターゲット(対象の装置)の状態(即ち、ここでは、レシーバのフロー状態)に関する応答メッセージ417を送信する。次いで、ミラーリング・ノードは、NMOSのAPIを介して、フロー・メッセージとして応答メッセージ417を受ける。メカニズム400では、フロー・メッセージは、レジストリから受ける。フロー・メッセージは、ミラーリング・ノードに対して、遠隔のレシーバ・ノードにおけるターゲットのレシーバのフロー状態を示す。次いで、ミラーリング・ノードは、遠隔のノードにおけるターゲット・レシーバのフロー状態をミラーリングするように、ミラーリング・ノードによってホストされているローカルのデバイスにおけるローカルのレシーバを設定する。もっとシンプルに言えば、ミラーリング・ノードは、レシーバ・ノードのフロー状態をコピー(複製)する。次いで、ミラーリング・ノードは、フロー419を受ける。言い換えると、遠隔のレシーバ・ノードにおけるターゲット・レシーバのフロー状態をミラーリングすることによって、ミラーリング・ノードは、ローカルのレシーバにおいて、ターゲット・レシーバが受けたフローをシェア(share:共用、共有)して受ける。シェアされたフローは、シェアされたセンダー・ノード(この場合では、センダー1)から受ける。次いで、ミラーリング・ノードは、例えば、NMOSのAPIを介して、通知メッセージ421をレジストリへ送信する。この通知メッセージ421は、ミラーリング・ノードでホストされているローカルのデバイスのローカルのレシーバのアップデートされたフロー状態を示す。ミラーリング・ノードは、次いで、周期的に(
図4中「・・・」で示す)ポーリング・メッセージ423をレジストリへ送信し、レシーバがいつフロー状態を変更したかを判断(決定)する。こうして、ポーリング・メッセージは、遠隔のレシーバ・ノードにおけるターゲット・レシーバのフロー状態(の情報)を要求する。
【0047】
しばらく時間が経過(破線で示す)すると、接続マネージャは、アップデート・レシーバ・メッセージ425をレシーバへ送信する。このアップデート・レシーバ・メッセージ425は、レシーバにフロー状態を変更するように指示するものであり、この場合では、センダー1に代えて、センダー2からのフローの受信を開始するように指示するメッセージである。レシーバ・ノードは、設定が変更され、次いで、センダー2からのフロー427の受信を開始する。レシーバ・ノードは、レシーバ・ノードのフロー状態が変化したことを示す通知メッセージ429をレジストリへ送信する。
【0048】
一方で、ミラーリング・ノードは、周期的なポーリング・メッセージの送信を続ける。レジストリへの次のポーリング・メッセージ431を送信した後に、レジストリは、ターゲット・レシーバのアップデートされたフロー状態に関する応答メッセージ433を送信する。次いで、ミラーリング・ノードは、レシーバ・ノードにおけるターゲット・レシーバのアップデートされたフロー状態とマッチング(整合)するようにローカルのフロー状態をアップデート(更新)する(アップデート435)。次いで、ミラーリング・ノードは、センダー1に代えて、センダー2からのフロー437を受けるように設定される。このように、ミラーリング・ノードは、周期的なポーリング・メッセージを利用することによって、レシーバの変化に自動的に追従できる。アップデート435が完了すると、ミラーリング・ノードは、フロー状態の変化を示す通知メッセージ439をレジストリへ送信する。次いで、ミラーリング・ノードは、レシーバのフローの受信元が新たな別のセンダーに変化するまで、レジストリに対してポーリングする処理に戻っても良く、このときには、メッセージ431〜439が繰り返される。
【0049】
図5は、ポーリングによってレシーバ・ノードをミラーリングする別の例示的なメカニズム500のプロトコルの処理フロー図である。メカニズム500は、メカニズム400とほぼ類似しているが、ミラーリング・ノードが、レジストリにポーリングする代わりに、レシーバ・ノードに直接ポーリングする点が異なっている。簡潔に説明するため、メカニズム400と重複するメッセージや工程については、参照番号を付けず、詳細な説明は省略する。ミラーリング関係がセットアップされた後、ミラーリング・ノードは、ポーリング・メッセージ515を送信する。このポーリング・メッセージ515は、ポーリング・メッセージ415と類似しているが、レシーバ・ノードへ直接送信され、現在のフロー状態に関する情報を要求するポーリング・メッセージとなる。レシーバ・ノードは、このレシーバ・ノードによってホストされているターゲット・レシーバのフロー状態(の情報)を含む応答メッセージ517を送信する。ミラーリング・ノードは、次いで、そのフロー状態をコピー(複製)し、フロー419及び通知メッセージ421の夫々と同様のやり方で、フロー519を受けて、レジストリへ通知メッセージ521を送信する。次いで、ミラーリング・ノードは、ポーリング・メッセージ423と同様のやり方で、遠隔のレシーバ・ノードへのポーリング・メッセージ523の周期的な送信を開始するが、このポーリング・メッセージ523は、レジストリへではなく、レシーバ・ノードへ送信される点が異なっている。ポーリング・メッセージ(1つ以上)は、遠隔のレシーバ・ノードにおけるターゲット・レシーバのフロー状態(の情報)の要求を継続的に行う。
【0050】
しばらく時間が経過(破線で示す)すると、接続マネージャは、アップデート・レシーバ・メッセージ525をレシーバへ送信する。このアップデート・レシーバ・メッセージ525は、レシーバにフロー状態を変更するように指示するものであり、この場合も、センダー1に代えて、センダー2からのフローの受信を開始するように指示するメッセージである。レシーバ・ノードは、設定が変更され、次いで、センダー2からのフロー527の受信を開始する。レシーバ・ノードは、レシーバ・ノードのフロー状態が変化したことを示す通知メッセージ529をレジストリへ送信する。これら処理の流れは、
図4のフロー427及び通知メッセージ429と同様である。次いで、ミラーリング・ノードは、フロー状態がアップデートされた後、ポーリング・メッセージ531を(レジストリへではなく)レシーバへ送信する。次いで、(レジストリではなく)レシーバが、遠隔のレシーバ・ノードにおけるターゲット・レシーバのアップデートされたフロー状態に関する応答メッセージ533を送信する。即ち、メカニズム500では、ミラーリング・ノードは、フロー状態の情報を含むフロー・メッセージを、レジストリからではなく、遠隔のレシーバ・ノードから受ける。次いで、ミラーリング・ノードは、
図4のアップデート435、フロー437の受信及び通知メッセージ439の夫々と同様に、ローカルのフロー状態をアップデートし(アップデート535)、センダー2からフロー537を受け、そして、フロー状態の変化を示す通知メッセージ539をレジストリへ送信しても良い。
【0051】
図6は、接続マネージャを利用してレシーバ・ノードをミラーリングする例示的なメカニズム600のプロトコルの処理フロー図である。メカニズム400及び500のように、メカニズム600は、システム100におけるノード200や300を利用して実現されても良い。しかし、メカニズム400及び500とは異なり、メカニズム600は、ポーリングを利用しない。その代わりに、メカニズム600では、接続マネージャが、ミラーリング関係の認識を維持する。このように、接続マネージャは、ミラーリングする対象であるレシーバ・ノードにアップデートが指示されるたびに、ミラーリング・ノードにフロー状態(の情報)を送信する。簡潔に説明するため、メカニズム400及び500と重複するメッセージや工程については、参照番号を付けず、詳細な説明は省略する。ミラーリング・ノードが始動し、レジストリに登録されると、ミラーリング・ノードは、ミラーリング・ノード関係となるように設定される。ミラーリング・ノードがローカルにセットアップされる場合(例えば、接続マネージャによってではなく)では、ミラーリング・ノードが、レシーバとのミラーリング関係を示す、オプションのセットアップ・メッセージ613を接続マネージャへ送信しても良い。このメッセージは、接続マネージャが、ミラーリング・ノードとレシーバとの間のミラーリング・フロー関係の情報に関して設定されていない場合に、接続マネージャに、こうした関係を知らせるものである。こうして、レシーバ・ノードとミラーリング・ノードとの間のミラーリング・フロー関係を示すミラーリング・ノード・セットアップ・メッセージ613は、接続マネージャが受けることになる。上述のように、ミラーリング・フロー関係を示すデータは、接続マネージャがユーザからの入力として受けることもできる。よって、場合によっては、逆に、接続マネージャが、ミラーリング・フロー関係を示すデータを受けるのに応答して、オプションのミラーリング・セットアップ・メッセージ613をミラーリング・ノードに送信しても良い。
【0052】
次いで、接続マネージャは、ターゲット・レシーバ・ノードのフロー状態(の情報)を含む応答メッセージ617をミラーリング・ノードへ送信する。場合によっては、接続マネージャは、フロー状態の情報を判断するのに、レジストリへ照会(問い合わせ)しても良い(図示せず)。こうして、接続マネージャからのフロー・メッセージを、ミラーリング・ノードが受けることになる。ミラーリング・ノードは、ローカルの設定をアップデートし、レシーバ・ノードのフロー状態をコピーする。フロー状態をアップデートすると、ミラーリング・ノードは、センダー1からフロー619を受け、次いで、フロー状態の変化を示す通知メッセージ621をレジストリへ送信する。
【0053】
しばらく時間が経過(破線で示す)して、例えば、ユーザからの入力を受けて、センダー1に代えて、センダー2からフローを受けるというように、レシーバのフロー状態を変更すると接続マネージャが決定すると、接続マネージャは、アップデート・レシーバ・メッセージ625をレシーバへ送信し、これは、フロー変更メッセージとして機能する。アップデート・レシーバ・メッセージ625は、レシーバ・ノードのターゲット・レシーバにフロー状態の変更を指示するために、レシーバ・ノードのNMOSのAPIへ送信される。次いで、レシーバ・ノードは、メカニズム400及び500のように、センダー2からフロー627を受け、通知メッセージ629をレジストリへ送信する。更に、アップデート・レシーバ・メッセージ625を送信するのに応答して、接続マネージャは、フロー・アップデート・メッセージ633もミラーリング・ノードへ送信する。このフロー・アップデート・メッセージ633は、レシーバ・ノードのターゲット・レシーバのフロー状態(の情報)を含んでいる。ミラーリング・ノードは、アップデートされたセンダー(ここでは、センダー2)からアップデートされたフロー637を受けて、そして、アップデートされたフロー情報に関する通知メッセージ639をレジストリへ送信する。なお、レシーバが新しいフローに切り替わるときはいつも、フロー関係を維持するために、接続マネージャもミラーリング・ノードをアップデートすることに注意されたい。また、例えば、ミラーリング関係が接続マネージャにセットアップされる場合では、ミラーリング・ノードがミラーリング関係を認識している必要はないことにも注意されたい。このような場合、ミラーリング・ノードが知っているのは、新しいフロー状態の情報が、接続マネージャから適時送信されてくることだけである。
【0054】
本発明の実施例は、特別に作成されたハードウェア、ファームウェア、デジタル・シグナル・プロセッサ又はプログラムされた命令に従って動作するプロセッサを含む特別にプログラムされた汎用コンピュータ上で動作できる。本願における「コントローラ」又は「プロセッサ」という用語は、マイクロプロセッサ、マイクロコンピュータ、ASIC及び専用ハードウェア・コントローラ等を意図する。本発明の態様は、1つ又は複数のコンピュータ(モニタリング・モジュールを含む)その他のデバイスによって実行される、1つ又は複数のプログラム・モジュールなどのコンピュータ利用可能なデータ及びコンピュータ実行可能な命令で実現できる。一般に、プログラム・モジュールとしては、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、これらは、コンピュータその他のデバイス内のプロセッサによって実行されると、特定のタスクを実行するか、又は、特定の抽象データ形式を実現する。コンピュータ実行可能命令は、ハードディスク、光ディスク、リムーバブル記憶媒体、ソリッド・ステート・メモリ、RAMなどのコンピュータ可読記憶媒体に記憶しても良い。当業者には理解されるように、プログラム・モジュールの機能は、様々な実施例において必要に応じて組み合わせられるか又は分散されても良い。更に、こうした機能は、集積回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのようなファームウェア又はハードウェア同等物において全体又は一部を具体化できる。特定のデータ構造を使用して、本発明の1つ以上の態様をより効果的に実施することができ、そのようなデータ構造は、本願に記載されたコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内と考えられる。
【0055】
本願発明の態様は、様々な変更及び代替形態で動作する。特定の態様は、図面に例として示されており、詳細に説明した。しかしながら、本願に開示された実施例は、説明を明確にする目的で提示されており、明示的に限定されない限り、開示される一般的概念の範囲を本願に記載の具体例に限定することを意図していない。このように、本開示は、添付の図面及び特許請求の範囲に照らして、記載された態様のすべての変更、均等物及び代替物をカバーすることを意図している。
【0056】
明細書における実施形態、態様、実施例などへの言及は、記載された項目が特定の特徴、構造又は特性を含み得ることを示す。しかしながら、開示される各態様は、そうした特定の特徴、構造又は特性を含んでいても良いし、必ずしも含んでいなくても良い。更に、このような言い回しは、特に明記しない限り、必ずしも同じ態様を指しているとは限らない。更に、特定の態様に関連して特定の特徴、構造又は特性が記載されている場合、そのような特徴、構造又は特性は、そのような特徴が他の開示された態様と明示的に関連して記載されているか否かに関わらず、そうした他の開示された態様と関連して使用しても良い。
【0057】
開示された態様は、場合によっては、ハードウェア、ファームウェア、ソフトウェア又はそれらの任意の組み合わせで実現されても良い。開示された態様は、1つ以上のプロセッサによって読み取られ、実行され得る1つ又は複数のコンピュータ可読媒体によって運搬されるか又は記憶される命令として実現されても良い。そのような命令は、コンピュータ・プログラム・プロダクトと呼ぶことができる。本願で説明するコンピュータ可読媒体は、コンピューティング装置によってアクセス可能な任意の媒体を意味する。限定するものではないが、一例としては、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。
【0058】
コンピュータ記憶媒体は、コンピュータ読み取り可能な情報を記憶するために使用することができる任意の媒体を意味する。限定するものではないが、例としては、コンピュータ記憶媒体としては、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、電気消去可能プログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリやその他のメモリ技術、コンパクト・ディスク読み出し専用メモリ(CD-ROM)、DVD(Digital Versatile Disc)やその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置やその他の磁気記憶装置、及び任意の技術で実装された任意の他の揮発性又は不揮発性の取り外し可能又は取り外し不能の媒体を含んでいても良い。コンピュータ記憶媒体としては、信号そのもの及び信号伝送の一時的な形態は排除される。
【0059】
通信媒体は、コンピュータ可読情報の通信に利用できる任意の媒体を意味する。限定するものではないが、例としては、通信媒体には、電気、光、無線周波数(RF)、赤外線、音又はその他の形式の信号の通信に適した同軸ケーブル、光ファイバ・ケーブル、空気又は任意の他の媒体を含むことができる。
【0060】
開示された主題の上述のバージョンは、記述したか又は当業者には明らかであろう多くの効果を有する。それでも、開示された装置、システム又は方法のすべてのバージョンにおいて、これらの効果又は特徴のすべてが要求されるわけではない。
【0061】
加えて、本願の記述は、特定の特徴に言及している。本明細書における開示には、これらの特定の特徴の全ての可能な組み合わせが含まれると理解すべきである。ある特定の特徴が特定の態様又は実施例の状況において開示される場合、その特徴は、可能である限り、他の態様及び実施例の状況においても利用できる。
【0062】
また、本願において、2つ以上の定義されたステップ又は工程を有する方法に言及する場合、これら定義されたステップ又は工程は、状況的にそれらの可能性を排除しない限り、任意の順序で又は同時に実行しても良い。
【0063】
説明の都合上、本発明の具体的な実施例を図示し、説明してきたが、本発明の要旨と範囲から離れることなく、種々の変更が可能なことが理解できよう。従って、本発明は、添付の特許請求の範囲を除いて限定されるべきではない。