(58)【調査した分野】(Int.Cl.,DB名)
各宛先デバイスによって受信されるイベントメッセージが、前記複数の宛先デバイス、前記メディアソースデバイス、及び前記同期モジュール以外の外部ソースから発せられる、請求項7に記載のシステム。
【背景技術】
【0002】
今日、多くの形態のデジタルメディア、多くのタイプのデジタルメディアソース、多くのタイプのデジタルメディア再生(レンダリング)システム、及びメディアソースをメディア再生システムに接続する多くの方法がある。
【0003】
以下、メディアと呼ぶデジタルメディアは、デジタルビデオディスク、メディアファイル、及びメディアストリームを含む多くの形態、フォーマット、及びコンテナで提供される。メディアコンテンツは、オーディオ、ビデオ、イメージ、又はメタデータメディアコンポーネント、及びそれぞれの様々な組み合わせであることができる。例えば、普及しているオーディオフォーマットはMP3として知られており、普及しているビデオフォーマットはH264である。MP3は、動画専門家集団(MPEG)によりMPEG−1規格の一環として設計され、後にMPEG−2規格で拡張されたオーディオ固有のメディアフォーマットである。H264は、国際標準化機構(ISO)/国際電気標準会議(IEC)共同作業部会である動画専門家集団(MPEG)によって開発された規格である。動画は通常、ビデオチャネル及び複数のオーディオチャネルを内部に有するマルチメディアフォーマットである。例えば、5.1動画は、1つのビデオチャネル(メディアコンポーネント)と、6つのオーディオチャネル(オーディオコンポーネント)とを含む。5.1は、6チャネルサラウンド音響マルチチャネルオーディオシステムの一般名称である。
【0004】
デジタルメディアソースは、デジタルビデオディスクプレーヤ、ブルーレイプレーヤ、コンピュータ及びモバイルデバイス等のメディアデバイス並びにインターネットベースの「クラウド」メディアサービスを含む。ブルーレイディスク(BD)は、ブルーレイディスクアソシエーションによって開発された光ディスク記憶媒体である。インターネットベースのメディアサービスは、ネットフリックス(Netflix)(登録商標)及びスポティファイ(Spotify)(登録商標)等のサービスを含む。ネットフリックスは、ネットフリックス社(Netflix Inc.)のメディアサービスであり、商標である。スポティファイは、スポティファイ有限会社(Spotify Ltd.)のメディアサービスであり、商標である。デジタルメディア再生(メディアレンダリング宛先)システムは、コンピュータベースのデバイス、ラップトップ、及びスマートフォン、並びにネットワークオーディオ及びビデオデバイスを含む。スマートTV(SmartTV)は、ネットフリック等のインターネット(クラウド)ベースのメディアサービスからメディアを再生することができるデジタルメディアレンダリングデバイスの一例である。スマートTVは、「コネクトTV(Connected TV)」又は「ハイブリッドTV(Hybrid TV)」と呼ばれることもあり、近代のテレビセット及びセットトップボックスへのインターネット及びウェブの特徴の統合と、コンピュータとこれらのテレビセット/セットトップボックスとの間の技術的収束とを記述するために使用される。インターネットラジオデバイスは、デジタルメディアレンダリングデバイスの別の例である。
【0005】
これらのメディアソースとデバイスとの接続は様々であるが、インターネットプロトコル(IP)プロトコルを使用するネットワークベースの接続に向かって経時進化している。これは、IP接続が便利であり、普遍的であり、安価であるためである。
【0006】
IPネットワークは多くの形態で提供される。最も普及しているのは、イーサネット(登録商標)ベースの有線IPネットワーキングである。イーサネットは、IEEE(米電気電子技術者協会)規格802.3として標準化されたローカルエリアネットワーク(LAN)のコンピュータネットワーキング技術のファミリである。近年、モバイル計算デバイスの普及に伴い、Wi−Fi(登録商標)(IPネットワークの一種)が、ネットワークデバイスを無線接続する最も普及した手段になった。Wi−FiはWi−Fiアライアンス(Wi-Fi Alliance)の商標であり、標準のIEEE802.11ファミリを使用する製品のブランド名である。IPネットワークは、ユニキャスト、マルチキャスト、及びブロードキャストメッセージングを含む幾つかの異なるタイプのメッセージングを使用することができ、そのようなメッセージングは、IPパケットの送信である。
【0007】
「ユニキャスト」という用語は、情報が1つのみの送信者から1つのみの受信者に送信されるタイプのインターネットプロトコル伝送を指すために使用し得る。換言すれば、ユニキャスト伝送は、2つのみのノード間での1対1ノード伝送である。ユニキャストでは、各出力パケットはユニキャスト宛先アドレスを有し、これは、パケットがそのアドレスを有する特定の宛先に向けられることを意味する。そのパケットをリッスンし得る全ての他の宛先は、パケットの宛先アドレスがその宛先のアドレスと同じではない場合、パケットを無視する。
【0008】
多くのIPプロトコルは、ソケットアプリケーションプログラミングインタフェースを介してソフトウェアプログラムからアクセスされる。このソケットインタフェースは、POSIX規格の一環として定義されている。POSIXは、オペレーティングシステムの互換性を維持するためにIEEEによって指定される規格のファミリである「ポータブルオペレーティングシステムインタフェース」の頭字語である。
【0009】
IPネットワーキングの利便性及び利点は、これらのメディアソース及び再生システムの全てが、まだネットワーク対応ではない場合、ネットワーク対応になりつつあることを意味する。多くのブルーレイプレーヤが現在では、イーサネット及びWi−Fiネットワーク接続を有する。今日、大半のよりハイエンドのTVは、ネットワーク機能を有するスマートTVである。同様に、オーディオ再生デバイス及びラジオであっても、ネットワーク及びインターネット対応である。
【0010】
携帯電話、タブレット、ドキュメントリーダ、又はノートブック等のモバイルデバイスは、メディアを受信して記憶することができ、強力なマルチメディア(オーディオ及びビデオ)機能を有し、高帯域幅であり、広く深いコンテンツを有するオンラインメディアサービスにアクセスすることができるセル電話データサービス又はブロードバンドリンク(Wi−Fi等)を介してインターネットに接続し得る。
【0011】
これらの様々な形態のデジタルメディア、メディアサービス及びメディアソース、並びに再生システムの使用事例又は用途は進化してきた。当初、IPネットワークを介してメディア宛先にメディアソースを接続するだけで十分であった。これは今日、ネットフリックス等のインターネットベースのメディアソースサービス及びメディア宛先等のコンピュータと広く併用されている。ユーザは、有線IPネットワーク(インターネット)を介してコンピュータにストリーミングされるネットフリックス動画を見る。これは、有線IPネットワークを介するシングルポイント(1つのIPソース)−シングルポイント(1つのIP宛先)接続の場合である。ネットフリックスメディアサービスは同じメディアを複数の仮定に送信し得るが、これらの各々はシングルポイント−シングルポイントTCP/IP接続である。この更なる進化は、有線イーサネット接続の代わりに、無線Wi−Fi接続を使用することである。それでもこれはなお、シングルポイント−シングルポイント接続である。
【0012】
メディアソースが単一の宛先ではなく複数の宛先に接続する、上記使用事例の更なる拡張が存在する。これらはシングルポイント(1つのIPソース)−マルチポイント(複数のIP宛先)用途である。一例は、ユーザが、無線ビデオ再生デバイスに対して5.1動画メディアファイルを再生しており、6つの独立無線オーディオ宛先が完全な5.1サラウンド音響システムを構成する場合である。この場合、メディアは、1つのメディアソースから7つのメディア宛先に同時に送信されている。別の例では、ユーザは、1つのメディアソースから、家の6つの異なる部屋のあちこちに配置された6つの再生システムに向けて音楽を再生している。
【0013】
これらの両事例において、全ての宛先でメディアを時間同期して再生(レンダリング)する必要がある。さらに、メモリの使用を最小に維持するなど、メディアソースでのリソースの使用を制限する必要がある。加えて、メディアを受信する複数のデバイスがネットワーク帯域幅を効率的に管理する必要がある。
【0014】
現在、同じメディアデータを複数のネットワーク宛先に送信する必要がある場合、そうする一般的な技法は、データを受信する必要がある複数の宛先へのデータマルチキャストを使用することである。そのようなシステムでは、メディアは全ての宛先にマルチキャストされ、メディアを適宜レンダリングしようとすることは、各宛先次第である。レンダリング中、レンダラーが新しいメディアデータを受信しないか、又は正しく受信しないエラーがある場合、レンダラーは、誤ったデータをレンダリングし、次に、正確なデータを受信したとき、エラー後のポイントから正確なメディアを復元して正確なメディアレンダリングを継続し得る。
【発明を実施するための形態】
【0023】
「ユニキャスト」という用語は、情報が1つのみの送信者から1つのみの受信者に送信されるインターネットプロトコル伝送の一種を指すために使用し得る。換言すれば、ユニキャスト伝送は、2つのみのノード間の1対1ノード伝送である。ユニキャストでは、各出力パケットはユニキャスト宛先アドレスを有し、これは、パケットがそのアドレスを有する特定の宛先に向けられることを意味する。そのパケットをリッスンし得る全ての他の宛先は、パケットの宛先アドレスがその宛先のアドレスと同じではない場合、パケットを無視する。
【0024】
本明細書で使用される場合、「ブロードキャストメッセージング」又は「ブロードキャスト」は、情報が1つのみのコンピュータから送信されるが、ネットワークに接続された全てのコンピュータによって受信されるインターネットプロトコル伝送の一種を指す。これは、コンピュータ又はノードが「ブロードキャスト」パケットを送信する都度、その他の全てのコンピュータがその情報パケットを受信することを意味する。
【0025】
本明細書で使用される場合、「マルチキャストメッセージング」又は「マルチキャスト」は、2つ以上の送信者が存在し得、送信された情報が、マルチキャストグループとしてまとまった1組の受信者に向けられ、1組の受信者が全受信者のサブセットであり得るインターネットプロトコル伝送又は通信の一種を指す。マルチキャストでは、各マルチキャストパケットはマルチキャストアドレスにアドレス指定される。このアドレスはグループアドレスである。任意の宛先が、アドレスに加入することができ、したがって、加入しているマルチキャストアドレスに送信されたパケットをリッスンし受信することができる。マルチキャストの利点は、送信された単一のマルチキャストパケットを複数の宛先が受信可能なことである。これは、同じパケットを複数の宛先に送信する必要がある場合、ネットワークトラフィックを節減する。一般に、同じデータを複数のIP宛先に送信する必要がある場合、ユニキャストではなくブロードキャスト又はマルチキャストが、ネットワークの最も効率的な使用を提供する。
【0026】
この説明では、ブロードキャスト及びマルチキャストという用語を使用し得る。ブロードキャスト及びマルチキャストの両方において、メッセージが送信される場合、メッセージは複数の宛先によって受信される。したがって、本明細書で使用される場合、ブロードキャスト及びマルチキャストという用語は同義で使用されて、1つのパケットが複数の宛先によって受信されることを指し得る。場合によっては、この説明では、ブロードキャストされるか、マルチキャストされるか、それともユニキャストされるかを指定せずに送信又は伝送されるメディアのみに言及する。そのような場合、これらの方法の任意の1つをメディアの送信又は伝送に使用し得ることが意味される。
【0027】
本明細書で使用される場合、「メッセージ」及び「パケット」という用語が使用されることが多く、これらは同義で使用し得る。パケットは、インターネットプロトコル(「IP」)ネットワーク上で送信又は受信されるように設定されるデータである。パケットは、「IPパケット」と同じであってもよく、又は同じでなくてもよい。「メッセージ」という用語は、本明細書で使用される場合、そのようなパケットに含まれる論理情報を指す。
【0028】
本明細書で使用される場合、「セグメント」は、データセットを指すためにも使用し得る。データセットはデータバイトセットである。データは、メディアデータ、制御データ、又は情報データを含め、任意のタイプのデータであり得る。この説明では、データ及びパケットという用語は、文脈に応じて同義で使用することもできる。「パケット」はデータセットを指し得、データはデータ全般を指す。
【0029】
多くの代替の実施形態が本明細書に開示され、これらの実施形態が単なる例示として提示されることを理解されたい。記載される実施形態は、決して限定を意図しない。一般に、実施形態は、当業者が本発明のうちの1つ又は複数を実施できるようにするのに十分に詳細に説明され、他の実施形態も利用し得、開示される範囲から逸脱せずに、構造的、論理的、ソフトウェア、電気的、及び他の変更を行い得ることを理解されたい。
【0030】
本発明の一実施形態によれば、Wi−Fiネットワークを介してメディアをブロードキャストするために、まず、ブロードキャスト又はマルチキャストメディアが全ての宛先で均一に受信されるわけではないことを認識する必要がある。宛先によっては、マルチキャスト「パケット」(インターネットプロトコル(「IP」)ネットワーク上で送信又は受信されるデータセットを指す。パケットは、「IPパケット」と同じであっても又は同じでなくてもよい。「メッセージ」という用語は、本明細書で使用される場合、そのようなパケットに含まれる論理情報を指し、同義で「メッセージ」又は「セグメント」と呼ばれることもある)を受信するものもあれば、受信しないものもある。
【0031】
IPネットワークは当初、有線ネットワークを介して動作するように設計されていた。設計により、これらのネットワーク上のパケット通信は「ベストエフォート型」であった。これは、ネットワークで送信される任意のパケットが、意図される宛先によって受信されないことがあることを意味する。これは最も多くの場合、衝突に起因し、別のデバイスが対象となるデバイスと同じ瞬間に通信を開始し、それにより、衝突が生じる。別の損失理由は、ルータとのネットワークパス中のデバイスが単に、例えばバッファ空間がないことに起因して、パケットを落とすことである。損失の他の理由は、単に有線回線にノイズが多く、パケット伝送が破損することであり得るが、これは、無線の場合と比較して有線の場合では希である。
【0032】
これらの全ての有線状況では、送信(例えば、マルチキャストメッセージ)がサブネット又はワイヤ上の1つのデバイスによって受信された場合、同じワイヤ又はサブセット上のその他の全てのデバイスも送信を正確に受信することが一般に事実である。これは、有線の場合、ワイヤの一部分上のデバイスのノイズ又は干渉状況が、ワイヤの別の部分でのノイズ状況とあまり変わらないためである。有線デバイスが、ハブではなくスイッチを介して接続される場合、同じ事柄が当てはまり、ノイズ又は干渉の量は最小である。
【0033】
Wi−Fiでは、サブセット内の各Wi−FiデバイスでのWi−Fiトラフィックの受信での差は大きい。したがって、これを説明する必要がある。
本発明の一実施形態によれば、全てのデバイス(すなわち、ソースデバイス104並びに様々な宛先デバイス106及び106’)(
図1及び
図3参照)は、ローカルネットワーク120上で一緒にネットワーク接続し得る。これは通常、IPネットワークであり、有線又は無線(例えば、Wi−Fi)ネットワークであり得る。このローカルネットワークは、インターネットに更に接続し得る。
【0034】
多くのメディアシステムでは、メディアを複数の再生デバイスに送信し、各再生デバイスにメディアを同相でレンダリングさせることが望ましい。例えば、ステレオオーディオメディアの左チャネルを左オーディオ再生デバイスに送信し、ステレオメディアの右チャネルを右オーディオ再生デバイスに送信し、これらの両デバイスにメディアを同相で正確に再生させることが望ましい。
【0035】
図1は、2つのデジタルオーディオサブシステムである、第1のサブシステム106及び第2のサブシステム106’を有するそのようなシステムを示す。第1のサブシステム106及び第2のサブシステム106’は各々、同じ又は関連するオーディオデータをレンダリングする。例えば、各オーディオサブシステムは、ネットワーク上のメディアファイル222からメディアを受信中であり得る。各システム(すなわち、オーディオシステム106及び106’)は、中央演算処理装置(CPU)及びデジタル/アナログ変換器を備える。各システム106、106’は、DACを介してオーディオ出力112及び112’をレンダリングする。この場合、レンダリングされる出力波220及び220’は、
図1に示されるように、オーディオ同相である必要がある。オーディオ同相であるために、レンダリング波220及び220’は、正確な時間に(位相オフセットで)再生される正確な音響(周波数スペクトル)を有する必要がある。例えば、メディアが、そのメディアでベルを1分鳴らす左チャネルを含み、右チャネルが同時にドラムビートを再生し、デバイス106が左チャネルを再生し、デバイス106’が右チャネルを再生する場合、そのメディア再生の1分で、デバイス106がベル音をレンダリングし、デバイス106’がドラムビートをレンダリングすれば、デバイスは同相である。
【0036】
レンダリング波220及び220’が同相ではない場合、ユーザは、2つの波220と220’との周波数差に関連するうなり周波数を聞くおそれがある。さらに、時間の経過に伴い、2つのオーディオ出力の差が増大し続け得る。例えば、前に用いた例では、第2のサブシステム106’が+50ppmだけずれ、3分の歌がドラムビートで終わる場合、第2のサブシステム106’は、最後のドラムビートを第1のサブシステム106よりも9ミリ秒後に再生することになる。そのような10の歌の後、差は90ミリ秒になり、これは非常に顕著である。
【0037】
したがって、複数のオーディオデバイス106及び106’が同じメディアを再生している場合、各システムのレンダリングクロックを調整し、同じ位相オフセット及び周波数を有することを保証する必要がある。
【0038】
図2は、オーディオを再生する典型的なデジタルシステム106をより詳細に示す。CPU114はオーディオサンプルをDAC108に送信し、オーディオサンプルは、DAC108がデジタルサンプルをアナログ信号112に変換することによってレンダリングされる。DACがデジタルサンプルをアナログ信号レベルに変換するレートは、出力サンプルレートと呼ばれ、出力サンプルレートは通常、CPU114から送信されているオーディオサンプルがサンプリングされたレートに一致する。厳密な出力サンプルレートは、DACを駆動しているDACクロックサブシステムによって決まる。このクロックサブシステムの精度は、出力サンプルレートの精度、ひいてはこのシステムによるオーディオレンダリングの精度に影響を及ぼす。このクロックサブシステムは、CPU114から、又は外部ソース105から発せられるクロックを使用し得る。
【0039】
典型的なCPU114のCPUクロック結晶102は、CPU114によって内部生成されるCPUクロックのベースとなる。そして、このCPUクロックは全てのCPUタイミング活動に使用されることになる。CPUによっては、このCPUクロックに基づいて、CPU114内部で多くの異なるクロック信号を生成するものがある。CPU114は、様々なタイミング関連活動に使用することができるCPUクロックに基づいて、多くのクロック周辺機器及びクロックレジスタ136を有することもある。例えば、クロック周辺機器は、CPUに100ミリ秒毎に定期的に割り込むように構成し得る。このクロックは元々、CPU結晶102に基づくため、この周期の精度はCPU結晶102の精度に依存する。通常、CPU114で実行されるプログラムは、CPU114に電源投入され、リセットされてからCPU114がカウントしたクロックカウント数を示すクロックレジスタ136を読み取ることもできる。これらのクロックカウントは、CPU結晶102に関連するレートで増分される。このクロックは、DAC出力サンプルレート及びオーディオサンプルがDACに提供されるレートを駆動するのに使用し得る。
【0040】
幾つかの実施形態では、システム106は、オーディオクロック信号116をCPU114及びDAC108に送信して、CPU114からDAC108に送信されるオーディオ信号の再生のタイミングを管理するとともに、DAC108を介してそのようなオーディオ信号からオーディオ出力112を生成するために、各自の独立した結晶103を有する別個のオーディオクロック105を更に備え得る。
【0041】
代替の実施形態は、DACサンプルレートの駆動に、外部クロックソース及び内部クロックソースの様々な組み合わせを使用し得る。
メディアを複数の再生デバイスに送信し、各再生デバイスに同相でメディアをレンダリングさせる必要がある、
図1に示されるようなメディアシステムでは、メディアに何らかの時間参照情報をマークする必要があり、各デバイスは、この時間情報に従ってこのメディアを再生する必要がある。これは、レンダリング活動の時間を合わせているために、各デバイスが同じ時間参照を使用する必要があることを意味する。
【0042】
図3は、上述したように時間参照する共通クロックベースの手法を示す。図示されているように、ソースデバイス104及び1つ又は複数の宛先デバイス106、106’は、ネットワーク120によって接続し得る。ソースデバイス106は、「共通」ソースクロックでありローカルクロックC135を有し、各宛先デバイス106、106’も、第1のデバイス106についてはD1_136として示され、x番目のデバイス106’についてはDx136’として示されるローカルクロックを含む。ソースクロック135は、そのクロック値が全ての宛先に送信され、全てのデバイスで共通する標準クロックとして使用されるため、共通ソースクロックと呼ばれる。ソースデバイス104は周期的に、メッセージ送信前に読み取られた最新の共通ソースクロック値Cを含む「クロック」メッセージを各宛先デバイス106、106’に送信する。クロック値を有する周期nで第1のデバイスに送信されるクロックメッセージは、C1
n250として記され、クロック値を有する周期nで第xのデバイスに送信されるクロックメッセージは、Cx
n252として記される。各宛先デバイス106、106’は、クロックメッセージを受信すると、受信した最新のクロック値C1
n又はCx
nを254及び254’として記録する。各宛先106、106’は、クロックメッセージを受信すると、受信したC1
n又はCx
n共通クロック値と共に、対応するローカルクロック値D1
n又はDx
nも記録する。クロックメッセージを受信する瞬間から、それに関連付けられたローカルクロックが記録される時間までには遅延がある。この「記録」遅延は、クロックメッセージ毎に異なり得、記録ジッタRとして定義される。記録遅延のこの変化は、メッセージングに使用されるネットワークアダプタと、パケット受信までの宛先でのソフトウェアの応答時間の変化とに起因し得る。
【0043】
図4は、メッセージトランザクションの時系列を示す。ソースデバイス104は、第1のデバイス106にはクロック値C1
n250を有し、x番目のデバイス106’にはクロック値Cx
n252を有するn番目のクロックメッセージを送信する。n+1番目以降のメッセージも同様である。各クロックメッセージは、ソース104から各宛先106〜106’に届くまでに特定量の時間(トランスポート時間)がかかる。
【0044】
n番目のメッセージが第xのデバイスに届くまでの時間はTx
nである。各宛先までのトランスポート時間は、ネットワークパケット伝送問題に起因して異なり得る。この差は、時間の経過に伴い、デバイス毎に変化する。Txのこれらの変化は、デバイスxでのトランスポートジッタJxと呼ばれる。
【0045】
各メッセージCx
n内の情報と、記録された対応するローカルクロック値Dx
nとに基づいて、各宛先x106、106’は、共通ソースクロックC135に一致するように、ローカルクロックDx136、136’を調整するための情報を計算し得る。宛先106、106’は、ソースクロックC135の現在の位相(カウント)Pcの最良推定値に一致するように、ローカルクロックD1_136、Dx136’位相(カウント)Pxを調整し得る。同様に、宛先106、106’は、共通ソースクロックC135の現在の周波数Fcの最良推定値に一致するように、ローカルクロックD1_136、Dx136’周波数Fxを調整し得る。
【0046】
これらのステップを実行する例示的な計算は以下であり得る。
・Cx
n:デバイスXに送信されるn番目の共通ソースクロック値
・TA
x:デバイスXへの平均推定トランジット時間
・RA
x:デバイスXでの平均推定記録時間
・Jx:平均TA
xからの最大トランジット時間ずれ
・Rx:平均からの最大記録時間ずれ
・Tx
n:デバイスXに送信されるn番目のメッセージのトランスポート時間
・Dx
n:n番目のクロックメッセージでのデバイスxのクロック値
・Fx
n:デバイスxの新しいローカルクロック周波数
・Px
n:デバイスxの新しいローカルクロック位相/カウント
・Cx’
n=Cx
n+Tx
n+Rx
n:推定共通クロックn
・Cx’
n+1=Cx
n+1+Tx
n+1+Rx
n+1:推定共通クロックn+1
・Tx
n=Ta
x+/−Jx:トランスポート時間n
・Tx
n+1=Ta
x+/−Jx:トランスポート時間n+1
・Rx
n=Ra
x+/−Rx:記録時間n
・Rx
n+1=Ra
x+/−Rx:記録時間n+1
・Ax
n=(Dx
n+1−Dx
n)−(Cx’
n+1−Cx’
n):周波数調整値
・Ax
n=(Dx
n+1−Dx
n)−(Cx
n+1−Cx
n)+/−2*Jx+/−2*Rx
・Fx
n=Fx
n−1−Ax
n:新しい周波数
・Fx
n=Fx
n−1+(Cx
n+1−Cx
n)−(Dx
n+1−Dx
n)+/−2*Jx+/−2*Rx
・Px
n=Cx’
n=Cx
n+Ta
x+/−Jx+/−Rx:位相オフセット。
【0047】
トランスポート時間Txの推定は、このシステムにとって極めて重要である。これを行う一般的な一方法は、メッセージをソース104から宛先Dx106、106’にメッセージを送信し、宛先Dx106、106’にこのメッセージへの肯定応答を送信させることにより、ソースから宛先への往復時間を測定することである。出力メッセージを送信してから、入力肯定応答メッセージを受信するまでの合計時間が、往復時間である。この時間を半分にすることで、出力トランジット時間の推定値が提供される。これが多数回行われ、フィルタリングされる場合、フィルタリング結果Ta
xを、ソースから宛先Dxへの平均トランジット時間として使用することができる。n番目のメッセージの実際のトランジット時間Tx
nは、=Ta
x+/−Jx
nであり、但し、Jx
nはジッタであり、このn番目のメッセージの平均からずれである。Jx
nは、測定されたTx時間の標準偏差を使用して推定することができる。
【0048】
この方式では、各宛先デバイス106、106’は、共通ソースクロック135情報を使用して、共通ソースクロック135のクロック値及びクロックレートに一致するように、ローカルクロック136、136’値及びクロックレートを調整する。すなわち、共通ソースクロック135は、システムで使用される「グローバル」クロックであり、全ての宛先クロックはこれに合わせられる。次に、メディアは、ローカルクロック136、136’を使用して各デバイスでレンダリングされる。
【0049】
このシステムの精度は、トランスポートジッタが周波数及び位相両方の計算に影響し得るため、限られ得る。これは、上述したように、ある時間期間にわたり、計算に使用されるパラメータをフィルタリングすることによっていくらか軽減し得る。メディアのレンダリングは、宛先デバイス106、106’によって行われ、これらのデバイスに関連付けられたクロックは、メディアレンダリングのベースとして使用されるため、これは、メディアレンダリングの位相精度がトランスポート時間ジッタによって影響を受けることを意味する。トランスポート時間ジッタJxが、Wi−Fiネットワークであり得るように、+/−1〜2ミリ秒である場合、達成することができる最高位相精度はこの範囲に制限される。
【0050】
このシステムに伴う更なる問題は、仮想クロック時間が、受信メッセージの間隔でのみ増分することである。これは、ローカルクロックを使用して、これらのメッセージ間隔中の時間を補間することによって対処することができる。問題は、各デバイスのローカルクロックがその他のローカルクロックとわずかに異なり得、したがって、補間された仮想クロックが、受信メッセージの結果として行われる各調整で前方にジャンプするか、又は後方に動くことがあることである。これは、メディアレンダリングを時折、小量だけ前方又は後方にジャンプさせ得る。
【0051】
更なる問題は、多くのシステムで、共通グローバルクロックが利用可能ではないか、又は利用可能な場合であっても、同期目的では十分に正確ではないことである。例えば、ソースデバイスのローカルクロックには、プログラミングAPIを通してアクセスし得るが、呼び出し側プログラムは通常、API呼び出し中に遅延を有し得るか、タスクスワップを有し得るマルチタスクオペレーティングシステムで実行中であるため、ローカルクロック時間は、その時間だけ不正確になる。例えば、呼び出し側プログラムは、ローカルクロックAPIを呼び出し得、ハードウェアクロック値を呼び出し得、次に、関数が返す前に、現在のプログラムスレッドがスワップを課され、次のプログラムスレッドでタイムスライスのみを返す。これは、返されるハードウェアクロック値がここで、タイムスライス期間だけ遅れていることを意味する。最も一般的なオペレーティングシステムは、最長で25ミリ秒〜100ミリ秒のタイムスライス期間を有することができ、したがって、ハードウェアクロック値は、ミリ秒単位で大きく遅れ得る。これは、スマートフォン又はノートブック等の多くの汎用ソースデバイスに当てはまる。逆に、本発明で使用される宛先デバイスは、専用デバイスであり、したがって、ソフトウェアは、はるかに良好なローカルクロック読み出し精度で、より下位レベルで動作する。
【0052】
したがって、本発明の様々な実施形態は、ソースデバイスのローカルクロックを正確に読み取る能力を使用しないか、又は必要としないという目標で設計し得る。
開示される構成は、各デバイスのローカルレンダリングクロックのみを使用してメディアをレンダリングする。ここで参照される宛先デバイスローカルクロックは、メディアサンプルがDAC(デジタル/アナログ変換器)に供給されて、デジタルメディアサンプルをオーディオ信号又はビデオ信号に変換(レンダリング)するレート(サンプルレート)のベースとして使用されるクロックである。このローカルクロックは、ハードウェアクロックであることもあれば、又はオーディオ信号若しくはビデオ信号への変換のためにサンプルをDACに供給する、ハードウェアクロックによって支援し得る仮想クロック、割り込みサービスルーチン等のソフトウェアオブジェクトであることもある。
【0053】
これらの宛先クロックは、増分の仕方が連続し平滑しており、したがって、メディアをレンダリングする仕方が平滑している。しかし、デバイスクロックでの潜在的な差について調整する必要があり得る。一実施形態は、2つの問題に分けることによってこの調整に対処する。第1の問題は、周波数差を検出することである。第2の問題は、差について調整することである。差を検出するために、一実施形態は、共通クロックではなく共通イベントベースの手法を使用する。
【0054】
図5は、共通イベントベースのシステムの一例の基本要素の図である。システムは、ネットワーク120によって接続されるソースデバイス104及び1つ又は複数の宛先デバイス106、106’からなる。ソースデバイスは、2つの要素:共通イベントソースE350及び同期計算マネージャ(同期マネージャ)S352を有する。共通イベントソースE350は、全ての宛先デバイスで同時に、共通時刻に受信されるイベントメッセージをネットワーク上で生成する。共通イベントメッセージE
n358の一例は、全ての宛先デバイス106、106’によって同時に受信されるマルチキャスト又はブロードキャストメッセージである。なお、マルチキャスト又はブロードキャストメッセージは、1つのデバイスであるソースデバイスによって通信チャネルに出され、全ての宛先デバイスによって受信される。メッセージは実際に、通常、電気信号又はRF信号が光速に近い速度で搬送される電気手段によって通信チャネル上で通信される。したがって、例えば、メッセージの最後のビットは、距離に光速を掛けたものだけの差である時刻で全ての宛先デバイスで受信され、これは略即時である。共通イベントメッセージの別の例は、例えば、802.11(Wi−Fi)ネットワークプロトコルを使用するネットワークでのビーコンメッセージである。
【0055】
一実施形態では、全ての宛先デバイスによって受信され、それぞれが一意に識別可能であり、それぞれが全ての宛先デバイスで同時に受信される任意のイベントシーケンスを、本明細書に記載される共通イベントとして使用し得る。一実施形態では、同期マネージャS352は、そのような共通イベントのソースである。
【0056】
同期計算マネージャS352は、宛先デバイス106、106’を含め、ネットワーク120上の任意の計算デバイスに存在し得る。
各宛先デバイスx(106、106’)は、デバイスによるメディアレンダリングのベースとして使用されるローカルクロックDx(136、136’)を有する。
【0057】
図6は、システムでの活動及びメッセージの時系列を示す。イベントソースE350はイベントメッセージを生成し、時間T
nにおいて生成されるn番目のイベントは、E
n358として記される。イベントE
n358は、イベント番号nによって識別され、これは各イベントに一意である。イベント番号nは、単に、システムがオンになったときから同期マネージャS352によって生成される順次増分される番号であってもよく、又はタイムスタンプ値であってもよい。後者の場合、これは一意の番号としてのみ使用され、時間値は時間のインジケータとして使用されない。一意のイベント番号を生成する任意の他の形態であってもよい。各イベントメッセージE
nを受信すると、各宛先xは、ローカルクロックDx136の現在値をDx
nとして記録する。共通クロックの場合と同様に、イベントメッセージの受信の瞬間から、それに関連付けられたローカルクロックが記録されるまでに遅延がある。この「記録」遅延は、イベントメッセージ毎に異なり得、記録ジッタRとして定義される。
【0058】
各宛先デバイスxは、イベントメッセージnを受信すると、n番目のイベントに対して、イベントnの受信時に記憶された値Dx
nを有するイベント肯定応答メッセージAK(Dx
n)354、354’と、一意のイベント番号nを同期計算マネージャS352に送信する。同期計算マネージャは、Dx
n値を有する全てのイベント肯定応答メッセージAK(Dx
n)354、354’を受信し、計算を実行し、次に、調整情報Ax
nを有するクロック調整メッセージAJ(Ax
n)356、356’を各デバイスxに返信する。
【0059】
実行される計算を以下に示す。
・Ex
n:デバイスXに送信されるn番目の共通イベントメッセージ
・Tx
n:デバイスXに送信されるn番目のイベントのトランスポート時間
・Dx
n:n番目のイベントメッセージでのデバイスxのクロック値
・Fx
n:デバイスxの新しいローカルクロック周波数
・Px
n:デバイスxの新しいローカルクロック位相/カウント
・Qx0=Dx
0−D1
0+/−2*Rx:デバイス1に対する参照(初期)クロック位相
・Qx
n=Dx
n−D1
n+/−2*Rx:n番目のクロック位相
・Qf
n=F(Qx
n):n番目のクロック位相のフィルタリング関数
・ex
n=(Qf
n−Qf
0)+/−4*Rx:位相エラー(変化)
・kx
n=T*ex
n:エラー*伝達関数
・Fx
n=Fx
0+kx
n+/−T*4*Rx:新しい周波数
・PFx
n=((Fx
n/Fx
n−1)−1)*100:新しい周波数パーセント
・Px
n=Dx
n−D1
n+/−2*Rx:位相オフセット
・Ax
n=(PFx
n,Px
n):調整情報。
【0060】
この共通イベントシステムでは、1つのデバイス、つまり、第1の宛先デバイスであるデバイス1のクロックが、位相参照クロックとして使用される。これらの計算を用いて、同期モジュールは、各宛先デバイスxの位相オフセット(ローカルクロック値)及び周波数割合(ローカルクロックレート)調整を計算し、この調整情報を宛先xに送信し、各宛先デバイスxでのローカルクロックが宛先デバイス1のローカルクロックに一致するように調整を行うように求める。
【0061】
例えば、ジッタを無視して、共通イベント1であるE1とイベント2であるE2との間で、第1の宛先デバイスのローカルクロックが100カウント増分し、宛先デバイスxが101カウント増分する場合、デバイスxは、宛先デバイス1よりも高速で実行されており、そのクロックレートを101から1カウントだけ減分する必要がある。さらに、第1の宛先デバイスのローカルクロックが、イベント1であるE1で2500であり、宛先xのローカルクロックが、イベント1であるE1で3000であった場合、宛先xのローカルクロックを2500に調整して、第1の宛先デバイスの位相に合わせる必要がある。
【0062】
この実施形態は、周波数の割合として周波数調整を定義するが、他の実施形態は、絶対的な新しい周波数又は追加若しくは低減すべきサンプル数を含む他の形態で周波数調整を定義し得る。これらの全ての形態は、本明細書の目的のために周波数調整と呼ばれる。また、周波数という言葉の使用は、クロックレートを指し、オーディオサンプル結晶レート及びサンプル出力レートの両方に関連し、これら両方を指し得る。一般に、サンプル出力レートは、オーディオサンプル結晶レートの倍数である。
【0063】
位相調整はクロック値の調整を指し、クロック値は、オーディオ結晶レート、サンプル出力クロック出力レート、又はサンプル出力クロックに関連する何らかの他のカウンタ値で増分するクロックについてのクロック値であり得る。
【0064】
この共通イベントシステムでの主要な事柄は、肯定応答メッセージ354、354’及び調整メッセージ356、356’が、IPネットワークを介して送信されるため、受信側に予測可能な時刻に到着しないことがあることである。各肯定応答メッセージは、宛先デバイス番号を含む。
【0065】
したがって、同期モジュール352は、到着時までに、同じイベントへの肯定応答メッセージ354、354’をグループ化することができない。例えば、イベント1への幾つかの肯定応答メッセージは、イベント2の肯定応答メッセージが到着した後、同期モジュール352に到着し得る。したがって、肯定応答メッセージは、一意のイベント番号に基づいてイベント肯定応答メッセージセットにグループ化される。
【0066】
このために、同期モジュール352は、一意の各イベントについて1組の宛先デバイスから送信された全ての肯定応答メッセージを関連付けることができる。したがって、同期モジュールは、システムの寿命にわたり一意である番号nで各イベントメッセージをマークする。これは単に、各イベントに伴って増分するイベント番号であり得る。全ての宛先デバイスは、この一意のイベント番号を肯定応答メッセージAK354、354’に含める。肯定応答メッセージAK354、354’が同期モジュール352で受信されると常に、肯定応答メッセージは、肯定応答メッセージの集合{AK(Dab),・・・,AK(D1n),・・・,AK(Dxn),AK(D1n+1),・・・等}に配置される。次に、この集合が探索されて、特定のイベント番号nに対する全ての肯定応答メッセージの部分集合{AK(D1n),・・・,AK(Dxn)}を見つける。次に、デバイス1に関する位相変化Qxnが、上記計算に示されるように、この部分集合からの値を使用して計算される。この部分集合内の値は、使用前に更にフィルタリングし得る。
【0067】
代替の実施形態では、イベントメッセージは、Wi−Fiシステムのビーコンメッセージを使用するなど、外部ソースから提供し得る。この場合、ビーコンメッセージ内の時刻値は、一意のイベント番号として使用し得る。なお、時刻値は時刻値として使用されず、一意のイベント番号としてのみ使用される。
【0068】
図7は、共通クロック方法と、本明細書に記載される共通イベント方法との幾つかの重要で重大な違いを識別する。上部プロット450は、共通クロック方法の正味の影響を示す。この方法では、ソース104のクロックである共通クロックは、システムによって使用される「グローバル」クロック454である。このクロックは、ローカルクロックを調整するために共通ソースクロック時間を推定する各宛先D1_106〜Dx106’によって使用される。上述したように、この設定の精度はトランスポート待ち時間L1_458及びLx460による影響を受ける。各宛先デバイスD1_106及びDx106’は独立して、共通クロック時間を推定するため、これらのクロックの位相差P462はこれらの待ち時間にかなり依存することになる。トランスポート待ち時間は、トランスポートジッタと呼ばれるメッセージ毎の差を有するため、これは、宛先デバイスクロック(D1_136及びDx136’)のクロック設定が、トランスポートジッタを受ける精度を有することを意味する。特に、これは、クロックの差である位相差が最大メッセージトランスポートジッタJxを受けることを意味する。デバイスD1_106及びDx106’の両方でのメディアレンダリングの位相精度を維持することが望ましい。最良の提案は、トランスポートジッタが位相精度に影響しないようにすることである。
【0069】
全体的に、共通クロック方法は、全てのクロックをソースの共通クロックに合わせ、調整の計算は各宛先で独立して行われ、精度は、記録精度Rx及びトランスポートジッタJxに依存する。
【0070】
下部プロット452は、本発明の様々な実施形態で使用される共通イベント手法を示す。この手法では、第1の宛先デバイス106のクロックD1は、システムで使用される参照「グローバル」クロック456になる。追加の宛先デバイス106’は、それ自体のクロックDxをD1_106のグローバルクロックに調整する。これらのクロックの位相差P466は、トランスポート待ち時間による影響を受けず、共通イベントを受信時にいかに正確に記録するかによってのみ関連する。トランスポート待ち時間L1_464は、グローバルクロック456を元のソース104に射影する際のファクタにすぎない。本発明の一実施形態では、ソース104は、必要であれば、宛先クロックD1_106に一致するようにクロックを調整する。この実施形態では、ソースクロック又はそのような調整は必要ない。
【0071】
全体的に、共通イベント手法は、全てのクロックを宛先クロックの1つに合わせ、精度は記録精度Rxのみに既存する。トランスポートジッタJxは、メッセージのトランスポートに関わる全てのデバイス及びプロセスによる影響を受けるため、記録精度Rxの何倍も大きい傾向を有する(一方、記録精度は宛先ハードウェア及びソフトウェアのみに依存し、宛先ハードウェア及びソフトウェアにローカルである)。トランスポートジッタは数ミリ秒にもなり得るが、一方、記録ジッタは通常、数百マイクロ秒未満である。したがって、共通イベント手法は、記録精度のみに依存し、より少ない労力で複雑なかつ高レベルの位相同期精度を提供するよりよい手法である。
【0072】
図8は、共通イベント手法の全体的な効果を誇張した図を示す。上部波形220はデバイスD1_106からのDACの出力であり、下部波形220’はデバイスDx106’からのDACの出力である。両プロットの垂直線は、各レンダリングクロックのクロックの刻み(DACサンプルレート出力クロック)を示す。垂直線には、各クロックの刻みでレンダリングされるサンプルデータもプロットされる。
図8中、下部波形Dxは上部波形よりもはるかに遅いクロックの刻みを有し、したがって、オーディオサンプルは、デバイスD1においてより長い時間期間にわたってレンダリングされる。この図は2つの共通イベントE
n及びE
n+1も示す。見て分かるように、D1からの下部波形が増分されたクロックの刻み量が、上部波形220で増分されたクロックの刻みの量未満である。時間E
nでの位相は、時間E
nでの2つのデバイス間のクロックカウント差である。時間E
n+1での位相もこの差である。クロックレートは異なるため、イベントE
nでの位相がイベントE
n+1での位相とは異なることになることが分かる。上述した共通イベント計算及び調整は、これを補正しクロックレートが上部波形220のクロックレートに一致するまで、下部波形220’のクロックレートを増大させる。クロックレートが一致する時点で、2つの波形は同様にレンダリングされ、同相でレンダリングされる。
【0073】
ローカルクロックレートの調整は、幾つかの方法で行うことができる。共通手法は文字通り、レンダリングクロックのクロックレートを調整することである。通常、これは、調整可能なクロックを生成することができる何らかの種類のハードウェアサブシステムを必要とする。代替の手法は、レンダリングクロックをそのままにし、メディアデータを代わりに調整するというものである。この手法は、サンプルレートを変換し、サンプルレート変換を行い、クロックレート差を補償するというものである。1kHzオーディオ信号が44.1kHzでサンプリングされ、次に、44.1kHzクロックでレンダリングされる場合、レンダリングされるオーディオ信号は、元のオーディオ信号の正確な表現になる。代わりに、レンダリングクロックが44kHzである場合、1kHzオーディオ信号は、わずかに低いトーンでレンダリングされ、元のオーディオ信号の正確な表現にはならない。オーディオデータがここで、44.1kHzから44kHzにサンプリングレート変換され、44kHzレンダリングクロックを使用してレンダリングされる場合、ここでレンダリングされる1kHzオーディオ信号は再び、元のオーディオ信号の正確な表現になる。
【0074】
本発明の好ましい実施形態は、後者のサンプルレート変換手法を使用する。周波数調整メッセージが各宛先で受信されると、レンダリングクロックを調整する代わりに、各宛先はサンプルレート変換をデータストリームに対して実行し、データのサンプルレートを増減する。これは、レンダリングクロックの調整と同じ正味効果を有する。
【0075】
通常、周波数差は、PPMパーツパーミリオン単位で指定されるクロック結晶の精度に関連する。100PPM結晶は、<0.01%、すなわち10,000個のうち1個の精度である。したがって、ここで必要とされるサンプルレート変換は通常、10,000個のサンプルのうち1個のサンプルという小さな調整である。したがって、調整は、時折1個のサンプルを追加又は落とすことによって達成することができる。
【0076】
図9は、制御システムの形態の上述したアルゴリズムを示す。これは、D1_106〜Dx106’として記される幾つかのデバイスを示す。各宛先デバイスは、第1のデバイスD1_106を除き、ソフトウェア位相ロックループアルゴリズムを実施して、位相をデバイスD1_106のクロック位相にロックする。各宛先デバイスDx106’には、出力クロックDx
n654’の位相を参照クロックD1_652と比較する位相補償器650’が関連付けられる。次に、参照クロックe
x−1656からの位相差は、クロック周波数調整Ax700’を生成するようにスケーリングされる。次に、この調整は、宛先106’でのクロック生成器702’にクロック周波数を調整させる。システムのこの実施形態では、位相検出器650’及び利得/スケーリング658’は、同期計算マネージャ352に存在する。クロック生成器702’は宛先デバイス106’に存在する。
【0077】
[追加の考慮事項]
本特許出願で提供されるセクションの見出し及び本特許出願の名称は、単なる便宜上のものであり、本開示を限定するものとして決して解釈されるべきではない。
【0078】
互いに通信するデバイスは、その他のことが明示される場合を除き、互いに連続して通信する必要はない。さらに、互いに通信するデバイスは、直接、又は1つ若しくは複数の論理的若しくは物理的な中間物を通して間接的に通信し得る。
【0079】
互いに通信する幾つかの構成要素を有する一実施形態の説明は、全てのそのような構成要素が必要とされることを暗に示すものではない。逆に、本発明の1つ又は複数の多種多様な可能な実施形態を説明するため、且つ本発明の1つ又は複数の態様をより十分に説明するために、様々な任意選択的構成要素を記載し得る。同様に、プロセスステップ、方法ステップ、アルゴリズム等は逐次順で説明されることがあるが、そのようなプロセス、方法、及びアルゴリズムは一般に、逆のことが特記される場合を除き、代替の順序で機能するように構成することもできる。換言すれば、本特許出願に記載され得る任意の順序又は順番のステップはそれ自体として、ステップがその順序で実行されるという要件を示さない。記載されるプロセスのステップは実際に任意の順序で実行し得る。さらに、ステップによっては、同時に発生するものとして説明又は暗示されていない(例えば、一方のステップが別のステップの後に説明されているため)にもかかわらず、同時に実行してもよいものがある。さらに、図面での図示によるプロセスの説明は、示されるプロセスが他の変形及び変更を除外することを暗示するものではなく、示されるプロセス又はその任意のステップが本発明の1つ又は複数に必要であることを暗示するものではなく、示されるプロセスが好ましいことを暗示するものでもない。また、ステップは一般に、実施形態毎に1回説明されるが、これは、1回のみ行われなければならないこと、又はプロセス、方法、若しくはアルゴリズムが実施又は実行される都度、1回のみ行い得ることを意味するものではない。ステップによっては、幾つかの実施形態若しくは幾つかの場合で省いてもよいものもあり、又はステップによっては、所与の実施形態若しくは場合で2回以上実行し得るものもある。
【0080】
単一のデバイス又は物品が記載される場合、2つ以上のデバイス又は物品を単一のデバイス又は物品の代わりに使用し得ることが容易に理解し得る。同様に、2つ以上のデバイス又は物品が記載される場合、単一のデバイス又は物品を2つ以上のデバイス又は物品の代わりに使用し得ることが容易に理解し得る。
【0081】
デバイスの機能又は特徴は代替として、そのような機能又は特徴を有するものとして明示的に説明されていない1つ又は複数の他のデバイスによって実施してもよい。したがって、本発明の1つ又は複数の他の実施形態はデバイス自体を含む必要がない。
【0082】
本明細書で記載又は参照される技法及びメカニズムは、明確にするために、単数形で説明されることがある。しかし、特定の実施形態が、特に断りのない限り、技法の複数の反復又はメカニズムの複数の反復を含むことに留意されたい。図中のプロセスの説明又はブロックは、プロセスでの特定の論理機能又はステップを実施する1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの部分を表すものとして理解されたい。当業者には理解されるように、関わる機能に応じて、略同時又は逆順を含め、例えば、示される順又は考察される順以外で機能を実行し得る代替の実施態様は、本発明の実施形態の範囲内に含まれる。
【0083】
一般に、本明細書に開示される技法は、ハードウェア又はソフトウェアとハードウェアとの組み合わせで実施し得る。例えば、オペレーティングシステムカーネル、別個のユーザプロセス、ネットワークアプリケーションにバインドされたライブラリパッケージ、特に構築されたマシン、特定用途向け集積回路(ASIC)、又はネットワークインタフェースカードで実施し得る。
【0084】
本明細書に開示される実施形態のうちの少なくとも幾つかのソフトウェア/ハードウェアハイブリッド実施態様は、メモリに記憶されたコンピュータプログラムによって選択的にアクティブ化又は再構成されるプログラマブルネットワーク常駐マシン(断続的に接続されるネットワークアウェアマシンを含むものとして理解され得る)で実施し得る。そのようなネットワークデバイスは、異なるタイプのネットワーク通信プロトコルを利用するように構成又は設計し得る複数のネットワークインタフェースを有し得る。これらのマシンの幾つかの一般構造は、所与の機能ユニットを実施し得る1つ又は複数の例示的な手段を示すために、本明細書において開示し得る。特定の実施形態によれば、本明細書に開示される様々な実施形態の特徴又は機能の少なくとも幾つかは、例えば、エンドユーザコンピュータシステム、クライアントコンピュータ、ネットワークサーバ又は他のサーバシステム、モバイル計算デバイス(例えば、タブレット計算デバイス、携帯電話、スマートフォン、ラップトップ等)、消費者電子デバイス、音楽プレーヤ、任意の他の適する電子デバイス、ルータ、スイッチ等、又はそれらの任意の組み合わせ等の1つ又は複数のネットワークに関連付けられた1つ又は複数の汎用コンピュータで実施し得る。少なくとも幾つかの実施形態では、本明細書に開示される様々な実施形態の特徴又は機能の少なくとも幾つかは、1つ又は複数の仮想化計算環境(例えば、ネットワーク計算クラウド、1つ又は複数の物理的計算マシンでホストされる仮想マシン等)で実施し得る。さらに、幾つかの実施形態では、本発明の1つ若しくは複数の態様又は全ての態様は、任意選択的に、特にプログラムされたチップ(例えば、特定用途向け集積回路、すなわちASIC、又は消去可能プログラマブル読み取り専用メモリ、すなわちEPROM)又は当技術分野で既知の何らかの他のハードウェアのみの手法を介して実施し得る。
【0085】
[例示的なハードウェア実施形態の説明]
これより
図10を参照して、本明細書に開示される特徴又は機能の少なくとも一部の実施に適する例示的な計算デバイス1200を示すブロック図を示す。計算デバイス1200は、例えば、前段落で列挙した計算マシンのうちの任意の1つであり得るか、又は実際に、メモリに記憶された1つ又は複数のプログラムに従ってソフトウェア又はハードウェアベースの命令を実行可能な任意の他の電子デバイスであり得る。計算デバイス1200は、広域ネットワーク、大都市圏ネットワーク、ローカルエリアネットワーク、無線ネットワーク、インターネット、又は任意の他のネットワーク等の通信ネットワークを介して、有線であれ無線であれ関係なく、そのような通信に既知のプロトコルを使用して、クライアント又はサーバ等の複数の他の計算デバイスと通信するように構成し得る。
【0086】
一実施形態では、計算デバイス1200は、1つ又は複数の中央演算処理装置(CPU)1202、1つ又は複数のインタフェース1210、及び1つ又は複数のバス1206(周辺機器相互接続(PCI)バス等)を含む。適切なソフトウェア又はファームウェアの制御下で動作する場合、CPU1202は、特に構成された計算デバイス又はマシンの機能に関連付けられた特定の機能の実施を担当し得る。例えば、少なくとも1つの実施形態では、計算デバイス1200は、CPU1202と、ローカルメモリ1201及び/又はリモートメモリ1220と、インタフェース1210とを利用するサーバシステムとして機能するように構成又は設計し得る。少なくとも1つの実施形態では、CPU1202は、例えば、オペレーティングシステム及び任意の適切なアプリケーションソフトウェア、ドライバ等を含み得るソフトウェアモジュール又は構成要素の制御下で、異なるタイプの機能及び/又は動作のうちの1つ又は複数を実行させ得る。
【0087】
CPU1202は、例えば、インテル(Intel)、ARM、クゥアルコム(Qualcomm)、及びAMDファミリのマイクロプロセッサのうちの1つからのプロセッサ等の1つ又は複数のプロセッサ1203を含み得る。幾つかの実施形態では、プロセッサ1203は、計算デバイス1200の動作を制御する、特定用途向け集積回路(ASIC)、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、フィールドプログラマブルゲートアレイ(FPGA)等の特に設計されたハードウェアを含み得る。特定の実施形態では、ローカルメモリ1201(例えば、1つ又は複数のレベルのキャッシュメモリを含む不揮発性ランダムアクセスメモリ(RAM)及び/又は読み取り専用メモリ(ROM)等)は、CPU1202の一部をなしてもよい。しかし、メモリをシステム1200に結合し得る多くの異なる方法がある。メモリ1201は、例えば、データ、プログラミング命令等のキャッシュ及び/又は記憶等の様々な目的で使用し得る。
【0088】
本明細書で使用される場合、「プロセッサ」という用語は、単に当技術分野でプロセッサ、モバイルプロセッサ、又はマイクロプロセッサと呼ばれる集積回路に限定されず、マイクロコントローラ、マイクロコンピュータ、プログラマブル論理コントローラ、特定用途向け集積回路、及び任意の他のプログラマブル回路を広く指す。
【0089】
一実施形態では、インタフェース1210はネットワークインタフェースカード(NIC)として提供される。一般に、NICは、コンピュータネットワークを介するデータパケットの送受信を制御し、他のタイプのインタフェース1210は、例えば、計算デバイス1200と併用される他の周辺機器をサポートし得る。提供し得るインタフェースの中でも、イーサネットインタフェース、フレーム中継インタフェース、ケーブルインタフェース、DSLインタフェース、トークンリングインタフェース、グラフィックスインタフェース等である。さらに、例えば、ユニバーサルシリアルバス(USB)、シリアル、イーサネット、ファイアワイヤ(Fire wire)(登録商標)、PCI、パラレル、無線周波(RF),ブルートゥース(Bluetooth)(登録商標)、近距離通信(例えば、近距離磁場を使用する)、802.11(WiFi)、フレーム中継、TCP/IP、ISDN、高速イーサネットインタフェース、ギガビットイーサネットインタフェース、非同期転送モード(ATM)インタフェース、高速シリアルインタフェース(HSSI)インタフェース、POSインタフェース、ファイバデータ分散インタフェース(FDDI)等の様々なタイプのインタフェースを提供し得る。一般に、そのようなインタフェース1210は、適切なメディアと通信するのに適切なポートを含み得る。場合によっては、独立したプロセッサと、幾つかの場合では、揮発性メモリ及び/又は不揮発性メモリ(例えば、RAM)とを含むこともできる。
【0090】
図10に示されるシステムは、本明細書に記載される本発明の1つ又は複数を実施する計算デバイス1200の特定の1つのアーキテクチャを示すが、決して、本明細書で記載される特徴及び技法の少なくとも一部を実施し得る唯一のデバイスアーキテクチャではない。例えば、1つ又は任意の数のプロセッサ1203を有するアーキテクチャを使用し得、そのようなプロセッサ1203は、単一のデバイスに存在してもよく、又は任意の数のデバイスに分散してもよい。一実施形態では、単一のプロセッサ1203が、通信及び計算ルーティングを処理するが、他の実施形態では、別個の専用通信プロセッサを提供し得る。様々な実施形態では、クライアントデバイス(クライアントソフトウェアを実行するタブレットデバイス又はスマートフォン等)と、サーバシステム(より詳細に後述するサーバシステム等)とを含む本発明によるシステムで異なるタイプの特徴又は機能を実施し得る。
【0091】
ネットワークデバイスの構成に関係なく、本発明のシステムは、汎用ネットワーク動作用のデータ、プログラム命令、又は本明細書で記載される実施形態の機能に関連する他の情報(又は上記の任意の組み合わせ)を記憶するように構成される1つ若しくは複数のメモリ又はメモリモジュール(例えば、リモートメモリブロック1220及びローカルメモリ1201等)を利用し得る。プログラム命令は、例えば、オペレーティングシステム及び/又は1つ又は複数のアプリケーションの実行を制御し得るか、又はそれ(ら)を含み得る。メモリ1220又はメモリ1201、1220は、データ構造、構成データ、暗号化データ、過去のシステム動作情報、又は本明細書に記載される任意の他の特定若しくは汎用非プログラム情報を記憶するように構成することもできる。
【0092】
そのような情報及びプログラム命令を利用して、本明細書に記載される1つ又は複数のシステム又は方法を実施し得るため、少なくとも幾つかのネットワークデバイス実施形態は、例えば、本明細書に記載される様々な動作を実行するためのプログラム命令、状態情報を記憶する構成又は設計し得る非一時的機械可読記憶媒体を含み得る。そのような非一時的機械可読記憶媒体の例としては、ハードディスク、フロッピーディスク(登録商標)、及び磁気テープ等の磁気媒体、CD−ROMディスク等の光学媒体、光ディスク等の磁気光学媒体、及び読み取り専用メモリデバイス(ROM)、フラッシュメモリ、固体状態ドライブ、メモリスタメモリ、ランダムアクセスメモリ(RAM)等のプログラム命令を記憶し実行するように特に構成されるハードウェアデバイスが挙げられるが、これらに限定されない。プログラム命令の例としては、コンパイラによって生成し得るようなオブジェクトコード、アセンブラ若しくはリンカによって生成し得るような機械コード、例えば、Java(登録商標)コンパイラによって生成し、Java仮想マシン等を使用して実行し得るようなバイトコード、又はインタプリタ(例えば、パイソン(Python)、パール(Perl)、ルビー(Ruby)、グルービィ(Groovy)、又は任意の他のスクリプト言語で書かれたスクリプト)を使用してコンピュータによって実行し得るより高水準のコードを含むファイルが挙げられる。
【0093】
幾つかの実施形態では、本発明によるシステムは、スタンドアロン計算システムで実施し得る。これより
図11を参照して、スタンドアロン計算システムでの1つ若しくは複数の実施形態又はその構成要素の典型的で例示的なアーキテクチャを示すブロック図を示す。計算デバイス1300はプロセッサ1310を含み、プロセッサ1310は、例えば、クライアントアプリケーション1330等の本発明の実施形態の1つ又は複数の機能又はアプリケーションを実施するソフトウェアを実行し得る。プロセッサ1310は、例えば、あるバージョンのマイクロソフトウィンドウズ(Windows)(登録商標)オペレーティングシステム、アップル(Apple)のMacOS(登録商標)/X又はiOSオペレーティングシステム、リナックス(Linux)(登録商標)オペレーティングシステムの幾つかのバラエティ、グーグル(Google)のアンドロイド(Android)(商標)オペレーティングシステム等のオペレーティングシステム1320の制御下で計算命令を実行し得る。多くの場合、1つ又は複数の共有サービス1325がシステム1300で動作可能であり得、クライアントアプリケーション1330に共通サービスを提供するのに有用であり得る。サービス1325は、例えば、ウィンドウズ(Windows)(登録商標)サービス、リナックス(Linux)環境でのユーザ空間共通サービス、又はオペレーティングシステム1310と併用される任意の他のタイプの共通サービスアーキテクチャであり得る。入力デバイス1370は、例えば、キーボード、タッチスクリーン、マイクロホン(例えば、音声入力用)、マウス、タッチパッド、トラックボール、又はそれらの任意の組み合わせを含め、ユーザ入力の受信に適する任意のタイプのものであり得る。出力デバイス1360は、システム1300からリモートであるか、それともローカルであるかに関係なく、出力を1人又は複数のユーザに提供するのに適する任意のタイプのものであり得、例えば、視覚的出力用の1つ又は複数の画面、スピーカ、プリンタ、又はそれらの任意の組み合わせを含み得る。メモリ1340は、プロセッサ1310によって使用されて、例えば、ソフトウェアを実行する当技術分野で既知の任意の構造及びアーキテクチャを有するランダムアクセスメモリであり得る。記憶デバイス1350は、デジタル形態でデータを記憶する任意の磁気、光学、機械的、メモリスタ、又は電気的記憶デバイスであり得る。記憶デバイス1350の例としては、フラッシュメモリ、磁気ハードディスク、CD−ROM等を含む。
【0094】
幾つかの実施形態では、本発明のシステムは、任意の数のクライアント及び/又はサーバを有するような分散計算ネットワークで実施し得る。これより
図12を参照し分散計算ネットワークで本発明の一実施形態によるシステムの少なくとも一部を実施する例示的なアーキテクチャを示すブロック図を示す。本実施形態によれば、任意の数のクライアント1430を提供し得る。各クライアント1430は、本発明のクライアント側部分を実施するソフトウェアを実行し得、クライアントは、
図11に示されるようなシステム1300を備え得る。加えて、任意の数のサーバ1420を提供して、1つ又は複数のクライアント1430から受信される要求を処理し得る。クライアント1430及びサーバ1420は、1つ又は複数の電子ネットワーク1410を介して互いに通信し得、電子ネットワーク1410は、様々な実施形態では、インターネット、広域ネットワーク、モバイル電話回線網、無線ネットワーク(WiFi(登録商標)、WiMax(登録商標)等)、又はローカルエリアネットワーク(又は実際には、当技術分野で既知の任意のネットワークトポロジー、本発明は、いかなるネットワークトポロジーも任意の他のネットワークトポロジーよりも好むということがない)のうちの任意であり得る。ネットワーク1410は、例えば、有線プロトコル及び/又は無線プロトコルを含む任意の既知のネットワークプロトコルを使用して実施し得る。
【0095】
加えて、幾つかの実施形態では、サーバ1420は、必要な場合に外部サービス1470を呼び出して、追加情報を得るか、又は特定の呼び出しに関する追加データを参照し得る。外部サービス1470との通信は、例えば、1つ又は複数のネットワーク1410を介して行い得る。様々な実施形態では、外部サービス1470は、ハードウェアデバイス自体に関連するか、又はインストールされたウェブ対応サービス又は機能を含み得る。例えば、クライアントアプリケーション1330がスマートフォン又は他の電子デバイスで実施される実施形態では、クライアントアプリケーション1330は、クラウド内のサーバシステム1420又は特定の企業若しくはユーザの構内のうちの1つ若しくは複数に展開される外部サービス1470に記憶される情報を取得し得る。
【0096】
本発明の幾つかの実施形態では、クライアント1430又はサーバ1420(又は両方)は、1つ又は複数のネットワーク1410を介してローカル又はリモートに展開し得る1つ又は複数の専用サーバ又はアプリケーションを利用し得る。例えば、1つ又は複数のデータベース1440を本発明の1つ又は複数の実施形態により使用し得るか、又は参照し得る。データベース1440を多種多様なアーキテクチャで、多種多様なデータアクセス及び処理手段を使用して構成し得ることを当業者は理解されたい。例えば、様々な実施形態では、1つ又は複数のデータベース1440は、構造化クエリ言語(SQL)を使用する関係データベースシステムを含み得、一方、他のデータベース1440は、当技術分野で「NoSQL」(例えば、ハドゥープ(Hadoop)(登録商標)、カサンドラ(Cassandra)(登録商標)、グーグルビッグテーブル(Google BigTable)(登録商標)等)と呼ばれるような代替のデータ記憶技術を含み得る。幾つかの実施形態では、カラム指向データベース、インメモリデータベース、クラスタデータベース、分散データベース、又はフラットファイルデータリポジトリ等の変形データベースアーキテクチャを本発明により使用し得る。本明細書において特定の実施形態に対して特定のデータベース技術又は特定の構成の構成要素が指定されない限り、既知又は将来のデータベース技術の任意の組み合わせを適宜使用し得ることを当業者は理解し得る。さらに、本明細書で使用される「データベース」という用語が、物理的なデータベースマシン、単一のデータベースシステムとして機能するマシンのクラスタ、又は全体データベース管理システム内の論理データベースを指し得ることを理解されたい。「データベース」という用語の所与の使用に対して特定の意味が指定されない限り、この用語のこれらの意味のうちの任意の意味を意味するものと解釈されたく、これらの意味の全てが、当業者による「データベース」という用語の通常の意味として理解される。
【0097】
同様に、本発明の大半の実施形態は、1つ又は複数のセキュリティシステム1460及び構成システム1450を利用し得る。セキュリティ及び構成の管理は、一般的な情報技術(IT)及びウェブ機能であり、それぞれの幾らかの量は一般に任意のIT又はウェブシステムに関連付けられる。特定のセキュリティ1460又は構成システム1450若しくは手法が任意の特定の実施形態の説明によって特に要求されない限り、限定ではなく、現在当技術分野で既知であるか、又は将来知られる任意の構成又はセキュリティサブシステムを、本発明の実施形態と併せて使用し得ることを当業者は理解し得る。
【0098】
様々な実施形態では、本発明のシステム又は方法を実施する機能は、任意の数のクライアント及び/又はサーバ構成要素に分散し得る。例えば、本発明に関連して様々な機能を実行する様々なソフトウェアモジュールを実施し得、そのようなモジュールは、様々に実施して、サーバ及び/又はクライアント構成要素で実行することができる。
【0099】
したがって、本明細書に開示される様々な実施形態は、ソースから、同じ視聴覚空間内のTV及びスピーカ等の複数のメディアデバイスへのメディアの送信を可能にする。実施形態によれば、これは、Wi−Fi等の無線ネットワークを介して行い得る。様々な実施形態は、同じリスニングゾーン又は閲覧ゾーン内にあるスピーカ等の全てのメディアレンダリングデバイスが、互いに精密に同期できるようにし、それにより、聴き手及び/又は閲覧者はいかなる非意図的なメディア経験も認識しない。
【0100】
上述した様々な実施形態の可能な様々な変更を当業者は認識し得る。したがって、本発明は特許請求の範囲及びその均等物によって規定される。