(57)【要約】【課題】一般にメディアストリーミング及びネットワークメディア再生に関する。【解決手段】様々な例示的な実施形態は、受信側メディア装置において、送信側メディア装置から複数の送信側タイムスタンプを含む複数のメッセージを受け取るステップと、複数の送信側タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、再生用の第１のメディアデータと、この第１のメディアデータに関連する第１の提示時刻とを定めるステップと、最小クロックオフセットに基づいて第１の提示時刻に一致する第１の時刻に、第１のメディアデータがレンダリングされるようにするステップとを含む、受信側メディア装置と送信側メディア装置の間でメディア再生を同期させるための方法及びメディア装置に関する。【選択図】図１
2019024214.tif 000002
【特許請求の範囲】
【請求項１】
送信側メディア装置と受信側メディア装置の間でメディア再生を同期させる方法であって、
前記受信側メディア装置において、前記送信側メディア装置から複数の送信側タイムスタンプを含む複数のメッセージを受け取るステップと、
前記複数の送信側タイムスタンプと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定めるステップと、
前記最小クロックオフセットに基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにするステップと、
を含むことを特徴とする方法。
【請求項２】
前記最小クロックオフセット値を識別するステップは、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成するステップと、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定するステップと、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成するステップと、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定するステップと、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定するステップと、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記受信側メディア装置の前記クロックの前記値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正するステップをさらに含み、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値を含む、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記方法は、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成するステップと、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成するステップと、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップは、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記方法は、
前記送信側メディア装置により、前記第１の複数のメッセージを送信するステップと、  前記送信側メディア装置により、前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成するステップと、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記送信側メディア装置により、前記第２の複数のメッセージを送信するステップと、
前記送信側メディア装置により、前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成するステップと、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
メディア再生を送信側メディア装置と同期させるための受信側メディア装置であって、  再生用のメディアデータを記憶するように構成されたメモリと、
前記送信側メディア装置と通信するように構成されたネットワークインターフェイスと、
プロセッサと、
を備え、前記プロセッサは、
前記ネットワークインターフェイスを介して、前記送信側メディア装置から、複数の送信側タイムスタンプを含む複数のメッセージを受け取り、
前記複数の送信側タイムスタンプと、前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成し、
前記複数のクロックオフセット値から最小クロックオフセット値を識別し、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定め、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにする、
ように構成される、
ことを特徴とする受信側メディア装置。
【請求項７】
前記プロセッサは、前記最小クロックオフセット値を識別する際に、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成し、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定し、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成し、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定し、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定する、
ように構成されることを特徴とする請求項６に記載の受信側メディア装置。
【請求項８】
前記プロセッサは、
前記受信側メディア装置の前記クロックの前記値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正するようにさらに構成され、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値である、
ことを特徴とする請求項６に記載の受信側メディア装置。
【請求項９】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記プロセッサは、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成し、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定し、
前記送信側メディア装置に追加メッセージを送信するように指示し、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成し、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定する、
ようにさらに構成され、
前記プロセッサは、前記複数のクロックオフセット値から最小クロックオフセット値を識別する際に、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するように構成される、
ことを特徴とする請求項６に記載の受信側メディア装置。
【請求項１０】
請求項６に記載の前記受信側メディア装置と、
前記送信側メディア装置と、
を備え、前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記送信側メディア装置は、
前記受信側メディア装置と通信するように構成された送信側メディア装置ネットワークインターフェイスと、
送信側メディア装置プロセッサと、
を有し、前記送信側メディア装置プロセッサは、
前記第１の複数のメッセージを送信し、
前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成し、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定し、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第２の複数のメッセージを送信し、
前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成し、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定する、
ように構成される、
ことを特徴とするシステム。
【請求項１１】
受信側メディア装置によって実行される、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるための命令が符号化された非一時的機械可読記憶媒体であって、
前記受信側メディア装置において、前記送信側メディア装置から複数の送信側タイムスタンプを含む複数のメッセージを受け取るための命令と、
前記複数の送信側タイムスタンプと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するための命令と、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令と、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定めるための命令と、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにするための命令と、
を含むことを特徴とする非一時的機械可読記憶媒体。
【請求項１２】
前記最小クロックオフセット値を識別するための前記命令は、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成するための命令と、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定するための命令と、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成するための命令と、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定するための命令と、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定するための命令と、
を含むことを特徴とする請求項１１に記載の非一時的機械可読記憶媒体。
【請求項１３】
前記受信側メディア装置の前記クロックの前記値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正するための命令をさらに含み、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値である、
ことを特徴とする請求項１１に記載の非一時的機械可読記憶媒体。
【請求項１４】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記非一時的機械可読記憶媒体は、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成するための命令と、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成するための命令と、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令は、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するための命令を含む、
ことを特徴とする請求項１１に記載の非一時的機械可読記憶媒体。
【請求項１５】
非一時的機械可読媒体の組であって、
請求項１１に記載の前記非一時的機械可読記憶媒体と、
前記送信側メディア装置によって実行される命令が符号化されたさらなる非一時的機械可読記憶媒体と、
を含み、前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記さらなる非一時的機械可読記憶媒体は、
前記第１の複数のメッセージを送信するための命令と、
前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成するための命令と、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第２の複数のメッセージを送信するための命令と、
前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成するための命令と、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
を含む、
ことを特徴とする非一時的機械可読媒体の組。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１２年９月１４日に出願された、Ｌｅｅ他に付与された「再生同期（Ｐｌａｙｂａｃｋ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ）」という名称の米国仮特許出願第６１／７０１，３２６号の利益を主張するものであり、この特許出願の開示は、その全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【０００２】
本出願は、２０１０年１０月２２日に出願された、Ｌａｕ他に付与された「メディア分散アーキテクチャ」という名称の米国仮特許出願第６１／４０５，８３５号の利益を主張する、２０１１年１０月２１日に出願された、Ｌａｕ他に付与された「メディア分散アーキテクチャ」という名称の米国特許出願公開第１３／２７８，７９９号の一部継続出願であり、これらの特許出願の開示は、その全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【０００３】
本明細書に開示する様々な例示的な実施形態は、一般にメディアストリーミング及びネットワークメディア再生に関する。
【背景技術】
【０００４】
スマートフォン及びタブレットなどの電子装置が普及するにつれ、人々がこのような装置を使用して音楽及びビデオなどのコンテンツを再生する頻度が高くなっている。しばしば、これらのメディアソースは、ユーザが十分に満足するようにメディアを提供しないことがある。例えば、ディスプレイが小さすぎたり、或いはスピーカの音量が品質的又は音量的に不十分であったりすることがある。また、メディアソースからの出力を複数の人々が容易に又は快適に楽しむことができないこともある。さらに、ユーザは、メディアソースを持ち歩いていなければ、家庭内のあらゆる場所でメディアを楽しむことができない。
【発明の概要】
【課題を解決するための手段】
【０００５】
以下、様々な例示的な実施形態の概要を示す。以下の概要では、いくつかの単純化及び省略を行っていることがあるが、これは様々な例示的な実施形態のいくつかの態様を強調して紹介することを意図したものであり、本発明の範囲を限定するものではない。以下のセクションでは、当業者が本発明概念を実施して利用できるようにするのに適した好ましい例示的な実施形態の詳細な説明を行う。
【０００６】
本明細書で説明する様々な実施形態は、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させる方法に関連し、この方法は、受信側メディア装置において、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取るステップと、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、再生用の第１のメディアデータと、この第１のメディアデータに関連する第１の提示時刻とを定めるステップと、最小クロックオフセットに基づいて第１の提示時刻に一致する第１の時刻に、第１のメディアデータがレンダリングされるようにするステップとを含む。
【０００７】
本明細書で説明する様々な実施形態は、メディア再生を送信側メディア装置と同期させるための受信側メディア装置に関連し、この受信側メディア装置は、再生用のメディアデータを記憶するように構成されたメモリと、送信側メディア装置と通信するように構成されたネットワークインターフェイスと、プロセッサとを備え、このプロセッサは、ネットワークインターフェイスを介して、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取り、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成し、複数のクロックオフセット値から最小クロックオフセット値を識別し、再生用の第１のメディアデータと、この第１のメディアデータに関連する第１の提示時刻とを定め、最小クロックオフセット値に基づいて第１の提示時刻に一致する第１の時刻に、第１のメディアデータがレンダリングされるようにするように構成される。
【０００８】
本明細書で説明する様々な実施形態は、受信側メディア装置によって実行される、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるための命令が符号化された非一時的機械可読記憶媒体に関連し、この媒体は、受信側メディア装置において、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取るための命令と、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するための命令と、複数のクロックオフセット値から最小クロックオフセット値を識別するための命令と、再生用の第１のメディアデータと、この第１のメディアデータに関連する第１の提示時刻とを定めるための命令と、最小クロックオフセット値に基づいて第１の提示時刻に一致する第１の時刻に、第１のメディアデータがレンダリングされるようにするための命令とを含む。
【０００９】
様々な実施形態は、受信側メディア装置と送信側メディア装置の間の往復輸送から複数のタイムスタンプを取得するステップと、この複数のタイムスタンプに基づいて下限オフセット値を設定するステップと、最小クロックオフセット値を識別した後に、この最小クロックオフセット値が、送信側装置クロックと受信側装置クロックの間の実際のクロックオフセットの、下限オフセット値よりも良好な推定を表していると判断するステップをさらに含み、最小クロックオフセットに基づいて第１の提示時刻に一致する第１の時刻に、第１のメディアデータがレンダリングされるようにするステップは、最小クロックオフセット値が、送信側装置クロックと受信側装置クロックの間の実際のクロックオフセットの、下限オフセット値よりも良好な推定を表しているという判断に基づいて行われる。
【００１０】
本明細書では、様々な実施形態について説明し、最小クロックオフセット値を識別するステップは、複数のクロックオフセット値のうちの第１のクロックオフセット値を生成するステップと、最小クロックオフセット値を第１のクロックオフセット値に等しく設定するステップと、最小クロックオフセット値を第１のクロックオフセット値に等しく設定した後に、複数のクロックオフセット値のうちの第２のクロックオフセット値を生成するステップと、第２のクロックオフセット値が最小クロックオフセット値よりも小さいと判定するステップと、第２のクロックオフセット値が最小クロックオフセット値よりも小さいという判定に基づいて、最小クロックオフセット値を第２のクロックオフセット値に等しく設定するステップとを含む。
【００１１】
様々な実施形態は、受信側メディア装置のクロックの値から最小オフセット値を減算することにより、クロックの値を修正するステップをさらに含み、最小クロックオフセット値に基づいて第１の提示時刻に一致する第１の時刻は、第１の提示時刻に一致するクロックの値を含む。
【００１２】
様々な実施形態は、受信側メディア装置において、第２のメディアデータ、第２の提示時刻及び送信者タイプスタンプを含むメッセージを送信側メディア装置から受け取るステップと、送信者タイムスタンプに基づいてクロックオフセット値を生成するステップと、このクロックオフセット値が、受信側メディア装置のクロックと送信側メディア装置のクロックの間の実際のオフセットの最小クロックオフセット値よりも正確な表現であると判断するステップと、このクロックオフセット値に基づいて最小クロックオフセット値を調整するステップと、再生用の第３のメディアデータと、この第３のメディアデータに関連する第３の提示時刻とを定めるステップと、最小クロックオフセット値を調整した後に、この最小クロックオフセット値に基づいて第３の提示時刻に一致する第２の時刻に、第３のメディアデータがレンダリングされるようにするステップをさらに含む。
【００１３】
本明細書では、様々な実施形態について説明し、クロックオフセット値が、受信側メディア装置のクロックと送信側メディア装置のクロックの間の実際のオフセットの最小クロックオフセット値よりも正確な表現であると判断するステップは、このクロックオフセット値がゼロよりも小さいと判断するステップを含み、このクロックオフセット値に基づいて最小クロックオフセット値を調整するステップは、クロックの値からオフセット値を減算することによって受信側メディア装置のクロックの値を修正するステップを含む。
【００１４】
様々な実施形態は、複数のタイプスタンプのうちの少なくとも１つの送信者タイムスタンプを、送信側メディア装置の時間領域から受信側メディア装置の時間領域に変換するステップをさらに含み、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて複数のクロックオフセット値を生成するステップは、複数のタイムスタンプのうちの少なくとも１つの送信者タイムスタンプを、送信側メディア装置の時間領域から受信側メディア装置の時間領域に変換した後に、少なくとも１つの送信者タイムスタンプに基づいて少なくとも１つのクロックオフセット値を生成するステップを含む。
【００１５】
様々な実施形態について説明し、複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、方法は、第１の複数のメッセージが到着する間隔についての第１の測定値を生成するステップと、第１の複数のメッセージが到着する間隔についての第１の測定値が、ネットワークが不安定であることを示していると判断するステップと、送信側メディア装置に追加メッセージを送信するように指示するステップと、送信側メディア装置に追加メッセージを送信するように指示した後に、第２の複数のメッセージが到着する間隔についての第２の測定値を生成するステップと、第２の複数のメッセージが到着する間隔についての第２の測定値が、ネットワークが安定していることを示していると判断するステップとをさらに含み、複数のクロックオフセット値から最小クロックオフセット値を識別するステップは、第２の複数のメッセージに関連する複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するステップを含む。
【００１６】
様々な実施形態について説明し、複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、方法は、送信側メディア装置によって第１の複数のメッセージを送信するステップと、送信側メディア装置により、第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成するステップと、ネットワーク性能についての第１の測定値が、ネットワークが不安定であることを示していると判断するステップと、ネットワーク性能についての第１の測定値が、ネットワークが不安定であることを示しているという判断に基づいて、送信側メディア装置によって第２の複数のメッセージを送信するステップと、送信側メディア装置により、第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成するステップと、ネットワーク性能についての第２の測定値が、ネットワークが安定していることを示していると判断するステップとをさらに含む。
【００１７】
様々な例示的な実施形態をより良く理解するために、以下の添付図面を参照する。
【図面の簡単な説明】
【００１８】
【図１】メディア再生のための例示的な環境を示す図である。
【図２】仮想メディアネットワークを形成して動作させるための例示的な方法を示す図である。
【図３】例示的な仮想メディアネットワークを示す図である。
【図４】メディアソースの例示的なコンポーネント図である。
【図５】メディアノードの例示的なコンポーネント図である。
【図６】メディア装置の例示的なハードウェア図である。
【図７】メディア信号をブロードキャストする例示的な方法を示す図である。
【図８】送信側メディア装置が受信側メディア装置に再生を同期させるための例示的な方法を示す図である。
【図９】受信側メディア装置が送信側メディア装置に再生を同期させるための例示的な方法を示す図である。
【図１０】メディアストリーミング中に受信側メディア装置がより良好な再生同期を取得するための例示的な方法を示す図である。
【図１１】下限オフセットを決定する例示的な方法を示す図である。
【発明を実施するための形態】
【００１９】
本明細書に示す説明及び図面では、様々な原理を例示する。当業者であれば、本明細書には明示的に説明又は図示していないが、これらの原理を具体化する、本開示の範囲に含まれる様々な構成を考案することができると理解されるであろう。本明細書で使用する「又は（ｏｒ）」という用語は、（例えば「或いは（ｏｒ  ｅｌｓｅ）」又は「これとは別に（ｉｎ  ｔｈｅ  ａｌｔｅｒｎａｔｉｖｅ）」のように）特に示していない限り、非排他的ｏｒ（すなわち、及び／又は（ａｎｄ／ｏｒ））を意味する。また、本明細書で説明する様々な実施形態は、必ずしも互いに排他的なものではなく、本明細書で説明する原理を組み込んださらなる実施形態を生じるように組み合わせることもできる。
【００２０】
本明細書で説明する様々な実施形態は、メディアコンテンツを分散させるためのアーキテクチャを利用する。有線又は無線メディアトランスポート技術を提供して、様々なメディア装置間の正確なタイミング同期を維持しながらメディアを複数の区域に同時送信できるようにする。ユーザは、スピーカ、ディスプレイ又はその他のレンダリング装置のネットワークを有することができ、どのレンダリング装置がアクティブにメディアを出力しているかを個別に選択することができる。このようなレンダリング装置、及び本明細書で説明するその他の装置は、仮想メディアネットワークに属することができる。
【００２１】
仮想メディアネットワークによってレンダリングされるメディアは、メディアソースから生じることができる。メディアソースは、携帯電話機、タブレット、ステレオ、セットトップボックス、ＰＣ又はその他の装置とすることができる。仮想メディアネットワークにおけるメディアの送信方法は、補助ケーブルなどを介した有線とすることも、或いはＢｌｕｅｔｏｏｔｈ又はＷｉＦｉのような無線とすることもできる。スピーカ及びその他のレンダリング装置自体は、自己形成ネットワーク内で管理することができる。メディアは、メディアソースによってネットワークに導入することができ、エンドポイントネットワーク自体が、オーディオ／ビデオの分散、タイミング及びレンダリングを制御することができる。いくつかの実施形態では、ネットワークに導入される音声が、オーディオビデオ信号のオーディオ部分である。ビデオ信号は、（タブレットコンピュータなどの）メディアソース上で再生することができる。オーディオ信号は、ビデオ信号と同期状態を保つことができる。
【００２２】
様々な実施形態では、ユーザが、メディアソースとして機能させるためのいずれかのメディアアプリケーションを選択することができる。例えば、ユーザは、ＭＰ３アプリケーション、インターネットラジオアプリケーションなどを選択することができる。ユーザは、次に自宅のリビングのスピーカなどの出力装置を選択して、この選択した出力装置にメディアが送信されるようにすることができる。オペレーティングシステムにより、選択した出力装置に音声を送信することができる。ユーザは、第２のアプリケーションを呼び出して、他のスピーカを仮想メディアネットワークに追加するとともに、スピーカの音量を制御することなどができる。いくつかの実施形態では、この第２のアプリケーションがメディアを修正することは決してない。ネットワーク内の各装置は、オーディオ／ビデオの分散、タイミング及びレンダリングに対処することができる。従って、メディアソースがこのような処理を抱え込まなくてもよい。さらに、このような構成では、ユーザが、メディアアプリケーションを修正する必要なく、あらゆる好みのメディアアプリケーションをメディアのソースとして選択することができる。
【００２３】
様々な実施形態では、仮想メディアネットワークを通じて分散されたメディアを同期状態に保つことができる。このような再生同期を達成するために、メディアデータを送信する様々なメディア装置は、関連するメディアをいつレンダリングすべきかを示すための、メディアデータのフレームに関連するタイムスタンプを含むことができる。このような機構を可能にするために、各メディア装置は、これらのメディア装置の内部クロック間の差分を考慮する方法を有することができる。例えば、２つのメディア装置が異なるクロック値で動作を開始することもあれば、或いはクロックがわずかに異なる速度で動作することに起因して、これらのクロック値が動作中にだんだんと離れて行くこともある。
【００２４】
これまでに、いくつかのネットワーククロック同期法が開発されてきたが、このような方法は、ネットワーク遅延が比較的一定であり、従ってレンダリング処理の一部として容易に解決される有線ネットワークでしか信頼性がない。一方、ＷｉＦｉ又はＢｌｕｅｔｏｏｔｈなどの無線ネットワークでは、ネットワーク遅延が短期間で大きく変化することにより、同期パケットが送信された時刻を推定する処理が複雑になることがある。本明細書で説明する様々な方法は、ネットワーククロック同期の処理に対するこのような可変遅延の影響を低減又は排除するクロック同期処理を実装する。例えば、一定期間にわたる複数の潜在的なクロックオフセット値を生成することにより、受信側装置が、この群から最小オフセット値を選択し、これによりネットワーク遅延の可変成分によって受けていた影響が最も少ないオフセット値を利用することができる。ネットワーククロック同期を改善するための様々なさらなる特徴については、以下でさらに詳細に説明する。
【００２５】
本説明を通じて、以下の定義を使用する。
ブロードキャスター：仮想メディアネットワークのためにフォーマットされたメディアストリームを送信できるいずれかの装置、又はこのような装置内のブロードキャスト機構。
レンダラ：仮想メディアネットワークのためにフォーマットされたメディアストリームをレンダリングできるいずれかの装置、又はこのような装置内のレンダリング機構。
メディアノード：レンダラ又はブロードキャスターを含むいずれかの装置。いくつかの実施形態のメディアノードは、ネットワーク時間同期、及びメディアルーティング情報を含むネットワークの状態を維持する役割を担うことができる。
メディアソース：オリジナルデータをシンクに送信するいずれかの装置。例えば、携帯電話機、スマートフォン、タブレット、セットトップボックス、テレビ、ＤＶＤ／Ｂｌｕ−Ｒａｙ／その他のメディアプレーヤ、ステレオシステム、ビデオゲーム機、ラップトップ、デスクトップＰＣ、サーバ、又はメディアデータを送信することができる他のいずれかの装置などの、事実上あらゆるタイプのハードウェアを含むことができる。
シンク：ソースからの発信メディアを受け取るいずれかの装置、又はメディア信号を受け取る装置内の機構。
ゲートウェイ対応メディアノード：シンクとブロードキャスターを組み合わせたいずれかの装置。ゲートウェイは、シンクを介してメディアを受け入れることができ、レンダラに向けて仮想メディアネットワーク内にメディアを再ブロードキャストすることができる。
仮想メディアネットワーク：少なくとも１つのゲートウェイを有する１又はそれ以上のノードの群。仮想メディアネットワークは、ユーザによって確立することができ、ネットワーク内のレンダリング装置間で同期されたメディア信号をレンダリングすることができる。なお、いくつかの実施形態では、たった１つのメディアノードのみが仮想メディアネットワークのアクティブなゲートウェイとして機能する。
メディア装置：例えばメディアノード又はメディアソースなどの、仮想メディアネットワークと連動して動作するいずれかの装置。
【００２６】
ここで、同じ数字が同じ構成要素又はステップを示す図を参照して、様々な例示的な実施形態の広範な態様を開示する。
【００２７】
図１に、メディア再生のための例示的な環境１００を示す。この例には、合計５つのネットワークメディアノード１０４ａ〜ｂ、１０６ａ〜ｃが存在し、様々な例示的な実施形態は、これよりも少ない又はさらなるメディアノード（図示せず）を含むことができる。例示的な環境１００は、２つの仮想メディアネットワークの形で構成されたものとして示している。図示のように、メディアソース１０２ａは、一方の仮想メディアネットワークのメディア信号ソースとして機能し、メディアソース１０２ｂは、もう一方の仮想メディアネットワークのメディアソースとして機能するが、他の構成も可能である。メディア信号は、オーディオ又はビデオとすることができる。様々な実施形態では、メディア信号が、オーディオビデオ信号のオーディオ部分である。ビデオ信号は、メディアソース１０２ａ、ｂ上で再生することができる。なお、例示的な実施形態では、異なる装置によって様々な信号がレンダリングされる時に、オーディオ信号がビデオ信号との同期状態を保つ。また、ビデオ信号は、仮想メディアネットワーク内の装置の１つ、又はメディアソースノード１０２ａ、ｂ以外の何らかの装置に送信することもできる。様々な実施形態では、各仮想メディアネットワークが１つのゲートウェイ装置を含み、他の実施形態では、仮想メディアネットワークが複数のゲートウェイ装置を利用する。上述したように、ゲートウェイ装置は、メディア信号を受け取るためのシンク、及びブロードキャスターを有する。ゲートウェイ装置は、オーディオ及び／又はビデオをレンダリングするためのレンダラを有していても、又は有していなくてもよい。図示の例では、リビングルーム内の装置が、第１の仮想メディアネットワークのゲートウェイとして機能するが、ブロードキャスターを有する異なる装置がゲートウェイとして機能することもできる。
【００２８】
いくつかの実施形態では、このシステムが、正確なタイミング同期を維持しながら複数の区域への同時メディア送信を可能にする。一例として、ユーザは、スピーカのネットワークを構成し、アクティブに再生を行っているスピーカを個別に選択して、これらの再生を同期させることができる。ネットワーク内へのメディアの送信方法は、補助ケーブルなどを介した有線とすることも、又はＢｌｕｅｔｏｏｔｈ、ＷｉＦｉのような無線とすることも、又は別のネットワーク通信プロトコルとすることもできる。一例として、リビングルームのゲートウェイ１０４ａが、ステレオ受信機１０８にメディア信号を提供するための補助アウトラインを有し、この結果、スピーカ１１０が、その補助ラインの１つによってステレオ受信機１０８に接続される。一方で、リビングルームのゲートウェイ１０４ａは、無線送信を介してオフィスのレンダラ１０６ａ及びキッチンのレンダラ１０６ｂにメディア信号を提供することもできる。また、リビングルームのゲートウェイ１０４ａは、独自のレンダラを有していても、又は有していなくてもよい。いくつかの実施形態では、ネットワークに属する様々なメディアノードが、異なるチャネルのメディアストリームを有し、これらをレンダリングする。例えば、メディアソースがビデオ信号をレンダリングし、第１のレンダラが左側スピーカチャネルのステレオミックスオーディオ信号をレンダリングし、第２のレンダラが右側スピーカチャネルのステレオミックスオーディオ信号をレンダリングし、ゲートウェイが、これらのビデオ信号と、両チャネルのステレオミックスオーディオ信号とをレンダリングすることができる。他の様々なチャネル方式、及びメディア装置間におけるこのようなチャネルの分散も明らかであろう。
【００２９】
いくつかの実施形態では、メディアノード１０４ａ〜ｂ、１０６ａ〜ｃ自体が自己形成ネットワークにおいて管理される。メディアノード１０４ａ〜ｂ、１０６ａ〜ｃは、これら自体がオーディオ／ビデオの分散、タイミング及びレンダリングを制御することができる。従って、処理負荷の大部分がメディアソース１０２から取り除かれる。図１の例は、家庭環境に関連するものであるが、実施形態はこのように限定されるものではない。あらゆる環境において仮想メディアネットワークを展開することができる。
【００３０】
図２に、仮想メディアネットワークを形成して動作させるための例示的な方法２００を示す。ステップ２０２において、メディア装置が互いを発見し合い、装置ステータス情報を交換する。ステップ２０２は、例えばメディアノード１０４、１０６の電源がオンになった時に行うことができる。メディアノード１０４、１０６は、互いに異なる時点で電源オンされるので、このステップは継続的に実行することも、反復することも、或いは別様に進行中とすることもできる。いくつかの実施形態では、メディアノード１０４、１０６が、互いの存在、及び例えばソース、シンク、ブロードキャスター又はレンダラとして機能する能力などの能力を学習する「自己発見」プロトコルを実行する。交換される装置ステータス情報は、例えば、装置が仮想メディアネットワーク内で現在アクティブであるかどうか、このような仮想メディアネットワークの識別情報、装置が現在ゲートウェイとして機能しているかどうか、などの情報を含むこともできる。
【００３１】
ステップ２０４において、メディアソース１０２がゲートウェイメディアノード１０４と対になる。ゲートウェイとして機能する１つのメディアノード１０４は、ユーザが具体的に選択することも、或いはユーザの介入を伴わずに自動的に決定することもできる。例えば、スマートフォン１０２ａのユーザがリビングルームのメディアノード１０４ａを一次リスニング装置として選択し、この結果、このメディアノード１０４ａがゲートウェイになることができる。いくつかの実施形態では、ゲートウェイメディアノード１０４が、そのステータスに基づいて、メディアソースノード１０２のための現在アクティブな出力装置として選択される。いくつかの実施形態では、ゲートウェイメディアノード１０４が、ゲートウェイとして機能しながらメディアソースノード１０２のアクティブな出力装置としても機能し、従って少なくともいくつかのチャネルのメディアデータをレンダリングする。いくつかの実施形態では、ゲートウェイメディアノード１０４が、メディアソース１０２に装置情報又は状態情報をレポートする。
【００３２】
ステップ２０６において、仮想メディアネットワークが形成される。ステップ２０６は、ユーザがメディアノード１０４、１０６を選択したことに応答して形成することができる。例えば、ユーザは、ユーザがメディアノード１０４、１０６を選択できるようにするメディアソース１０２上のソフトウェアプログラムにアクセスすることができる。なお、メディアノード１０４、１０６が既に異なる仮想メディアネットワークの一部である場合、このメディアノード１０４、１０６は、メディアソース１０２を介して、利用できないものとして示されることもある。これに加えて、又はこれとは別に、ユーザは、使用中のメディアノード１０４、１０６が現在の仮想メディアネットワークに含まれるように開放されることを要求することもできる。様々な実施形態では、ステップ２０６の結果、ゲートウェイメディアノード１０４が、仮想メディアネットワーク内の他のメディアノード１０４、１０６にメディア信号を転送するように指示される。
【００３３】
ステップ２０８において、メディアソース１０２からゲートウェイメディアノード１０４にメディアを転送することができる。このステップ２０８は、このメディアソースに関連する出力装置上にメディアを提示することをユーザが選択したことに応答して開始することができる。例えば、ユーザは、メディアを再生するスマートフォン１０２ａ上でいずれかのアプリケーションを実行させることができる。ユーザは、次にゲートウェイメディアノード１０４を出力装置として選択し、このゲートウェイメディアノード１０４にメディアが転送されるようにすることができる。なお、このメディア転送は、オペレーティングシステム（ＯＳ）レベルで行うこともできる。この転送には、ユーザが仮想メディアネットワークのメディアソースとしてあらゆるメディアアプリケーションを選択できるという意味合いがある。
【００３４】
ステップ２１０において、ゲートウェイメディアノード１０４は、仮想メディアネットワーク内の他のメディアノード１０４、１０６にメディア信号をブロードキャストすることができる。例えば、リビングルームのゲートウェイ１０４ａは、スマートフォン１０２ａから受け取ったメディア信号を、オフィスのレンダラ１０６ａ、キッチンのレンダラ１０６ｂ、及びステレオ受信機１０８にブロードキャストすることができる。いくつかの実施形態では、各メディアノード１０４、１０６が、独自のユーザ制御可能なレベル（例えば、音量）でメディアを再生する。従って、メディアソース１０２からゲートウェイメディアノード１０４には、いくつかのコマンドを送信することができる。しかしながら、処理の大部分はゲートウェイが行うことができる。従って、メディアソース１０２が重い処理負荷で動きが取れなくなることはない。
【００３５】
図３に、例示的な仮想メディアネットワーク３００を示す。図示のように、メディアノード３２０、３３０は、メディア信号を受け取るためのシンク３２２、３３２と、メディア信号を別のメディアノード３２０、３３０、３４０に提供するためのブロードキャスター３２４、３３４とを有しているので、これらの２つのメディアノードがゲートウェイとして機能することができる。例示を目的として、メディアノード３２０、３３０、３４０から分離されたアクセスポイント３５０が存在する。なお、メディアノード３２０、３３０、３４０のうちの１つがアクセスポイントとして機能することもできる。
【００３６】
メディアノード３２０、３３０のいくつかは、ブロードキャスター３２４、３３４を含む。本明細書では、このようなノードをブロードキャスティングノードと呼ぶことができる。ブロードキャスター３２４、３３４は、ハードウェア又はソフトウェアのいずれかの組み合わせによって実装することができる。様々な実施形態では、ブロードキャスター３２４、３３４が、他のメディアノード３２０、３３０、３４０によって理解されるエアタイムブロードキャストフォーマットでメディアを送信する。なお、このフォーマットは、メディアソース３１０からメディア３６０を送信するために使用するフォーマットとは異なることができる。ブロードキャスター３２４、３３４及びレンダラ３２６、３３６は、ローカル再生を遠隔レンダラ上の再生と同期できるように同じメディアノード３２０、３３０内に共存することができる。ソースの導入は、ソース−シンクのリンクを介して行うことができる。ソースからシンクへの送信とは異なり、同期再生を用いたポイントツーマルチポイントメディア送信にはエアタイムブロードキャストを使用することができる。
【００３７】
上述したように、ゲートウェイ対応メディアノード３２０、３３０は、シンク３２２、３３２とブロードキャスター３２４、３３６の組み合わせを有する。いくつかの実施形態では、ゲートウェイ３２０、３３０が、メディアソース３１０からメディアを受け取り、このメディアを仮想メディアネットワークの他のメディアノード３２０、３３０、３４０と互換性のあるフォーマットで再ブロードキャストする。ゲートウェイ３２０、３３０は、レンダラ３２６、３３６も含む。様々な実施形態では、ゲートウェイメディアノード３２０、３３０がエンドポイントであると考えられる。
【００３８】
ネットワーク上には、複数のゲートウェイ対応メディアノード３２０、３３０が存在することができる。いくつかの実施形態では、ゲートウェイメディアノード３２０、３３０が、メディアソース３１０が使用するのに最適なゲートウェイを決定するための選択方法を利用する。例えば、レンダラ３２６、３３６を有するメディアノード３２０、３３０の一方のみがメディアソース３１０にとってアクティブである場合、このレンダリングノードも、他のソースのネットワーク帯域幅を節約する最適なゲートウェイになり得る。一方で、メディアソース３１０にとって複数のレンダラがアクティブである場合、最も強い又は最も良好なネットワーク接続を有するゲートウェイが最適なゲートウェイになり得る。最適な候補を識別するための選択方式を行い、必要であれば異なるゲートウェイ３２０、３３０に対してストリームハンドオフを行うことができ、この場合、元々のゲートウェイ３２０、３３０は、ソース３１０のシンクになることができる。このストリームハンドオフは、ストリームの構成中又はストリームの最中に行うことができる。アクティブなゲートウェイが機能しなくなった場合、ネットワークは自己回復を行い、新たなゲートウェイを選択してエアタイムブロードキャストストリームを再設定することができる。
【００３９】
メディアノード３２０、３３０、３４０のいくつかは、レンダラ３２６、３３６、３４６を含む。本明細書では、このようなメディアノード３２０、３３０、３４０をレンダリングノードと呼ぶこともできる。レンダラ３２６、３３６、３４６は、ハードウェア又はソフトウェアのいずれかの組み合わせによって実装することができる。メディア信号にオーディオの例を使用した場合、レンダラ３２６、３３６、３４６は、内部的に給電されるスピーカを通じて、又は別の増幅器／スピーカ装置へのアナログ又はデジタル出力を介して、メディアストリームを復号して再生することができる。ビデオの場合、レンダラ３２６、３３６、３４６は、内部的に給電されるディスプレイを通じて、或いは別のディスプレイ又はディスプレイを有する又は駆動する装置へのアナログ又はデジタル出力を介して、メディアストリームを復号して再生することができる。様々な実施形態では、レンダラ３２６、３３６、３４６を含むメディアノード３２０、３３０、３４０が、仮想ウォールクロックの作成、維持及び分散をサポートする。レンダラ３２６、３３６、３４６は、このウォールクロックを用いて、指定されたタイムスタンプ時にエアタイムストリームフォーマットでストリームを正確にレンダリングすることができる。
【００４０】
図３の例では、メディアソース３１０と、ゲートウェイメディアノード３２０内のシンク３２２との間に接続が存在する。メディア３６０は、ゲートウェイメディアノード３２０内のレンダラ３２６によって再生される。ユーザは、この接続を確立するために、メディアソース３１０のための出力装置としてゲートウェイメディアノード３２０を選択しておくことができる。例えば、メディアソース３１０は、オーディオを送信すべきスピーカをユーザが選択できるようにする携帯電話機とすることができる。この選択されたスピーカに、携帯電話機によって再生されているあらゆるオーディオを送信することができる。従って、ゲートウェイメディアノード３２０には、どのアプリケーション（例えば、インターネットラジオ、ＭＰ３、その他）がオーディオを提供しているかに関わらずオーディオを転送することができる。なお、この転送を行うために、オーディオを提供しているアプリケーションに変更を加える必要はないと考えてよい。メディアソース３１０とゲートウェイメディアノード３２０の間の接続は、無線であっても、又は有線であってもよい。様々な実施形態では、この接続が無線Ｂｌｕｅｔｏｏｔｈ接続である。しかしながら、Ｂｌｕｅｔｏｏｔｈ以外の無線プロトコルを使用することもできる。
【００４１】
メディア３６０をメディアノード３３０のレンダラ３３６及びメディアノード３４０のレンダラ３４６に送信するには、メディアソース３１０とゲートウェイメディアノード３２０のシンク３２２との間の接続に加えて、メディアノード３２０のブロードキャスター３２４が使用される。この例では、アクセスポイント３５０が仲介装置として機能する。しかしながら、アクセスポイント３５０は必須条件でなくてもよい。様々な実施形態では、メディアノード３２０がアクセスポイントとして機能する。メディアソース３１０からメディアノード３３０及びメディアノード３４０への接続は、メディアソース３１０とメディアノード３２０の間の接続と同様の形で確立しておくことができる。ユーザは、メディアノード３３０、３４０を仮想メディアネットワーク３００の一部として確立しておくこともできる。メディアソース３１０は、どのメディアノード３２０、３３０、３４０を仮想ネットワークに追加すべきかをユーザが選択できるようにするソフトウェアアプリケーションを有することができる。このアプリケーションは、仮想メディアネットワークのアクティブな部分である他のメディアノード３３０、３４０にメディア信号を転送するようにメディアノード３２０に指示するコマンドをメディアノード３２０に送信することができる。メディアノード３２０は、メディア信号の再フォーマット、転送、メディアノード間の同期再生などの詳細に対処することができる。従って、メディアソース３１０が重い処理を負わされることはない。
【００４２】
仮想メディアネットワーク３００は、１つの考えられる装置の組の１つの考えられる構成にすぎないと理解されるであろう。様々な別のメディアネットワーク３００は、これよりも少ない、又はさらなる装置を含むことができ、異なる形でメディアを分散させることができる。例えば、メディアソース３１０がアクセスポイントに直接メディアを送信することもでき、メディアノード３３０がメディアノード３２０の代わりにゲートウェイとして機能することもでき、メディアノード３４０が仮想ネットワークに参加しなくてもよい。様々な別の構成も明らかになるであろう。
【００４３】
上述したように、メディアソース３１０は、仮想メディアネットワーク３００にメディア３６０を導入することができる。一例として、ＰＣ又はスマートフォンが挙げられる。利用可能なメディア導入方法しては、アナログ送信又はデジタル送信をサポートするケーブル、Ｂｌｕｅｔｏｏｔｈ及びＷｉＦｉを挙げることができる。いくつかの実施形態では、メディアソース３１０が、仮想メディアネットワークとの互換性があるフォーマットでメディアデータを送信するブロードキャスターである。他の実施形態では、メディアソース３１０のブロードキャスト機能が、技術的な限界によって制限される。例えば、多くの電話のセキュリティモデルは、オーディオドライバがサードパーティによって修正されるのを防ぐことができる。また、メディアソース３１０の装置自体が、利用可能な処理帯域幅又はネットワーク帯域幅を有していない場合もある。さらに、いくつかの実施形態では、少なくとも１つのエンドポイントが最大級の忠実性までレンダリングを行えるように、メディアソースの初期リンクのＱｏＳレベルが他のエンドポイントよりも高いＱｏＳを利用する。
【００４４】
なお、メディアソース３１０からシンク３２２への送信には、多くのフォーマット及び接続を使用することができる。メディアソース３１０は、いくつかの非限定的な例として、有線、ＢＴ  Ａ２ＤＰ、又はＷｉ−Ｆｉを用いた特定のプロトコルを介してシンク３２２への送信を行うことができる。ＷｉＦｉプロトコルは、品質とレイテンシの間のトレードオフをもたらすように、又は精度を保証するように設計することができる。例えば、このプロトコルは、データのエラーを検出して再送信を要求することができる。多くの場合、このことはブロードキャストの目的ではないかもしれないが、ブロードキャストの前に確実にメディアが到着することが重要である。本明細書に開示する実施形態は、既存の装置との互換性を維持する。
【００４５】
様々な実施形態では、このネットワークが、標準的なＷｉ−Ｆｉインフラストラクチャに基づく。各メディアノードはアクセスポイント３５０に接続することができ、このアクセスポイント３５０においてＤＨＣＰを介してＩＰアドレスを要求する。いくつかのノード３１０、３２０、３３０は、無線アクセスキーの入力を可能にするＵＩ（ディスプレイ、キーボードエントリ、その他）を有していないこともある。このような場合、ＷＰＳ−ＰＢＣを用いて接続を行うことができる。他の方法としては、ユーザがＧＵＩ対応装置からエンドポイントに直接接続し、ノードによって提供されるウェブページ、又はノードと直接通信するアプリケーションページを介してネットワークパラメータを入力するアドホックモードを挙げることができる。別の方法は、電話機又はその他の装置上で実行されるアプリケーションがＢｌｕｅｔｏｏｔｈを介してメディアノードと通信することである。アプリケーションは、どのアクセスポイントで接続を行うべきか、及び対応するネットワークアクセスコードをユーザに指示することができる。いくつかの実施形態では、このセットアップ段階中に、ユーザによってメディアノード３２０、３３０、３４０に名前が提供される。
【００４６】
アクセスポイント３５０などのインフラストラクチャが存在しない場合、あるノードが自らを仮想アクセスポイントに変化させることができる。他のノードは、アクセスポイント３５０を発見し、これに接続して仮想ネットワークを形成することができる。ＷＰＳ−ＰＢＣ及びアドホック法を用いてセキュアな接続を行うことができる。
【００４７】
図４は、メディアソース４００の例示的なコンポーネント図である。メディアソース４００は、例示的な環境１００のメディアソース１０２ａ、ｂ、又は例示的な仮想メディアネットワーク３００のメディアソース３１０のいずれかに対応することができる。メディアソース４００は、ネットワークインターフェイス４１０を含むことができる。様々な実施形態では、ネットワークインターフェイス４１０が複数の別個のインターフェイスを含む。例えば、ネットワークインターフェイス４１０は、ＷｉＦｉ対応インターフェイス及びＢｌｕｅｔｏｏｔｈ対応インターフェイスを含むことができる。これに加えて、又はこれとは別に、ネットワークインターフェイス４１０は、他のいずれかのプロトコルに対応するインターフェイスを含むこともできる。この例では、ネットワークインターフェイス４１０のＢｌｕｅｔｏｏｔｈ対応インターフェイスを用いてメディア信号（オーディオストリーム又はビデオストリームなど）を送信することができる。ネットワークインターフェイス４１０のＷｉＦｉ対応インターフェイスを用いて、仮想メディアネットワークを制御するためのコマンドを送信することもできる。
【００４８】
ユーザは、仮想ネットワークメディアアプリケーション４２０にアクセスして仮想メディアネットワークを制御することができる。一例として、仮想ネットワークメディアアプリケーション４２０は、ユーザがメディアノード１０４、１０６を選択してその音量を制御すること、再生することなどを可能にするユーザインターフェイスを提示することができる。いくつかの実施形態では、ネットワークのマスター音量、及び各メディアノード１０４、１０６の個別音量が存在する。
【００４９】
メディアソースアプリケーション４３０は、メディアソース４００上でオーディオを再生できるいずれかのアプリケーションとすることができる。例えば、メディアソースアプリケーション４３０は、ＭＰ３プレーヤ、インターネットオーディオ、ウェブブラウザなどとすることができる。様々な実施形態では、ユーザによって選択されたあらゆる出力装置上でメディアが再生される。この出力装置の選択は、オペレーティングシステム（ＯＳ）４４０の制御によって行うことができる。例えば、ＯＳ４４０は、ユーザが出力装置を選択できるようにするポップアップウィンドウを提供することができる。メディアノード１０４、１０６の一方又は両方が選択肢として表示される。メディアノード１０４、１０６の一方を選択することにより、この選択されたメディアノード１０４、１０６に、メディアソース４００からネットワークインターフェイス４１０を介してオーディオアプリケーションに関連するメディア信号が送信される。いくつかの実施形態では、メディアライブラリ４５０を用いてメディアを復号する。メディアライブラリは、復号されたメディアをネットワークメディアドライバ４４５に送信し、このネットワークメディアドライバ４４５が、選択された出力装置にメディア信号を送信する。メディアノード１０４、１０６が出力装置として選択された場合、ネットワークインターフェイス４５０を介してメディア信号が送信される。いくつかの実施形態では、ネットワークメディアドライバ４４５がＢｌｕｅｔｏｏｔｈドライバである。しかしながら、ネットワークメディアドライバ４４５は、あらゆるプロトコルに対応することができる。
【００５０】
なお、上述の実施形態では、仮想メディアアプリケーション４２０がメディア信号に触れることは決してない。これにより、メディアソース４００のための適当な出力装置を選択することによってメディア信号をメディアノード１０４、１０６に送信する際に、あらゆるメディアソース４３０を使用できるという利点をもたらすことができる。従って、仮想ネットワークメディアアプリケーション４２０のいくつかの実施形態は、あらゆるメディアソースアプリケーション４３０と互換性がある。さらに、メディアソースアプリケーション４３０を変更する必要もない。
【００５１】
上述したように、ゲートウェイメディアノード１０４のいくつかの実施形態は、メディア信号が仮想メディアネットワークに適合するようにメディア信号の再フォーマット及び処理を行うことができる。従って、ゲートウェイメディアノード１０４は、メディアソース１０２から処理のほとんどを解放することができる。
【００５２】
メディアソース４００は１つの例を示すものであり、本明細書で説明する方法及び技術を実装した状態でメディアソース４００に多くの修正を行うことができると理解されるであろう。例えば、いくつかの実施形態では、ネットワークメディアドライバ４４５が仮想ネットワークメディアドライバを含み、仮想ネットワークメディアアプリケーション４２０が存在しなくてもよい。このような実施形態では、ユーザが仮想メディアネットワークドライバ４４５をインストールして、メディアノード１０４、１０６へのメディア信号の送信を支援することができる。ユーザは、メディアノード１０４、１０６にメディア信号を送信したいと望む場合、ＯＳ４４０によって提示されたインターフェイス内のメディアノードを単純に選択する。これにより、仮想ネットワークメディアドライバ４４５が選択される。例えば、仮想ネットワークメディアドライバ４４５には、メディアライブラリ４５０からメディア信号を提供することができる。上記の例と同様に、メディアソースアプリケーション４３０は、メディアの再生に使用されるあらゆるアプリケーションとすることができる。
【００５３】
仮想ネットワークメディアアプリケーション４２０は、上述したようなものとすることができる。例えば、仮想ネットワークメディアアプリケーション４２０は、仮想ネットワークに追加するメディアノード１０４、１０６をユーザが選択してネットワークを制御するためのインターフェイスを提供することができる。いくつかの実施形態では、仮想ネットワークメディアアプリケーション４２０の機能を仮想ネットワークメディアドライバ４４５に組み入れることができるので、仮想ネットワークメディアアプリケーション４２０は任意である。
【００５４】
また、コマンドチャネルを用いたコマンドの送信、及びデータチャネルを用いたメディア信号の送信は、ネットワークインターフェイス４１０を介して同じプロトコルを使用して行うことができる。例えば、コマンド及びデータの両方を、ＷｉＦｉプロトコル又はＢｌｕｅｔｏｏｔｈプロトコルに従って送信することができる。或いは、上述したように、異なるプロトコルに従ってコマンド及びデータを送信することもできる。
【００５５】
なお、ＯＳ４４０にドライバ４４５を組み込むことにより、あらゆるメディアソースアプリケーション４３０からのメディア信号をメディアノード１０４、１０６に送信することができる。ユーザは、メディアノード１０４、１０６の一方を選択するだけでよい。これに応答して、仮想ネットワークメディアドライバ４４５が使用される。従って、この仮想メディアネットワークは、メディアソース４００上で実行されているあらゆるメディアソースアプリケーション４３０と共に使用することができる。
【００５６】
いくつかの実施形態では、メディアソースアプリケーション４３０が仮想ネットワークメディアアプリケーション４２０に組み込まれる。いくつかのこのような実施形態では、メディアソースアプリケーション４３０によって再生されるあらゆるメディアがメディアノード１０４、１０６に送信される。
【００５７】
様々な実施形態では、仮想メディアネットワークに属するメディアソース４００及びメディアノード１０４、１０６によって同時にメディアがレンダリングされる。例えば、メディアソース４００は、メディアのビデオチャネルをレンダリングすることができ、メディアノード１０４、１０６は、メディアのオーディオチャネルをレンダリングすることができる。いくつかのこのような実施形態では、様々なメディアチャネルが同期状態に保たれる。例えば、メディアソース４００は、メディアノード１０４、１０６がいつメディアデータをレンダリングすべきかを示すタイプスタンプをメディアデータと共に送信することができる。同様に、ゲートウェイ１０４も、メディアデータを他のメディアノード１０４、１０６に転送する際に、このデータに関連するタイムスタンプを含めることができる。このようなタイムスタンプの交換を可能にするために、様々なメディア装置１０４、１０６、４００は、仮想ウォールクロックなどの共通基準クロック、又は以下で詳細に説明するような様々な時間領域間でタイムスタンプを変換する方法を有することができる。
【００５８】
図５は、メディアノード５００の例示的なコンポーネント図である。メディアノード５００は、例示的な環境１００のメディアノード１０４、１０６の一方又は両方に対応することができる。メディアノード５００は、ネットワークインターフェイス５１０を有することができる。ネットワークインターフェイス５１０は、１又はそれ以上の無線又は有線プロトコルに従って通信を可能にすることができる。様々な実施形態では、ネットワークインターフェイス５１０に１又はそれ以上のアンテナが接続される。いくつかの実施形態では、ネットワークインターフェイス５１０が、Ｗｉ−ＦｉとＢｌｕｅｔｏｏｔｈの両方に対応することができる。これに加えて、又はこれとは別に、ネットワークインターフェイス５１０は、他のいずれかのプロトコルに対応することもできる。いくつかの実施形態では、ネットワークインターフェイス５１０が、１又はそれ以上の有線ネットワークインターフェイスを含む。
【００５９】
レンダラ５２０は、スピーカ５３０、ディスプレイ５４０又はその他の出力装置（図示せず）上に提示できるようにメディア信号を処理する役割を担うことができる。様々な別のメディアノードは、このメディアノードがレンダリングするように設計されたメディアの種類に応じてスピーカ５３０又はディスプレイ５４０を含まないこともあると理解されるであろう。さらに、メディアノード５００は、ゲートウェイ又は他のブロードキャスターとしてのみ機能し、レンダリング装置として機能しないように設計されている場合、レンダラ５２０を含まなくてよい。レンダリングモジュールは、ネットワークインターフェイス５１０からメディア信号を受け取ることができる。
【００６０】
ブロードキャスター５５０は、ネットワークインターフェイス５１０を介して他の適当なメディアノード１０４、１０６にメディア信号を転送することができる。ホームステレオシステムなどの装置にメディア信号を提供するには、補助出力５６０を使用することができる。いくつかの実施形態では、ブロードキャスター５５０が、補助出力５６０にメディア信号を転送する処理を行う。様々な実施形態では、メディアノード５００が補助出力５６０を含まない。さらに、メディアノード５００は、レンダリング装置としてのみ機能し、ゲートウェイ又は他のブロードキャスティング装置として機能しないように設計されている場合、ブロードキャスター５５０を含まなくてよい。
【００６１】
コマンドモジュール５７０は、メディア信号を制御するためのコマンドを処理することができる。これらのコマンドは、音量、再生、停止などを含むことができる。同期モジュール５８０は、ネットワーク内の様々なメディアノードでの再生中に、メディア信号を正確に同期させる役割を果たすことができる。以下で詳細に説明するように、同期モジュール５８０は、初期クロック同期の設定において使用するビーコンメッセージを送信又は受信することができる。また、メディアストリームの開始後、同期モジュール５８０は、メディア再生中におけるクロック同期の改善又は是正において使用するタイムスタンプをメディアパケットから挿入又は抽出することができる。
【００６２】
メディアノード１０４、１０６は、様々な機構を通じて制御することができる。コントローラとしては、スマートフォンアプリケーション、タブレットアプリケーション、ＴＶ又はセットトップボックス上のＵＩ、ノード上のディスプレイ付き又はディスプレイ無しボタン、又はＰＣアプリケーションを挙げることができる。いくつかの実施形態では、これらの装置が、レンダラ５２０が特定のストリーム又はその特定のチャネル、レンダラ５２０の音量出力及び主音量をレンダリングするかどうかを制御する。
【００６３】
いくつかの実施形態では、メディアノード５００がコマンドプロトコルをサポートする。コマンドプロトコルは、オーディオ再生をオン／オフする方法、音声再生を同期区域に集約する方法、再生、先送り、巻き戻し及び探索などのトランスポート制御、ノードへのメタデータ送信、ネットワークに参加する装置へのネットワーク状態の告知、装置がネットワークから離れた時の状態更新、遠隔ユーザインターフェイスを介した制御、並びにエアタイムネットワークを維持するためのその他のメッセージ及び方法を含むことができる。
【００６４】
なお、メディアノード５００の要素は、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組み合わせを用いて実装することができる。メディアノード５００は、１又はそれ以上のプロセッサと、この１又はそれ以上のプロセッサ上で実行された時にメディアノード５００の様々な要素の機能を実行する命令を含むコンピュータ可読媒体とを有することができる。
【００６５】
図６は、メディア装置６００の例示的なハードウェア図である。例示的なメディア装置６００は、例示的な環境１００のメディア装置１０２、１０４、１０６、メディアソース４００、又はメディアノード５００のいずれかに対応することができる。図示のように、ハードウェア装置６００は、１又はそれ以上のシステムバス６６０を介して相互接続された、プロセッサ６１０、メモリ６２０、ユーザインターフェイス６３０、ネットワークインターフェイス６４０及び記憶装置６５０を含むことができる。図６は、ある意味抽象的なものであり、メディア装置６００の実際のコンポーネント構成は図示のものよりも複雑になり得ると理解されるであろう。例えば、プロセッサ６１０とメモリ６２０は、ローカルマイクロプロセッサバスを介して接続することができ、ユーザインターフェイス６３０、ネットワークインターフェイス６４０及び記憶装置６５０は、１又はそれ以上の入力／出力バスを介して接続することができる。
【００６６】
プロセッサ６１０は、メモリ６２０又は記憶装置６５０に記憶された命令を実行できるあらゆるハードウェア装置とすることができる。従って、プロセッサは、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）又はその他の同様の装置を含むことができる。
【００６７】
メモリ６２０は、例えばＬ１キャッシュ、Ｌ２キャッシュ又はＬ３キャッシュ、或いはシステムメモリなどの様々なメモリを含むことができる。メモリ６２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、リードオンリメモリ（ＲＯＭ）又はその他の同様のメモリデバイスを含むことができる。
【００６８】
ユーザインターフェイス６３０は、ユーザとの通信を可能にするための、又はユーザにメディアをレンダリングするための１又はそれ以上の装置を含むことができる。例えば、ユーザインターフェイス６３０は、ディスプレイ、スピーカ、プリンタ、補助出力、マウス、キーボード、英数字キーパッド、トラックボール、スタイラス又はボタンを含むことができる。
【００６９】
ネットワークインターフェイス６４０は、他のハードウェア装置との通信を可能にするための１又はそれ以上の装置を含むことができる。例えば、ネットワークインターフェイス６４０は、イーサネットプロトコル、ＴＣＰ／ＩＰプロトコル、ＷｉＦｉプロトコル又はＢｌｕｅｔｏｏｔｈプロトコルに従って通信するように構成された１又はそれ以上のネットワークインターフェイスカード（ＮＩＣ）を含むことができる。ネットワークインターフェイス６４０のための様々な別の又は追加のハードウェア又は構成が明らかであろう。
【００７０】
記憶装置６５０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス又は同様の記憶媒体などの１又はそれ以上の機械可読記憶媒体を含むことができる。記憶装置は、メディア装置６００との間でデータ及びコードの入力及び出力を行うための、フロッピーディスクなどのポータブル不揮発性記憶媒体を含むこともできる。様々な実施形態では、記憶装置６５０が、プロセッサ６１０によって実行される命令、又はプロセッサ６１０が動作できるようにするデータを記憶する。例えば、記憶装置は、メディア装置６００の基本機能を調整するためのオペレーティングシステム６７０と、別のメディア装置が再生を同期させるのに十分な情報を送信するための、又は別のメディア装置によって送信されたこのような情報を処理して再生を同期させるための同期命令６７２とを記憶することができる。
【００７１】
記憶装置６５０は、メディア装置６００の役割又は能力に応じて様々な追加命令を記憶することができる。例えば、メディア装置６００がメディアソースとして機能できる場合、記憶装置６５０は、メディアを取得するための又は装置６００上でメディアを再生するためのメディアソースアプリケーション命令６７４、メディアを復号するためのメディアライブラリ命令６７６、或いはユーザが仮想メディアネットワークにコマンドを送信できるようにするための仮想ネットワークメディアアプリケーション命令６７８を記憶することができる。例示的なメディアソース４００の説明などの上述の説明に照らせば、これらの命令６７４、６７６、６７８のための他の様々な機能が明らかであろう。これに加えて、又はこれとは別に、メディア装置６００がメディアノードとして機能できる場合、記憶装置は、メディアソース又はその他のコントローラによって発行されたコマンドを処理するためのコマンドモジュール命令６８０、他のメディアノードにメディアを転送するためのブロードキャスター命令６８２、及びメディアを他の装置と同期させてレンダリングするためのレンダラ命令６８４を記憶することができる。例示的なメディアノード５００の説明などの上述の説明に照らせば、これらの命令６８０、６８２、６８４のための他の様々な機能が明らかであろう。
【００７２】
メディア装置６００に含まれるコンポーネントは、本明細書で説明する方法及びシステムと共に使用するのに適したコンピュータシステム内で典型的に見られるものであり、このようなコンピュータコンポーネントの広範なカテゴリを表すものである。従って、メディア装置６００は、携帯電話機、スマートフォン、ＰＤＡ、タブレットコンピュータ、パーソナルコンピュータ、モバイルコンピュータ装置、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、又は他のいずれかのコンピュータ装置とすることができる。このコンピュータは、様々なバス構成、ネットワークプラットフォーム、マルチプロセッサプラットフォームなどを含むこともできる。Ｕｎｉｘ、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓ、Ｍａｃｉｎｔｏｓｈ  ＯＳ、Ｐａｌｍ  ＯＳ、Ａｎｄｒｏｉｄ  ＯＳ、ｉＯＳ及びその他の適当なオペレーティングシステムを含む様々なオペレーティングシステム６６０を使用することができる。
【００７３】
図７に、メディア信号をブロードキャストする例示的な方法７００を示す。方法７００は、方法２００のステップ２１０に対応することができる。ステップ７１０において、ゲートウェイメディアノード１０４及びその他のメディアノード１０２、１０４、１０６は、タイミングパラメータを設定することができる。いくつかの実施形態では、メディアノード１０４、１０６が仮想ウォールクロックに同期する。ブロードキャスターは、この仮想ウォールクロックを用いて、メディアストリームに目標レンダリング時間をタイムスタンプすることができる。レンダラは、この仮想ウォールクロックを用いて、所与の時点で正確にメディアサンプルをレンダリングすることができる。仮想ウォールクロックは、メディアノード１０４、１０６がレンダリング時間の共通理解を確実に有することを支援することができる。いくつかの実施形態では、各レンダリング装置が、メディアストリーム内に指定された時点でサンプルをレンダリングする。ストリームフォーマットには、サンプリング周波数、ワードサイズ、チャネル数、符号化フォーマットなどを含む、ストリームをレンダリングするための他の情報を含めることもできる。
【００７４】
ステップ７１０では、仮想ウォールクロック又は他の何らかの共通タイミング基準を設定することもできる。例えば、ゲートウェイメディアノード１０４は、各ビーコンメッセージがいつ送信されたかを示すタイムスタンプを含むビーコンメッセージの「フラッド」を開始することができる。この結果、受信側メディアノード１０４、１０６は、送信者のタイムスタンプと、各ビーコンメッセージが送信された時刻との差分を求めることによってオフセット値を計算することができる。この計算されたオフセットは、送信側装置のクロックと受信側装置のクロックとの間の実際のオフセットと、ネットワーク伝播時間、送信側装置がタイムスタンプを挿入してから実際にビーコンメッセージを送信するまでに要した時間、及び受信側装置がビーコンメッセージを受信してから受信時刻を特定するまでに要した時間などの、時間に関連する固定遅延と、様々な無線ネットワーク接続に共通するネットワーク変動に関連する可変遅延という３つの独立値の和を反映することができる。固定遅延は実質的に一定であるため、受信側装置は、これらの計算されたオフセットのうち、最も小さな計算されたオフセットが最小の可変ネットワーク遅延を含むオフセットであり、従って実際のクロックオフセットと固定ネットワーク遅延とを加えたものに最も近い利用可能な推定値であると確信することができる。この結果、受信側装置は、この最小オフセットに基づいて自身のクロックを調整することができ、或いは後続の送信側装置のタイムスタンプとローカルクロックとの比較において使用できるように、このオフセットを存続させることができる。レンダリング処理中には、この固定ネットワーク遅延を考慮して正しい同期を確実にすることができる。メディアソース１０２とメディアゲートウェイ１０４の間の同期の確立においても同様の方法を使用することができる。
【００７５】
ステップ７２０において、ゲートウェイメディアノード１０４は、メディアソース１０２からメディア信号を受け取る。ステップ７３０において、ゲートウェイメディアノード１０４は、メディアを復号する。ゲートウェイは、復号の前にメディア信号を逆多重化することができる。
【００７６】
ステップ７４０において、ゲートウェイメディアノード１０４は、他のメディアノード１０４、１０６にブロードキャストするためにメディアを再符号化する。なお、ゲートウェイは、メディアソース１０２が使用した符号化とは異なる符号化を使用することができる。例えば、メディアソース１０２では、メディア信号がＢｌｕｅｔｏｏｔｈと互換性のあるフォーマットで符号化されている場合がある。このメディア信号を、Ｗｉ−Ｆｉと互換性のあるフォーマットで再符号化することができる。
【００７７】
ステップ７５０において、ゲートウェイメディアノード１０４は、メディア信号をカプセル化する。様々な実施形態では、ゲートウェイメディアノード１０４がメディア信号を圧縮する。オーディオメディア信号を圧縮する例として、高品質ネットワークでは、フリーオーディオロスレスコーデック（ＦＬＡＣ）などの軽可逆圧縮技術を用いて、最小の処理オーバーヘッドで帯域幅を半分にカットすることができる。低品質ネットワークでは、ＯＧＧ又はアドバンスオーディオコーディング（ＡＡＣ）などの高圧縮標準を用いて、音質及び処理オーバーヘッドを犠牲にしてネットワーク帯域幅を最小にすることができる。信号は、圧縮アルゴリズム自体を超えて、低サンプリングレートに再サンプリングすることも、モノラルストリームにダウンミックスすることも、又は低サンプル解像度にダウンサンプリングすることもできる。メディアストリームを圧縮形式に符号化又はトランスコードすることにより、処理オーバーヘッドを犠牲にして狭いネットワーク帯域幅を使用することによってエアタイムの信頼性を高めることができる。サポートされるコーデックは、様々なビットレート、サンプリング周波数、チャネル及びサンプルサイズの可逆及び非可逆圧縮技術を含むことができる。
【００７８】
いくつかの実施形態では、全てのメディアノード１０４、１０６が、サポートされている符号化フォーマットを認識している。いくつかの実施形態では、全てのブロードキャスターが、サポートされているフォーマットへの符号化を行うことができる。いくつかの実施形態では、全てのレンダラが、サポートされているフォーマットを復号することができる。各ストリームに使用する符号化フォーマットは、ネットワーク品質からのフィードバック、利用可能な処理リソース、サポートされているレンダリング区域の数、サポートされているアクティブなストリームの数及び最大許容レイテンシによってメディアノード１０４、１０６間で決定することができる。
【００７９】
任意のステップ７６０において、冗長パケットが加えられる。メディア信号が圧縮されている場合、追加パケットを加えることができる。いくつかの実施形態では、パケットのグループが冗長パケットのグループと交互配置される。例えば、２対１の圧縮比を用いて、オリジナルのメディア信号の２秒を１秒に圧縮することができる。一例として、１秒相当のデータパケットを１秒の冗長パケットと交互配置することができる。グループ内のパケット数は、１又はそれ以上とすることができる。
【００８０】
いくつかの実施形態では、ブロードキャスティングが２つの選択肢を有する。選択肢Ａでは、図示のように、ステップ７７０において、ゲートウェイメディアノード１０４が、他のメディアノード１０にメディア信号をブロードキャストすることができる。選択肢Ｂ（図示せず）では、ゲートウェイメディアノード１０４が、無線アクセスポイントにメディア信号を送信することができる。無線アクセスポイントは、このメディア信号を他のメディアノードにブロードキャストすることができる。
【００８１】
ブロードキャストメディアは、ネットワーク帯域幅の最大消費者であると考えられる。典型的な非圧縮オーディオストリームは、１．５ｍｂｐｓを超えることがある。アクセスポイント３１０までの上り送信では、ストリーム当たり１．５ｍｂｐｓを消費し、レンダラ３０６への下りでは、ストリーム当たりさらに１．５ｍｂｐｓを消費し、合計で３ｍｂｐｓを消費する可能性がある。ポイントツーポイントサイマルキャスティングでは、典型的な帯域幅がサイマルキャストストリーム数の３ｍｂｐｓ倍になる可能性がある。これでは、ネットワークが飽和してしまう恐れがある。
【００８２】
様々な実施形態は、複数の送信プロトコルをサポートする。いくつかの実施形態では、ＵＤＰオーバーＩＰが使用される。なお、いくつかの実施形態では、受信側メディアノードがパケット受信の確認応答を行わなくてもよい。例えば、ＵＤＰオーバーＩＰは、パケットの受信を必要としないことがある。いくつかの実施形態では、受信側メディアノードが、受け取られなかったデータパケットを再送信するようにゲートウェイに要求することができる。なお、この要求は、ＵＤＰオーバーＩＰを使用する実施形態において行うことができる。上述したように、いくつかの実施形態では、冗長データパケットが送信される。
【００８３】
メディアノード１０４、１０６は、ネットワーク統計を保持することができる。様々な実施形態では、選択されたブロードキャスター又はゲートウェイが、サービス品質、レイテンシ、プロセッサ利用度及びネットワーク利用度のバランスを取るのに最適な送信方法を決定する役割を担う。例えば、ネットワークが、高帯域幅を利用できて個々のノード１０４、１０６への接続が強い良質なものである場合、保証された送信プロトコルを使用することができる。ネットワークが飽和している場合、又は低品質である場合には、マルチキャスト技術が好ましいと考えられる。さらなる方法では、帯域幅の節約、及び送信エラーの検出、訂正又は隠匿を補助することができる。一般に、マルチキャストプロトコル、サイマルキャストプロトコル及びポイントツーポイントプロトコルは、ストリーム構築の時点で決定される最も適したプロトコルによってサポートされ、ネットワーク品質、利用可能な処理能力及びストリームの数が決定プロセスの要因となる。
【００８４】
メディアストリームを介して、ウォールクロックを基準にメディアクロックを回復させ、メディアフレーム又はサンプルグループに同期させることができる。メディアクロックは、ハードウェアフレームクロック、ワードクロック及びビットクロックの形成を促進することができる。論理的観点から見れば、メディアストリームを介した同期は、メディアノード１０４、１０６における正確なクロックの生成を保証することができる。水晶などに伴うわずかなばらつきがハードウェアに存在すると、クロックドリフト及びその他のクロックタイミングにばらつきが生じる可能性がある。メディアクロックとウォールクロックを常に測定して比較することにより、システムがドリフトを検出できるようになる。いくつかの実施形態では、ソフトウェア専用のメディアクロック回復機構が、メディアレンダリングバッファに対するメディアサンプルの追加又は除去を行って装置全体にわたってメディアクロックを再同期させることに関与する。いくつかの実施形態では、明らかなクリッキング又はスキッピングの効果が生じないようにしてレンダリングバッファの操作が行われる。ドリフト測定に基づいて、ＶＣＸＯ又は電圧制御発振器を使用するハードウェア機構をプロセッサから制御し、このハードウェア発振器をより緊密な同期にプッシュ又はプルすることができる。
【００８５】
上述したように、本明細書で説明する様々なシステムは、共通タイミング基準を設定することによって複数の装置間でメディア再生を同期させることができる。例えば、メディアソースとメディアゲートウェイが協調してこのような共通タイミング基準を設定することもでき、又はメディアゲートウェイとメディアノードが協調してこのような共通タイミング基準を設定することもできる。タイミングパラメータを設定するという文脈では、本方法を２つのメディア装置間で、すなわち送信側メディア装置と受信側メディア装置の間で分割することができる。様々な実施形態では、共通タイミング基準が、送信側メディア装置におけるクロック値を受信側メディア装置において推定したものである。
【００８６】
図８に、送信側メディア装置が受信側メディア装置に再生を同期させるための例示的な方法８００を示す。この例示的な方法８００は、例えば例示的な環境１００のメディアソース１０２又はメディアゲートウェイ１０４などの、送信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法８００は、例示的な方法７００のステップ７１０の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【００８７】
方法８００は、ステップ８０５から開始してステップ８１０に進み、送信側装置が、タイミングパラメータの設定において受信側装置によって使用される「ビーコンメッセージ」のフラッディングを開始すべきであると判断することができる。例えば、送信側装置は、受信側装置の電源が入っていると判断し、受信側装置が仮想メディアネットワークに加わっていると判断し、又は送信側装置が受信側装置にメディアを送信し始めるべきであると判断することができる。ステップ８１５において、送信側装置は、新たなビーコンメッセージを生成する。このビーコンメッセージは、受信側装置によって認識されるいずれかのタイプのパケット又はその他のデータメッセージとすることができる。例えば、ビーコンメッセージは、送信側装置と受信側装置の両方が実装する専用プロトコルに従って形成することができる。受信側装置への途中にあるルータ又はスイッチなどの１又はそれ以上の媒介装置をビーコンメッセージが横切ることができる実施形態などの様々な実施形態では、送信側装置が、このビーコンメッセージが優先度の高いトラフィックを構成している旨のフラグ又はその他の指示を搬送するようにビーコンメッセージを構成する。ネットワーク内でビーコンメッセージに優先順位を付けるための様々な機構は、考えられる様々なネットワーキング技術によって利用される個々の優先順位付け方式に基づいて異なる。このようなビーコンメッセージの優先順位付けは、混合トポロジネットワークを介したルーティング時間を最適化する援助となり、これによって可変ネットワーク遅延因子を低減することができる。
【００８８】
次に、ステップ８２０において、送信側装置は、現在送信側装置のクロックによって示されている時刻をビーコンメッセージにタイムスタンプする。このようなタイムスタンプは、「送信者タイムスタンプ」と呼ぶことができる。次に、ステップ８２５において、送信側装置は、１又はそれ以上の受信側装置にビーコンメッセージを送信する。ステップ８２０とステップ８２５の間に経過した時間は、受信側装置によって計算されるクロックオフセット値の固定遅延成分の一部を形成する。従って、方法８００の様々な実装は、ステップ８２０とステップ８２５の間に行われる動作数を低減又は最小化するように努める。様々な実施形態では、送信側装置が、他の複数のメディア装置に対するタイミングパラメータの設定に関与する。例えば、メディアゲートウェイ１０４は、他の複数のメディアノード１０４、１０６にビーコンメッセージを送信することができる。いくつかのこのような実施形態では、送信側装置が、例えば、ビーコンメッセージのコピーを各メディア装置に個別にアドレス指定することにより、又は複数のメディア装置にメッセージをマルチキャストすることにより、ステップ８２５において複数のメディア装置にビーコンメッセージを送信する。これとは別に、又はこれに加えて、送信側装置は、他の複数のメディア装置に対応するように方法８００を複数回実行する。
【００８９】
ステップ８３０において、送信側装置は、送信側装置が受信側装置へのビーコンメッセージのフラッディングを終了したかどうかを判定する。例えば、送信側装置は、所定数のビーコンメッセージが送信されるまでビーコンメッセージのフラッディングを継続することができる。これとは別に、又はこれに加えて、様々な実施形態では、送信側装置が、ステップ８３０の条件を受信側装置からのフィードバックに基づかせる。例えば、受信側装置は、十分な同期が達成された時にメッセージを送信することができ、或いは所定数のビーコンメッセージが送信されたにも関わらず十分な同期が達成されなかった旨を示すメッセージを送信することができる。フラッディングを中止すべきかどうかを判定するさらに別の方法として、送信側装置は、フラッディング期間中にネットワーク性能をモニタし、ネットワーク性能が何らかの最低限の許容閾値を満たすまでフラッディングを継続する。例えば、送信側装置は、ビーコンメッセージに加えて、受信側装置に往復診断メッセージを送信することができる。或いは、受信側装置を、ネットワーク診断の目的で送信側装置にビーコンメッセージをさらに返送するように構成することもできる。送信側装置は、受信側装置からメッセージを受け取ると、１又はそれ以上のネットワーク性能測定値を生成する。例えば、送信側装置は、前回のフラッディングウィンドウを通じたネットワーク遅延又はジッタの測定値を生成することができ、この測定値が何らかの最低許容ネットワーク性能よりも低い場合には、たとえ所定数のビーコンメッセージを送信し終えていたとしてもビーコンメッセージをフラッディングし続ける。本明細書の教示に照らせば、ビーコンメッセージのフラッディングが十分であるかどうかを判定するためのこれらの及びその他の方法の様々な組み合わせを採用できることが明らかであろう。
【００９０】
ステップ８３０において、送信側装置がビーコンメッセージのフラッディングを継続すべきであると判断した場合、方法８００はステップ８１５に戻って追加のビーコンメッセージを送信する。フラッディングウィンドウが所定数のビーコンメッセージの送信を含む様々な実施形態では、送信側装置が、ネットワーク性能又はその他の因子に基づいて、前回のウィンドウが不十分であったと判断し、ステップ８１５に戻る前にビーコンメッセージカウンタをリセットすることにより、新たなウィンドウで別のビーコンメッセージの組の送信を開始する。一方、ステップ８３０において、送信側装置がフラッディングを終了すべきであると判断した場合、方法８００はステップ８３５に進んで終了する。その後、送信側装置は、現在同期されている受信側装置にメディアを送信する。
【００９１】
なお、様々な実施形態では、送信側装置がビーコンメッセージに基づいて受信側装置からリターンメッセージを受け取らなくてもよく、或いは、送信側装置がリターンメッセージを受け取る実施形態では、送信側装置がタイミングパラメータを設定する目的でリターンメッセージを利用することはない。いくつかの実施形態では、フラッディング期間が十分であるかどうかを判断する目的のみでリターンメッセージが使用される。従って、本明細書で説明する方法は、他のクロック同期法とは異なり、同期計算の大部分が送信側装置ではなく受信側装置によって行われる「一方向」同期法と呼ぶことができる。
【００９２】
図９に、受信側メディア装置が送信側メディア装置に再生を同期させるための例示的な方法９００を示す。例示的な方法９００は、例えば例示的な環境１００のメディアゲートウェイ１０４又はその他のメディアノード１０４、１０６などの受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法９００は、例示的な方法７００のステップ７１０の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【００９３】
方法９００は、ステップ９０５から開始してステップ９１０に進み、受信側装置は、新たなメッセージが受信又は処理された時に実行されている最小オフセット値を維持することに使用される最小オフセット変数「ＭｉｎＯ」を初期化する。次に、ステップ９１５において、受信側装置は、送信側装置からビーコンメッセージを受け取る。次に、ステップ９２０において、受信側装置は、現在受信側装置のクロックによって示されている時刻に基づいてタイムスタンプを生成する。このようなタイムスタンプは、「受信者タイムスタンプ」、「Ｒ（ｘ）」と呼ぶことができる。ステップ９１５とステップ９２０の間に経過した時間は、受信側装置によって計算されるクロックオフセット値の固定遅延成分の一部を形成する。従って、方法９００の様々な実装は、ステップ９２０とステップ９２５の間に行われる動作数を低減又は最小化するように努める。
【００９４】
ステップ９２５において、受信側装置は、ビーコンメッセージから送信者タイムスタンプ「Ｓ（ｘ）」を抽出する。上述したように、送信者タイムスタンプは、例示的な方法８００のステップ８２０のように送信者装置によって送信の直前にビーコンメッセージに挿入される。ステップ９３０において、受信側装置は、送信側装置が仮想メディアネットワークのメディアソースであるかどうかを判断する。例えば、受信側装置が仮想メディアネットワークのゲートウェイとして動作している場合、受信側装置は、送信側装置がメディアソースであると判断する。このような場合、方法９００はステップ９３５に進む。次に、受信側装置は、送信者タイムスタンプを、送信側装置の時間領域から仮想メディアネットワークの時間領域に変換する。このような変換では、２つの装置間で以前にネゴシエートされたオフセットを加算又は減算することができる。このような時間領域間のネゴシエーション及び変換は、当業者に周知のあらゆる方法に従って行うことができる。いくつかの別の実施形態では、ソース装置とメディアノードが同じ時間領域でクロックを維持する。このようないくつかの実施形態には、ステップ９３０、９３５が存在しない。
【００９５】
方法９００は、ステップ９３５において送信者タイムスタンプを仮想メディアネットワークドメインに変換した後、或いはステップ９３０において送信者がメディアソースではないと判断した後にステップ９４０に進み、受信側装置は、送信者タイムスタンプ及び受信者タイムスタンプに基づいて、例えばこれら２つのタイムスタンプの差分などのオフセット値を計算する。この現在のオフセット値「ＣｕｒＯ」は、送信者クロックと受信者クロックの間の実際のオフセットと、ビーコンメッセージが直面する２つのタイムスタンプＳ（ｘ）及びＲ（ｘ）の作成間のあらゆる遅延とを加えたものに相当する。上述したように、この遅延は２つの成分を含む。第１の遅延成分は、例えばメッセージが移動する回路及びデータ経路に関連する一定の遅延などの、ネットワークのハードウェア及びソフトウェアコンポーネントを横切るのに掛かった時間、並びにメッセージの送信／受信と、関連するタイムスタンプの生成との間の、ＯＳが必要とする時間に関連する固定遅延である。このような固定遅延は、レンダリング処理の一部として既に考慮されている。第２の遅延成分は、経時的に変化する遅延に関連する可変ネットワーク遅延である。例えば、ＷｉＦｉなどの共有メディアネットワークは、送信前にメディアがクリアになるのを待機する場合があり、従って異なる時点で異なる遅延が導入されることがある。
【００９６】
この可変遅延は、さらなる遅延の導入しか行わない（遅延を除去することはない）ので、実際のクロックオフセットのより良好な推定は、最も遅延の少なかったメッセージから取得される。従って、方法９００は、フラッディング中に取得される最小オフセット値を、実際のオフセットの最良の利用可能な推定として探索する。ステップ９４５において、受信側装置は、現在のオフセットＣｕｒＯを以前に存在していた最小オフセットと比較し、或いはこのループの現在の反復がステップ９１０において初期化された最小オフセット値ＭｉｎＯに対する最初のものであるかどうかを比較する。ＣｕｒＯの方がＭｉｎＯよりも小さい場合、ＣｕｒＯは、送信者クロックと受信者クロックの間の実際のオフセットのより厳密な推定値を表すと認識され、ステップ９５０において、受信者装置は、ＭｉｎＯの値にＣｕｒＯの値を上書きする。
【００９７】
ステップ９５５において、受信者装置は、送信者装置がビーコンメッセージのフラッディングを行っているかどうかを判断する。例えば、受信者装置は、さらなるビーコンメッセージを待っている時にタイムアウトが生じたかどうかを判断することができ、送信者装置がメディアメッセージを送信し始めたと判断することができ、所定数のビーコンメッセージが受け取られたと判断することができ、或いは送信側装置がフラッディングの終了を示す特別なメッセージを送信したと判断することができる。様々な実施形態では、受信者装置が、フラッディングが所望のオフセット精度を確立するのに十分であったかどうかを判断する。例えば、受信者装置は、ビーコンメッセージが受け取られた間隔を追跡し、この測定された間隔と既知の時間間隔との比較に基づいて、ネットワークが所望の精度のオフセット値を生じるほど十分に安定していたかどうかを判断することができる。ネットワークが十分に安定していなかった場合、受信側装置は、さらなるフラッディングを行うべきである旨を示すメッセージを送信側装置に送信する。様々な修正が明らかであろう。本明細書の教示に照らせば、ビーコンメッセージのフラッディングが十分であるかどうかを判定するためのこれらの及びその他の方法の様々な組み合わせを採用できることが明らかであろう。
【００９８】
受信側装置が、さらなるフラッディングが行われている又は行われる予定であると判断した場合、方法９００は、ステップ９５５からステップ９１５に戻ってさらなるビーコンメッセージを処理する。そうでなければ、方法９００はステップ９６０に進み、受信側装置は、決定された最小オフセットに基づいてローカルクロックをリセットする。例えば、受信側装置は、現在のクロック値からＭｉｎＯを減算して、送信側装置の実際のクロック値に近いと推定される新たな値にローカルクロックを設定することができる。ネットワークの固定遅延が分かっている又は推定されるいくつかの実施形態では、受信側装置が、現在のクロック値からＭｉｎＯを減算し、固定遅延値に再加算して、計算されたオフセット値から実際のクロックオフセット値を分離しようと試みる。いくつかの実施形態では、受信側装置が、ローカルクロックの変更を全く行わず、代わりに送信者装置から受け取ったタイムスタンプとローカルクロックの比較において使用する最小オフセット値ＭｉｎＯを維持することができる。例えば、受信側装置は、あらゆるこのような比較の前にタイムスタンプにＭｉｎＯを加算することができる。他の様々な修正が明らかであろう。方法９００は、ステップ９６５に進んで終了することができる。
【００９９】
様々な別の実施形態では、受信側装置が、以前に設定された下限オフセットを利用して、フラッディング期間中に計算された不当に大きなオフセットがクロックのリセットに使用されないことを確実にするよう支援する。例えば、フラッディング期間が高可変ネットワーク遅延期間に含まれる場合、計算されたオフセットが、送信者クロックと受信者クロックの間の実際のオフセット値よりも大きくなることがある。いくつかのこのような実施形態では、受信者が、最初にステップ９４０〜９５０で計算された最小オフセットを以前に設定された下限オフセットと比較して、最小オフセットが下限オフセットよりも大きいかどうかを判定する。大きい場合、受信者は、この最小オフセットに基づいてクロックを更新することを拒否し、以前に設定された下限を使用し続ける。そうでなければ、この最小オフセット値は下限よりも小さく、従って下限よりも良好な推定値であるので、受信者は、ステップ９６０に詳述するようにクロックを更新する。下限を決定するための例示的な方法については、以下で図１１に関連して詳細に説明する。
【０１００】
様々な実施形態では、受信側装置が、方法９００を定期的に実行して同期を再確立する。いくつかのこのような実施形態では、受信側装置が、クロックをその元々の値にリセットし、記憶されているオフセット値を削除し、又は方法９００の以前の実行に基づいて行われたあらゆる変更を別様に「巻き戻し」して、クロックオフセットの決定の「やり直し」を行う。受信側装置は、クロックオフセットを定期的に再設定することにより、送信側装置のクロックと受信側装置のクロックとの間のクロックドリフトをより良く考慮することができる。
【０１０１】
本明細書の教示に照らせば、方法９００は、各ビーコンメッセージを受け取り時に処理するリアルタイム方法として説明されるのに対し、様々な別の実施形態は、ビーコンメッセージをバッチとして処理する方法を利用することが明らかであろう。例えば、いくつかのこのような実施形態では、受信側装置が、複数のビーコンメッセージを受け取り、受け取った時点でメッセージにタイムスタンプを行い、その後の時点で、ステップ９２５〜９６０に関して説明した方法と同様の方法で、受け取ったメッセージを順に処理して最小オフセットを見つけ出す。
【０１０２】
上述の方法は、２つの装置間の最良のクロックオフセット推定値を生成しようと試みるものであると理解されるであろう。この初期フラッディング期間後にはネットワーク状態が一時的に改善され、後でより良好な推定値を取得できる可能性がある。従って、初期タイミングパラメータ設定後には、クロックオフセットをより良く推定しようと試みる方法を採用することができる。このような方法は、水晶、温度又はその他のパラメータの違いによって送信側装置のクロックと受信側装置のクロックがわずかに異なる速度で動作することがあるクロックドリフトの可能性に対処することもできる。
【０１０３】
図１０に、メディアストリーミング中に受信側メディア装置が良好な再生同期を取得するための例示的な方法１０００を示す。例示的な方法１０００は、例えば、例示的な環境１００のメディアゲートウェイ１０４又はその他のメディアノード１０４、１０６などの、受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法１０００は、例示的な方法７００のステップ７８０の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【０１０４】
方法１０００は、ステップ１００５から開始してステップ１０１０に進み、受信側装置が、送信側装置からメディアデータパケットを受け取る。次に、ステップ１０１５において、受信側装置は、受信側装置のクロックによって現在示されている時刻に基づいてタイムスタンプＲ（ｘ）を生成する。ステップ１０２０において、受信側装置は、メディアデータメッセージから送信者タイムスタンプ「Ｓ（ｘ）」を抽出する。送信者タイムスタンプは、送信者装置によって送信の直前にメディアデータメッセージに挿入しておくことができる。ステップ１０２５において、受信側装置は、送信側装置が仮想メディアネットワークのメディアソースであるかどうかを判断する。例えば、受信側装置が仮想メディアネットワークのゲートウェイとして動作している場合、受信側装置は、送信側装置がメディアソースであると判断することができる。このような場合、方法１０００はステップ１０３０に進む。次に、受信側装置は、送信者タイムスタンプを、送信側装置の時間領域から仮想メディアネットワークの時間領域に変換する。このような変換では、２つの装置間で以前にネゴシエートされたオフセットを加算又は減算することができる。このような時間領域間のネゴシエーション及び変換は、当業者に周知のあらゆる方法に従って行うことができる。いくつかの別の実施形態では、ソース装置とメディアノードが同じ時間領域でクロックを維持する。このようないくつかの実施形態では、ステップ１０２０、１０３０が存在する。
【０１０５】
方法１０００は、ステップ１０３０において送信者タイムスタンプを仮想メディアネットワークドメインに変換した後、或いはステップ１０２５において送信者がメディアソースではないと判断した後にステップ１０３５に進み、受信側装置は、送信者タイムスタンプ及び受信者タイムスタンプに基づいて、例えばこれら２つのタイムスタンプの差分などのオフセット値を計算する。送信者タイムスタンプが変換されている場合、この変換されたタイムスタンプがオフセットの計算において使用される。このオフセット値「Ｏ」は、送信者クロックと受信者クロックの間の実際のオフセットと、メディアデータメッセージが直面する２つのタイムスタンプＳ（ｘ）及びＲ（ｘ）の作成間の、固定遅延及び可変遅延の両方を含むあらゆる遅延とを加えたものに相当する。ステップ１０４０において、受信側装置は、このオフセット値が以前に利用したオフセット値よりも良好なクロック間のオフセット推定を表しているかどうかを判断する。例えば、以前に決定された最小オフセットを用いて受信側装置のクロックをリセットする様々な実施形態では、受信側装置が、現在のオフセットＯがゼロ未満であるかどうかを判定する。この比較における肯定的な結果は、以前に使用した最小オフセットに何らかの可変ネットワーク遅延が組み込まれており、この可変ネットワーク遅延をローカルクロックから減算すると理想的な設定点を「超過」してしまい、これによりローカルクロックが送信者のクロックに遅れて設定されることを示す。現在のオフセットＯは、以前に使用した最小値よりも少ない（又はゼロの）可変遅延を組み込むことにより、負の数字であることによってこの超過を明らかにすることができる。このような場合、現在のオフセットＯは、実際のクロックオフセットの新たな最良の推定値を示すと判断され、ステップ１０４５において、このオフセットＯを用いて再びローカルクロックをリセットすることにより、前回の超過を少なくとも部分的に是正することができる。他の実施形態のための様々な修正が明らかであろう。例えば、以前に決定された最小オフセットがローカルクロックの修正に使用されずにタイムスタンプの比較において使用され続ける実施形態では、ステップ１０４０において、現在のオフセットＯがそれまでの最小オフセットＭｉｎＯよりも小さいかどうかが判定され、小さい場合には、ステップ１０４５において、受信側装置がＭｉｎＯを０に等しく設定する。様々な他の修正が明らかであろう。
【０１０６】
様々な別の実施形態では、受信側装置が、以前に設定された下限オフセットを利用して、フラッディング期間中に計算された不当に大きなオフセットがクロックのリセットに使用されないことを確実にするよう支援する。いくつかのこのような実施形態では、受信者が、最初にステップ１０３５で計算されたオフセットを以前に設定された下限オフセットと比較して、このオフセットが下限オフセットよりも良好な実際のオフセットの推定を表すかどうかを判定する。表す場合、受信者は、この最小オフセットに基づいてクロックを更新することを拒否し、以前に設定された下限を使用し続ける。そうでなければ、このオフセット値は下限よりも良好な推定であるので、受信者は、ステップ１０４５に詳述するようにクロックを更新する。下限を決定するための例示的な方法については、以下で図１１に関連して詳細に説明する。
【０１０７】
ステップ１０５０において、受信側装置は、受け取ったメディアパケットの処理に進み、例えば適当な時点でメディア出力をレンダリングする。例えば、受信側装置は、提示時刻を抽出して、メディアデータパケットから送信者タイムスタンプと受信者タイムスタンプを分離することができる。このような提示時刻は、メッセージによって搬送されるメディアデータをレンダリングすべき時刻を示す。受信側装置は、提示時刻を抽出した後、この提示時刻と一致する時刻にメディアデータをレンダリングする。例えば、受信側装置は、ローカル再生装置によって再生されるようにメディアデータをバッファに記憶することができ、或いはメッセージが再生されるように別のメディアノードに転送することもできる。提示時刻と「一致」する現在時刻は、現在時刻と提示タイムスタンプが等しいことを含むことができるが、他の形の一致を含むこともできる。例えば、様々な実施形態では、現在時刻から存続中の最小オフセット値を差し引いたものが提示タイムスタンプに等しい時に現在時刻が一致する。これに加えて、又はこれとは別に、一致のための比較は、固定遅延値を加算し、減算し、又は別様に考慮する。ローカルクロック、提示タイムスタンプ、及びその他の潜在的に利用可能な値に基づいて再生に適した時刻を決定するための他の様々な方法が明らかであろう。さらに、現在時刻が最小オフセットに基づいて提示時刻に一致するという概念は、以前に最小オフセット値によって修正されたローカルクロックを利用する比較が、その他の点では最小オフセット値を明確に考慮しないことを含むと理解されるであろう。様々な実施形態は、適当な時点で確実にデータが出力されるように、出力の直前にこのような比較を行う。他の実施形態は、このような比較を使用して、メディアが提示時刻に再生される可能性が高い再生バッファ内の位置にメディアデータを挿入する。このような挿入は、再生タイミングを調整するために、メディアデータの挿入前に「ダミー」データを挿入することを含むことができる。バッファ内のデータの再生タイミングを制御する様々な追加方法が明らかであろう。
【０１０８】
図１１に、下限オフセットを決定する例示的な方法１１００を示す。上述したように、様々な別の実施形態は、より良好なクロックオフセット推定を求めるために、ビーコンフラッディング及びメディアパケットの分析前に下限オフセットをさらに設定する。例示的な方法１１００は、例えば、例示的な環境１００のメディアゲートウェイ１０４又はその他のメディアノード１０４、１０６などの、受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法１１００は、例示的な方法７００のステップ７１０の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【０１０９】
方法１１００は、ステップ１１０５から開始してステップ１１１０に進み、受信側装置は、送信側装置からのハンドシェークメッセージを受け取ることによって下限を計算するように、受信側装置と送信側装置間の往復輸送からタイムスタンプを収集し始める。様々な実施形態では、このハンドシェークメッセージが、ビーコンメッセージ又はメディアデータパケットが送信されるチャネルとは異なるチャネルを介して送信される。例えば、Ｂｌｕｅｔｏｏｔｈチャネルを介してハンドシェークメッセージを送信する一方で、ＷｉＦｉチャネルを介してビーコンメッセージ及びメディアデータパケットメッセージを送信することができる。送信者は、使用するハンドシェークプロトコルの一部として、送信者がハンドシェークメッセージを送信した送信者クロックに従う時刻を示すタイムスタンプｔ１をハンドシェークメッセージに含める。次に、ステップ１１１５において、受信者は、ステップ１１１０のハンドシェークメッセージの受信に近い時刻に、受信者クロックに従う受信タイムスタンプｔ２を記録する。
【０１１０】
次に、受信者装置は、受信者が送信者にハンドシェークメッセージを再送する受信者クロックに従う時刻を示すタイムスタンプｔ３をステップ１１２０において生成することにより、送信者装置にハンドシェークメッセージを返送する準備を行う。いくつかの実施形態では、受信者が、送信者から受け取ったハンドシェークメッセージ又は新たに生成されたハンドシェークメッセージにタイムスタンプｔ３を挿入することができる。次に、ステップ１１２５において、受信者は、タイムスタンプｔ４の生成に近い時刻に、送信者にハンドシェークメッセージを送信する。次に、ステップ１１３０において、受信者は、再び送信者からのハンドシェークメッセージを受け取ることができる。この時点で、ハンドシェークメッセージは、送信者がハンドシェークメッセージを処理するステップの一部として、送信者がハンドシェークメッセージを受け取った時刻を示す送信者クロックに従うタイムスタンプｔ４を含む。
【０１１１】
後述するように、これらの４つのタイムスタンプｔ１〜ｔ４を用いて下限オフセットを計算することができる。しかしながら、いくつかの実施形態では、最初に受信者装置がタイムスタンプｔ１〜ｔ４を用いて、ハンドシェークメッセージが体験するネットワーク輸送時間を計算し、ハンドシェークプロセス中のネットワーク遅延が、正確な又は別様に許容できる下限をもたらすほど十分に低かったどうかを判断する。従って、受信者装置は、ステップ１１３５において、輸送時間＝（（ｔ２−ｔ１）＋（ｔ４−ｔ３））／２という式を用いて輸送時間を計算する。次に、受信者は、例えば輸送時間が所定の閾値よりも短いかどうかを判断することにより、計算された輸送時間が許容できるものであるかどうかを判断する。計算された輸送時間が許容できない場合、受信者装置は、ステップ１１４５において、再びハンドシェークプロセスを試行するように送信者に指示し、ステップ１１１０に戻ってこのプロセスを再試行する。一方、ネットワーク輸送時間が許容できるものである場合、受信者は、ステップ１１５０において、下限オフセット＝（（ｔ２−ｔ１）−（ｔ４−ｔ３））／２という式を用いて、タイムスタンプを使用して下限オフセットを計算する。その後、方法はステップ１１５５に進んで終了する。
【０１１２】
いくつかの実施形態では、送信者クロックが受信者クロックよりも遅れている場合があり、従って受信者装置によって生成されるタイムスタンプの方が送信者装置によって生成されるタイムスタンプよりも小さくなることが明らかであろう。上記の下限クロックオフセットの式は、計算された値の符号に基づいてクロック調整の方向を示すことができると理解されるであろう。いくつかの実施形態では、受信者装置が、相対的な調整方向ではなく大きさのみが比較されるように、様々な計算されたオフセットを比較してどのオフセットがより良好な推定であるかを判断する際に絶対値を利用することができる。
【０１１３】
様々な実施形態では、受信側装置が、方法１１００を定期的に実行して同期を再確立する。いくつかのこのような実施形態では、受信側装置が、クロックをその元々の値にリセットし、記憶されている下限オフセット値を削除し、又は方法１１００の以前の実行に基づいて行われたあらゆる変更を別様に「巻き戻し」して、クロックオフセットの決定の「やり直し」を行う。受信側装置は、下限オフセットを定期的に再設定することにより、送信側装置のクロックと受信側装置のクロックとの間のクロックドリフトをより良く考慮することができる。
【０１１４】
以上に照らして、様々な実施形態は、可変遅延を示すネットワークに属するメディア装置間におけるメディア再生の同期を可能にする。例えば、受信側装置が複数のメッセージから最小クロックオフセットを識別する一方向同期法を実装することにより、クロック同期に対する可変遅延の影響を低減することができる。さらに、受信側装置は、メディアストリームが開始された後に、より良好な同期パラメータを継続的に探索することにより、クロックドリフトを考慮しながら同期を改善することができる。上記に照らして様々な追加の利点が明らかであろう。
【０１１５】
上述の説明から、本発明の様々な例示的な実施形態をハードウェアで実装できることが明らかであろう。また、様々な例示的な実施形態は、少なくとも１つのプロセッサによって読み取られ、本明細書で詳述した動作を行うように実行することができる、機械可読記憶媒体に記憶された命令として実装することもできる。機械可読記憶媒体は、パーソナルコンピュータ又はラップトップコンピュータ、サーバ又はその他のコンピュータ装置などの機械によって読み取ることができる形で情報を記憶するためのいずれかの機構を含むことができる。従って、有形の非一時的機械可読記憶媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス及び同様の記憶媒体を含むことができる。さらに、本明細書で使用した「プロセッサ」という用語は、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、又は本明細書で説明した機能を実行できる他のあらゆる装置を含むと理解されるであろう。
【０１１６】
当業者であれば、本明細書におけるあらゆるブロック図は、本発明の原理を具体化する例示的な回路の概念図を表すものであると理解するであろう。同様に、あらゆるフローチャート、フロー図、状態遷移図及び疑似コードなどは、実質的に機械可読媒体内で表現することができ、従ってコンピュータ又はプロセッサを明示的に図示しているかどうかに関わらず、このようなコンピュータ又はプロセッサによって実行できる様々な処理を表すものであると理解されるであろう。
【０１１７】
本発明のいくつかの例示的な態様を具体的に参照しながら様々な例示的な実施形態を詳細に説明したが、本発明では他の実施形態も可能であり、その詳細は様々な明白な点で修正することができると理解されたい。当業者には容易に明らかなように、本発明の思想及び範囲から逸脱することなく変形及び修正を行うことができる。従って、上述の開示、説明及び図は例示を目的とするものにすぎず、特許請求の範囲のみによって規定される本発明を決して限定するものではない。
【符号の説明】
【０１１８】
１００  例示的な環境
１０２ａ  メディアソース
１０２ｂ  メディアソース
１０４ａ  リビングルームのゲートウェイ
１０４ｂ  寝室のゲートウェイ
１０６ａ  オフィスのレンダラ
１０６ｂ  キッチンのレンダラ
１０６ｃ  ゲスト用寝室のレンダラ
１０８  ステレオ受信機
１１０  スピーカ
【図１】
2019024214.tif 000003
【図２】
2019024214.tif 000004
【図３】
2019024214.tif 000005
【図４】
2019024214.tif 000006
【図５】
2019024214.tif 000007
【図６】
2019024214.tif 000008
【図７】
2019024214.tif 000009
【図８】
2019024214.tif 000010
【図９】
2019024214.tif 000011
【図１０】
2019024214.tif 000012
【図１１】
2019024214.tif 000013
【手続補正書】
【提出日】平成30年10月17日(2018.10.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信側メディア装置と受信側メディア装置の間でメディア再生を同期させる方法であって、
前記受信側メディア装置において、前記送信側メディア装置から複数の送信側タイムスタンプを含む複数のメッセージを受け取るステップと、
前記複数の送信側タイムスタンプと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、
前記受信側メディア装置のクロックの値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正するステップと、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定めるステップと、
前記最小クロックオフセットに基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにするステップと、
を含み、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値を含むことを特徴とする方法。
【請求項２】
前記最小クロックオフセット値を識別するステップは、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成するステップと、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定するステップと、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成するステップと、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定するステップと、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定するステップと、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記方法は、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成するステップと、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成するステップと、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップは、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記方法は、
前記送信側メディア装置により、前記第１の複数のメッセージを送信するステップと、  前記送信側メディア装置により、前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成するステップと、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記送信側メディア装置により、前記第２の複数のメッセージを送信するステップと、
前記送信側メディア装置により、前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成するステップと、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
メディア再生を送信側メディア装置と同期させるための受信側メディア装置であって、  再生用のメディアデータを記憶するように構成されたメモリと、
前記送信側メディア装置と通信するように構成されたネットワークインターフェイスと、
プロセッサと、
を備え、前記プロセッサは、
前記ネットワークインターフェイスを介して、前記送信側メディア装置から、複数の送信側タイムスタンプを含む複数のメッセージを受け取り、
前記複数の送信側タイムスタンプと、前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成し、
前記複数のクロックオフセット値から最小クロックオフセット値を識別し、
前記受信側メディア装置の前記クロックの前記値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正し、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定め、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにする、
ように構成され、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値である、
ことを特徴とする受信側メディア装置。
【請求項６】
前記プロセッサは、前記最小クロックオフセット値を識別する際に、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成し、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定し、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成し、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定し、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定する、
ように構成されることを特徴とする請求項５に記載の受信側メディア装置。
【請求項７】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記プロセッサは、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成し、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定し、
前記送信側メディア装置に追加メッセージを送信するように指示し、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成し、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定する、
ようにさらに構成され、
前記プロセッサは、前記複数のクロックオフセット値から最小クロックオフセット値を識別する際に、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するように構成される、
ことを特徴とする請求項５に記載の受信側メディア装置。
【請求項８】
送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるシステムであって、
請求項５に記載の前記受信側メディア装置と、
前記送信側メディア装置と、
を備え、前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記送信側メディア装置は、
前記受信側メディア装置と通信するように構成された送信側メディア装置ネットワークインターフェイスと、
送信側メディア装置プロセッサと、
を有し、前記送信側メディア装置プロセッサは、
前記第１の複数のメッセージを送信し、
前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成し、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定し、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第２の複数のメッセージを送信し、
前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成し、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定する、
ように構成される、
ことを特徴とするシステム。
【請求項９】
受信側メディア装置によって実行される、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるための命令が符号化された非一時的機械可読記憶媒体であって、
前記受信側メディア装置において、前記送信側メディア装置から複数の送信側タイムスタンプを含む複数のメッセージを受け取るための命令と、
前記複数の送信側タイムスタンプと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するための命令と、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令と、
前記受信側メディア装置の前記クロックの前記値から前記最小オフセット値を減算することにより、前記クロックの前記値を修正するための命令と、
再生用の第１のメディアデータと、該第１のメディアデータに関連する第１の提示時刻とを定めるための命令と、
前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する第１の時刻に、前記第１のメディアデータがレンダリングされるようにするための命令と、
を含み、前記最小クロックオフセット値に基づいて前記第１の提示時刻に一致する前記第１の時刻は、前記第１の提示時刻に一致する前記クロックの前記値を含むことを特徴とする非一時的機械可読記憶媒体。
【請求項１０】
前記最小クロックオフセット値を識別するための前記命令は、
前記複数のクロックオフセット値のうちの第１のクロックオフセット値を生成するための命令と、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定するための命令と、
前記最小クロックオフセット値を前記第１のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第２のクロックオフセット値を生成するための命令と、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいと判定するための命令と、
前記第２のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第２のクロックオフセット値に等しく設定するための命令と、
を含むことを特徴とする請求項９に記載の非一時的機械可読記憶媒体。
【請求項１１】
前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記非一時的機械可読記憶媒体は、
前記第１の複数のメッセージが到着する間隔についての第１の測定値を生成するための命令と、
前記第１の複数のメッセージが到着する間隔についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第２の複数のメッセージが到着する間隔についての第２の測定値を生成するための命令と、
前記第２の複数のメッセージが到着する間隔についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令は、前記第２の複数のメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも１つのクロックオフセット値を利用するための命令を含む、
ことを特徴とする請求項９に記載の非一時的機械可読記憶媒体。
【請求項１２】
非一時的機械可読媒体の組であって、
請求項９に記載の前記非一時的機械可読記憶媒体と、
前記送信側メディア装置によって実行される命令が符号化されたさらなる非一時的機械可読記憶媒体と、
を含み、前記複数のメッセージは、第１の複数のメッセージ及び第２の複数のメッセージを含み、前記さらなる非一時的機械可読記憶媒体は、
前記第１の複数のメッセージを送信するための命令と、
前記第１の複数のメッセージの送信に関連するネットワーク性能についての第１の測定値を生成するための命令と、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記ネットワーク性能についての前記第１の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第２の複数のメッセージを送信するための命令と、
前記第２の複数のメッセージの送信に関連するネットワーク性能についての第２の測定値を生成するための命令と、
前記ネットワーク性能についての前記第２の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
を含む、
ことを特徴とする非一時的機械可読媒体の組。