IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ディーティーエス・インコーポレイテッドの特許一覧

<>
  • 特許-再生同期 図1
  • 特許-再生同期 図2
  • 特許-再生同期 図3
  • 特許-再生同期 図4
  • 特許-再生同期 図5
  • 特許-再生同期 図6
  • 特許-再生同期 図7
  • 特許-再生同期 図8
  • 特許-再生同期 図9
  • 特許-再生同期 図10
  • 特許-再生同期 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】再生同期
(51)【国際特許分類】
   H04N 21/43 20110101AFI20231128BHJP
   H04L 7/00 20060101ALI20231128BHJP
【FI】
H04N21/43
H04L7/00 990
【請求項の数】 12
(21)【出願番号】P 2018173888
(22)【出願日】2018-09-18
(62)【分割の表示】P 2015532053の分割
【原出願日】2013-09-12
(65)【公開番号】P2019024214
(43)【公開日】2019-02-14
【審査請求日】2018-10-17
【審判番号】
【審判請求日】2020-08-20
(31)【優先権主張番号】14/025,658
(32)【優先日】2013-09-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】61/701,326
(32)【優先日】2012-09-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503206684
【氏名又は名称】ディーティーエス・インコーポレイテッド
【氏名又は名称原語表記】DTS,Inc.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100158551
【弁理士】
【氏名又は名称】山崎 貴明
(72)【発明者】
【氏名】リー チュンホ
(72)【発明者】
【氏名】ラウ ダニー
【合議体】
【審判長】高橋 宣博
【審判官】木方 庸輔
【審判官】川崎 優
(56)【参考文献】
【文献】米国特許出願公開第2011/0276648(US,A1)
【文献】特開2009-206777(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 - 21/858,
H04L 7/00
(57)【特許請求の範囲】
【請求項1】
送信側メディア装置と受信側メディア装置の間でメディア再生を同期させる方法であって、
前記受信側メディア装置において、前記送信側メディア装置から送信側タイムスタンプをそれぞれが含む複数のビーコンメッセージを受け取るステップと、
前記複数のビーコンメッセージに含まれる前記送信側タイムスタンプのそれぞれと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、
前記受信側メディア装置のクロックの値から前記最小クロックオフセット値を減算することにより、前記受信側メディア装置の前記クロックの前記値を修正するステップと、
再生用の第1のメディアデータと、該第1のメディアデータに関連する第1の提示時刻とを定めるステップと、
前記複数のビーコンメッセージを受け取った後に、前記第1の提示時刻に一致する第1の時刻に、前記第1のメディアデータがレンダリングされるようにするステップと、
を含み、
前記最小クロックオフセット値は、前記複数のビーコンメッセージのうち最も遅延の少なかった1つであり、前記第1の提示時刻に一致する前記第1の時刻は、前記クロックの値に基づくことを特徴とする方法。
【請求項2】
前記最小クロックオフセット値を識別するステップは、
前記複数のクロックオフセット値のうちの第1のクロックオフセット値を生成するステップと、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定するステップと、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第2のクロックオフセット値を生成するステップと、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいか否かを判定するステップと、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第2のクロックオフセット値に等しく設定するステップと、
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、前記方法は、
前記第1の複数のビーコンメッセージが到着する間隔についての第1の測定値を生成するステップと、
前記第1の複数のビーコンメッセージが到着する間隔についての前記第1の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示するステップと、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第2の複数のビーコンメッセージが到着する間隔についての第2の測定値を生成するステップと、
前記第2の複数のビーコンメッセージが到着する間隔についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するステップは、前記第2の複数のビーコンメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも1つのクロックオフセット値を利用するステップを含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、前記方法は、
前記送信側メディア装置により、前記第1の複数のビーコンメッセージを送信するステップと、
前記信側メディア装置により、前記第1の複数のビーコンメッセージの送信に関連するネットワーク性能についての第1の測定値を生成するステップと、
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示していると判定するステップと、
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記送信側メディア装置により、前記第2の複数のビーコンメッセージを送信するステップと、
前記送信側メディア装置により、前記第2の複数のビーコンメッセージの送信に関連するネットワーク性能についての第2の測定値を生成するステップと、
前記ネットワーク性能についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項5】
メディア再生を送信側メディア装置と同期させるための受信側メディア装置であって、
再生用のメディアデータを記憶するように構成されたメモリと、
前記送信側メディア装置と通信するように構成されたネットワークインターフェイスと、
プロセッサと、
を備え、前記プロセッサは、
前記ネットワークインターフェイスを介して、前記送信側メディア装置から、送信側タイムスタンプをそれぞれが含む複数のビーコンメッセージを受け取り、
前記複数のビーコンメッセージに含まれる前記送信側タイムスタンプのそれぞれと、前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成し、
前記複数のクロックオフセット値から最小クロックオフセット値を識別し、
前記受信側メディア装置の前記クロックの前記値から前記最小クロックオフセット値を減算することにより、前記受信側メディア装置の前記クロックの前記値を修正し、
再生用の第1のメディアデータと、該第1のメディアデータに関連する第1の提示時刻とを定め、
前記複数のビーコンメッセージを受け取った後に、前記第1の提示時刻に一致する第1の時刻に、前記第1のメディアデータがレンダリングされるようにする、
ように構成され、
前記最小クロックオフセット値は、前記複数のビーコンメッセージのうち最も遅延の少なかった1つであり、前記第1の提示時刻に一致する前記第1の時刻は、前記クロックの前記値に基づく、
ことを特徴とする受信側メディア装置。
【請求項6】
前記プロセッサは、前記最小クロックオフセット値を識別する際に、
前記複数のクロックオフセット値のうちの第1のクロックオフセット値を生成し、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定し、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第2のクロックオフセット値を生成し、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいか否かを判定し、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第2のクロックオフセット値に等しく設定する、
ように構成されることを特徴とする請求項5に記載の受信側メディア装置。
【請求項7】
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、前記プロセッサは、
前記第1の複数のビーコンメッセージが到着する間隔についての第1の測定値を生成し、
前記第1の複数のビーコンメッセージが到着する間隔についての前記第1の測定値が、ネットワークが不安定であることを示していると判定し、
前記送信側メディア装置に追加メッセージを送信するように指示し、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第2の複数のビーコンメッセージが到着する間隔についての第2の測定値を生成し、
前記第2の複数のビーコンメッセージが到着する間隔についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定する、
ようにさらに構成され、
前記プロセッサは、前記複数のクロックオフセット値から最小クロックオフセット値を識別する際に、前記第2の複数のビーコンメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも1つのクロックオフセット値を利用するように構成される、
ことを特徴とする請求項5に記載の受信側メディア装置。
【請求項8】
送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるシステムであって、
請求項5に記載の前記受信側メディア装置と、
前記送信側メディア装置と、
を備え、
前記受信側メディア装置の前記プロセッサは、
前記第1の複数のビーコンメッセージの送信に関連するネットワーク性能についての第1の測定値を生成する、ようにさらに構成され、
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、
前記送信側メディア装置は、
前記受信側メディア装置と通信するように構成された送信側メディア装置ネットワークインターフェイスと、
送信側メディア装置プロセッサと、
を有し、前記送信側メディア装置プロセッサは、
前記第1の複数のビーコンメッセージを送信し
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示していると判定し、
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第2の複数のビーコンメッセージを送信し、
前記第2の複数のビーコンメッセージの送信に関連するネットワーク性能についての第2の測定値を生成し、
前記ネットワーク性能についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定する、
ように構成される、
ことを特徴とするシステム。
【請求項9】
受信側メディア装置によって実行される、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるための命令が符号化された非一時的機械可読記憶媒体であって、
前記受信側メディア装置において、前記送信側メディア装置から送信側タイムスタンプをそれぞれが含む複数のビーコンメッセージを受け取るための命令と、
前記複数のビーコンメッセージに含まれる前記送信側タイムスタンプと前記受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するための命令と、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令と、
前記受信側メディア装置の前記クロックの前記値から前記最小クロックオフセット値を減算することにより、前記受信側メディア装置の前記クロックの前記値を修正するための命令と、
再生用の第1のメディアデータと、該第1のメディアデータに関連する第1の提示時刻とを定めるための命令と、
前記複数のビーコンメッセージを受け取った後に、前記第1の提示時刻に一致する第1の時刻に、前記第1のメディアデータがレンダリングされるようにするための命令と、
を含み、前記最小クロックオフセット値は、前記複数のビーコンメッセージのうち最も遅延の少なかった1つであり、前記第1の提示時刻に一致する前記第1の時刻は、前記クロックの前記値に基づくことを特徴とする非一時的機械可読記憶媒体。
【請求項10】
前記最小クロックオフセット値を識別するための前記命令は、
前記複数のクロックオフセット値のうちの第1のクロックオフセット値を生成するための命令と、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定するための命令と、
前記最小クロックオフセット値を前記第1のクロックオフセット値に等しく設定した後に、前記複数のクロックオフセット値のうちの第2のクロックオフセット値を生成するための命令と、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいか否かを判定するための命令と、
前記第2のクロックオフセット値が前記最小クロックオフセット値よりも小さいという判定に基づいて、前記最小クロックオフセット値を前記第2のクロックオフセット値に等しく設定するための命令と、
を含むことを特徴とする請求項9に記載の非一時的機械可読記憶媒体。
【請求項11】
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、前記非一時的機械可読記憶媒体は、
前記第1の複数のビーコンメッセージが到着する間隔についての第1の測定値を生成するための命令と、
前記第1の複数のビーコンメッセージが到着する間隔についての前記第1の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示するための命令と、
前記送信側メディア装置に追加メッセージを送信するように指示した後に、前記第2の複数のビーコンメッセージが到着する間隔についての第2の測定値を生成するための命令と、
前記第2の複数のビーコンメッセージが到着する間隔についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
をさらに含み、
前記複数のクロックオフセット値から最小クロックオフセット値を識別するための命令は、前記第2の複数のビーコンメッセージに関連する前記複数のクロックオフセット値のうちの少なくとも1つのクロックオフセット値を利用するための命令を含む、
ことを特徴とする請求項9に記載の非一時的機械可読記憶媒体。
【請求項12】
非一時的機械可読媒体の組であって、
請求項9に記載の前記非一時的機械可読記憶媒体と、
前記送信側メディア装置によって実行される命令が符号化されたさらなる非一時的機械可読記憶媒体と、
を含み、
前記非一時的機械可読記憶媒体は、
前記第1の複数のビーコンメッセージの送信に関連するネットワーク性能についての第1の測定値を生成するための命令、をさらに含み、
前記複数のビーコンメッセージは、第1の複数のビーコンメッセージ及び第2の複数のビーコンメッセージを含み、
前記さらなる非一時的機械可読記憶媒体は、
前記第1の複数のビーコンメッセージを送信するための命令と
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示していると判定するための命令と、
前記ネットワーク性能についての前記第1の測定値が、ネットワークが不安定であることを示しているという判定に基づいて、前記第2の複数のビーコンメッセージを送信するための命令と、
前記第2の複数のビーコンメッセージの送信に関連するネットワーク性能についての第2の測定値を生成するための命令と、
前記ネットワーク性能についての前記第2の測定値が、前記ネットワークが安定していることを示していると判定するための命令と、
を含む、
ことを特徴とする非一時的機械可読媒体の組。
【発明の詳細な説明】
【技術分野】
【0001】
〔関連出願との相互参照〕
本出願は、2012年9月14日に出願された、Lee他に付与された「再生同期(Playback Synchronization)」という名称の米国仮特許出願第61/701,326号の利益を主張するものであり、この特許出願の開示は、その全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【0002】
本出願は、2010年10月22日に出願された、Lau他に付与された「メディア分散アーキテクチャ」という名称の米国仮特許出願第61/405,835号の利益を主張する、2011年10月21日に出願された、Lau他に付与された「メディア分散アーキテクチャ」という名称の米国特許出願公開第13/278,799号の一部継続出願であり、これらの特許出願の開示は、その全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【0003】
本明細書に開示する様々な例示的な実施形態は、一般にメディアストリーミング及びネットワークメディア再生に関する。
【背景技術】
【0004】
スマートフォン及びタブレットなどの電子装置が普及するにつれ、人々がこのような装置を使用して音楽及びビデオなどのコンテンツを再生する頻度が高くなっている。しばしば、これらのメディアソースは、ユーザが十分に満足するようにメディアを提供しないことがある。例えば、ディスプレイが小さすぎたり、或いはスピーカの音量が品質的又は音量的に不十分であったりすることがある。また、メディアソースからの出力を複数の人々が容易に又は快適に楽しむことができないこともある。さらに、ユーザは、メディアソースを持ち歩いていなければ、家庭内のあらゆる場所でメディアを楽しむことができない。
【発明の概要】
【課題を解決するための手段】
【0005】
以下、様々な例示的な実施形態の概要を示す。以下の概要では、いくつかの単純化及び省略を行っていることがあるが、これは様々な例示的な実施形態のいくつかの態様を強調して紹介することを意図したものであり、本発明の範囲を限定するものではない。以下のセクションでは、当業者が本発明概念を実施して利用できるようにするのに適した好ましい例示的な実施形態の詳細な説明を行う。
【0006】
本明細書で説明する様々な実施形態は、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させる方法に関連し、この方法は、受信側メディア装置において、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取るステップと、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するステップと、複数のクロックオフセット値から最小クロックオフセット値を識別するステップと、再生用の第1のメディアデータと、この第1のメディアデータに関連する第1の提示時刻とを定めるステップと、最小クロックオフセットに基づいて第1の提示時刻に一致する第1の時刻に、第1のメディアデータがレンダリングされるようにするステップとを含む。
【0007】
本明細書で説明する様々な実施形態は、メディア再生を送信側メディア装置と同期させるための受信側メディア装置に関連し、この受信側メディア装置は、再生用のメディアデータを記憶するように構成されたメモリと、送信側メディア装置と通信するように構成されたネットワークインターフェイスと、プロセッサとを備え、このプロセッサは、ネットワークインターフェイスを介して、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取り、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成し、複数のクロックオフセット値から最小クロックオフセット値を識別し、再生用の第1のメディアデータと、この第1のメディアデータに関連する第1の提示時刻とを定め、最小クロックオフセット値に基づいて第1の提示時刻に一致する第1の時刻に、第1のメディアデータがレンダリングされるようにするように構成される。
【0008】
本明細書で説明する様々な実施形態は、受信側メディア装置によって実行される、送信側メディア装置と受信側メディア装置の間でメディア再生を同期させるための命令が符号化された非一時的機械可読記憶媒体に関連し、この媒体は、受信側メディア装置において、送信側メディア装置から複数の送信者タイムスタンプを含む複数のメッセージを受け取るための命令と、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて、複数のクロックオフセット値を生成するための命令と、複数のクロックオフセット値から最小クロックオフセット値を識別するための命令と、再生用の第1のメディアデータと、この第1のメディアデータに関連する第1の提示時刻とを定めるための命令と、最小クロックオフセット値に基づいて第1の提示時刻に一致する第1の時刻に、第1のメディアデータがレンダリングされるようにするための命令とを含む。
【0009】
様々な実施形態は、受信側メディア装置と送信側メディア装置の間の往復輸送から複数のタイムスタンプを取得するステップと、この複数のタイムスタンプに基づいて下限オフセット値を設定するステップと、最小クロックオフセット値を識別した後に、この最小クロックオフセット値が、送信側装置クロックと受信側装置クロックの間の実際のクロックオフセットの、下限オフセット値よりも良好な推定を表していると判断するステップをさらに含み、最小クロックオフセットに基づいて第1の提示時刻に一致する第1の時刻に、第1のメディアデータがレンダリングされるようにするステップは、最小クロックオフセット値が、送信側装置クロックと受信側装置クロックの間の実際のクロックオフセットの、下限オフセット値よりも良好な推定を表しているという判断に基づいて行われる。
【0010】
本明細書では、様々な実施形態について説明し、最小クロックオフセット値を識別するステップは、複数のクロックオフセット値のうちの第1のクロックオフセット値を生成するステップと、最小クロックオフセット値を第1のクロックオフセット値に等しく設定するステップと、最小クロックオフセット値を第1のクロックオフセット値に等しく設定した後に、複数のクロックオフセット値のうちの第2のクロックオフセット値を生成するステップと、第2のクロックオフセット値が最小クロックオフセット値よりも小さいと判定するステップと、第2のクロックオフセット値が最小クロックオフセット値よりも小さいという判定に基づいて、最小クロックオフセット値を第2のクロックオフセット値に等しく設定するステップとを含む。
【0011】
様々な実施形態は、受信側メディア装置のクロックの値から最小オフセット値を減算することにより、クロックの値を修正するステップをさらに含み、最小クロックオフセット値に基づいて第1の提示時刻に一致する第1の時刻は、第1の提示時刻に一致するクロックの値を含む。
【0012】
様々な実施形態は、受信側メディア装置において、第2のメディアデータ、第2の提示時刻及び送信者タイプスタンプを含むメッセージを送信側メディア装置から受け取るステップと、送信者タイムスタンプに基づいてクロックオフセット値を生成するステップと、このクロックオフセット値が、受信側メディア装置のクロックと送信側メディア装置のクロックの間の実際のオフセットの最小クロックオフセット値よりも正確な表現であると判断するステップと、このクロックオフセット値に基づいて最小クロックオフセット値を調整するステップと、再生用の第3のメディアデータと、この第3のメディアデータに関連する第3の提示時刻とを定めるステップと、最小クロックオフセット値を調整した後に、この最小クロックオフセット値に基づいて第3の提示時刻に一致する第2の時刻に、第3のメディアデータがレンダリングされるようにするステップをさらに含む。
【0013】
本明細書では、様々な実施形態について説明し、クロックオフセット値が、受信側メディア装置のクロックと送信側メディア装置のクロックの間の実際のオフセットの最小クロックオフセット値よりも正確な表現であると判断するステップは、このクロックオフセット値がゼロよりも小さいと判断するステップを含み、このクロックオフセット値に基づいて最小クロックオフセット値を調整するステップは、クロックの値からオフセット値を減算することによって受信側メディア装置のクロックの値を修正するステップを含む。
【0014】
様々な実施形態は、複数のタイプスタンプのうちの少なくとも1つの送信者タイムスタンプを、送信側メディア装置の時間領域から受信側メディア装置の時間領域に変換するステップをさらに含み、複数の送信者タイムスタンプと受信側メディア装置のクロックとに基づいて複数のクロックオフセット値を生成するステップは、複数のタイムスタンプのうちの少なくとも1つの送信者タイムスタンプを、送信側メディア装置の時間領域から受信側メディア装置の時間領域に変換した後に、少なくとも1つの送信者タイムスタンプに基づいて少なくとも1つのクロックオフセット値を生成するステップを含む。
【0015】
様々な実施形態について説明し、複数のメッセージは、第1の複数のメッセージ及び第2の複数のメッセージを含み、方法は、第1の複数のメッセージが到着する間隔についての第1の測定値を生成するステップと、第1の複数のメッセージが到着する間隔についての第1の測定値が、ネットワークが不安定であることを示していると判断するステップと、送信側メディア装置に追加メッセージを送信するように指示するステップと、送信側メディア装置に追加メッセージを送信するように指示した後に、第2の複数のメッセージが到着する間隔についての第2の測定値を生成するステップと、第2の複数のメッセージが到着する間隔についての第2の測定値が、ネットワークが安定していることを示していると判断するステップとをさらに含み、複数のクロックオフセット値から最小クロックオフセット値を識別するステップは、第2の複数のメッセージに関連する複数のクロックオフセット値のうちの少なくとも1つのクロックオフセット値を利用するステップを含む。
【0016】
様々な実施形態について説明し、複数のメッセージは、第1の複数のメッセージ及び第2の複数のメッセージを含み、方法は、送信側メディア装置によって第1の複数のメッセージを送信するステップと、送信側メディア装置により、第1の複数のメッセージの送信に関連するネットワーク性能についての第1の測定値を生成するステップと、ネットワーク性能についての第1の測定値が、ネットワークが不安定であることを示していると判断するステップと、ネットワーク性能についての第1の測定値が、ネットワークが不安定であることを示しているという判断に基づいて、送信側メディア装置によって第2の複数のメッセージを送信するステップと、送信側メディア装置により、第2の複数のメッセージの送信に関連するネットワーク性能についての第2の測定値を生成するステップと、ネットワーク性能についての第2の測定値が、ネットワークが安定していることを示していると判断するステップとをさらに含む。
【0017】
様々な例示的な実施形態をより良く理解するために、以下の添付図面を参照する。
【図面の簡単な説明】
【0018】
図1】メディア再生のための例示的な環境を示す図である。
図2】仮想メディアネットワークを形成して動作させるための例示的な方法を示す図である。
図3】例示的な仮想メディアネットワークを示す図である。
図4】メディアソースの例示的なコンポーネント図である。
図5】メディアノードの例示的なコンポーネント図である。
図6】メディア装置の例示的なハードウェア図である。
図7】メディア信号をブロードキャストする例示的な方法を示す図である。
図8】送信側メディア装置が受信側メディア装置に再生を同期させるための例示的な方法を示す図である。
図9】受信側メディア装置が送信側メディア装置に再生を同期させるための例示的な方法を示す図である。
図10】メディアストリーミング中に受信側メディア装置がより良好な再生同期を取得するための例示的な方法を示す図である。
図11】下限オフセットを決定する例示的な方法を示す図である。
【発明を実施するための形態】
【0019】
本明細書に示す説明及び図面では、様々な原理を例示する。当業者であれば、本明細書には明示的に説明又は図示していないが、これらの原理を具体化する、本開示の範囲に含まれる様々な構成を考案することができると理解されるであろう。本明細書で使用する「又は(or)」という用語は、(例えば「或いは(or else)」又は「これとは別に(in the alternative)」のように)特に示していない限り、非排他的or(すなわち、及び/又は(and/or))を意味する。また、本明細書で説明する様々な実施形態は、必ずしも互いに排他的なものではなく、本明細書で説明する原理を組み込んださらなる実施形態を生じるように組み合わせることもできる。
【0020】
本明細書で説明する様々な実施形態は、メディアコンテンツを分散させるためのアーキテクチャを利用する。有線又は無線メディアトランスポート技術を提供して、様々なメディア装置間の正確なタイミング同期を維持しながらメディアを複数の区域に同時送信できるようにする。ユーザは、スピーカ、ディスプレイ又はその他のレンダリング装置のネットワークを有することができ、どのレンダリング装置がアクティブにメディアを出力しているかを個別に選択することができる。このようなレンダリング装置、及び本明細書で説明するその他の装置は、仮想メディアネットワークに属することができる。
【0021】
仮想メディアネットワークによってレンダリングされるメディアは、メディアソースから生じることができる。メディアソースは、携帯電話機、タブレット、ステレオ、セットトップボックス、PC又はその他の装置とすることができる。仮想メディアネットワークにおけるメディアの送信方法は、補助ケーブルなどを介した有線とすることも、或いはBluetooth又はWiFiのような無線とすることもできる。スピーカ及びその他のレンダリング装置自体は、自己形成ネットワーク内で管理することができる。メディアは、メディアソースによってネットワークに導入することができ、エンドポイントネットワーク自体が、オーディオ/ビデオの分散、タイミング及びレンダリングを制御することができる。いくつかの実施形態では、ネットワークに導入される音声が、オーディオビデオ信号のオーディオ部分である。ビデオ信号は、(タブレットコンピュータなどの)メディアソース上で再生することができる。オーディオ信号は、ビデオ信号と同期状態を保つことができる。
【0022】
様々な実施形態では、ユーザが、メディアソースとして機能させるためのいずれかのメディアアプリケーションを選択することができる。例えば、ユーザは、MP3アプリケーション、インターネットラジオアプリケーションなどを選択することができる。ユーザは、次に自宅のリビングのスピーカなどの出力装置を選択して、この選択した出力装置にメディアが送信されるようにすることができる。オペレーティングシステムにより、選択した出力装置に音声を送信することができる。ユーザは、第2のアプリケーションを呼び出して、他のスピーカを仮想メディアネットワークに追加するとともに、スピーカの音量を制御することなどができる。いくつかの実施形態では、この第2のアプリケーションがメディアを修正することは決してない。ネットワーク内の各装置は、オーディオ/ビデオの分散、タイミング及びレンダリングに対処することができる。従って、メディアソースがこのような処理を抱え込まなくてもよい。さらに、このような構成では、ユーザが、メディアアプリケーションを修正する必要なく、あらゆる好みのメディアアプリケーションをメディアのソースとして選択することができる。
【0023】
様々な実施形態では、仮想メディアネットワークを通じて分散されたメディアを同期状態に保つことができる。このような再生同期を達成するために、メディアデータを送信する様々なメディア装置は、関連するメディアをいつレンダリングすべきかを示すための、メディアデータのフレームに関連するタイムスタンプを含むことができる。このような機構を可能にするために、各メディア装置は、これらのメディア装置の内部クロック間の差分を考慮する方法を有することができる。例えば、2つのメディア装置が異なるクロック値で動作を開始することもあれば、或いはクロックがわずかに異なる速度で動作することに起因して、これらのクロック値が動作中にだんだんと離れて行くこともある。
【0024】
これまでに、いくつかのネットワーククロック同期法が開発されてきたが、このような方法は、ネットワーク遅延が比較的一定であり、従ってレンダリング処理の一部として容易に解決される有線ネットワークでしか信頼性がない。一方、WiFi又はBluetoothなどの無線ネットワークでは、ネットワーク遅延が短期間で大きく変化することにより、同期パケットが送信された時刻を推定する処理が複雑になることがある。本明細書で説明する様々な方法は、ネットワーククロック同期の処理に対するこのような可変遅延の影響を低減又は排除するクロック同期処理を実装する。例えば、一定期間にわたる複数の潜在的なクロックオフセット値を生成することにより、受信側装置が、この群から最小オフセット値を選択し、これによりネットワーク遅延の可変成分によって受けていた影響が最も少ないオフセット値を利用することができる。ネットワーククロック同期を改善するための様々なさらなる特徴については、以下でさらに詳細に説明する。
【0025】
本説明を通じて、以下の定義を使用する。
ブロードキャスター:仮想メディアネットワークのためにフォーマットされたメディアストリームを送信できるいずれかの装置、又はこのような装置内のブロードキャスト機構。
レンダラ:仮想メディアネットワークのためにフォーマットされたメディアストリームをレンダリングできるいずれかの装置、又はこのような装置内のレンダリング機構。
メディアノード:レンダラ又はブロードキャスターを含むいずれかの装置。いくつかの実施形態のメディアノードは、ネットワーク時間同期、及びメディアルーティング情報を含むネットワークの状態を維持する役割を担うことができる。
メディアソース:オリジナルデータをシンクに送信するいずれかの装置。例えば、携帯電話機、スマートフォン、タブレット、セットトップボックス、テレビ、DVD/Blu-Ray/その他のメディアプレーヤ、ステレオシステム、ビデオゲーム機、ラップトップ、デスクトップPC、サーバ、又はメディアデータを送信することができる他のいずれかの装置などの、事実上あらゆるタイプのハードウェアを含むことができる。
シンク:ソースからの発信メディアを受け取るいずれかの装置、又はメディア信号を受け取る装置内の機構。
ゲートウェイ対応メディアノード:シンクとブロードキャスターを組み合わせたいずれかの装置。ゲートウェイは、シンクを介してメディアを受け入れることができ、レンダラに向けて仮想メディアネットワーク内にメディアを再ブロードキャストすることができる。
仮想メディアネットワーク:少なくとも1つのゲートウェイを有する1又はそれ以上のノードの群。仮想メディアネットワークは、ユーザによって確立することができ、ネットワーク内のレンダリング装置間で同期されたメディア信号をレンダリングすることができる。なお、いくつかの実施形態では、たった1つのメディアノードのみが仮想メディアネットワークのアクティブなゲートウェイとして機能する。
メディア装置:例えばメディアノード又はメディアソースなどの、仮想メディアネットワークと連動して動作するいずれかの装置。
【0026】
ここで、同じ数字が同じ構成要素又はステップを示す図を参照して、様々な例示的な実施形態の広範な態様を開示する。
【0027】
図1に、メディア再生のための例示的な環境100を示す。この例には、合計5つのネットワークメディアノード104a~b、106a~cが存在し、様々な例示的な実施形態は、これよりも少ない又はさらなるメディアノード(図示せず)を含むことができる。例示的な環境100は、2つの仮想メディアネットワークの形で構成されたものとして示している。図示のように、メディアソース102aは、一方の仮想メディアネットワークのメディア信号ソースとして機能し、メディアソース102bは、もう一方の仮想メディアネットワークのメディアソースとして機能するが、他の構成も可能である。メディア信号は、オーディオ又はビデオとすることができる。様々な実施形態では、メディア信号が、オーディオビデオ信号のオーディオ部分である。ビデオ信号は、メディアソース102a、b上で再生することができる。なお、例示的な実施形態では、異なる装置によって様々な信号がレンダリングされる時に、オーディオ信号がビデオ信号との同期状態を保つ。また、ビデオ信号は、仮想メディアネットワーク内の装置の1つ、又はメディアソースノード102a、b以外の何らかの装置に送信することもできる。様々な実施形態では、各仮想メディアネットワークが1つのゲートウェイ装置を含み、他の実施形態では、仮想メディアネットワークが複数のゲートウェイ装置を利用する。上述したように、ゲートウェイ装置は、メディア信号を受け取るためのシンク、及びブロードキャスターを有する。ゲートウェイ装置は、オーディオ及び/又はビデオをレンダリングするためのレンダラを有していても、又は有していなくてもよい。図示の例では、リビングルーム内の装置が、第1の仮想メディアネットワークのゲートウェイとして機能するが、ブロードキャスターを有する異なる装置がゲートウェイとして機能することもできる。
【0028】
いくつかの実施形態では、このシステムが、正確なタイミング同期を維持しながら複数の区域への同時メディア送信を可能にする。一例として、ユーザは、スピーカのネットワークを構成し、アクティブに再生を行っているスピーカを個別に選択して、これらの再生を同期させることができる。ネットワーク内へのメディアの送信方法は、補助ケーブルなどを介した有線とすることも、又はBluetooth、WiFiのような無線とすることも、又は別のネットワーク通信プロトコルとすることもできる。一例として、リビングルームのゲートウェイ104aが、ステレオ受信機108にメディア信号を提供するための補助アウトラインを有し、この結果、スピーカ110が、その補助ラインの1つによってステレオ受信機108に接続される。一方で、リビングルームのゲートウェイ104aは、無線送信を介してオフィスのレンダラ106a及びキッチンのレンダラ106bにメディア信号を提供することもできる。また、リビングルームのゲートウェイ104aは、独自のレンダラを有していても、又は有していなくてもよい。いくつかの実施形態では、ネットワークに属する様々なメディアノードが、異なるチャネルのメディアストリームを有し、これらをレンダリングする。例えば、メディアソースがビデオ信号をレンダリングし、第1のレンダラが左側スピーカチャネルのステレオミックスオーディオ信号をレンダリングし、第2のレンダラが右側スピーカチャネルのステレオミックスオーディオ信号をレンダリングし、ゲートウェイが、これらのビデオ信号と、両チャネルのステレオミックスオーディオ信号とをレンダリングすることができる。他の様々なチャネル方式、及びメディア装置間におけるこのようなチャネルの分散も明らかであろう。
【0029】
いくつかの実施形態では、メディアノード104a~b、106a~c自体が自己形成ネットワークにおいて管理される。メディアノード104a~b、106a~cは、これら自体がオーディオ/ビデオの分散、タイミング及びレンダリングを制御することができる。従って、処理負荷の大部分がメディアソース102から取り除かれる。図1の例は、家庭環境に関連するものであるが、実施形態はこのように限定されるものではない。あらゆる環境において仮想メディアネットワークを展開することができる。
【0030】
図2に、仮想メディアネットワークを形成して動作させるための例示的な方法200を示す。ステップ202において、メディア装置が互いを発見し合い、装置ステータス情報を交換する。ステップ202は、例えばメディアノード104、106の電源がオンになった時に行うことができる。メディアノード104、106は、互いに異なる時点で電源オンされるので、このステップは継続的に実行することも、反復することも、或いは別様に進行中とすることもできる。いくつかの実施形態では、メディアノード104、106が、互いの存在、及び例えばソース、シンク、ブロードキャスター又はレンダラとして機能する能力などの能力を学習する「自己発見」プロトコルを実行する。交換される装置ステータス情報は、例えば、装置が仮想メディアネットワーク内で現在アクティブであるかどうか、このような仮想メディアネットワークの識別情報、装置が現在ゲートウェイとして機能しているかどうか、などの情報を含むこともできる。
【0031】
ステップ204において、メディアソース102がゲートウェイメディアノード104と対になる。ゲートウェイとして機能する1つのメディアノード104は、ユーザが具体的に選択することも、或いはユーザの介入を伴わずに自動的に決定することもできる。例えば、スマートフォン102aのユーザがリビングルームのメディアノード104aを一次リスニング装置として選択し、この結果、このメディアノード104aがゲートウェイになることができる。いくつかの実施形態では、ゲートウェイメディアノード104が、そのステータスに基づいて、メディアソースノード102のための現在アクティブな出力装置として選択される。いくつかの実施形態では、ゲートウェイメディアノード104が、ゲートウェイとして機能しながらメディアソースノード102のアクティブな出力装置としても機能し、従って少なくともいくつかのチャネルのメディアデータをレンダリングする。いくつかの実施形態では、ゲートウェイメディアノード104が、メディアソース102に装置情報又は状態情報をレポートする。
【0032】
ステップ206において、仮想メディアネットワークが形成される。ステップ206は、ユーザがメディアノード104、106を選択したことに応答して形成することができる。例えば、ユーザは、ユーザがメディアノード104、106を選択できるようにするメディアソース102上のソフトウェアプログラムにアクセスすることができる。なお、メディアノード104、106が既に異なる仮想メディアネットワークの一部である場合、このメディアノード104、106は、メディアソース102を介して、利用できないものとして示されることもある。これに加えて、又はこれとは別に、ユーザは、使用中のメディアノード104、106が現在の仮想メディアネットワークに含まれるように開放されることを要求することもできる。様々な実施形態では、ステップ206の結果、ゲートウェイメディアノード104が、仮想メディアネットワーク内の他のメディアノード104、106にメディア信号を転送するように指示される。
【0033】
ステップ208において、メディアソース102からゲートウェイメディアノード104にメディアを転送することができる。このステップ208は、このメディアソースに関連する出力装置上にメディアを提示することをユーザが選択したことに応答して開始することができる。例えば、ユーザは、メディアを再生するスマートフォン102a上でいずれかのアプリケーションを実行させることができる。ユーザは、次にゲートウェイメディアノード104を出力装置として選択し、このゲートウェイメディアノード104にメディアが転送されるようにすることができる。なお、このメディア転送は、オペレーティングシステム(OS)レベルで行うこともできる。この転送には、ユーザが仮想メディアネットワークのメディアソースとしてあらゆるメディアアプリケーションを選択できるという意味合いがある。
【0034】
ステップ210において、ゲートウェイメディアノード104は、仮想メディアネットワーク内の他のメディアノード104、106にメディア信号をブロードキャストすることができる。例えば、リビングルームのゲートウェイ104aは、スマートフォン102aから受け取ったメディア信号を、オフィスのレンダラ106a、キッチンのレンダラ106b、及びステレオ受信機108にブロードキャストすることができる。いくつかの実施形態では、各メディアノード104、106が、独自のユーザ制御可能なレベル(例えば、音量)でメディアを再生する。従って、メディアソース102からゲートウェイメディアノード104には、いくつかのコマンドを送信することができる。しかしながら、処理の大部分はゲートウェイが行うことができる。従って、メディアソース102が重い処理負荷で動きが取れなくなることはない。
【0035】
図3に、例示的な仮想メディアネットワーク300を示す。図示のように、メディアノード320、330は、メディア信号を受け取るためのシンク322、332と、メディア信号を別のメディアノード320、330、340に提供するためのブロードキャスター324、334とを有しているので、これらの2つのメディアノードがゲートウェイとして機能することができる。例示を目的として、メディアノード320、330、340から分離されたアクセスポイント350が存在する。なお、メディアノード320、330、340のうちの1つがアクセスポイントとして機能することもできる。
【0036】
メディアノード320、330のいくつかは、ブロードキャスター324、334を含む。本明細書では、このようなノードをブロードキャスティングノードと呼ぶことができる。ブロードキャスター324、334は、ハードウェア又はソフトウェアのいずれかの組み合わせによって実装することができる。様々な実施形態では、ブロードキャスター324、334が、他のメディアノード320、330、340によって理解されるエアタイムブロードキャストフォーマットでメディアを送信する。なお、このフォーマットは、メディアソース310からメディア360を送信するために使用するフォーマットとは異なることができる。ブロードキャスター324、334及びレンダラ326、336は、ローカル再生を遠隔レンダラ上の再生と同期できるように同じメディアノード320、330内に共存することができる。ソースの導入は、ソース-シンクのリンクを介して行うことができる。ソースからシンクへの送信とは異なり、同期再生を用いたポイントツーマルチポイントメディア送信にはエアタイムブロードキャストを使用することができる。
【0037】
上述したように、ゲートウェイ対応メディアノード320、330は、シンク322、332とブロードキャスター324、336の組み合わせを有する。いくつかの実施形態では、ゲートウェイ320、330が、メディアソース310からメディアを受け取り、このメディアを仮想メディアネットワークの他のメディアノード320、330、340と互換性のあるフォーマットで再ブロードキャストする。ゲートウェイ320、330は、レンダラ326、336も含む。様々な実施形態では、ゲートウェイメディアノード320、330がエンドポイントであると考えられる。
【0038】
ネットワーク上には、複数のゲートウェイ対応メディアノード320、330が存在することができる。いくつかの実施形態では、ゲートウェイメディアノード320、330が、メディアソース310が使用するのに最適なゲートウェイを決定するための選択方法を利用する。例えば、レンダラ326、336を有するメディアノード320、330の一方のみがメディアソース310にとってアクティブである場合、このレンダリングノードも、他のソースのネットワーク帯域幅を節約する最適なゲートウェイになり得る。一方で、メディアソース310にとって複数のレンダラがアクティブである場合、最も強い又は最も良好なネットワーク接続を有するゲートウェイが最適なゲートウェイになり得る。最適な候補を識別するための選択方式を行い、必要であれば異なるゲートウェイ320、330に対してストリームハンドオフを行うことができ、この場合、元々のゲートウェイ320、330は、ソース310のシンクになることができる。このストリームハンドオフは、ストリームの構成中又はストリームの最中に行うことができる。アクティブなゲートウェイが機能しなくなった場合、ネットワークは自己回復を行い、新たなゲートウェイを選択してエアタイムブロードキャストストリームを再設定することができる。
【0039】
メディアノード320、330、340のいくつかは、レンダラ326、336、346を含む。本明細書では、このようなメディアノード320、330、340をレンダリングノードと呼ぶこともできる。レンダラ326、336、346は、ハードウェア又はソフトウェアのいずれかの組み合わせによって実装することができる。メディア信号にオーディオの例を使用した場合、レンダラ326、336、346は、内部的に給電されるスピーカを通じて、又は別の増幅器/スピーカ装置へのアナログ又はデジタル出力を介して、メディアストリームを復号して再生することができる。ビデオの場合、レンダラ326、336、346は、内部的に給電されるディスプレイを通じて、或いは別のディスプレイ又はディスプレイを有する又は駆動する装置へのアナログ又はデジタル出力を介して、メディアストリームを復号して再生することができる。様々な実施形態では、レンダラ326、336、346を含むメディアノード320、330、340が、仮想ウォールクロックの作成、維持及び分散をサポートする。レンダラ326、336、346は、このウォールクロックを用いて、指定されたタイムスタンプ時にエアタイムストリームフォーマットでストリームを正確にレンダリングすることができる。
【0040】
図3の例では、メディアソース310と、ゲートウェイメディアノード320内のシンク322との間に接続が存在する。メディア360は、ゲートウェイメディアノード320内のレンダラ326によって再生される。ユーザは、この接続を確立するために、メディアソース310のための出力装置としてゲートウェイメディアノード320を選択しておくことができる。例えば、メディアソース310は、オーディオを送信すべきスピーカをユーザが選択できるようにする携帯電話機とすることができる。この選択されたスピーカに、携帯電話機によって再生されているあらゆるオーディオを送信することができる。従って、ゲートウェイメディアノード320には、どのアプリケーション(例えば、インターネットラジオ、MP3、その他)がオーディオを提供しているかに関わらずオーディオを転送することができる。なお、この転送を行うために、オーディオを提供しているアプリケーションに変更を加える必要はないと考えてよい。メディアソース310とゲートウェイメディアノード320の間の接続は、無線であっても、又は有線であってもよい。様々な実施形態では、この接続が無線Bluetooth接続である。しかしながら、Bluetooth以外の無線プロトコルを使用することもできる。
【0041】
メディア360をメディアノード330のレンダラ336及びメディアノード340のレンダラ346に送信するには、メディアソース310とゲートウェイメディアノード320のシンク322との間の接続に加えて、メディアノード320のブロードキャスター324が使用される。この例では、アクセスポイント350が仲介装置として機能する。しかしながら、アクセスポイント350は必須条件でなくてもよい。様々な実施形態では、メディアノード320がアクセスポイントとして機能する。メディアソース310からメディアノード330及びメディアノード340への接続は、メディアソース310とメディアノード320の間の接続と同様の形で確立しておくことができる。ユーザは、メディアノード330、340を仮想メディアネットワーク300の一部として確立しておくこともできる。メディアソース310は、どのメディアノード320、330、340を仮想ネットワークに追加すべきかをユーザが選択できるようにするソフトウェアアプリケーションを有することができる。このアプリケーションは、仮想メディアネットワークのアクティブな部分である他のメディアノード330、340にメディア信号を転送するようにメディアノード320に指示するコマンドをメディアノード320に送信することができる。メディアノード320は、メディア信号の再フォーマット、転送、メディアノード間の同期再生などの詳細に対処することができる。従って、メディアソース310が重い処理を負わされることはない。
【0042】
仮想メディアネットワーク300は、1つの考えられる装置の組の1つの考えられる構成にすぎないと理解されるであろう。様々な別のメディアネットワーク300は、これよりも少ない、又はさらなる装置を含むことができ、異なる形でメディアを分散させることができる。例えば、メディアソース310がアクセスポイントに直接メディアを送信することもでき、メディアノード330がメディアノード320の代わりにゲートウェイとして機能することもでき、メディアノード340が仮想ネットワークに参加しなくてもよい。様々な別の構成も明らかになるであろう。
【0043】
上述したように、メディアソース310は、仮想メディアネットワーク300にメディア360を導入することができる。一例として、PC又はスマートフォンが挙げられる。利用可能なメディア導入方法しては、アナログ送信又はデジタル送信をサポートするケーブル、Bluetooth及びWiFiを挙げることができる。いくつかの実施形態では、メディアソース310が、仮想メディアネットワークとの互換性があるフォーマットでメディアデータを送信するブロードキャスターである。他の実施形態では、メディアソース310のブロードキャスト機能が、技術的な限界によって制限される。例えば、多くの電話のセキュリティモデルは、オーディオドライバがサードパーティによって修正されるのを防ぐことができる。また、メディアソース310の装置自体が、利用可能な処理帯域幅又はネットワーク帯域幅を有していない場合もある。さらに、いくつかの実施形態では、少なくとも1つのエンドポイントが最大級の忠実性までレンダリングを行えるように、メディアソースの初期リンクのQoSレベルが他のエンドポイントよりも高いQoSを利用する。
【0044】
なお、メディアソース310からシンク322への送信には、多くのフォーマット及び接続を使用することができる。メディアソース310は、いくつかの非限定的な例として、有線、BT A2DP、又はWi-Fiを用いた特定のプロトコルを介してシンク322への送信を行うことができる。WiFiプロトコルは、品質とレイテンシの間のトレードオフをもたらすように、又は精度を保証するように設計することができる。例えば、このプロトコルは、データのエラーを検出して再送信を要求することができる。多くの場合、このことはブロードキャストの目的ではないかもしれないが、ブロードキャストの前に確実にメディアが到着することが重要である。本明細書に開示する実施形態は、既存の装置との互換性を維持する。
【0045】
様々な実施形態では、このネットワークが、標準的なWi-Fiインフラストラクチャに基づく。各メディアノードはアクセスポイント350に接続することができ、このアクセスポイント350においてDHCPを介してIPアドレスを要求する。いくつかのノード310、320、330は、無線アクセスキーの入力を可能にするUI(ディスプレイ、キーボードエントリ、その他)を有していないこともある。このような場合、WPS-PBCを用いて接続を行うことができる。他の方法としては、ユーザがGUI対応装置からエンドポイントに直接接続し、ノードによって提供されるウェブページ、又はノードと直接通信するアプリケーションページを介してネットワークパラメータを入力するアドホックモードを挙げることができる。別の方法は、電話機又はその他の装置上で実行されるアプリケーションがBluetoothを介してメディアノードと通信することである。アプリケーションは、どのアクセスポイントで接続を行うべきか、及び対応するネットワークアクセスコードをユーザに指示することができる。いくつかの実施形態では、このセットアップ段階中に、ユーザによってメディアノード320、330、340に名前が提供される。
【0046】
アクセスポイント350などのインフラストラクチャが存在しない場合、あるノードが自らを仮想アクセスポイントに変化させることができる。他のノードは、アクセスポイント350を発見し、これに接続して仮想ネットワークを形成することができる。WPS-PBC及びアドホック法を用いてセキュアな接続を行うことができる。
【0047】
図4は、メディアソース400の例示的なコンポーネント図である。メディアソース400は、例示的な環境100のメディアソース102a、b、又は例示的な仮想メディアネットワーク300のメディアソース310のいずれかに対応することができる。メディアソース400は、ネットワークインターフェイス410を含むことができる。様々な実施形態では、ネットワークインターフェイス410が複数の別個のインターフェイスを含む。例えば、ネットワークインターフェイス410は、WiFi対応インターフェイス及びBluetooth対応インターフェイスを含むことができる。これに加えて、又はこれとは別に、ネットワークインターフェイス410は、他のいずれかのプロトコルに対応するインターフェイスを含むこともできる。この例では、ネットワークインターフェイス410のBluetooth対応インターフェイスを用いてメディア信号(オーディオストリーム又はビデオストリームなど)を送信することができる。ネットワークインターフェイス410のWiFi対応インターフェイスを用いて、仮想メディアネットワークを制御するためのコマンドを送信することもできる。
【0048】
ユーザは、仮想ネットワークメディアアプリケーション420にアクセスして仮想メディアネットワークを制御することができる。一例として、仮想ネットワークメディアアプリケーション420は、ユーザがメディアノード104、106を選択してその音量を制御すること、再生することなどを可能にするユーザインターフェイスを提示することができる。いくつかの実施形態では、ネットワークのマスター音量、及び各メディアノード104、106の個別音量が存在する。
【0049】
メディアソースアプリケーション430は、メディアソース400上でオーディオを再生できるいずれかのアプリケーションとすることができる。例えば、メディアソースアプリケーション430は、MP3プレーヤ、インターネットオーディオ、ウェブブラウザなどとすることができる。様々な実施形態では、ユーザによって選択されたあらゆる出力装置上でメディアが再生される。この出力装置の選択は、オペレーティングシステム(OS)440の制御によって行うことができる。例えば、OS440は、ユーザが出力装置を選択できるようにするポップアップウィンドウを提供することができる。メディアノード104、106の一方又は両方が選択肢として表示される。メディアノード104、106の一方を選択することにより、この選択されたメディアノード104、106に、メディアソース400からネットワークインターフェイス410を介してオーディオアプリケーションに関連するメディア信号が送信される。いくつかの実施形態では、メディアライブラリ450を用いてメディアを復号する。メディアライブラリは、復号されたメディアをネットワークメディアドライバ445に送信し、このネットワークメディアドライバ445が、選択された出力装置にメディア信号を送信する。メディアノード104、106が出力装置として選択された場合、ネットワークインターフェイス450を介してメディア信号が送信される。いくつかの実施形態では、ネットワークメディアドライバ445がBluetoothドライバである。しかしながら、ネットワークメディアドライバ445は、あらゆるプロトコルに対応することができる。
【0050】
なお、上述の実施形態では、仮想メディアアプリケーション420がメディア信号に触れることは決してない。これにより、メディアソース400のための適当な出力装置を選択することによってメディア信号をメディアノード104、106に送信する際に、あらゆるメディアソース430を使用できるという利点をもたらすことができる。従って、仮想ネットワークメディアアプリケーション420のいくつかの実施形態は、あらゆるメディアソースアプリケーション430と互換性がある。さらに、メディアソースアプリケーション430を変更する必要もない。
【0051】
上述したように、ゲートウェイメディアノード104のいくつかの実施形態は、メディア信号が仮想メディアネットワークに適合するようにメディア信号の再フォーマット及び処理を行うことができる。従って、ゲートウェイメディアノード104は、メディアソース102から処理のほとんどを解放することができる。
【0052】
メディアソース400は1つの例を示すものであり、本明細書で説明する方法及び技術を実装した状態でメディアソース400に多くの修正を行うことができると理解されるであろう。例えば、いくつかの実施形態では、ネットワークメディアドライバ445が仮想ネットワークメディアドライバを含み、仮想ネットワークメディアアプリケーション420が存在しなくてもよい。このような実施形態では、ユーザが仮想メディアネットワークドライバ445をインストールして、メディアノード104、106へのメディア信号の送信を支援することができる。ユーザは、メディアノード104、106にメディア信号を送信したいと望む場合、OS440によって提示されたインターフェイス内のメディアノードを単純に選択する。これにより、仮想ネットワークメディアドライバ445が選択される。例えば、仮想ネットワークメディアドライバ445には、メディアライブラリ450からメディア信号を提供することができる。上記の例と同様に、メディアソースアプリケーション430は、メディアの再生に使用されるあらゆるアプリケーションとすることができる。
【0053】
仮想ネットワークメディアアプリケーション420は、上述したようなものとすることができる。例えば、仮想ネットワークメディアアプリケーション420は、仮想ネットワークに追加するメディアノード104、106をユーザが選択してネットワークを制御するためのインターフェイスを提供することができる。いくつかの実施形態では、仮想ネットワークメディアアプリケーション420の機能を仮想ネットワークメディアドライバ445に組み入れることができるので、仮想ネットワークメディアアプリケーション420は任意である。
【0054】
また、コマンドチャネルを用いたコマンドの送信、及びデータチャネルを用いたメディア信号の送信は、ネットワークインターフェイス410を介して同じプロトコルを使用して行うことができる。例えば、コマンド及びデータの両方を、WiFiプロトコル又はBluetoothプロトコルに従って送信することができる。或いは、上述したように、異なるプロトコルに従ってコマンド及びデータを送信することもできる。
【0055】
なお、OS440にドライバ445を組み込むことにより、あらゆるメディアソースアプリケーション430からのメディア信号をメディアノード104、106に送信することができる。ユーザは、メディアノード104、106の一方を選択するだけでよい。これに応答して、仮想ネットワークメディアドライバ445が使用される。従って、この仮想メディアネットワークは、メディアソース400上で実行されているあらゆるメディアソースアプリケーション430と共に使用することができる。
【0056】
いくつかの実施形態では、メディアソースアプリケーション430が仮想ネットワークメディアアプリケーション420に組み込まれる。いくつかのこのような実施形態では、メディアソースアプリケーション430によって再生されるあらゆるメディアがメディアノード104、106に送信される。
【0057】
様々な実施形態では、仮想メディアネットワークに属するメディアソース400及びメディアノード104、106によって同時にメディアがレンダリングされる。例えば、メディアソース400は、メディアのビデオチャネルをレンダリングすることができ、メディアノード104、106は、メディアのオーディオチャネルをレンダリングすることができる。いくつかのこのような実施形態では、様々なメディアチャネルが同期状態に保たれる。例えば、メディアソース400は、メディアノード104、106がいつメディアデータをレンダリングすべきかを示すタイプスタンプをメディアデータと共に送信することができる。同様に、ゲートウェイ104も、メディアデータを他のメディアノード104、106に転送する際に、このデータに関連するタイムスタンプを含めることができる。このようなタイムスタンプの交換を可能にするために、様々なメディア装置104、106、400は、仮想ウォールクロックなどの共通基準クロック、又は以下で詳細に説明するような様々な時間領域間でタイムスタンプを変換する方法を有することができる。
【0058】
図5は、メディアノード500の例示的なコンポーネント図である。メディアノード500は、例示的な環境100のメディアノード104、106の一方又は両方に対応することができる。メディアノード500は、ネットワークインターフェイス510を有することができる。ネットワークインターフェイス510は、1又はそれ以上の無線又は有線プロトコルに従って通信を可能にすることができる。様々な実施形態では、ネットワークインターフェイス510に1又はそれ以上のアンテナが接続される。いくつかの実施形態では、ネットワークインターフェイス510が、Wi-FiとBluetoothの両方に対応することができる。これに加えて、又はこれとは別に、ネットワークインターフェイス510は、他のいずれかのプロトコルに対応することもできる。いくつかの実施形態では、ネットワークインターフェイス510が、1又はそれ以上の有線ネットワークインターフェイスを含む。
【0059】
レンダラ520は、スピーカ530、ディスプレイ540又はその他の出力装置(図示せず)上に提示できるようにメディア信号を処理する役割を担うことができる。様々な別のメディアノードは、このメディアノードがレンダリングするように設計されたメディアの種類に応じてスピーカ530又はディスプレイ540を含まないこともあると理解されるであろう。さらに、メディアノード500は、ゲートウェイ又は他のブロードキャスターとしてのみ機能し、レンダリング装置として機能しないように設計されている場合、レンダラ520を含まなくてよい。レンダリングモジュールは、ネットワークインターフェイス510からメディア信号を受け取ることができる。
【0060】
ブロードキャスター550は、ネットワークインターフェイス510を介して他の適当なメディアノード104、106にメディア信号を転送することができる。ホームステレオシステムなどの装置にメディア信号を提供するには、補助出力560を使用することができる。いくつかの実施形態では、ブロードキャスター550が、補助出力560にメディア信号を転送する処理を行う。様々な実施形態では、メディアノード500が補助出力560を含まない。さらに、メディアノード500は、レンダリング装置としてのみ機能し、ゲートウェイ又は他のブロードキャスティング装置として機能しないように設計されている場合、ブロードキャスター550を含まなくてよい。
【0061】
コマンドモジュール570は、メディア信号を制御するためのコマンドを処理することができる。これらのコマンドは、音量、再生、停止などを含むことができる。同期モジュール580は、ネットワーク内の様々なメディアノードでの再生中に、メディア信号を正確に同期させる役割を果たすことができる。以下で詳細に説明するように、同期モジュール580は、初期クロック同期の設定において使用するビーコンメッセージを送信又は受信することができる。また、メディアストリームの開始後、同期モジュール580は、メディア再生中におけるクロック同期の改善又は是正において使用するタイムスタンプをメディアパケットから挿入又は抽出することができる。
【0062】
メディアノード104、106は、様々な機構を通じて制御することができる。コントローラとしては、スマートフォンアプリケーション、タブレットアプリケーション、TV又はセットトップボックス上のUI、ノード上のディスプレイ付き又はディスプレイ無しボタン、又はPCアプリケーションを挙げることができる。いくつかの実施形態では、これらの装置が、レンダラ520が特定のストリーム又はその特定のチャネル、レンダラ520の音量出力及び主音量をレンダリングするかどうかを制御する。
【0063】
いくつかの実施形態では、メディアノード500がコマンドプロトコルをサポートする。コマンドプロトコルは、オーディオ再生をオン/オフする方法、音声再生を同期区域に集約する方法、再生、先送り、巻き戻し及び探索などのトランスポート制御、ノードへのメタデータ送信、ネットワークに参加する装置へのネットワーク状態の告知、装置がネットワークから離れた時の状態更新、遠隔ユーザインターフェイスを介した制御、並びにエアタイムネットワークを維持するためのその他のメッセージ及び方法を含むことができる。
【0064】
なお、メディアノード500の要素は、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組み合わせを用いて実装することができる。メディアノード500は、1又はそれ以上のプロセッサと、この1又はそれ以上のプロセッサ上で実行された時にメディアノード500の様々な要素の機能を実行する命令を含むコンピュータ可読媒体とを有することができる。
【0065】
図6は、メディア装置600の例示的なハードウェア図である。例示的なメディア装置600は、例示的な環境100のメディア装置102、104、106、メディアソース400、又はメディアノード500のいずれかに対応することができる。図示のように、ハードウェア装置600は、1又はそれ以上のシステムバス660を介して相互接続された、プロセッサ610、メモリ620、ユーザインターフェイス630、ネットワークインターフェイス640及び記憶装置650を含むことができる。図6は、ある意味抽象的なものであり、メディア装置600の実際のコンポーネント構成は図示のものよりも複雑になり得ると理解されるであろう。例えば、プロセッサ610とメモリ620は、ローカルマイクロプロセッサバスを介して接続することができ、ユーザインターフェイス630、ネットワークインターフェイス640及び記憶装置650は、1又はそれ以上の入力/出力バスを介して接続することができる。
【0066】
プロセッサ610は、メモリ620又は記憶装置650に記憶された命令を実行できるあらゆるハードウェア装置とすることができる。従って、プロセッサは、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)又はその他の同様の装置を含むことができる。
【0067】
メモリ620は、例えばL1キャッシュ、L2キャッシュ又はL3キャッシュ、或いはシステムメモリなどの様々なメモリを含むことができる。メモリ620は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、リードオンリメモリ(ROM)又はその他の同様のメモリデバイスを含むことができる。
【0068】
ユーザインターフェイス630は、ユーザとの通信を可能にするための、又はユーザにメディアをレンダリングするための1又はそれ以上の装置を含むことができる。例えば、ユーザインターフェイス630は、ディスプレイ、スピーカ、プリンタ、補助出力、マウス、キーボード、英数字キーパッド、トラックボール、スタイラス又はボタンを含むことができる。
【0069】
ネットワークインターフェイス640は、他のハードウェア装置との通信を可能にするための1又はそれ以上の装置を含むことができる。例えば、ネットワークインターフェイス640は、イーサネットプロトコル、TCP/IPプロトコル、WiFiプロトコル又はBluetoothプロトコルに従って通信するように構成された1又はそれ以上のネットワークインターフェイスカード(NIC)を含むことができる。ネットワークインターフェイス640のための様々な別の又は追加のハードウェア又は構成が明らかであろう。
【0070】
記憶装置650は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス又は同様の記憶媒体などの1又はそれ以上の機械可読記憶媒体を含むことができる。記憶装置は、メディア装置600との間でデータ及びコードの入力及び出力を行うための、フロッピーディスクなどのポータブル不揮発性記憶媒体を含むこともできる。様々な実施形態では、記憶装置650が、プロセッサ610によって実行される命令、又はプロセッサ610が動作できるようにするデータを記憶する。例えば、記憶装置は、メディア装置600の基本機能を調整するためのオペレーティングシステム670と、別のメディア装置が再生を同期させるのに十分な情報を送信するための、又は別のメディア装置によって送信されたこのような情報を処理して再生を同期させるための同期命令672とを記憶することができる。
【0071】
記憶装置650は、メディア装置600の役割又は能力に応じて様々な追加命令を記憶することができる。例えば、メディア装置600がメディアソースとして機能できる場合、記憶装置650は、メディアを取得するための又は装置600上でメディアを再生するためのメディアソースアプリケーション命令674、メディアを復号するためのメディアライブラリ命令676、或いはユーザが仮想メディアネットワークにコマンドを送信できるようにするための仮想ネットワークメディアアプリケーション命令678を記憶することができる。例示的なメディアソース400の説明などの上述の説明に照らせば、これらの命令674、676、678のための他の様々な機能が明らかであろう。これに加えて、又はこれとは別に、メディア装置600がメディアノードとして機能できる場合、記憶装置は、メディアソース又はその他のコントローラによって発行されたコマンドを処理するためのコマンドモジュール命令680、他のメディアノードにメディアを転送するためのブロードキャスター命令682、及びメディアを他の装置と同期させてレンダリングするためのレンダラ命令684を記憶することができる。例示的なメディアノード500の説明などの上述の説明に照らせば、これらの命令680、682、684のための他の様々な機能が明らかであろう。
【0072】
メディア装置600に含まれるコンポーネントは、本明細書で説明する方法及びシステムと共に使用するのに適したコンピュータシステム内で典型的に見られるものであり、このようなコンピュータコンポーネントの広範なカテゴリを表すものである。従って、メディア装置600は、携帯電話機、スマートフォン、PDA、タブレットコンピュータ、パーソナルコンピュータ、モバイルコンピュータ装置、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、又は他のいずれかのコンピュータ装置とすることができる。このコンピュータは、様々なバス構成、ネットワークプラットフォーム、マルチプロセッサプラットフォームなどを含むこともできる。Unix、Linux、Windows、Macintosh OS、Palm OS、Android OS、iOS及びその他の適当なオペレーティングシステムを含む様々なオペレーティングシステム660を使用することができる。
【0073】
図7に、メディア信号をブロードキャストする例示的な方法700を示す。方法700は、方法200のステップ210に対応することができる。ステップ710において、ゲートウェイメディアノード104及びその他のメディアノード102、104、106は、タイミングパラメータを設定することができる。いくつかの実施形態では、メディアノード104、106が仮想ウォールクロックに同期する。ブロードキャスターは、この仮想ウォールクロックを用いて、メディアストリームに目標レンダリング時間をタイムスタンプすることができる。レンダラは、この仮想ウォールクロックを用いて、所与の時点で正確にメディアサンプルをレンダリングすることができる。仮想ウォールクロックは、メディアノード104、106がレンダリング時間の共通理解を確実に有することを支援することができる。いくつかの実施形態では、各レンダリング装置が、メディアストリーム内に指定された時点でサンプルをレンダリングする。ストリームフォーマットには、サンプリング周波数、ワードサイズ、チャネル数、符号化フォーマットなどを含む、ストリームをレンダリングするための他の情報を含めることもできる。
【0074】
ステップ710では、仮想ウォールクロック又は他の何らかの共通タイミング基準を設定することもできる。例えば、ゲートウェイメディアノード104は、各ビーコンメッセージがいつ送信されたかを示すタイムスタンプを含むビーコンメッセージの「フラッド」を開始することができる。この結果、受信側メディアノード104、106は、送信者のタイムスタンプと、各ビーコンメッセージが送信された時刻との差分を求めることによってオフセット値を計算することができる。この計算されたオフセットは、送信側装置のクロックと受信側装置のクロックとの間の実際のオフセットと、ネットワーク伝播時間、送信側装置がタイムスタンプを挿入してから実際にビーコンメッセージを送信するまでに要した時間、及び受信側装置がビーコンメッセージを受信してから受信時刻を特定するまでに要した時間などの、時間に関連する固定遅延と、様々な無線ネットワーク接続に共通するネットワーク変動に関連する可変遅延という3つの独立値の和を反映することができる。固定遅延は実質的に一定であるため、受信側装置は、これらの計算されたオフセットのうち、最も小さな計算されたオフセットが最小の可変ネットワーク遅延を含むオフセットであり、従って実際のクロックオフセットと固定ネットワーク遅延とを加えたものに最も近い利用可能な推定値であると確信することができる。この結果、受信側装置は、この最小オフセットに基づいて自身のクロックを調整することができ、或いは後続の送信側装置のタイムスタンプとローカルクロックとの比較において使用できるように、このオフセットを存続させることができる。レンダリング処理中には、この固定ネットワーク遅延を考慮して正しい同期を確実にすることができる。メディアソース102とメディアゲートウェイ104の間の同期の確立においても同様の方法を使用することができる。
【0075】
ステップ720において、ゲートウェイメディアノード104は、メディアソース102からメディア信号を受け取る。ステップ730において、ゲートウェイメディアノード104は、メディアを復号する。ゲートウェイは、復号の前にメディア信号を逆多重化することができる。
【0076】
ステップ740において、ゲートウェイメディアノード104は、他のメディアノード104、106にブロードキャストするためにメディアを再符号化する。なお、ゲートウェイは、メディアソース102が使用した符号化とは異なる符号化を使用することができる。例えば、メディアソース102では、メディア信号がBluetoothと互換性のあるフォーマットで符号化されている場合がある。このメディア信号を、Wi-Fiと互換性のあるフォーマットで再符号化することができる。
【0077】
ステップ750において、ゲートウェイメディアノード104は、メディア信号をカプセル化する。様々な実施形態では、ゲートウェイメディアノード104がメディア信号を圧縮する。オーディオメディア信号を圧縮する例として、高品質ネットワークでは、フリーオーディオロスレスコーデック(FLAC)などの軽可逆圧縮技術を用いて、最小の処理オーバーヘッドで帯域幅を半分にカットすることができる。低品質ネットワークでは、OGG又はアドバンスオーディオコーディング(AAC)などの高圧縮標準を用いて、音質及び処理オーバーヘッドを犠牲にしてネットワーク帯域幅を最小にすることができる。信号は、圧縮アルゴリズム自体を超えて、低サンプリングレートに再サンプリングすることも、モノラルストリームにダウンミックスすることも、又は低サンプル解像度にダウンサンプリングすることもできる。メディアストリームを圧縮形式に符号化又はトランスコードすることにより、処理オーバーヘッドを犠牲にして狭いネットワーク帯域幅を使用することによってエアタイムの信頼性を高めることができる。サポートされるコーデックは、様々なビットレート、サンプリング周波数、チャネル及びサンプルサイズの可逆及び非可逆圧縮技術を含むことができる。
【0078】
いくつかの実施形態では、全てのメディアノード104、106が、サポートされている符号化フォーマットを認識している。いくつかの実施形態では、全てのブロードキャスターが、サポートされているフォーマットへの符号化を行うことができる。いくつかの実施形態では、全てのレンダラが、サポートされているフォーマットを復号することができる。各ストリームに使用する符号化フォーマットは、ネットワーク品質からのフィードバック、利用可能な処理リソース、サポートされているレンダリング区域の数、サポートされているアクティブなストリームの数及び最大許容レイテンシによってメディアノード104、106間で決定することができる。
【0079】
任意のステップ760において、冗長パケットが加えられる。メディア信号が圧縮されている場合、追加パケットを加えることができる。いくつかの実施形態では、パケットのグループが冗長パケットのグループと交互配置される。例えば、2対1の圧縮比を用いて、オリジナルのメディア信号の2秒を1秒に圧縮することができる。一例として、1秒相当のデータパケットを1秒の冗長パケットと交互配置することができる。グループ内のパケット数は、1又はそれ以上とすることができる。
【0080】
いくつかの実施形態では、ブロードキャスティングが2つの選択肢を有する。選択肢Aでは、図示のように、ステップ770において、ゲートウェイメディアノード104が、他のメディアノード10にメディア信号をブロードキャストすることができる。選択肢B(図示せず)では、ゲートウェイメディアノード104が、無線アクセスポイントにメディア信号を送信することができる。無線アクセスポイントは、このメディア信号を他のメディアノードにブロードキャストすることができる。
【0081】
ブロードキャストメディアは、ネットワーク帯域幅の最大消費者であると考えられる。典型的な非圧縮オーディオストリームは、1.5mbpsを超えることがある。アクセスポイント310までの上り送信では、ストリーム当たり1.5mbpsを消費し、レンダラ306への下りでは、ストリーム当たりさらに1.5mbpsを消費し、合計で3mbpsを消費する可能性がある。ポイントツーポイントサイマルキャスティングでは、典型的な帯域幅がサイマルキャストストリーム数の3mbps倍になる可能性がある。これでは、ネットワークが飽和してしまう恐れがある。
【0082】
様々な実施形態は、複数の送信プロトコルをサポートする。いくつかの実施形態では、UDPオーバーIPが使用される。なお、いくつかの実施形態では、受信側メディアノードがパケット受信の確認応答を行わなくてもよい。例えば、UDPオーバーIPは、パケットの受信を必要としないことがある。いくつかの実施形態では、受信側メディアノードが、受け取られなかったデータパケットを再送信するようにゲートウェイに要求することができる。なお、この要求は、UDPオーバーIPを使用する実施形態において行うことができる。上述したように、いくつかの実施形態では、冗長データパケットが送信される。
【0083】
メディアノード104、106は、ネットワーク統計を保持することができる。様々な実施形態では、選択されたブロードキャスター又はゲートウェイが、サービス品質、レイテンシ、プロセッサ利用度及びネットワーク利用度のバランスを取るのに最適な送信方法を決定する役割を担う。例えば、ネットワークが、高帯域幅を利用できて個々のノード104、106への接続が強い良質なものである場合、保証された送信プロトコルを使用することができる。ネットワークが飽和している場合、又は低品質である場合には、マルチキャスト技術が好ましいと考えられる。さらなる方法では、帯域幅の節約、及び送信エラーの検出、訂正又は隠匿を補助することができる。一般に、マルチキャストプロトコル、サイマルキャストプロトコル及びポイントツーポイントプロトコルは、ストリーム構築の時点で決定される最も適したプロトコルによってサポートされ、ネットワーク品質、利用可能な処理能力及びストリームの数が決定プロセスの要因となる。
【0084】
メディアストリームを介して、ウォールクロックを基準にメディアクロックを回復させ、メディアフレーム又はサンプルグループに同期させることができる。メディアクロックは、ハードウェアフレームクロック、ワードクロック及びビットクロックの形成を促進することができる。論理的観点から見れば、メディアストリームを介した同期は、メディアノード104、106における正確なクロックの生成を保証することができる。水晶などに伴うわずかなばらつきがハードウェアに存在すると、クロックドリフト及びその他のクロックタイミングにばらつきが生じる可能性がある。メディアクロックとウォールクロックを常に測定して比較することにより、システムがドリフトを検出できるようになる。いくつかの実施形態では、ソフトウェア専用のメディアクロック回復機構が、メディアレンダリングバッファに対するメディアサンプルの追加又は除去を行って装置全体にわたってメディアクロックを再同期させることに関与する。いくつかの実施形態では、明らかなクリッキング又はスキッピングの効果が生じないようにしてレンダリングバッファの操作が行われる。ドリフト測定に基づいて、VCXO又は電圧制御発振器を使用するハードウェア機構をプロセッサから制御し、このハードウェア発振器をより緊密な同期にプッシュ又はプルすることができる。
【0085】
上述したように、本明細書で説明する様々なシステムは、共通タイミング基準を設定することによって複数の装置間でメディア再生を同期させることができる。例えば、メディアソースとメディアゲートウェイが協調してこのような共通タイミング基準を設定することもでき、又はメディアゲートウェイとメディアノードが協調してこのような共通タイミング基準を設定することもできる。タイミングパラメータを設定するという文脈では、本方法を2つのメディア装置間で、すなわち送信側メディア装置と受信側メディア装置の間で分割することができる。様々な実施形態では、共通タイミング基準が、送信側メディア装置におけるクロック値を受信側メディア装置において推定したものである。
【0086】
図8に、送信側メディア装置が受信側メディア装置に再生を同期させるための例示的な方法800を示す。この例示的な方法800は、例えば例示的な環境100のメディアソース102又はメディアゲートウェイ104などの、送信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法800は、例示的な方法700のステップ710の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【0087】
方法800は、ステップ805から開始してステップ810に進み、送信側装置が、タイミングパラメータの設定において受信側装置によって使用される「ビーコンメッセージ」のフラッディングを開始すべきであると判断することができる。例えば、送信側装置は、受信側装置の電源が入っていると判断し、受信側装置が仮想メディアネットワークに加わっていると判断し、又は送信側装置が受信側装置にメディアを送信し始めるべきであると判断することができる。ステップ815において、送信側装置は、新たなビーコンメッセージを生成する。このビーコンメッセージは、受信側装置によって認識されるいずれかのタイプのパケット又はその他のデータメッセージとすることができる。例えば、ビーコンメッセージは、送信側装置と受信側装置の両方が実装する専用プロトコルに従って形成することができる。受信側装置への途中にあるルータ又はスイッチなどの1又はそれ以上の媒介装置をビーコンメッセージが横切ることができる実施形態などの様々な実施形態では、送信側装置が、このビーコンメッセージが優先度の高いトラフィックを構成している旨のフラグ又はその他の指示を搬送するようにビーコンメッセージを構成する。ネットワーク内でビーコンメッセージに優先順位を付けるための様々な機構は、考えられる様々なネットワーキング技術によって利用される個々の優先順位付け方式に基づいて異なる。このようなビーコンメッセージの優先順位付けは、混合トポロジネットワークを介したルーティング時間を最適化する援助となり、これによって可変ネットワーク遅延因子を低減することができる。
【0088】
次に、ステップ820において、送信側装置は、現在送信側装置のクロックによって示されている時刻をビーコンメッセージにタイムスタンプする。このようなタイムスタンプは、「送信者タイムスタンプ」と呼ぶことができる。次に、ステップ825において、送信側装置は、1又はそれ以上の受信側装置にビーコンメッセージを送信する。ステップ820とステップ825の間に経過した時間は、受信側装置によって計算されるクロックオフセット値の固定遅延成分の一部を形成する。従って、方法800の様々な実装は、ステップ820とステップ825の間に行われる動作数を低減又は最小化するように努める。様々な実施形態では、送信側装置が、他の複数のメディア装置に対するタイミングパラメータの設定に関与する。例えば、メディアゲートウェイ104は、他の複数のメディアノード104、106にビーコンメッセージを送信することができる。いくつかのこのような実施形態では、送信側装置が、例えば、ビーコンメッセージのコピーを各メディア装置に個別にアドレス指定することにより、又は複数のメディア装置にメッセージをマルチキャストすることにより、ステップ825において複数のメディア装置にビーコンメッセージを送信する。これとは別に、又はこれに加えて、送信側装置は、他の複数のメディア装置に対応するように方法800を複数回実行する。
【0089】
ステップ830において、送信側装置は、送信側装置が受信側装置へのビーコンメッセージのフラッディングを終了したかどうかを判定する。例えば、送信側装置は、所定数のビーコンメッセージが送信されるまでビーコンメッセージのフラッディングを継続することができる。これとは別に、又はこれに加えて、様々な実施形態では、送信側装置が、ステップ830の条件を受信側装置からのフィードバックに基づかせる。例えば、受信側装置は、十分な同期が達成された時にメッセージを送信することができ、或いは所定数のビーコンメッセージが送信されたにも関わらず十分な同期が達成されなかった旨を示すメッセージを送信することができる。フラッディングを中止すべきかどうかを判定するさらに別の方法として、送信側装置は、フラッディング期間中にネットワーク性能をモニタし、ネットワーク性能が何らかの最低限の許容閾値を満たすまでフラッディングを継続する。例えば、送信側装置は、ビーコンメッセージに加えて、受信側装置に往復診断メッセージを送信することができる。或いは、受信側装置を、ネットワーク診断の目的で送信側装置にビーコンメッセージをさらに返送するように構成することもできる。送信側装置は、受信側装置からメッセージを受け取ると、1又はそれ以上のネットワーク性能測定値を生成する。例えば、送信側装置は、前回のフラッディングウィンドウを通じたネットワーク遅延又はジッタの測定値を生成することができ、この測定値が何らかの最低許容ネットワーク性能よりも低い場合には、たとえ所定数のビーコンメッセージを送信し終えていたとしてもビーコンメッセージをフラッディングし続ける。本明細書の教示に照らせば、ビーコンメッセージのフラッディングが十分であるかどうかを判定するためのこれらの及びその他の方法の様々な組み合わせを採用できることが明らかであろう。
【0090】
ステップ830において、送信側装置がビーコンメッセージのフラッディングを継続すべきであると判断した場合、方法800はステップ815に戻って追加のビーコンメッセージを送信する。フラッディングウィンドウが所定数のビーコンメッセージの送信を含む様々な実施形態では、送信側装置が、ネットワーク性能又はその他の因子に基づいて、前回のウィンドウが不十分であったと判断し、ステップ815に戻る前にビーコンメッセージカウンタをリセットすることにより、新たなウィンドウで別のビーコンメッセージの組の送信を開始する。一方、ステップ830において、送信側装置がフラッディングを終了すべきであると判断した場合、方法800はステップ835に進んで終了する。その後、送信側装置は、現在同期されている受信側装置にメディアを送信する。
【0091】
なお、様々な実施形態では、送信側装置がビーコンメッセージに基づいて受信側装置からリターンメッセージを受け取らなくてもよく、或いは、送信側装置がリターンメッセージを受け取る実施形態では、送信側装置がタイミングパラメータを設定する目的でリターンメッセージを利用することはない。いくつかの実施形態では、フラッディング期間が十分であるかどうかを判断する目的のみでリターンメッセージが使用される。従って、本明細書で説明する方法は、他のクロック同期法とは異なり、同期計算の大部分が送信側装置ではなく受信側装置によって行われる「一方向」同期法と呼ぶことができる。
【0092】
図9に、受信側メディア装置が送信側メディア装置に再生を同期させるための例示的な方法900を示す。例示的な方法900は、例えば例示的な環境100のメディアゲートウェイ104又はその他のメディアノード104、106などの受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法900は、例示的な方法700のステップ710の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【0093】
方法900は、ステップ905から開始してステップ910に進み、受信側装置は、新たなメッセージが受信又は処理された時に実行されている最小オフセット値を維持することに使用される最小オフセット変数「MinO」を初期化する。次に、ステップ915において、受信側装置は、送信側装置からビーコンメッセージを受け取る。次に、ステップ920において、受信側装置は、現在受信側装置のクロックによって示されている時刻に基づいてタイムスタンプを生成する。このようなタイムスタンプは、「受信者タイムスタンプ」、「R(x)」と呼ぶことができる。ステップ915とステップ920の間に経過した時間は、受信側装置によって計算されるクロックオフセット値の固定遅延成分の一部を形成する。従って、方法900の様々な実装は、ステップ920とステップ925の間に行われる動作数を低減又は最小化するように努める。
【0094】
ステップ925において、受信側装置は、ビーコンメッセージから送信者タイムスタンプ「S(x)」を抽出する。上述したように、送信者タイムスタンプは、例示的な方法800のステップ820のように送信者装置によって送信の直前にビーコンメッセージに挿入される。ステップ930において、受信側装置は、送信側装置が仮想メディアネットワークのメディアソースであるかどうかを判断する。例えば、受信側装置が仮想メディアネットワークのゲートウェイとして動作している場合、受信側装置は、送信側装置がメディアソースであると判断する。このような場合、方法900はステップ935に進む。次に、受信側装置は、送信者タイムスタンプを、送信側装置の時間領域から仮想メディアネットワークの時間領域に変換する。このような変換では、2つの装置間で以前にネゴシエートされたオフセットを加算又は減算することができる。このような時間領域間のネゴシエーション及び変換は、当業者に周知のあらゆる方法に従って行うことができる。いくつかの別の実施形態では、ソース装置とメディアノードが同じ時間領域でクロックを維持する。このようないくつかの実施形態には、ステップ930、935が存在しない。
【0095】
方法900は、ステップ935において送信者タイムスタンプを仮想メディアネットワークドメインに変換した後、或いはステップ930において送信者がメディアソースではないと判断した後にステップ940に進み、受信側装置は、送信者タイムスタンプ及び受信者タイムスタンプに基づいて、例えばこれら2つのタイムスタンプの差分などのオフセット値を計算する。この現在のオフセット値「CurO」は、送信者クロックと受信者クロックの間の実際のオフセットと、ビーコンメッセージが直面する2つのタイムスタンプS(x)及びR(x)の作成間のあらゆる遅延とを加えたものに相当する。上述したように、この遅延は2つの成分を含む。第1の遅延成分は、例えばメッセージが移動する回路及びデータ経路に関連する一定の遅延などの、ネットワークのハードウェア及びソフトウェアコンポーネントを横切るのに掛かった時間、並びにメッセージの送信/受信と、関連するタイムスタンプの生成との間の、OSが必要とする時間に関連する固定遅延である。このような固定遅延は、レンダリング処理の一部として既に考慮されている。第2の遅延成分は、経時的に変化する遅延に関連する可変ネットワーク遅延である。例えば、WiFiなどの共有メディアネットワークは、送信前にメディアがクリアになるのを待機する場合があり、従って異なる時点で異なる遅延が導入されることがある。
【0096】
この可変遅延は、さらなる遅延の導入しか行わない(遅延を除去することはない)ので、実際のクロックオフセットのより良好な推定は、最も遅延の少なかったメッセージから取得される。従って、方法900は、フラッディング中に取得される最小オフセット値を、実際のオフセットの最良の利用可能な推定として探索する。ステップ945において、受信側装置は、現在のオフセットCurOを以前に存在していた最小オフセットと比較し、或いはこのループの現在の反復がステップ910において初期化された最小オフセット値MinOに対する最初のものであるかどうかを比較する。CurOの方がMinOよりも小さい場合、CurOは、送信者クロックと受信者クロックの間の実際のオフセットのより厳密な推定値を表すと認識され、ステップ950において、受信者装置は、MinOの値にCurOの値を上書きする。
【0097】
ステップ955において、受信者装置は、送信者装置がビーコンメッセージのフラッディングを行っているかどうかを判断する。例えば、受信者装置は、さらなるビーコンメッセージを待っている時にタイムアウトが生じたかどうかを判断することができ、送信者装置がメディアメッセージを送信し始めたと判断することができ、所定数のビーコンメッセージが受け取られたと判断することができ、或いは送信側装置がフラッディングの終了を示す特別なメッセージを送信したと判断することができる。様々な実施形態では、受信者装置が、フラッディングが所望のオフセット精度を確立するのに十分であったかどうかを判断する。例えば、受信者装置は、ビーコンメッセージが受け取られた間隔を追跡し、この測定された間隔と既知の時間間隔との比較に基づいて、ネットワークが所望の精度のオフセット値を生じるほど十分に安定していたかどうかを判断することができる。ネットワークが十分に安定していなかった場合、受信側装置は、さらなるフラッディングを行うべきである旨を示すメッセージを送信側装置に送信する。様々な修正が明らかであろう。本明細書の教示に照らせば、ビーコンメッセージのフラッディングが十分であるかどうかを判定するためのこれらの及びその他の方法の様々な組み合わせを採用できることが明らかであろう。
【0098】
受信側装置が、さらなるフラッディングが行われている又は行われる予定であると判断した場合、方法900は、ステップ955からステップ915に戻ってさらなるビーコンメッセージを処理する。そうでなければ、方法900はステップ960に進み、受信側装置は、決定された最小オフセットに基づいてローカルクロックをリセットする。例えば、受信側装置は、現在のクロック値からMinOを減算して、送信側装置の実際のクロック値に近いと推定される新たな値にローカルクロックを設定することができる。ネットワークの固定遅延が分かっている又は推定されるいくつかの実施形態では、受信側装置が、現在のクロック値からMinOを減算し、固定遅延値に再加算して、計算されたオフセット値から実際のクロックオフセット値を分離しようと試みる。いくつかの実施形態では、受信側装置が、ローカルクロックの変更を全く行わず、代わりに送信者装置から受け取ったタイムスタンプとローカルクロックの比較において使用する最小オフセット値MinOを維持することができる。例えば、受信側装置は、あらゆるこのような比較の前にタイムスタンプにMinOを加算することができる。他の様々な修正が明らかであろう。方法900は、ステップ965に進んで終了することができる。
【0099】
様々な別の実施形態では、受信側装置が、以前に設定された下限オフセットを利用して、フラッディング期間中に計算された不当に大きなオフセットがクロックのリセットに使用されないことを確実にするよう支援する。例えば、フラッディング期間が高可変ネットワーク遅延期間に含まれる場合、計算されたオフセットが、送信者クロックと受信者クロックの間の実際のオフセット値よりも大きくなることがある。いくつかのこのような実施形態では、受信者が、最初にステップ940~950で計算された最小オフセットを以前に設定された下限オフセットと比較して、最小オフセットが下限オフセットよりも大きいかどうかを判定する。大きい場合、受信者は、この最小オフセットに基づいてクロックを更新することを拒否し、以前に設定された下限を使用し続ける。そうでなければ、この最小オフセット値は下限よりも小さく、従って下限よりも良好な推定値であるので、受信者は、ステップ960に詳述するようにクロックを更新する。下限を決定するための例示的な方法については、以下で図11に関連して詳細に説明する。
【0100】
様々な実施形態では、受信側装置が、方法900を定期的に実行して同期を再確立する。いくつかのこのような実施形態では、受信側装置が、クロックをその元々の値にリセットし、記憶されているオフセット値を削除し、又は方法900の以前の実行に基づいて行われたあらゆる変更を別様に「巻き戻し」して、クロックオフセットの決定の「やり直し」を行う。受信側装置は、クロックオフセットを定期的に再設定することにより、送信側装置のクロックと受信側装置のクロックとの間のクロックドリフトをより良く考慮することができる。
【0101】
本明細書の教示に照らせば、方法900は、各ビーコンメッセージを受け取り時に処理するリアルタイム方法として説明されるのに対し、様々な別の実施形態は、ビーコンメッセージをバッチとして処理する方法を利用することが明らかであろう。例えば、いくつかのこのような実施形態では、受信側装置が、複数のビーコンメッセージを受け取り、受け取った時点でメッセージにタイムスタンプを行い、その後の時点で、ステップ925~960に関して説明した方法と同様の方法で、受け取ったメッセージを順に処理して最小オフセットを見つけ出す。
【0102】
上述の方法は、2つの装置間の最良のクロックオフセット推定値を生成しようと試みるものであると理解されるであろう。この初期フラッディング期間後にはネットワーク状態が一時的に改善され、後でより良好な推定値を取得できる可能性がある。従って、初期タイミングパラメータ設定後には、クロックオフセットをより良く推定しようと試みる方法を採用することができる。このような方法は、水晶、温度又はその他のパラメータの違いによって送信側装置のクロックと受信側装置のクロックがわずかに異なる速度で動作することがあるクロックドリフトの可能性に対処することもできる。
【0103】
図10に、メディアストリーミング中に受信側メディア装置が良好な再生同期を取得するための例示的な方法1000を示す。例示的な方法1000は、例えば、例示的な環境100のメディアゲートウェイ104又はその他のメディアノード104、106などの、受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法1000は、例示的な方法700のステップ780の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【0104】
方法1000は、ステップ1005から開始してステップ1010に進み、受信側装置が、送信側装置からメディアデータパケットを受け取る。次に、ステップ1015において、受信側装置は、受信側装置のクロックによって現在示されている時刻に基づいてタイムスタンプR(x)を生成する。ステップ1020において、受信側装置は、メディアデータメッセージから送信者タイムスタンプ「S(x)」を抽出する。送信者タイムスタンプは、送信者装置によって送信の直前にメディアデータメッセージに挿入しておくことができる。ステップ1025において、受信側装置は、送信側装置が仮想メディアネットワークのメディアソースであるかどうかを判断する。例えば、受信側装置が仮想メディアネットワークのゲートウェイとして動作している場合、受信側装置は、送信側装置がメディアソースであると判断することができる。このような場合、方法1000はステップ1030に進む。次に、受信側装置は、送信者タイムスタンプを、送信側装置の時間領域から仮想メディアネットワークの時間領域に変換する。このような変換では、2つの装置間で以前にネゴシエートされたオフセットを加算又は減算することができる。このような時間領域間のネゴシエーション及び変換は、当業者に周知のあらゆる方法に従って行うことができる。いくつかの別の実施形態では、ソース装置とメディアノードが同じ時間領域でクロックを維持する。このようないくつかの実施形態では、ステップ1020、1030が存在する。
【0105】
方法1000は、ステップ1030において送信者タイムスタンプを仮想メディアネットワークドメインに変換した後、或いはステップ1025において送信者がメディアソースではないと判断した後にステップ1035に進み、受信側装置は、送信者タイムスタンプ及び受信者タイムスタンプに基づいて、例えばこれら2つのタイムスタンプの差分などのオフセット値を計算する。送信者タイムスタンプが変換されている場合、この変換されたタイムスタンプがオフセットの計算において使用される。このオフセット値「O」は、送信者クロックと受信者クロックの間の実際のオフセットと、メディアデータメッセージが直面する2つのタイムスタンプS(x)及びR(x)の作成間の、固定遅延及び可変遅延の両方を含むあらゆる遅延とを加えたものに相当する。ステップ1040において、受信側装置は、このオフセット値が以前に利用したオフセット値よりも良好なクロック間のオフセット推定を表しているかどうかを判断する。例えば、以前に決定された最小オフセットを用いて受信側装置のクロックをリセットする様々な実施形態では、受信側装置が、現在のオフセットOがゼロ未満であるかどうかを判定する。この比較における肯定的な結果は、以前に使用した最小オフセットに何らかの可変ネットワーク遅延が組み込まれており、この可変ネットワーク遅延をローカルクロックから減算すると理想的な設定点を「超過」してしまい、これによりローカルクロックが送信者のクロックに遅れて設定されることを示す。現在のオフセットOは、以前に使用した最小値よりも少ない(又はゼロの)可変遅延を組み込むことにより、負の数字であることによってこの超過を明らかにすることができる。このような場合、現在のオフセットOは、実際のクロックオフセットの新たな最良の推定値を示すと判断され、ステップ1045において、このオフセットOを用いて再びローカルクロックをリセットすることにより、前回の超過を少なくとも部分的に是正することができる。他の実施形態のための様々な修正が明らかであろう。例えば、以前に決定された最小オフセットがローカルクロックの修正に使用されずにタイムスタンプの比較において使用され続ける実施形態では、ステップ1040において、現在のオフセットOがそれまでの最小オフセットMinOよりも小さいかどうかが判定され、小さい場合には、ステップ1045において、受信側装置がMinOをオフセットOに等しく設定する。様々な他の修正が明らかであろう。
【0106】
様々な別の実施形態では、受信側装置が、以前に設定された下限オフセットを利用して、フラッディング期間中に計算された不当に大きなオフセットがクロックのリセットに使用されないことを確実にするよう支援する。いくつかのこのような実施形態では、受信者が、最初にステップ1035で計算されたオフセットを以前に設定された下限オフセットと比較して、このオフセットが下限オフセットよりも良好な実際のオフセットの推定を表すかどうかを判定する。表す場合、受信者は、この最小オフセットに基づいてクロックを更新することを拒否し、以前に設定された下限を使用し続ける。そうでなければ、このオフセット値は下限よりも良好な推定であるので、受信者は、ステップ1045に詳述するようにクロックを更新する。下限を決定するための例示的な方法については、以下で図11に関連して詳細に説明する。
【0107】
ステップ1050において、受信側装置は、受け取ったメディアパケットの処理に進み、例えば適当な時点でメディア出力をレンダリングする。例えば、受信側装置は、提示時刻を抽出して、メディアデータパケットから送信者タイムスタンプと受信者タイムスタンプを分離することができる。このような提示時刻は、メッセージによって搬送されるメディアデータをレンダリングすべき時刻を示す。受信側装置は、提示時刻を抽出した後、この提示時刻と一致する時刻にメディアデータをレンダリングする。例えば、受信側装置は、ローカル再生装置によって再生されるようにメディアデータをバッファに記憶することができ、或いはメッセージが再生されるように別のメディアノードに転送することもできる。提示時刻と「一致」する現在時刻は、現在時刻と提示タイムスタンプが等しいことを含むことができるが、他の形の一致を含むこともできる。例えば、様々な実施形態では、現在時刻から存続中の最小オフセット値を差し引いたものが提示タイムスタンプに等しい時に現在時刻が一致する。これに加えて、又はこれとは別に、一致のための比較は、固定遅延値を加算し、減算し、又は別様に考慮する。ローカルクロック、提示タイムスタンプ、及びその他の潜在的に利用可能な値に基づいて再生に適した時刻を決定するための他の様々な方法が明らかであろう。さらに、現在時刻が最小オフセットに基づいて提示時刻に一致するという概念は、以前に最小オフセット値によって修正されたローカルクロックを利用する比較が、その他の点では最小オフセット値を明確に考慮しないことを含むと理解されるであろう。様々な実施形態は、適当な時点で確実にデータが出力されるように、出力の直前にこのような比較を行う。他の実施形態は、このような比較を使用して、メディアが提示時刻に再生される可能性が高い再生バッファ内の位置にメディアデータを挿入する。このような挿入は、再生タイミングを調整するために、メディアデータの挿入前に「ダミー」データを挿入することを含むことができる。バッファ内のデータの再生タイミングを制御する様々な追加方法が明らかであろう。
【0108】
図11に、下限オフセットを決定する例示的な方法1100を示す。上述したように、様々な別の実施形態は、より良好なクロックオフセット推定を求めるために、ビーコンフラッディング及びメディアパケットの分析前に下限オフセットをさらに設定する。例示的な方法1100は、例えば、例示的な環境100のメディアゲートウェイ104又はその他のメディアノード104、106などの、受信側メディア装置として機能するいずれかのメディア装置によって実行することができる。方法1100は、例示的な方法700のステップ710の一部として、又はメディア装置間におけるタイミングパラメータの同期が適切なあらゆる時点で実行することができる。
【0109】
方法1100は、ステップ1105から開始してステップ1110に進み、受信側装置は、送信側装置からのハンドシェークメッセージを受け取ることによって下限を計算するように、受信側装置と送信側装置間の往復輸送からタイムスタンプを収集し始める。様々な実施形態では、このハンドシェークメッセージが、ビーコンメッセージ又はメディアデータパケットが送信されるチャネルとは異なるチャネルを介して送信される。例えば、Bluetoothチャネルを介してハンドシェークメッセージを送信する一方で、WiFiチャネルを介してビーコンメッセージ及びメディアデータパケットメッセージを送信することができる。送信者は、使用するハンドシェークプロトコルの一部として、送信者がハンドシェークメッセージを送信した送信者クロックに従う時刻を示すタイムスタンプt1をハンドシェークメッセージに含める。次に、ステップ1115において、受信者は、ステップ1110のハンドシェークメッセージの受信に近い時刻に、受信者クロックに従う受信タイムスタンプt2を記録する。
【0110】
次に、受信者装置は、受信者が送信者にハンドシェークメッセージを再送する受信者クロックに従う時刻を示すタイムスタンプt3をステップ1120において生成することにより、送信者装置にハンドシェークメッセージを返送する準備を行う。いくつかの実施形態では、受信者が、送信者から受け取ったハンドシェークメッセージ又は新たに生成されたハンドシェークメッセージにタイムスタンプt3を挿入することができる。次に、ステップ1125において、受信者は、タイムスタンプt4の生成に近い時刻に、送信者にハンドシェークメッセージを送信する。次に、ステップ1130において、受信者は、再び送信者からのハンドシェークメッセージを受け取ることができる。この時点で、ハンドシェークメッセージは、送信者がハンドシェークメッセージを処理するステップの一部として、送信者がハンドシェークメッセージを受け取った時刻を示す送信者クロックに従うタイムスタンプt4を含む。
【0111】
後述するように、これらの4つのタイムスタンプt1~t4を用いて下限オフセットを計算することができる。しかしながら、いくつかの実施形態では、最初に受信者装置がタイムスタンプt1~t4を用いて、ハンドシェークメッセージが体験するネットワーク輸送時間を計算し、ハンドシェークプロセス中のネットワーク遅延が、正確な又は別様に許容できる下限をもたらすほど十分に低かったどうかを判断する。従って、受信者装置は、ステップ1135において、輸送時間=((t2-t1)+(t4-t3))/2という式を用いて輸送時間を計算する。次に、受信者は、例えば輸送時間が所定の閾値よりも短いかどうかを判断することにより、計算された輸送時間が許容できるものであるかどうかを判断する。計算された輸送時間が許容できない場合、受信者装置は、ステップ1145において、再びハンドシェークプロセスを試行するように送信者に指示し、ステップ1110に戻ってこのプロセスを再試行する。一方、ネットワーク輸送時間が許容できるものである場合、受信者は、ステップ1150において、下限オフセット=((t2-t1)-(t4-t3))/2という式を用いて、タイムスタンプを使用して下限オフセットを計算する。その後、方法はステップ1155に進んで終了する。
【0112】
いくつかの実施形態では、送信者クロックが受信者クロックよりも遅れている場合があり、従って受信者装置によって生成されるタイムスタンプの方が送信者装置によって生成されるタイムスタンプよりも小さくなることが明らかであろう。上記の下限クロックオフセットの式は、計算された値の符号に基づいてクロック調整の方向を示すことができると理解されるであろう。いくつかの実施形態では、受信者装置が、相対的な調整方向ではなく大きさのみが比較されるように、様々な計算されたオフセットを比較してどのオフセットがより良好な推定であるかを判断する際に絶対値を利用することができる。
【0113】
様々な実施形態では、受信側装置が、方法1100を定期的に実行して同期を再確立する。いくつかのこのような実施形態では、受信側装置が、クロックをその元々の値にリセットし、記憶されている下限オフセット値を削除し、又は方法1100の以前の実行に基づいて行われたあらゆる変更を別様に「巻き戻し」して、クロックオフセットの決定の「やり直し」を行う。受信側装置は、下限オフセットを定期的に再設定することにより、送信側装置のクロックと受信側装置のクロックとの間のクロックドリフトをより良く考慮することができる。
【0114】
以上に照らして、様々な実施形態は、可変遅延を示すネットワークに属するメディア装置間におけるメディア再生の同期を可能にする。例えば、受信側装置が複数のメッセージから最小クロックオフセットを識別する一方向同期法を実装することにより、クロック同期に対する可変遅延の影響を低減することができる。さらに、受信側装置は、メディアストリームが開始された後に、より良好な同期パラメータを継続的に探索することにより、クロックドリフトを考慮しながら同期を改善することができる。上記に照らして様々な追加の利点が明らかであろう。
【0115】
上述の説明から、本発明の様々な例示的な実施形態をハードウェアで実装できることが明らかであろう。また、様々な例示的な実施形態は、少なくとも1つのプロセッサによって読み取られ、本明細書で詳述した動作を行うように実行することができる、機械可読記憶媒体に記憶された命令として実装することもできる。機械可読記憶媒体は、パーソナルコンピュータ又はラップトップコンピュータ、サーバ又はその他のコンピュータ装置などの機械によって読み取ることができる形で情報を記憶するためのいずれかの機構を含むことができる。従って、有形の非一時的機械可読記憶媒体は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス及び同様の記憶媒体を含むことができる。さらに、本明細書で使用した「プロセッサ」という用語は、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は本明細書で説明した機能を実行できる他のあらゆる装置を含むと理解されるであろう。
【0116】
当業者であれば、本明細書におけるあらゆるブロック図は、本発明の原理を具体化する例示的な回路の概念図を表すものであると理解するであろう。同様に、あらゆるフローチャート、フロー図、状態遷移図及び疑似コードなどは、実質的に機械可読媒体内で表現することができ、従ってコンピュータ又はプロセッサを明示的に図示しているかどうかに関わらず、このようなコンピュータ又はプロセッサによって実行できる様々な処理を表すものであると理解されるであろう。
【0117】
本発明のいくつかの例示的な態様を具体的に参照しながら様々な例示的な実施形態を詳細に説明したが、本発明では他の実施形態も可能であり、その詳細は様々な明白な点で修正することができると理解されたい。当業者には容易に明らかなように、本発明の思想及び範囲から逸脱することなく変形及び修正を行うことができる。従って、上述の開示、説明及び図は例示を目的とするものにすぎず、特許請求の範囲のみによって規定される本発明を決して限定するものではない。
【符号の説明】
【0118】
100 例示的な環境
102a メディアソース
102b メディアソース
104a リビングルームのゲートウェイ
104b 寝室のゲートウェイ
106a オフィスのレンダラ
106b キッチンのレンダラ
106c ゲスト用寝室のレンダラ
108 ステレオ受信機
110 スピーカ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11