JP6290915B2 - Common event-based multi-device media playback - Google Patents

Common event-based multi-device media playback Download PDF

Info

Publication number
JP6290915B2
JP6290915B2 JP2015543100A JP2015543100A JP6290915B2 JP 6290915 B2 JP6290915 B2 JP 6290915B2 JP 2015543100 A JP2015543100 A JP 2015543100A JP 2015543100 A JP2015543100 A JP 2015543100A JP 6290915 B2 JP6290915 B2 JP 6290915B2
Authority
JP
Japan
Prior art keywords
clock
media
destination device
destination
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015543100A
Other languages
Japanese (ja)
Other versions
JP2016503623A5 (en
JP2016503623A (en
Inventor
ラヴィ、ラージャパクセ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Blackfire Research Corp
Original Assignee
Blackfire Research Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Blackfire Research Corp filed Critical Blackfire Research Corp
Publication of JP2016503623A publication Critical patent/JP2016503623A/en
Publication of JP2016503623A5 publication Critical patent/JP2016503623A5/ja
Application granted granted Critical
Publication of JP6290915B2 publication Critical patent/JP6290915B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43076Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/18Arrangements for synchronising broadcast or distribution via plural systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/242Synchronization processes, e.g. processing of PCR [Program Clock References]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/04Synchronising
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R2227/00Details of public address [PA] systems covered by H04R27/00 but not provided for in any of its subgroups
    • H04R2227/005Audio distribution systems for home, i.e. multi-room use

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

本開示は、デジタルメディアの分野に関し、特に、デジタルマルチメディア同期再生の分野に関する。   The present disclosure relates to the field of digital media, and in particular to the field of digital multimedia synchronized playback.

今日、多くの形態のデジタルメディア、多くのタイプのデジタルメディアソース、多くのタイプのデジタルメディア再生(レンダリング)システム、及びメディアソースをメディア再生システムに接続する多くの方法がある。   Today there are many forms of digital media, many types of digital media sources, many types of digital media playback (rendering) systems, and many ways of connecting media sources to media playback systems.

以下、メディアと呼ぶデジタルメディアは、デジタルビデオディスク、メディアファイル、及びメディアストリームを含む多くの形態、フォーマット、及びコンテナで提供される。メディアコンテンツは、オーディオ、ビデオ、イメージ、又はメタデータメディアコンポーネント、及びそれぞれの様々な組み合わせであることができる。例えば、普及しているオーディオフォーマットはMP3として知られており、普及しているビデオフォーマットはH264である。MP3は、動画専門家集団(MPEG)によりMPEG−1規格の一環として設計され、後にMPEG−2規格で拡張されたオーディオ固有のメディアフォーマットである。H264は、国際標準化機構(ISO)/国際電気標準会議(IEC)共同作業部会である動画専門家集団(MPEG)によって開発された規格である。動画は通常、ビデオチャネル及び複数のオーディオチャネルを内部に有するマルチメディアフォーマットである。例えば、5.1動画は、1つのビデオチャネル(メディアコンポーネント)と、6つのオーディオチャネル(オーディオコンポーネント)とを含む。5.1は、6チャネルサラウンド音響マルチチャネルオーディオシステムの一般名称である。   Digital media, hereinafter referred to as media, is provided in many forms, formats, and containers including digital video discs, media files, and media streams. Media content can be audio, video, image, or metadata media components, and various combinations of each. For example, a popular audio format is known as MP3, and a popular video format is H264. MP3 is an audio-specific media format that was designed as part of the MPEG-1 standard by the Moving Picture Experts Group (MPEG) and later extended with the MPEG-2 standard. H264 is a standard developed by a group of motion picture professionals (MPEG), a joint working group of the International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC). Movie is usually a multimedia format with a video channel and multiple audio channels inside. For example, a 5.1 moving image includes one video channel (media component) and six audio channels (audio component). 5.1 is a generic name for a 6-channel surround sound multi-channel audio system.

デジタルメディアソースは、デジタルビデオディスクプレーヤ、ブルーレイプレーヤ、コンピュータ及びモバイルデバイス等のメディアデバイス並びにインターネットベースの「クラウド」メディアサービスを含む。ブルーレイディスク(BD)は、ブルーレイディスクアソシエーションによって開発された光ディスク記憶媒体である。インターネットベースのメディアサービスは、ネットフリックス(Netflix)(登録商標)及びスポティファイ(Spotify)(登録商標)等のサービスを含む。ネットフリックスは、ネットフリックス社(Netflix Inc.)のメディアサービスであり、商標である。スポティファイは、スポティファイ有限会社(Spotify Ltd.)のメディアサービスであり、商標である。デジタルメディア再生(メディアレンダリング宛先)システムは、コンピュータベースのデバイス、ラップトップ、及びスマートフォン、並びにネットワークオーディオ及びビデオデバイスを含む。スマートTV(SmartTV)は、ネットフリック等のインターネット(クラウド)ベースのメディアサービスからメディアを再生することができるデジタルメディアレンダリングデバイスの一例である。スマートTVは、「コネクトTV(Connected TV)」又は「ハイブリッドTV(Hybrid TV)」と呼ばれることもあり、近代のテレビセット及びセットトップボックスへのインターネット及びウェブの特徴の統合と、コンピュータとこれらのテレビセット/セットトップボックスとの間の技術的収束とを記述するために使用される。インターネットラジオデバイスは、デジタルメディアレンダリングデバイスの別の例である。   Digital media sources include digital video disc players, Blu-ray players, media devices such as computers and mobile devices, and Internet-based “cloud” media services. Blu-ray Disc (BD) is an optical disc storage medium developed by the Blu-ray Disc Association. Internet-based media services include services such as Netflix (registered trademark) and Spotify (registered trademark). Netflix is a media service and trademark of Netflix Inc. Spotify is a media service and trademark of Spotify Ltd. Digital media playback (media rendering destination) systems include computer-based devices, laptops and smartphones, and network audio and video devices. Smart TV is an example of a digital media rendering device that can play media from Internet (cloud) based media services such as net flicks. Smart TV, sometimes referred to as “Connected TV” or “Hybrid TV”, integrates Internet and web features into modern TV sets and set-top boxes, computers and these Used to describe the technical convergence between the television set / set top box. An Internet radio device is another example of a digital media rendering device.

これらのメディアソースとデバイスとの接続は様々であるが、インターネットプロトコル(IP)プロトコルを使用するネットワークベースの接続に向かって経時進化している。これは、IP接続が便利であり、普遍的であり、安価であるためである。   The connection between these media sources and devices varies, but has evolved over time to network-based connections using the Internet Protocol (IP) protocol. This is because IP connection is convenient, universal and inexpensive.

IPネットワークは多くの形態で提供される。最も普及しているのは、イーサネット(登録商標)ベースの有線IPネットワーキングである。イーサネットは、IEEE(米電気電子技術者協会)規格802.3として標準化されたローカルエリアネットワーク(LAN)のコンピュータネットワーキング技術のファミリである。近年、モバイル計算デバイスの普及に伴い、Wi−Fi(登録商標)(IPネットワークの一種)が、ネットワークデバイスを無線接続する最も普及した手段になった。Wi−FiはWi−Fiアライアンス(Wi-Fi Alliance)の商標であり、標準のIEEE802.11ファミリを使用する製品のブランド名である。IPネットワークは、ユニキャスト、マルチキャスト、及びブロードキャストメッセージングを含む幾つかの異なるタイプのメッセージングを使用することができ、そのようなメッセージングは、IPパケットの送信である。   IP networks are provided in many forms. The most popular is Ethernet-based wired IP networking. Ethernet is a family of local area network (LAN) computer networking technologies standardized as IEEE (Institute of Electrical and Electronics Engineers) standard 802.3. In recent years, with the spread of mobile computing devices, Wi-Fi (registered trademark) (a type of IP network) has become the most popular means of wirelessly connecting network devices. Wi-Fi is a trademark of the Wi-Fi Alliance and is the brand name for products that use the standard IEEE 802.11 family. An IP network can use several different types of messaging, including unicast, multicast, and broadcast messaging, such messaging being the transmission of IP packets.

「ユニキャスト」という用語は、情報が1つのみの送信者から1つのみの受信者に送信されるタイプのインターネットプロトコル伝送を指すために使用し得る。換言すれば、ユニキャスト伝送は、2つのみのノード間での1対1ノード伝送である。ユニキャストでは、各出力パケットはユニキャスト宛先アドレスを有し、これは、パケットがそのアドレスを有する特定の宛先に向けられることを意味する。そのパケットをリッスンし得る全ての他の宛先は、パケットの宛先アドレスがその宛先のアドレスと同じではない場合、パケットを無視する。   The term “unicast” may be used to refer to a type of Internet protocol transmission in which information is transmitted from only one sender to only one recipient. In other words, unicast transmission is a one-to-one node transmission between only two nodes. In unicast, each outgoing packet has a unicast destination address, which means that the packet is directed to a specific destination with that address. All other destinations that can listen to the packet ignore the packet if the destination address of the packet is not the same as the destination address.

多くのIPプロトコルは、ソケットアプリケーションプログラミングインタフェースを介してソフトウェアプログラムからアクセスされる。このソケットインタフェースは、POSIX規格の一環として定義されている。POSIXは、オペレーティングシステムの互換性を維持するためにIEEEによって指定される規格のファミリである「ポータブルオペレーティングシステムインタフェース」の頭字語である。   Many IP protocols are accessed from software programs through a socket application programming interface. This socket interface is defined as part of the POSIX standard. POSIX is an acronym for “Portable Operating System Interface,” a family of standards specified by the IEEE to maintain operating system compatibility.

IPネットワーキングの利便性及び利点は、これらのメディアソース及び再生システムの全てが、まだネットワーク対応ではない場合、ネットワーク対応になりつつあることを意味する。多くのブルーレイプレーヤが現在では、イーサネット及びWi−Fiネットワーク接続を有する。今日、大半のよりハイエンドのTVは、ネットワーク機能を有するスマートTVである。同様に、オーディオ再生デバイス及びラジオであっても、ネットワーク及びインターネット対応である。   The convenience and advantage of IP networking means that all of these media sources and playback systems are becoming network capable if they are not yet network capable. Many Blu-ray players now have Ethernet and Wi-Fi network connections. Today, most higher-end TVs are smart TVs with network capabilities. Similarly, audio playback devices and radios are compatible with the network and the Internet.

携帯電話、タブレット、ドキュメントリーダ、又はノートブック等のモバイルデバイスは、メディアを受信して記憶することができ、強力なマルチメディア(オーディオ及びビデオ)機能を有し、高帯域幅であり、広く深いコンテンツを有するオンラインメディアサービスにアクセスすることができるセル電話データサービス又はブロードバンドリンク(Wi−Fi等)を介してインターネットに接続し得る。   Mobile devices such as mobile phones, tablets, document readers, or notebooks can receive and store media, have powerful multimedia (audio and video) capabilities, high bandwidth, wide and deep It may be connected to the Internet via a cell phone data service or a broadband link (such as Wi-Fi) that can access an online media service with content.

これらの様々な形態のデジタルメディア、メディアサービス及びメディアソース、並びに再生システムの使用事例又は用途は進化してきた。当初、IPネットワークを介してメディア宛先にメディアソースを接続するだけで十分であった。これは今日、ネットフリックス等のインターネットベースのメディアソースサービス及びメディア宛先等のコンピュータと広く併用されている。ユーザは、有線IPネットワーク(インターネット)を介してコンピュータにストリーミングされるネットフリックス動画を見る。これは、有線IPネットワークを介するシングルポイント(1つのIPソース)−シングルポイント(1つのIP宛先)接続の場合である。ネットフリックスメディアサービスは同じメディアを複数の仮定に送信し得るが、これらの各々はシングルポイント−シングルポイントTCP/IP接続である。この更なる進化は、有線イーサネット接続の代わりに、無線Wi−Fi接続を使用することである。それでもこれはなお、シングルポイント−シングルポイント接続である。   Use cases or applications of these various forms of digital media, media services and media sources, and playback systems have evolved. Initially, it was sufficient to connect the media source to the media destination via the IP network. This is widely used today with computers such as Internet-based media source services such as Netflix and media destinations. A user views a Netflix video streamed to a computer via a wired IP network (Internet). This is the case for a single point (one IP source) -single point (one IP destination) connection over a wired IP network. Netflix media services may send the same media to multiple assumptions, each of which is a single point-single point TCP / IP connection. This further evolution is to use a wireless Wi-Fi connection instead of a wired Ethernet connection. Nevertheless, this is still a single point-single point connection.

メディアソースが単一の宛先ではなく複数の宛先に接続する、上記使用事例の更なる拡張が存在する。これらはシングルポイント(1つのIPソース)−マルチポイント(複数のIP宛先)用途である。一例は、ユーザが、無線ビデオ再生デバイスに対して5.1動画メディアファイルを再生しており、6つの独立無線オーディオ宛先が完全な5.1サラウンド音響システムを構成する場合である。この場合、メディアは、1つのメディアソースから7つのメディア宛先に同時に送信されている。別の例では、ユーザは、1つのメディアソースから、家の6つの異なる部屋のあちこちに配置された6つの再生システムに向けて音楽を再生している。   There is a further extension of the use case above where the media source connects to multiple destinations instead of a single destination. These are single point (one IP source) -multipoint (multiple IP destinations) applications. An example is when a user is playing a 5.1 video media file to a wireless video playback device, and six independent wireless audio destinations constitute a complete 5.1 surround sound system. In this case, media is being sent simultaneously from one media source to seven media destinations. In another example, a user is playing music from one media source to six playback systems located around six different rooms in the house.

これらの両事例において、全ての宛先でメディアを時間同期して再生(レンダリング)する必要がある。さらに、メモリの使用を最小に維持するなど、メディアソースでのリソースの使用を制限する必要がある。加えて、メディアを受信する複数のデバイスがネットワーク帯域幅を効率的に管理する必要がある。   In both of these cases, it is necessary to play (render) the media in time synchronization at all destinations. In addition, resource usage at the media source needs to be limited, such as keeping memory usage to a minimum. In addition, multiple devices that receive media need to manage network bandwidth efficiently.

現在、同じメディアデータを複数のネットワーク宛先に送信する必要がある場合、そうする一般的な技法は、データを受信する必要がある複数の宛先へのデータマルチキャストを使用することである。そのようなシステムでは、メディアは全ての宛先にマルチキャストされ、メディアを適宜レンダリングしようとすることは、各宛先次第である。レンダリング中、レンダラーが新しいメディアデータを受信しないか、又は正しく受信しないエラーがある場合、レンダラーは、誤ったデータをレンダリングし、次に、正確なデータを受信したとき、エラー後のポイントから正確なメディアを復元して正確なメディアレンダリングを継続し得る。   If currently the same media data needs to be sent to multiple network destinations, a common technique to do so is to use data multicast to multiple destinations that need to receive the data. In such a system, the media is multicast to all destinations, and it is up to each destination to attempt to render the media accordingly. During rendering, if there is an error that the renderer does not receive new media data or does not receive it correctly, the renderer renders the incorrect data and then receives the correct data from the point after the error when it receives the correct data. The media can be restored to continue accurate media rendering.

ここで考えられる用途では、メディアをソースから、同じ聴取及び閲覧空間内のTV及びスピーカ等の複数のメディアデバイスに送信する必要がある。さらに、このメディアをWi−Fi等の無線ネットワークを介して送信する必要がある。   In the application considered here, it is necessary to send media from a source to multiple media devices such as TVs and speakers in the same listening and viewing space. Furthermore, it is necessary to transmit this media via a wireless network such as Wi-Fi.

これらの用途では、これは聴き手及び/又は閲覧者がいかなる非意図的なメディア経験にも気付かないように、同じ聴取又は閲覧ゾーン内にあるスピーカ等の全てのメディアレンダリングデバイスを互いに精密に同期する必要があることを意味する。   In these applications, this precisely synchronizes all media rendering devices such as speakers within the same listening or viewing zone with each other so that the listener and / or viewer is unaware of any unintended media experience. It means you need to.

第二に、メディアは無線を介してトランスポートされるため、メディアが各宛先で確実に受信されないか、又は均一に受信されないメディアエラーの可能性が非情に高い。パケットの送信にブロードキャスト又はマルチキャストを使用する場合、同じブロードキャスト又はマルチキャストパケットは、ある宛先では受信されるが、別の宛先で受信/リッスンされないことがある。   Second, because the media is transported over the air, there is a high probability of media errors where the media is not reliably received at each destination or is not received uniformly. When using broadcast or multicast for packet transmission, the same broadcast or multicast packet may be received at one destination but not received / listened at another destination.

複数のメディア受信デバイスに送信される場合、メディアエラー及び同期損失という上記問題を解決するイベントベース同期型マルチメディア再生の方法が開示される。
好ましい実施形態によれば、結晶クロックサイクルに基づく同期を通して、各々オーディオ位相及びタイミングを維持する複数のメディア再生デバイスを備えるイベントベース同期型マルチメディア再生システムが開示される。この実施形態によれば、複数のメディア再生デバイスは、インターネット又はIPプロトコルを利用する任意の他のデータネットワーク等のIP対応ネットワークにより、複数のメディアソースデバイスに接続し得る。メディアは、そのようなネットワークを介して再生デバイスにブロードキャストし得、各再生デバイスは、再生中に望ましいであろう同様又は別個のメディア要素を再生し得る(例えば、当技術分野の音響システムで一般的なように、1つのスピーカが左オーディオチャネルを再生し得、一方、第2のスピーカが右オーディオチャネルを再生し得る)。
An event-based synchronized multimedia playback method is disclosed that solves the above problems of media errors and loss of synchronization when transmitted to multiple media receiving devices.
According to a preferred embodiment, an event-based synchronized multimedia playback system is disclosed comprising a plurality of media playback devices each maintaining audio phase and timing through synchronization based on crystal clock cycles. According to this embodiment, the plurality of media playback devices may be connected to the plurality of media source devices by an IP-enabled network such as the Internet or any other data network that utilizes the IP protocol. Media can be broadcast to playback devices over such networks, and each playback device can play similar or separate media elements that may be desirable during playback (eg, common in acoustic systems in the art). As can be seen, one speaker can play the left audio channel, while the second speaker can play the right audio channel).

好ましい実施形態によれば、メディアソースデバイスと、各々ローカルクロックを備える複数の宛先デバイスとを備えるイベントベース同期型マルチメディア再生システムが開示される。メディアソースデバイス内の同期モジュールは、メディアソースにおいて一意のイベント番号nを含む共通イベントEを複数の宛先デバイスの各々に送信する。各宛先デバイスは、イベントEを受信した時刻Dxを記録して、その時刻Dx及び一意のイベント番号nを含む肯定応答メッセージを同期モジュールに返信する。同期モジュールは、複数の受信デバイスの各々について、各受信デバイスのクロック信号間の位相差及び周波数差を特定し、差を補償する位相調整値及び周波数調整値を計算し、それに従ってクロック位相及び周波数を調整するように各宛先デバイスに指示する。各受信デバイスは、所望値にローカルクロックを調整し、サンプルレート変換を実行して、メディア再生を同期させる。 According to a preferred embodiment, an event-based synchronized multimedia playback system is disclosed comprising a media source device and a plurality of destination devices each comprising a local clock. Synchronization the media source device module sends a common event E n that contains a unique event number n to each of the plurality of destination devices in the media sources. Each destination device records the time Dx n that received the event E n, and returns an acknowledgment message containing the time Dx n and unique event number n in synchronization module. The synchronization module identifies, for each of the plurality of receiving devices, a phase difference and a frequency difference between the clock signals of each receiving device, calculates a phase adjustment value and a frequency adjustment value to compensate for the difference, and accordingly the clock phase and frequency Instruct each destination device to adjust. Each receiving device adjusts the local clock to the desired value, performs sample rate conversion, and synchronizes media playback.

別の好ましい実施形態によれば、イベントベース同期型マルチメディア再生方法が開示され、本方法は、(a)同期モジュールを含み、ネットワークに接続され、ネットワークを介してメディアをストリーミングするように構成されたメディアソースデバイスから、一意のイベント番号nを含む共通イベントEを定期的に送信するステップと、(b)ローカルクロックを備える複数の受信デバイスの各々でネットワークを介してイベントEを受信するステップと、(c)イベントEを受信した時刻Dxを各受信デバイスで記録するステップと、(d)少なくとも時刻Dx及び一意のイベント番号nを含む肯定応答メッセージを各受信デバイスからメディアソースに返信するステップと、(e)メディアソースデバイス及び複数の宛先デバイスのうちの1つに記憶され、そこで動作する同期モジュールを使用して、各宛先デバイスのクロック信号の位相差及び周波数差を特定するステップと、(f)ステップ(e)で特定された位相差及び周波数差を補償する周波数調整値を計算するステップと、(g)ステップ(f)で計算された周波数調整値に等しい量だけクロックの位相及び周波数を調整するように各受信デバイスに指示するステップと、(h)ステップ(c)で指示されたように各受信デバイスのローカルクロックを調整してメディア再生を同期させるステップとを含む。 According to another preferred embodiment, an event-based synchronized multimedia playback method is disclosed, the method comprising (a) a synchronization module, connected to a network and configured to stream media over the network. from a media source device has, for receiving and transmitting a common event E n that contains a unique event number n regularly, the event E n via a network at each of a plurality of receiving device with (b) a local clock step a, step a, (d) media source an acknowledgment message from the receiving device comprising at least time Dx n and unique event number n for recording by the receiving device time Dx n that received the (c) events E n And (e) a media source device and a plurality Identifying a phase difference and a frequency difference of the clock signal of each destination device using a synchronization module stored in and operating on one of the destination devices; and (f) identified in step (e) Calculating a frequency adjustment value that compensates for the phase difference and the frequency difference; and (g) instructing each receiving device to adjust the phase and frequency of the clock by an amount equal to the frequency adjustment value calculated in step (f). And (h) adjusting the local clock of each receiving device as instructed in step (c) to synchronize media playback.

添付図面は、開示される構成の幾つかの実施形態を示し、説明と一緒に、実施形態による本発明の原理を説明する役割を果たす。図面に示される特定の実施形態は単なる例示であり、開示される実施形態の範囲を限定することを意図しないことを当業者は認識し得る。   The accompanying drawings illustrate several embodiments of the disclosed configuration and together with the description serve to explain the principles of the invention according to the embodiments. One skilled in the art can appreciate that the specific embodiments illustrated in the drawings are merely exemplary and are not intended to limit the scope of the disclosed embodiments.

本発明の一実施形態による、2つのオーディオサブシステムを備える例示的なマルチメディアシステムの図である。1 is an exemplary multimedia system comprising two audio subsystems according to an embodiment of the invention. FIG. 本発明の一実施形態による、例示的なオーディオ再生システムの詳細図である。1 is a detailed view of an exemplary audio playback system, according to one embodiment of the invention. FIG. 本発明の一実施形態による、時間参照のための例示的なクロックベースシステムの図である。FIG. 3 is an exemplary clock-based system for time reference according to one embodiment of the invention. 本発明の一実施形態による例示的なメッセージ時系列の図である。FIG. 4 is an exemplary message timeline diagram according to one embodiment of the invention. 本発明の一実施形態による例示的な共通イベントベースのシステムの図である。1 is a diagram of an exemplary common event-based system according to one embodiment of the invention. FIG. 本発明の一実施形態による例示的なイベント時系列の図である。FIG. 4 is an exemplary event timeline diagram according to one embodiment of the invention. 共通クロック方法と本発明の一実施形態による共通イベント方法との違いを詳述する図である。FIG. 6 details a difference between a common clock method and a common event method according to an embodiment of the present invention. 本発明の一実施形態による共通イベントベースのシステムの全体的な効果の図である。FIG. 4 is a diagram of the overall effect of a common event-based system according to an embodiment of the invention. 本発明の一実施形態による共通イベントベースのアルゴリズムを使用する全体的な効果の図である。FIG. 4 is a diagram of the overall effect of using a common event-based algorithm according to one embodiment of the invention. 本発明の一実施形態で使用される計算デバイスの例示的なハードウェアアーキテクチャを示すブロック図である。FIG. 2 is a block diagram illustrating an exemplary hardware architecture of a computing device used in one embodiment of the present invention. 本発明の一実施形態による、クライアントデバイスの例示的な論理アーキテクチャを示すブロック図である。2 is a block diagram illustrating an exemplary logical architecture of a client device, according to one embodiment of the invention. FIG. 本発明の一実施形態による、クライアント、サーバ、及び外部サービスの例示的な構造構成を示すブロック図である。FIG. 3 is a block diagram illustrating exemplary structural configurations of a client, a server, and an external service according to an embodiment of the present invention.

「ユニキャスト」という用語は、情報が1つのみの送信者から1つのみの受信者に送信されるインターネットプロトコル伝送の一種を指すために使用し得る。換言すれば、ユニキャスト伝送は、2つのみのノード間の1対1ノード伝送である。ユニキャストでは、各出力パケットはユニキャスト宛先アドレスを有し、これは、パケットがそのアドレスを有する特定の宛先に向けられることを意味する。そのパケットをリッスンし得る全ての他の宛先は、パケットの宛先アドレスがその宛先のアドレスと同じではない場合、パケットを無視する。   The term “unicast” may be used to refer to a type of Internet protocol transmission in which information is transmitted from only one sender to only one recipient. In other words, unicast transmission is a one-to-one node transmission between only two nodes. In unicast, each outgoing packet has a unicast destination address, which means that the packet is directed to a specific destination with that address. All other destinations that can listen to the packet ignore the packet if the destination address of the packet is not the same as the destination address.

本明細書で使用される場合、「ブロードキャストメッセージング」又は「ブロードキャスト」は、情報が1つのみのコンピュータから送信されるが、ネットワークに接続された全てのコンピュータによって受信されるインターネットプロトコル伝送の一種を指す。これは、コンピュータ又はノードが「ブロードキャスト」パケットを送信する都度、その他の全てのコンピュータがその情報パケットを受信することを意味する。   As used herein, “broadcast messaging” or “broadcast” refers to a type of Internet protocol transmission in which information is transmitted from only one computer but received by all computers connected to the network. Point to. This means that every time a computer or node sends a “broadcast” packet, all other computers receive that information packet.

本明細書で使用される場合、「マルチキャストメッセージング」又は「マルチキャスト」は、2つ以上の送信者が存在し得、送信された情報が、マルチキャストグループとしてまとまった1組の受信者に向けられ、1組の受信者が全受信者のサブセットであり得るインターネットプロトコル伝送又は通信の一種を指す。マルチキャストでは、各マルチキャストパケットはマルチキャストアドレスにアドレス指定される。このアドレスはグループアドレスである。任意の宛先が、アドレスに加入することができ、したがって、加入しているマルチキャストアドレスに送信されたパケットをリッスンし受信することができる。マルチキャストの利点は、送信された単一のマルチキャストパケットを複数の宛先が受信可能なことである。これは、同じパケットを複数の宛先に送信する必要がある場合、ネットワークトラフィックを節減する。一般に、同じデータを複数のIP宛先に送信する必要がある場合、ユニキャストではなくブロードキャスト又はマルチキャストが、ネットワークの最も効率的な使用を提供する。   As used herein, “multicast messaging” or “multicast” refers to a set of recipients in which there may be more than one sender, and the transmitted information is grouped as a multicast group, A type of Internet protocol transmission or communication in which a set of recipients may be a subset of all recipients. In multicast, each multicast packet is addressed to a multicast address. This address is a group address. Any destination can subscribe to the address and thus listen and receive packets sent to the subscribed multicast address. The advantage of multicast is that multiple destinations can receive a single transmitted multicast packet. This saves network traffic when the same packet needs to be sent to multiple destinations. In general, if the same data needs to be sent to multiple IP destinations, broadcast or multicast rather than unicast provides the most efficient use of the network.

この説明では、ブロードキャスト及びマルチキャストという用語を使用し得る。ブロードキャスト及びマルチキャストの両方において、メッセージが送信される場合、メッセージは複数の宛先によって受信される。したがって、本明細書で使用される場合、ブロードキャスト及びマルチキャストという用語は同義で使用されて、1つのパケットが複数の宛先によって受信されることを指し得る。場合によっては、この説明では、ブロードキャストされるか、マルチキャストされるか、それともユニキャストされるかを指定せずに送信又は伝送されるメディアのみに言及する。そのような場合、これらの方法の任意の1つをメディアの送信又は伝送に使用し得ることが意味される。   In this description, the terms broadcast and multicast may be used. In both broadcast and multicast, when a message is sent, the message is received by multiple destinations. Thus, as used herein, the terms broadcast and multicast may be used interchangeably to refer to a single packet received by multiple destinations. In some cases, this description refers only to media that is transmitted or transmitted without specifying whether it is broadcast, multicast, or unicast. In such cases, it is meant that any one of these methods can be used for transmission or transmission of media.

本明細書で使用される場合、「メッセージ」及び「パケット」という用語が使用されることが多く、これらは同義で使用し得る。パケットは、インターネットプロトコル(「IP」)ネットワーク上で送信又は受信されるように設定されるデータである。パケットは、「IPパケット」と同じであってもよく、又は同じでなくてもよい。「メッセージ」という用語は、本明細書で使用される場合、そのようなパケットに含まれる論理情報を指す。   As used herein, the terms “message” and “packet” are often used and may be used interchangeably. A packet is data that is configured to be transmitted or received over an Internet Protocol (“IP”) network. The packet may or may not be the same as the “IP packet”. The term “message” as used herein refers to logical information contained in such a packet.

本明細書で使用される場合、「セグメント」は、データセットを指すためにも使用し得る。データセットはデータバイトセットである。データは、メディアデータ、制御データ、又は情報データを含め、任意のタイプのデータであり得る。この説明では、データ及びパケットという用語は、文脈に応じて同義で使用することもできる。「パケット」はデータセットを指し得、データはデータ全般を指す。   As used herein, “segment” may also be used to refer to a data set. The data set is a data byte set. The data can be any type of data, including media data, control data, or information data. In this description, the terms data and packet may be used interchangeably depending on the context. A “packet” may refer to a data set, and data refers to data in general.

多くの代替の実施形態が本明細書に開示され、これらの実施形態が単なる例示として提示されることを理解されたい。記載される実施形態は、決して限定を意図しない。一般に、実施形態は、当業者が本発明のうちの1つ又は複数を実施できるようにするのに十分に詳細に説明され、他の実施形態も利用し得、開示される範囲から逸脱せずに、構造的、論理的、ソフトウェア、電気的、及び他の変更を行い得ることを理解されたい。   It should be understood that many alternative embodiments are disclosed herein and these embodiments are presented by way of example only. The described embodiments are in no way intended to be limiting. In general, embodiments are described in sufficient detail to enable those skilled in the art to practice one or more of the invention, and other embodiments may be utilized without departing from the scope disclosed. It should be understood that structural, logical, software, electrical, and other changes may be made.

本発明の一実施形態によれば、Wi−Fiネットワークを介してメディアをブロードキャストするために、まず、ブロードキャスト又はマルチキャストメディアが全ての宛先で均一に受信されるわけではないことを認識する必要がある。宛先によっては、マルチキャスト「パケット」(インターネットプロトコル(「IP」)ネットワーク上で送信又は受信されるデータセットを指す。パケットは、「IPパケット」と同じであっても又は同じでなくてもよい。「メッセージ」という用語は、本明細書で使用される場合、そのようなパケットに含まれる論理情報を指し、同義で「メッセージ」又は「セグメント」と呼ばれることもある)を受信するものもあれば、受信しないものもある。   According to one embodiment of the present invention, in order to broadcast media over a Wi-Fi network, it must first be recognized that broadcast or multicast media is not received uniformly at all destinations. . Depending on the destination, it refers to a data set transmitted or received over a multicast “packet” (Internet Protocol (“IP”) network. A packet may or may not be the same as an “IP packet”. The term “message”, as used herein, refers to logical information contained in such a packet and may be synonymously referred to as “message” or “segment”) Some do not receive.

IPネットワークは当初、有線ネットワークを介して動作するように設計されていた。設計により、これらのネットワーク上のパケット通信は「ベストエフォート型」であった。これは、ネットワークで送信される任意のパケットが、意図される宛先によって受信されないことがあることを意味する。これは最も多くの場合、衝突に起因し、別のデバイスが対象となるデバイスと同じ瞬間に通信を開始し、それにより、衝突が生じる。別の損失理由は、ルータとのネットワークパス中のデバイスが単に、例えばバッファ空間がないことに起因して、パケットを落とすことである。損失の他の理由は、単に有線回線にノイズが多く、パケット伝送が破損することであり得るが、これは、無線の場合と比較して有線の場合では希である。   IP networks were originally designed to operate over wired networks. By design, packet communication on these networks was “best effort”. This means that any packet sent on the network may not be received by the intended destination. This is most often due to a collision, where another device starts communicating at the same instant as the target device, thereby causing a collision. Another reason for loss is that the device in the network path with the router simply drops the packet, for example due to lack of buffer space. Another reason for the loss may simply be that the wired line is noisy and the packet transmission is corrupted, but this is rare in the wired case compared to the wireless case.

これらの全ての有線状況では、送信(例えば、マルチキャストメッセージ)がサブネット又はワイヤ上の1つのデバイスによって受信された場合、同じワイヤ又はサブセット上のその他の全てのデバイスも送信を正確に受信することが一般に事実である。これは、有線の場合、ワイヤの一部分上のデバイスのノイズ又は干渉状況が、ワイヤの別の部分でのノイズ状況とあまり変わらないためである。有線デバイスが、ハブではなくスイッチを介して接続される場合、同じ事柄が当てはまり、ノイズ又は干渉の量は最小である。   In all these wired situations, if a transmission (eg, a multicast message) is received by one device on a subnet or wire, all other devices on the same wire or subset may receive the transmission correctly. Generally true. This is because in the case of wired, the noise or interference situation of the device on one part of the wire is not much different from the noise situation in another part of the wire. If wired devices are connected via switches rather than hubs, the same is true and the amount of noise or interference is minimal.

Wi−Fiでは、サブセット内の各Wi−FiデバイスでのWi−Fiトラフィックの受信での差は大きい。したがって、これを説明する必要がある。
本発明の一実施形態によれば、全てのデバイス(すなわち、ソースデバイス104並びに様々な宛先デバイス106及び106’)(図1及び図3参照)は、ローカルネットワーク120上で一緒にネットワーク接続し得る。これは通常、IPネットワークであり、有線又は無線(例えば、Wi−Fi)ネットワークであり得る。このローカルネットワークは、インターネットに更に接続し得る。
In Wi-Fi, the difference in receiving Wi-Fi traffic at each Wi-Fi device in the subset is large. It is therefore necessary to explain this.
According to one embodiment of the present invention, all devices (ie, source device 104 and various destination devices 106 and 106 ′) (see FIGS. 1 and 3) may be networked together on local network 120. . This is typically an IP network and can be a wired or wireless (eg, Wi-Fi) network. This local network may further connect to the Internet.

多くのメディアシステムでは、メディアを複数の再生デバイスに送信し、各再生デバイスにメディアを同相でレンダリングさせることが望ましい。例えば、ステレオオーディオメディアの左チャネルを左オーディオ再生デバイスに送信し、ステレオメディアの右チャネルを右オーディオ再生デバイスに送信し、これらの両デバイスにメディアを同相で正確に再生させることが望ましい。   In many media systems, it is desirable to send media to multiple playback devices, causing each playback device to render the media in phase. For example, it is desirable to send the left channel of stereo audio media to the left audio playback device, send the right channel of stereo media to the right audio playback device, and have both devices play the media accurately in phase.

図1は、2つのデジタルオーディオサブシステムである、第1のサブシステム106及び第2のサブシステム106’を有するそのようなシステムを示す。第1のサブシステム106及び第2のサブシステム106’は各々、同じ又は関連するオーディオデータをレンダリングする。例えば、各オーディオサブシステムは、ネットワーク上のメディアファイル222からメディアを受信中であり得る。各システム(すなわち、オーディオシステム106及び106’)は、中央演算処理装置(CPU)及びデジタル/アナログ変換器を備える。各システム106、106’は、DACを介してオーディオ出力112及び112’をレンダリングする。この場合、レンダリングされる出力波220及び220’は、図1に示されるように、オーディオ同相である必要がある。オーディオ同相であるために、レンダリング波220及び220’は、正確な時間に(位相オフセットで)再生される正確な音響(周波数スペクトル)を有する必要がある。例えば、メディアが、そのメディアでベルを1分鳴らす左チャネルを含み、右チャネルが同時にドラムビートを再生し、デバイス106が左チャネルを再生し、デバイス106’が右チャネルを再生する場合、そのメディア再生の1分で、デバイス106がベル音をレンダリングし、デバイス106’がドラムビートをレンダリングすれば、デバイスは同相である。   FIG. 1 shows such a system having two digital audio subsystems, a first subsystem 106 and a second subsystem 106 '. The first subsystem 106 and the second subsystem 106 'each render the same or related audio data. For example, each audio subsystem may be receiving media from a media file 222 on the network. Each system (ie, audio system 106 and 106 ') includes a central processing unit (CPU) and a digital / analog converter. Each system 106, 106 'renders audio output 112 and 112' via a DAC. In this case, the rendered output waves 220 and 220 'need to be in-phase with the audio, as shown in FIG. In order to be in-phase with the audio, the rendering waves 220 and 220 'need to have the correct sound (frequency spectrum) reproduced at the correct time (with phase offset). For example, if the media includes a left channel that rings the bell for 1 minute on that media, the right channel plays a drumbeat at the same time, device 106 plays the left channel, and device 106 'plays the right channel, the media In one minute of playback, if device 106 renders a bell sound and device 106 ′ renders a drum beat, the devices are in phase.

レンダリング波220及び220’が同相ではない場合、ユーザは、2つの波220と220’との周波数差に関連するうなり周波数を聞くおそれがある。さらに、時間の経過に伴い、2つのオーディオ出力の差が増大し続け得る。例えば、前に用いた例では、第2のサブシステム106’が+50ppmだけずれ、3分の歌がドラムビートで終わる場合、第2のサブシステム106’は、最後のドラムビートを第1のサブシステム106よりも9ミリ秒後に再生することになる。そのような10の歌の後、差は90ミリ秒になり、これは非常に顕著である。   If the rendering waves 220 and 220 'are not in phase, the user may hear a beat frequency associated with the frequency difference between the two waves 220 and 220'. Furthermore, over time, the difference between the two audio outputs may continue to increase. For example, in the example used previously, if the second subsystem 106 ′ is shifted by +50 ppm and the three-minute song ends with a drum beat, the second subsystem 106 ′ will replace the last drum beat with the first subsystem. It will play back 9 milliseconds after the system 106. After 10 such songs, the difference is 90 milliseconds, which is very noticeable.

したがって、複数のオーディオデバイス106及び106’が同じメディアを再生している場合、各システムのレンダリングクロックを調整し、同じ位相オフセット及び周波数を有することを保証する必要がある。   Thus, if multiple audio devices 106 and 106 'are playing the same media, it is necessary to adjust the rendering clock of each system to ensure that it has the same phase offset and frequency.

図2は、オーディオを再生する典型的なデジタルシステム106をより詳細に示す。CPU114はオーディオサンプルをDAC108に送信し、オーディオサンプルは、DAC108がデジタルサンプルをアナログ信号112に変換することによってレンダリングされる。DACがデジタルサンプルをアナログ信号レベルに変換するレートは、出力サンプルレートと呼ばれ、出力サンプルレートは通常、CPU114から送信されているオーディオサンプルがサンプリングされたレートに一致する。厳密な出力サンプルレートは、DACを駆動しているDACクロックサブシステムによって決まる。このクロックサブシステムの精度は、出力サンプルレートの精度、ひいてはこのシステムによるオーディオレンダリングの精度に影響を及ぼす。このクロックサブシステムは、CPU114から、又は外部ソース105から発せられるクロックを使用し得る。   FIG. 2 shows in greater detail an exemplary digital system 106 for playing audio. The CPU 114 sends audio samples to the DAC 108, which is rendered by the DAC 108 converting the digital samples into the analog signal 112. The rate at which the DAC converts digital samples to analog signal levels is referred to as the output sample rate, which typically matches the rate at which audio samples being sent from the CPU 114 were sampled. The exact output sample rate depends on the DAC clock subsystem that is driving the DAC. The accuracy of this clock subsystem affects the accuracy of the output sample rate and thus the accuracy of audio rendering by this system. This clock subsystem may use a clock emanating from the CPU 114 or from an external source 105.

典型的なCPU114のCPUクロック結晶102は、CPU114によって内部生成されるCPUクロックのベースとなる。そして、このCPUクロックは全てのCPUタイミング活動に使用されることになる。CPUによっては、このCPUクロックに基づいて、CPU114内部で多くの異なるクロック信号を生成するものがある。CPU114は、様々なタイミング関連活動に使用することができるCPUクロックに基づいて、多くのクロック周辺機器及びクロックレジスタ136を有することもある。例えば、クロック周辺機器は、CPUに100ミリ秒毎に定期的に割り込むように構成し得る。このクロックは元々、CPU結晶102に基づくため、この周期の精度はCPU結晶102の精度に依存する。通常、CPU114で実行されるプログラムは、CPU114に電源投入され、リセットされてからCPU114がカウントしたクロックカウント数を示すクロックレジスタ136を読み取ることもできる。これらのクロックカウントは、CPU結晶102に関連するレートで増分される。このクロックは、DAC出力サンプルレート及びオーディオサンプルがDACに提供されるレートを駆動するのに使用し得る。   A CPU clock crystal 102 of a typical CPU 114 is a base of a CPU clock generated internally by the CPU 114. This CPU clock is then used for all CPU timing activities. Some CPUs generate many different clock signals inside the CPU 114 based on the CPU clock. The CPU 114 may have many clock peripherals and clock registers 136 based on the CPU clock that can be used for various timing related activities. For example, the clock peripheral can be configured to periodically interrupt the CPU every 100 milliseconds. Since this clock is originally based on the CPU crystal 102, the accuracy of this period depends on the accuracy of the CPU crystal 102. Normally, a program executed by the CPU 114 can read the clock register 136 indicating the clock count number counted by the CPU 114 after the power is turned on and reset by the CPU 114. These clock counts are incremented at a rate associated with the CPU crystal 102. This clock may be used to drive the DAC output sample rate and the rate at which audio samples are provided to the DAC.

幾つかの実施形態では、システム106は、オーディオクロック信号116をCPU114及びDAC108に送信して、CPU114からDAC108に送信されるオーディオ信号の再生のタイミングを管理するとともに、DAC108を介してそのようなオーディオ信号からオーディオ出力112を生成するために、各自の独立した結晶103を有する別個のオーディオクロック105を更に備え得る。   In some embodiments, the system 106 sends an audio clock signal 116 to the CPU 114 and the DAC 108 to manage the timing of playback of the audio signal sent from the CPU 114 to the DAC 108 and to send such audio via the DAC 108. In order to generate an audio output 112 from the signal, a separate audio clock 105 having its own independent crystal 103 can be further provided.

代替の実施形態は、DACサンプルレートの駆動に、外部クロックソース及び内部クロックソースの様々な組み合わせを使用し得る。
メディアを複数の再生デバイスに送信し、各再生デバイスに同相でメディアをレンダリングさせる必要がある、図1に示されるようなメディアシステムでは、メディアに何らかの時間参照情報をマークする必要があり、各デバイスは、この時間情報に従ってこのメディアを再生する必要がある。これは、レンダリング活動の時間を合わせているために、各デバイスが同じ時間参照を使用する必要があることを意味する。
Alternate embodiments may use various combinations of external and internal clock sources to drive the DAC sample rate.
In a media system as shown in FIG. 1 where media needs to be sent to multiple playback devices and each playback device needs to render the media in phase, the media needs to be marked with some time reference information, Needs to play this media according to this time information. This means that each device needs to use the same time reference in order to time the rendering activity.

図3は、上述したように時間参照する共通クロックベースの手法を示す。図示されているように、ソースデバイス104及び1つ又は複数の宛先デバイス106、106’は、ネットワーク120によって接続し得る。ソースデバイス106は、「共通」ソースクロックでありローカルクロックC135を有し、各宛先デバイス106、106’も、第1のデバイス106についてはD1_136として示され、x番目のデバイス106’についてはDx136’として示されるローカルクロックを含む。ソースクロック135は、そのクロック値が全ての宛先に送信され、全てのデバイスで共通する標準クロックとして使用されるため、共通ソースクロックと呼ばれる。ソースデバイス104は周期的に、メッセージ送信前に読み取られた最新の共通ソースクロック値Cを含む「クロック」メッセージを各宛先デバイス106、106’に送信する。クロック値を有する周期nで第1のデバイスに送信されるクロックメッセージは、C1250として記され、クロック値を有する周期nで第xのデバイスに送信されるクロックメッセージは、Cx252として記される。各宛先デバイス106、106’は、クロックメッセージを受信すると、受信した最新のクロック値C1又はCxを254及び254’として記録する。各宛先106、106’は、クロックメッセージを受信すると、受信したC1又はCx共通クロック値と共に、対応するローカルクロック値D1又はDxも記録する。クロックメッセージを受信する瞬間から、それに関連付けられたローカルクロックが記録される時間までには遅延がある。この「記録」遅延は、クロックメッセージ毎に異なり得、記録ジッタRとして定義される。記録遅延のこの変化は、メッセージングに使用されるネットワークアダプタと、パケット受信までの宛先でのソフトウェアの応答時間の変化とに起因し得る。 FIG. 3 illustrates a common clock-based approach for time reference as described above. As shown, source device 104 and one or more destination devices 106, 106 ′ may be connected by network 120. The source device 106 is a “common” source clock and has a local clock C135, and each destination device 106, 106 ′ is also shown as D1 — 136 for the first device 106 and Dx136 ′ for the xth device 106 ′. Including a local clock. The source clock 135 is called a common source clock because its clock value is transmitted to all destinations and used as a standard clock common to all devices. The source device 104 periodically sends a “clock” message to each destination device 106, 106 ′ that includes the latest common source clock value C that was read before sending the message. A clock message transmitted to the first device with period n having a clock value is denoted as C1 n 250, and a clock message transmitted to the xth device with period n having a clock value is denoted as Cx n 252. Is done. Upon receiving the clock message, each destination device 106, 106 ′ records the latest received clock value C1 n or Cx n as 254 and 254 ′. Each destination 106, 106 'receives a clock message, with C1 n or Cx n common clock value received, the local clock value D1 n or Dx n corresponding also recorded. There is a delay from the moment a clock message is received to the time that the local clock associated with it is recorded. This “recording” delay may vary from clock message to clock message and is defined as recording jitter R. This change in recording delay may be due to the network adapter used for messaging and the change in software response time at the destination until packet reception.

図4は、メッセージトランザクションの時系列を示す。ソースデバイス104は、第1のデバイス106にはクロック値C1250を有し、x番目のデバイス106’にはクロック値Cx252を有するn番目のクロックメッセージを送信する。n+1番目以降のメッセージも同様である。各クロックメッセージは、ソース104から各宛先106〜106’に届くまでに特定量の時間(トランスポート時間)がかかる。 FIG. 4 shows a time series of message transactions. The source device 104 transmits an n th clock message having a clock value C 1 n 250 to the first device 106 and a clock value C x n 252 to the x th device 106 ′. The same applies to the (n + 1) th and subsequent messages. Each clock message takes a specific amount of time (transport time) from the source 104 to the destinations 106-106 ′.

n番目のメッセージが第xのデバイスに届くまでの時間はTxである。各宛先までのトランスポート時間は、ネットワークパケット伝送問題に起因して異なり得る。この差は、時間の経過に伴い、デバイス毎に変化する。Txのこれらの変化は、デバイスxでのトランスポートジッタJxと呼ばれる。 n-th message is time to reach the device of the x is Tx n. The transport time to each destination may vary due to network packet transmission problems. This difference changes from device to device over time. These changes in Tx are called transport jitter Jx at device x.

各メッセージCx内の情報と、記録された対応するローカルクロック値Dxとに基づいて、各宛先x106、106’は、共通ソースクロックC135に一致するように、ローカルクロックDx136、136’を調整するための情報を計算し得る。宛先106、106’は、ソースクロックC135の現在の位相(カウント)Pcの最良推定値に一致するように、ローカルクロックD1_136、Dx136’位相(カウント)Pxを調整し得る。同様に、宛先106、106’は、共通ソースクロックC135の現在の周波数Fcの最良推定値に一致するように、ローカルクロックD1_136、Dx136’周波数Fxを調整し得る。 And information in each message Cx n, based on the local clock value Dx n corresponding recorded, 'as is consistent with the common source clock C135, local clock Dx136,136' each destination x106,106 adjusted The information to do can be calculated. The destination 106, 106 'may adjust the local clock D1_136, Dx136' phase (count) Px to match the best estimate of the current phase (count) Pc of the source clock C135. Similarly, destinations 106, 106 'may adjust local clocks D1_136, Dx136' frequency Fx to match the current frequency Fc best estimate of common source clock C135.

これらのステップを実行する例示的な計算は以下であり得る。
・Cx:デバイスXに送信されるn番目の共通ソースクロック値
・TA:デバイスXへの平均推定トランジット時間
・RA:デバイスXでの平均推定記録時間
・Jx:平均TAからの最大トランジット時間ずれ
・Rx:平均からの最大記録時間ずれ
・Tx:デバイスXに送信されるn番目のメッセージのトランスポート時間
・Dx:n番目のクロックメッセージでのデバイスxのクロック値
・Fx:デバイスxの新しいローカルクロック周波数
・Px:デバイスxの新しいローカルクロック位相/カウント
・Cx’=Cx+Tx+Rx:推定共通クロックn
・Cx’n+1=Cxn+1+Txn+1+Rxn+1:推定共通クロックn+1
・Tx=Ta+/−Jx:トランスポート時間n
・Txn+1=Ta+/−Jx:トランスポート時間n+1
・Rx=Ra+/−Rx:記録時間n
・Rxn+1=Ra+/−Rx:記録時間n+1
・Ax=(Dxn+1−Dx)−(Cx’n+1−Cx’):周波数調整値
・Ax=(Dxn+1−Dx)−(Cxn+1−Cx)+/−2*Jx+/−2*Rx
・Fx=Fxn−1−Ax:新しい周波数
・Fx=Fxn−1+(Cxn+1−Cx)−(Dxn+1−Dx)+/−2*Jx+/−2*Rx
・Px=Cx’=Cx+Ta+/−Jx+/−Rx:位相オフセット。
An exemplary calculation for performing these steps may be:
Cx n : n-th common source clock value transmitted to device X TA x : average estimated transit time to device X RA x : average estimated recording time at device X Jx: maximum from average TA x transit time difference · Rx: maximum recording time deviation · Tx n from the mean: device transport time of the n-th message sent to the X · Dx n: the device x in the n-th clock message clock value · Fx n : New local clock frequency of device x Px n : New local clock phase / count of device x Cx ′ n = Cx n + Tx n + Rx n : Estimated common clock n
Cx′n + 1 = Cxn + 1 + Txn + 1 + Rxn + 1 : Estimated common clock n + 1
Tx n = Ta x +/− Jx: transport time n
Tx n + 1 = Ta x +/− Jx: transport time n + 1
Rx n = Ra x +/− Rx: recording time n
Rx n + 1 = Ra x +/− Rx: recording time n + 1
· Ax n = (Dx n + 1 -Dx n) - (Cx 'n + 1 -Cx' n): = Frequency adjustment value · Ax n (Dx n + 1 -Dx n) - (Cx n + 1 -Cx n) +/- 2 * Jx + / -2 * Rx
· Fx n = Fx n-1 -Ax n: new frequency · Fx n = Fx n-1 + (Cx n + 1 -Cx n) - (Dx n + 1 -Dx n) +/- 2 * Jx +/- 2 * Rx
Px n = Cx ′ n = Cx n + Ta x +/− Jx +/− Rx: phase offset.

トランスポート時間Txの推定は、このシステムにとって極めて重要である。これを行う一般的な一方法は、メッセージをソース104から宛先Dx106、106’にメッセージを送信し、宛先Dx106、106’にこのメッセージへの肯定応答を送信させることにより、ソースから宛先への往復時間を測定することである。出力メッセージを送信してから、入力肯定応答メッセージを受信するまでの合計時間が、往復時間である。この時間を半分にすることで、出力トランジット時間の推定値が提供される。これが多数回行われ、フィルタリングされる場合、フィルタリング結果Taを、ソースから宛先Dxへの平均トランジット時間として使用することができる。n番目のメッセージの実際のトランジット時間Txは、=Ta+/−Jxであり、但し、Jxはジッタであり、このn番目のメッセージの平均からずれである。Jxは、測定されたTx時間の標準偏差を使用して推定することができる。 The estimation of the transport time Tx is extremely important for this system. One common way to do this is to send a message from the source 104 to the destination Dx 106, 106 'and have the destination Dx 106, 106' send an acknowledgment to the message, so that the round trip from the source to the destination. Is to measure time. The total time from sending the output message to receiving the input acknowledgment message is the round trip time. Halving this time provides an estimate of the output transit time. This is done many times, when to be filtered, the filtering result Ta x, can be used as the average transit time from the source to the destination Dx. The actual transit time Tx n of n-th message is a = Ta x +/- Jx n, where, Jx n is jitter, which is the deviation from the average of the n-th messages. Jx n can be estimated using the standard deviation of the measured Tx time.

この方式では、各宛先デバイス106、106’は、共通ソースクロック135情報を使用して、共通ソースクロック135のクロック値及びクロックレートに一致するように、ローカルクロック136、136’値及びクロックレートを調整する。すなわち、共通ソースクロック135は、システムで使用される「グローバル」クロックであり、全ての宛先クロックはこれに合わせられる。次に、メディアは、ローカルクロック136、136’を使用して各デバイスでレンダリングされる。   In this scheme, each destination device 106, 106 ′ uses the common source clock 135 information to set the local clock 136, 136 ′ value and clock rate to match the clock value and clock rate of the common source clock 135. adjust. That is, the common source clock 135 is a “global” clock used in the system, and all destination clocks are matched to this. The media is then rendered at each device using local clocks 136, 136 '.

このシステムの精度は、トランスポートジッタが周波数及び位相両方の計算に影響し得るため、限られ得る。これは、上述したように、ある時間期間にわたり、計算に使用されるパラメータをフィルタリングすることによっていくらか軽減し得る。メディアのレンダリングは、宛先デバイス106、106’によって行われ、これらのデバイスに関連付けられたクロックは、メディアレンダリングのベースとして使用されるため、これは、メディアレンダリングの位相精度がトランスポート時間ジッタによって影響を受けることを意味する。トランスポート時間ジッタJxが、Wi−Fiネットワークであり得るように、+/−1〜2ミリ秒である場合、達成することができる最高位相精度はこの範囲に制限される。   The accuracy of this system can be limited because transport jitter can affect both frequency and phase calculations. This can be mitigated somewhat by filtering the parameters used in the calculation over a period of time, as described above. Since media rendering is performed by the destination devices 106, 106 'and the clocks associated with these devices are used as the basis for media rendering, this can affect the phase accuracy of media rendering due to transport time jitter. Means receiving. If the transport time jitter Jx is +/− 1 to 2 milliseconds, as can be a Wi-Fi network, the maximum phase accuracy that can be achieved is limited to this range.

このシステムに伴う更なる問題は、仮想クロック時間が、受信メッセージの間隔でのみ増分することである。これは、ローカルクロックを使用して、これらのメッセージ間隔中の時間を補間することによって対処することができる。問題は、各デバイスのローカルクロックがその他のローカルクロックとわずかに異なり得、したがって、補間された仮想クロックが、受信メッセージの結果として行われる各調整で前方にジャンプするか、又は後方に動くことがあることである。これは、メディアレンダリングを時折、小量だけ前方又は後方にジャンプさせ得る。   A further problem with this system is that the virtual clock time only increments with the interval of the received message. This can be addressed by interpolating the time during these message intervals using a local clock. The problem is that each device's local clock may be slightly different from the other local clocks, so the interpolated virtual clock may jump forward or move backward with each adjustment made as a result of the received message. That is. This can sometimes cause media rendering to jump forward or backward by a small amount.

更なる問題は、多くのシステムで、共通グローバルクロックが利用可能ではないか、又は利用可能な場合であっても、同期目的では十分に正確ではないことである。例えば、ソースデバイスのローカルクロックには、プログラミングAPIを通してアクセスし得るが、呼び出し側プログラムは通常、API呼び出し中に遅延を有し得るか、タスクスワップを有し得るマルチタスクオペレーティングシステムで実行中であるため、ローカルクロック時間は、その時間だけ不正確になる。例えば、呼び出し側プログラムは、ローカルクロックAPIを呼び出し得、ハードウェアクロック値を呼び出し得、次に、関数が返す前に、現在のプログラムスレッドがスワップを課され、次のプログラムスレッドでタイムスライスのみを返す。これは、返されるハードウェアクロック値がここで、タイムスライス期間だけ遅れていることを意味する。最も一般的なオペレーティングシステムは、最長で25ミリ秒〜100ミリ秒のタイムスライス期間を有することができ、したがって、ハードウェアクロック値は、ミリ秒単位で大きく遅れ得る。これは、スマートフォン又はノートブック等の多くの汎用ソースデバイスに当てはまる。逆に、本発明で使用される宛先デバイスは、専用デバイスであり、したがって、ソフトウェアは、はるかに良好なローカルクロック読み出し精度で、より下位レベルで動作する。   A further problem is that in many systems, a common global clock is not available, or even if it is available, it is not accurate enough for synchronization purposes. For example, the local clock of the source device may be accessed through a programming API, but the calling program is typically running on a multitasking operating system that may have a delay during the API call or may have a task swap. Therefore, the local clock time is inaccurate by that time. For example, the calling program can call the local clock API, call the hardware clock value, and then the current program thread is swapped before the function returns, and the next program thread only takes a time slice. return. This means that the returned hardware clock value is now delayed by the time slice period. Most common operating systems can have a time slice period of up to 25 milliseconds to 100 milliseconds, so the hardware clock value can be greatly delayed by milliseconds. This is true for many general purpose source devices such as smartphones or notebooks. Conversely, the destination device used in the present invention is a dedicated device, so the software operates at a lower level with much better local clock read accuracy.

したがって、本発明の様々な実施形態は、ソースデバイスのローカルクロックを正確に読み取る能力を使用しないか、又は必要としないという目標で設計し得る。
開示される構成は、各デバイスのローカルレンダリングクロックのみを使用してメディアをレンダリングする。ここで参照される宛先デバイスローカルクロックは、メディアサンプルがDAC(デジタル/アナログ変換器)に供給されて、デジタルメディアサンプルをオーディオ信号又はビデオ信号に変換(レンダリング)するレート(サンプルレート)のベースとして使用されるクロックである。このローカルクロックは、ハードウェアクロックであることもあれば、又はオーディオ信号若しくはビデオ信号への変換のためにサンプルをDACに供給する、ハードウェアクロックによって支援し得る仮想クロック、割り込みサービスルーチン等のソフトウェアオブジェクトであることもある。
Thus, various embodiments of the present invention may be designed with the goal of not using or requiring the ability to accurately read the local clock of the source device.
The disclosed arrangement renders media using each device's local rendering clock only. The destination device local clock referred to here serves as a base for the rate (sample rate) at which media samples are fed to a DAC (digital / analog converter) to convert (render) the digital media samples into an audio or video signal. This is the clock used. This local clock can be a hardware clock or a software object such as a virtual clock, interrupt service routine, etc. that can be supported by a hardware clock that supplies samples to the DAC for conversion to an audio or video signal. Sometimes there are.

これらの宛先クロックは、増分の仕方が連続し平滑しており、したがって、メディアをレンダリングする仕方が平滑している。しかし、デバイスクロックでの潜在的な差について調整する必要があり得る。一実施形態は、2つの問題に分けることによってこの調整に対処する。第1の問題は、周波数差を検出することである。第2の問題は、差について調整することである。差を検出するために、一実施形態は、共通クロックではなく共通イベントベースの手法を使用する。   These destination clocks are continuous and smooth in increments, and thus smooth in how the media is rendered. However, it may be necessary to adjust for potential differences in the device clock. One embodiment addresses this adjustment by dividing it into two problems. The first problem is detecting the frequency difference. The second problem is adjusting for the difference. In order to detect the difference, one embodiment uses a common event-based approach rather than a common clock.

図5は、共通イベントベースのシステムの一例の基本要素の図である。システムは、ネットワーク120によって接続されるソースデバイス104及び1つ又は複数の宛先デバイス106、106’からなる。ソースデバイスは、2つの要素:共通イベントソースE350及び同期計算マネージャ(同期マネージャ)S352を有する。共通イベントソースE350は、全ての宛先デバイスで同時に、共通時刻に受信されるイベントメッセージをネットワーク上で生成する。共通イベントメッセージE358の一例は、全ての宛先デバイス106、106’によって同時に受信されるマルチキャスト又はブロードキャストメッセージである。なお、マルチキャスト又はブロードキャストメッセージは、1つのデバイスであるソースデバイスによって通信チャネルに出され、全ての宛先デバイスによって受信される。メッセージは実際に、通常、電気信号又はRF信号が光速に近い速度で搬送される電気手段によって通信チャネル上で通信される。したがって、例えば、メッセージの最後のビットは、距離に光速を掛けたものだけの差である時刻で全ての宛先デバイスで受信され、これは略即時である。共通イベントメッセージの別の例は、例えば、802.11(Wi−Fi)ネットワークプロトコルを使用するネットワークでのビーコンメッセージである。 FIG. 5 is a diagram of the basic elements of an example of a common event-based system. The system consists of a source device 104 and one or more destination devices 106, 106 ′ connected by a network 120. The source device has two elements: a common event source E350 and a synchronization calculation manager (synchronization manager) S352. The common event source E350 generates an event message received on the network at the same time on all the destination devices at the same time. An example of a common event message E n 358 is a multicast or broadcast message that is received simultaneously by all destination devices 106, 106 ′. A multicast or broadcast message is sent to the communication channel by a source device, which is one device, and is received by all destination devices. Messages are actually communicated over the communication channel, usually by electrical means in which electrical or RF signals are carried at a speed close to the speed of light. Thus, for example, the last bit of the message is received at all destination devices at a time that is the difference of the distance multiplied by the speed of light, which is almost instantaneous. Another example of a common event message is a beacon message in a network using, for example, the 802.11 (Wi-Fi) network protocol.

一実施形態では、全ての宛先デバイスによって受信され、それぞれが一意に識別可能であり、それぞれが全ての宛先デバイスで同時に受信される任意のイベントシーケンスを、本明細書に記載される共通イベントとして使用し得る。一実施形態では、同期マネージャS352は、そのような共通イベントのソースである。   In one embodiment, any event sequence received by all destination devices, each uniquely identifiable, and each received simultaneously by all destination devices, is used as a common event as described herein. Can do. In one embodiment, synchronization manager S352 is the source of such common events.

同期計算マネージャS352は、宛先デバイス106、106’を含め、ネットワーク120上の任意の計算デバイスに存在し得る。
各宛先デバイスx(106、106’)は、デバイスによるメディアレンダリングのベースとして使用されるローカルクロックDx(136、136’)を有する。
Synchronous calculation manager S352 may reside on any computing device on network 120, including destination devices 106, 106 '.
Each destination device x (106, 106 ') has a local clock Dx (136, 136') that is used as the basis for media rendering by the device.

図6は、システムでの活動及びメッセージの時系列を示す。イベントソースE350はイベントメッセージを生成し、時間Tにおいて生成されるn番目のイベントは、E358として記される。イベントE358は、イベント番号nによって識別され、これは各イベントに一意である。イベント番号nは、単に、システムがオンになったときから同期マネージャS352によって生成される順次増分される番号であってもよく、又はタイムスタンプ値であってもよい。後者の場合、これは一意の番号としてのみ使用され、時間値は時間のインジケータとして使用されない。一意のイベント番号を生成する任意の他の形態であってもよい。各イベントメッセージEを受信すると、各宛先xは、ローカルクロックDx136の現在値をDxとして記録する。共通クロックの場合と同様に、イベントメッセージの受信の瞬間から、それに関連付けられたローカルクロックが記録されるまでに遅延がある。この「記録」遅延は、イベントメッセージ毎に異なり得、記録ジッタRとして定義される。 FIG. 6 shows the time series of activities and messages in the system. Event source E350 generates an event message, and the nth event generated at time T n is noted as E n 358. Event E n 358 is identified by event number n, which is unique to each event. The event number n may simply be a sequentially incremented number generated by the sync manager S352 since the system was turned on, or it may be a timestamp value. In the latter case, this is only used as a unique number and the time value is not used as a time indicator. Any other form of generating a unique event number may be used. Upon receiving each event message E n, each destination x records the current value of the local clock Dx136 as Dx n. As with the common clock, there is a delay from the moment the event message is received until the associated local clock is recorded. This “recording” delay may vary from event message to message message and is defined as recording jitter R.

各宛先デバイスxは、イベントメッセージnを受信すると、n番目のイベントに対して、イベントnの受信時に記憶された値Dxを有するイベント肯定応答メッセージAK(Dx)354、354’と、一意のイベント番号nを同期計算マネージャS352に送信する。同期計算マネージャは、Dx値を有する全てのイベント肯定応答メッセージAK(Dx)354、354’を受信し、計算を実行し、次に、調整情報Axを有するクロック調整メッセージAJ(Ax)356、356’を各デバイスxに返信する。 When each destination device x receives the event message n, each destination device x has a unique event acknowledgment message AK (Dx n ) 354, 354 ′ having a value Dx n stored when the event n is received. Event number n is sent to the synchronous calculation manager S352. Synchronization computation manager, Dx receives all events acknowledgment message AK (Dx n) 354,354 'having n values, perform calculations, then the clock adjustment message AJ (Ax n with adjustment information Ax n ) 356 and 356 ′ are returned to each device x.

実行される計算を以下に示す。
・Ex:デバイスXに送信されるn番目の共通イベントメッセージ
・Tx:デバイスXに送信されるn番目のイベントのトランスポート時間
・Dx:n番目のイベントメッセージでのデバイスxのクロック値
・Fx:デバイスxの新しいローカルクロック周波数
・Px:デバイスxの新しいローカルクロック位相/カウント
・Qx0=Dx−D1+/−2*Rx:デバイス1に対する参照(初期)クロック位相
・Qx=Dx−D1+/−2*Rx:n番目のクロック位相
・Qf=F(Qx):n番目のクロック位相のフィルタリング関数
・ex=(Qf−Qf)+/−4*Rx:位相エラー(変化)
・kx=T*ex:エラー*伝達関数
・Fx=Fx+kx+/−T*4*Rx:新しい周波数
・PFx=((Fx/Fxn−1)−1)*100:新しい周波数パーセント
・Px=Dx−D1+/−2*Rx:位相オフセット
・Ax=(PFx,Px):調整情報。
The calculations performed are shown below.
Ex n : n-th common event message transmitted to device X Tx n : transport time of n-th event transmitted to device X Dx n : clock value of device x in n-th event message Fx n : New local clock frequency of device x Px n : New local clock phase / count of device x Qx0 = Dx 0 −D1 0 +/− 2 * Rx: Reference (initial) clock phase for device 1 Qx n = Dx n −D1 n +/− 2 * Rx: nth clock phase Qf n = F (Qx n ): nth clock phase filtering function ex n = (Qf n −Qf 0 ) + / -4 * Rx: Phase error (change)
· Kx n = T * ex n : error * transfer function · Fx n = Fx 0 + kx n +/- T * 4 * Rx: = new frequency · PFx n ((Fx n / Fx n-1) -1) * 100: new frequency percent · Px n = Dx n -D1 n +/- 2 * Rx: = phase offset · Ax n (PFx n, Px n): adjustment information.

この共通イベントシステムでは、1つのデバイス、つまり、第1の宛先デバイスであるデバイス1のクロックが、位相参照クロックとして使用される。これらの計算を用いて、同期モジュールは、各宛先デバイスxの位相オフセット(ローカルクロック値)及び周波数割合(ローカルクロックレート)調整を計算し、この調整情報を宛先xに送信し、各宛先デバイスxでのローカルクロックが宛先デバイス1のローカルクロックに一致するように調整を行うように求める。   In this common event system, the clock of one device, that is, the device 1 that is the first destination device, is used as the phase reference clock. Using these calculations, the synchronization module calculates a phase offset (local clock value) and frequency ratio (local clock rate) adjustment for each destination device x, sends this adjustment information to the destination x, and each destination device x It is requested to make an adjustment so that the local clock at the time coincides with the local clock of the destination device 1.

例えば、ジッタを無視して、共通イベント1であるE1とイベント2であるE2との間で、第1の宛先デバイスのローカルクロックが100カウント増分し、宛先デバイスxが101カウント増分する場合、デバイスxは、宛先デバイス1よりも高速で実行されており、そのクロックレートを101から1カウントだけ減分する必要がある。さらに、第1の宛先デバイスのローカルクロックが、イベント1であるE1で2500であり、宛先xのローカルクロックが、イベント1であるE1で3000であった場合、宛先xのローカルクロックを2500に調整して、第1の宛先デバイスの位相に合わせる必要がある。   For example, if the local clock of the first destination device is incremented by 100 counts and the destination device x is incremented by 101 counts between E1 being common event 1 and E2 being event 2 ignoring jitter, the device x is running faster than the destination device 1, and its clock rate needs to be decremented from 101 by one count. Further, when the local clock of the first destination device is 2500 at E1 which is event 1, and the local clock of destination x is 3000 at E1 which is event 1, the local clock of destination x is adjusted to 2500. Thus, it is necessary to match the phase of the first destination device.

この実施形態は、周波数の割合として周波数調整を定義するが、他の実施形態は、絶対的な新しい周波数又は追加若しくは低減すべきサンプル数を含む他の形態で周波数調整を定義し得る。これらの全ての形態は、本明細書の目的のために周波数調整と呼ばれる。また、周波数という言葉の使用は、クロックレートを指し、オーディオサンプル結晶レート及びサンプル出力レートの両方に関連し、これら両方を指し得る。一般に、サンプル出力レートは、オーディオサンプル結晶レートの倍数である。   While this embodiment defines the frequency adjustment as a percentage of frequency, other embodiments may define the frequency adjustment in other forms including an absolute new frequency or the number of samples to be added or reduced. All these forms are referred to as frequency adjustment for purposes of this specification. Also, the use of the term frequency refers to the clock rate, and relates to both the audio sample crystal rate and the sample output rate, and may refer to both. In general, the sample output rate is a multiple of the audio sample crystal rate.

位相調整はクロック値の調整を指し、クロック値は、オーディオ結晶レート、サンプル出力クロック出力レート、又はサンプル出力クロックに関連する何らかの他のカウンタ値で増分するクロックについてのクロック値であり得る。   Phase adjustment refers to adjusting the clock value, which can be the clock value for a clock that increments with the audio crystal rate, the sample output clock output rate, or some other counter value associated with the sample output clock.

この共通イベントシステムでの主要な事柄は、肯定応答メッセージ354、354’及び調整メッセージ356、356’が、IPネットワークを介して送信されるため、受信側に予測可能な時刻に到着しないことがあることである。各肯定応答メッセージは、宛先デバイス番号を含む。   The main thing in this common event system is that acknowledgment messages 354, 354 ′ and coordination messages 356, 356 ′ may be sent over the IP network and therefore do not arrive at the receiver at a predictable time. That is. Each acknowledgment message includes a destination device number.

したがって、同期モジュール352は、到着時までに、同じイベントへの肯定応答メッセージ354、354’をグループ化することができない。例えば、イベント1への幾つかの肯定応答メッセージは、イベント2の肯定応答メッセージが到着した後、同期モジュール352に到着し得る。したがって、肯定応答メッセージは、一意のイベント番号に基づいてイベント肯定応答メッセージセットにグループ化される。   Thus, the synchronization module 352 cannot group acknowledgment messages 354, 354 'to the same event by the time of arrival. For example, some acknowledgment messages for event 1 may arrive at synchronization module 352 after the arrival message for event 2 arrives. Thus, acknowledgment messages are grouped into event acknowledgment message sets based on unique event numbers.

このために、同期モジュール352は、一意の各イベントについて1組の宛先デバイスから送信された全ての肯定応答メッセージを関連付けることができる。したがって、同期モジュールは、システムの寿命にわたり一意である番号nで各イベントメッセージをマークする。これは単に、各イベントに伴って増分するイベント番号であり得る。全ての宛先デバイスは、この一意のイベント番号を肯定応答メッセージAK354、354’に含める。肯定応答メッセージAK354、354’が同期モジュール352で受信されると常に、肯定応答メッセージは、肯定応答メッセージの集合{AK(Dab),・・・,AK(D1n),・・・,AK(Dxn),AK(D1n+1),・・・等}に配置される。次に、この集合が探索されて、特定のイベント番号nに対する全ての肯定応答メッセージの部分集合{AK(D1n),・・・,AK(Dxn)}を見つける。次に、デバイス1に関する位相変化Qxnが、上記計算に示されるように、この部分集合からの値を使用して計算される。この部分集合内の値は、使用前に更にフィルタリングし得る。   To this end, the synchronization module 352 can associate all acknowledgment messages sent from a set of destination devices for each unique event. Thus, the synchronization module marks each event message with a number n that is unique over the life of the system. This can simply be an event number that increments with each event. All destination devices include this unique event number in the acknowledgment messages AK354, 354 '. Whenever an acknowledgment message AK354, 354 'is received at the synchronization module 352, the acknowledgment message is a set of acknowledgment messages {AK (Dab), ..., AK (D1n), ..., AK (Dxn ), AK (D1n + 1),. This set is then searched to find a subset {AK (D1n),..., AK (Dxn)} of all acknowledgment messages for a particular event number n. Next, the phase change Qxn for device 1 is calculated using values from this subset, as shown in the calculation above. The values in this subset can be further filtered before use.

代替の実施形態では、イベントメッセージは、Wi−Fiシステムのビーコンメッセージを使用するなど、外部ソースから提供し得る。この場合、ビーコンメッセージ内の時刻値は、一意のイベント番号として使用し得る。なお、時刻値は時刻値として使用されず、一意のイベント番号としてのみ使用される。   In an alternative embodiment, the event message may be provided from an external source, such as using a Wi-Fi system beacon message. In this case, the time value in the beacon message can be used as a unique event number. The time value is not used as a time value, but only as a unique event number.

図7は、共通クロック方法と、本明細書に記載される共通イベント方法との幾つかの重要で重大な違いを識別する。上部プロット450は、共通クロック方法の正味の影響を示す。この方法では、ソース104のクロックである共通クロックは、システムによって使用される「グローバル」クロック454である。このクロックは、ローカルクロックを調整するために共通ソースクロック時間を推定する各宛先D1_106〜Dx106’によって使用される。上述したように、この設定の精度はトランスポート待ち時間L1_458及びLx460による影響を受ける。各宛先デバイスD1_106及びDx106’は独立して、共通クロック時間を推定するため、これらのクロックの位相差P462はこれらの待ち時間にかなり依存することになる。トランスポート待ち時間は、トランスポートジッタと呼ばれるメッセージ毎の差を有するため、これは、宛先デバイスクロック(D1_136及びDx136’)のクロック設定が、トランスポートジッタを受ける精度を有することを意味する。特に、これは、クロックの差である位相差が最大メッセージトランスポートジッタJxを受けることを意味する。デバイスD1_106及びDx106’の両方でのメディアレンダリングの位相精度を維持することが望ましい。最良の提案は、トランスポートジッタが位相精度に影響しないようにすることである。   FIG. 7 identifies some important and significant differences between the common clock method and the common event method described herein. The upper plot 450 shows the net effect of the common clock method. In this way, the common clock, which is the clock of source 104, is a “global” clock 454 used by the system. This clock is used by each destination D1_106-Dx106 'that estimates the common source clock time to adjust the local clock. As described above, the accuracy of this setting is affected by the transport latency L1_458 and Lx460. Since each destination device D1_106 and Dx 106 'independently estimate a common clock time, the phase difference P462 of these clocks will be highly dependent on their latency. Since transport latency has a message-by-message difference called transport jitter, this means that the clock settings of the destination device clocks (D1_136 and Dx136 ') are accurate to receive transport jitter. In particular, this means that the phase difference, which is the clock difference, receives the maximum message transport jitter Jx. It is desirable to maintain media rendering phase accuracy on both devices D1_106 and Dx 106 '. The best proposal is to prevent transport jitter from affecting phase accuracy.

全体的に、共通クロック方法は、全てのクロックをソースの共通クロックに合わせ、調整の計算は各宛先で独立して行われ、精度は、記録精度Rx及びトランスポートジッタJxに依存する。   Overall, the common clock method aligns all clocks to the source common clock, the adjustment calculation is done independently at each destination, and the accuracy depends on the recording accuracy Rx and the transport jitter Jx.

下部プロット452は、本発明の様々な実施形態で使用される共通イベント手法を示す。この手法では、第1の宛先デバイス106のクロックD1は、システムで使用される参照「グローバル」クロック456になる。追加の宛先デバイス106’は、それ自体のクロックDxをD1_106のグローバルクロックに調整する。これらのクロックの位相差P466は、トランスポート待ち時間による影響を受けず、共通イベントを受信時にいかに正確に記録するかによってのみ関連する。トランスポート待ち時間L1_464は、グローバルクロック456を元のソース104に射影する際のファクタにすぎない。本発明の一実施形態では、ソース104は、必要であれば、宛先クロックD1_106に一致するようにクロックを調整する。この実施形態では、ソースクロック又はそのような調整は必要ない。   The bottom plot 452 illustrates a common event approach used in various embodiments of the present invention. In this approach, the clock D1 of the first destination device 106 becomes the reference “global” clock 456 used in the system. The additional destination device 106 'adjusts its own clock Dx to the global clock of D1_106. These clock phase differences P466 are not affected by transport latency, and are only related by how accurately common events are recorded upon reception. The transport latency L1_464 is only a factor in projecting the global clock 456 to the original source 104. In one embodiment of the present invention, the source 104 adjusts the clock to match the destination clock D1_106, if necessary. In this embodiment, no source clock or such adjustment is required.

全体的に、共通イベント手法は、全てのクロックを宛先クロックの1つに合わせ、精度は記録精度Rxのみに既存する。トランスポートジッタJxは、メッセージのトランスポートに関わる全てのデバイス及びプロセスによる影響を受けるため、記録精度Rxの何倍も大きい傾向を有する(一方、記録精度は宛先ハードウェア及びソフトウェアのみに依存し、宛先ハードウェア及びソフトウェアにローカルである)。トランスポートジッタは数ミリ秒にもなり得るが、一方、記録ジッタは通常、数百マイクロ秒未満である。したがって、共通イベント手法は、記録精度のみに依存し、より少ない労力で複雑なかつ高レベルの位相同期精度を提供するよりよい手法である。   Overall, the common event approach matches all clocks to one of the destination clocks, and the accuracy exists only in the recording accuracy Rx. The transport jitter Jx is affected by all devices and processes involved in message transport, and therefore tends to be many times larger than the recording accuracy Rx (while the recording accuracy depends only on the destination hardware and software, Local to the destination hardware and software). Transport jitter can be in the order of milliseconds, while recording jitter is typically less than a few hundred microseconds. Therefore, the common event technique is a better technique that relies only on recording accuracy and provides complex and high level phase synchronization accuracy with less effort.

図8は、共通イベント手法の全体的な効果を誇張した図を示す。上部波形220はデバイスD1_106からのDACの出力であり、下部波形220’はデバイスDx106’からのDACの出力である。両プロットの垂直線は、各レンダリングクロックのクロックの刻み(DACサンプルレート出力クロック)を示す。垂直線には、各クロックの刻みでレンダリングされるサンプルデータもプロットされる。図8中、下部波形Dxは上部波形よりもはるかに遅いクロックの刻みを有し、したがって、オーディオサンプルは、デバイスD1においてより長い時間期間にわたってレンダリングされる。この図は2つの共通イベントE及びEn+1も示す。見て分かるように、D1からの下部波形が増分されたクロックの刻み量が、上部波形220で増分されたクロックの刻みの量未満である。時間Eでの位相は、時間Eでの2つのデバイス間のクロックカウント差である。時間En+1での位相もこの差である。クロックレートは異なるため、イベントEでの位相がイベントEn+1での位相とは異なることになることが分かる。上述した共通イベント計算及び調整は、これを補正しクロックレートが上部波形220のクロックレートに一致するまで、下部波形220’のクロックレートを増大させる。クロックレートが一致する時点で、2つの波形は同様にレンダリングされ、同相でレンダリングされる。 FIG. 8 shows an exaggerated view of the overall effect of the common event technique. The upper waveform 220 is the output of the DAC from the device D1_106, and the lower waveform 220 ′ is the output of the DAC from the device Dx 106 ′. The vertical lines in both plots show the clock ticks (DAC sample rate output clock) for each rendering clock. The vertical line also plots sample data rendered at each clock step. In FIG. 8, the lower waveform Dx has a much slower clock step than the upper waveform, so audio samples are rendered over a longer period of time in device D1. The figure also shows two common event E n and E n + 1. As can be seen, the clock increment incremented by the lower waveform from D 1 is less than the clock increment incremented by the upper waveform 220. Phase at time E n is the clock count difference between the two devices at time E n. The phase at time En + 1 is also this difference. Clock rate for different, it can be seen that will differ from the phase of the phase of the event E n is the event E n + 1. The common event calculation and adjustment described above corrects this and increases the clock rate of the lower waveform 220 ′ until the clock rate matches the clock rate of the upper waveform 220. When the clock rates match, the two waveforms are similarly rendered and rendered in phase.

ローカルクロックレートの調整は、幾つかの方法で行うことができる。共通手法は文字通り、レンダリングクロックのクロックレートを調整することである。通常、これは、調整可能なクロックを生成することができる何らかの種類のハードウェアサブシステムを必要とする。代替の手法は、レンダリングクロックをそのままにし、メディアデータを代わりに調整するというものである。この手法は、サンプルレートを変換し、サンプルレート変換を行い、クロックレート差を補償するというものである。1kHzオーディオ信号が44.1kHzでサンプリングされ、次に、44.1kHzクロックでレンダリングされる場合、レンダリングされるオーディオ信号は、元のオーディオ信号の正確な表現になる。代わりに、レンダリングクロックが44kHzである場合、1kHzオーディオ信号は、わずかに低いトーンでレンダリングされ、元のオーディオ信号の正確な表現にはならない。オーディオデータがここで、44.1kHzから44kHzにサンプリングレート変換され、44kHzレンダリングクロックを使用してレンダリングされる場合、ここでレンダリングされる1kHzオーディオ信号は再び、元のオーディオ信号の正確な表現になる。   The local clock rate can be adjusted in several ways. A common approach is literally to adjust the clock rate of the rendering clock. This typically requires some kind of hardware subsystem that can generate an adjustable clock. An alternative approach is to leave the rendering clock and adjust the media data instead. In this method, the sample rate is converted, the sample rate is converted, and the clock rate difference is compensated. When a 1 kHz audio signal is sampled at 44.1 kHz and then rendered with a 44.1 kHz clock, the rendered audio signal is an accurate representation of the original audio signal. Instead, if the rendering clock is 44 kHz, the 1 kHz audio signal is rendered with a slightly lower tone and is not an accurate representation of the original audio signal. If the audio data is now sample rate converted from 44.1 kHz to 44 kHz and rendered using a 44 kHz rendering clock, the rendered 1 kHz audio signal is again an accurate representation of the original audio signal. .

本発明の好ましい実施形態は、後者のサンプルレート変換手法を使用する。周波数調整メッセージが各宛先で受信されると、レンダリングクロックを調整する代わりに、各宛先はサンプルレート変換をデータストリームに対して実行し、データのサンプルレートを増減する。これは、レンダリングクロックの調整と同じ正味効果を有する。   The preferred embodiment of the present invention uses the latter sample rate conversion approach. As frequency adjustment messages are received at each destination, instead of adjusting the rendering clock, each destination performs a sample rate conversion on the data stream to increase or decrease the sample rate of the data. This has the same net effect as adjusting the rendering clock.

通常、周波数差は、PPMパーツパーミリオン単位で指定されるクロック結晶の精度に関連する。100PPM結晶は、<0.01%、すなわち10,000個のうち1個の精度である。したがって、ここで必要とされるサンプルレート変換は通常、10,000個のサンプルのうち1個のサンプルという小さな調整である。したがって、調整は、時折1個のサンプルを追加又は落とすことによって達成することができる。   The frequency difference is usually related to the accuracy of the clock crystal specified in PPM parts per million. A 100 PPM crystal is <0.01%, ie, an accuracy of 1 out of 10,000. Therefore, the sample rate conversion required here is usually a small adjustment of one sample out of 10,000 samples. Thus, adjustment can be accomplished by occasionally adding or dropping a single sample.

図9は、制御システムの形態の上述したアルゴリズムを示す。これは、D1_106〜Dx106’として記される幾つかのデバイスを示す。各宛先デバイスは、第1のデバイスD1_106を除き、ソフトウェア位相ロックループアルゴリズムを実施して、位相をデバイスD1_106のクロック位相にロックする。各宛先デバイスDx106’には、出力クロックDx654’の位相を参照クロックD1_652と比較する位相補償器650’が関連付けられる。次に、参照クロックex−1656からの位相差は、クロック周波数調整Ax700’を生成するようにスケーリングされる。次に、この調整は、宛先106’でのクロック生成器702’にクロック周波数を調整させる。システムのこの実施形態では、位相検出器650’及び利得/スケーリング658’は、同期計算マネージャ352に存在する。クロック生成器702’は宛先デバイス106’に存在する。 FIG. 9 shows the algorithm described above in the form of a control system. This shows a number of devices marked D1_106 to Dx106 ′. Each destination device, except for the first device D1_106, implements a software phase lock loop algorithm to lock the phase to the clock phase of device D1_106. Associated with each destination device Dx 106 ′ is a phase compensator 650 ′ that compares the phase of the output clock Dx n 654 ′ with the reference clock D1_652. Next, the phase difference from the reference clock e x-1 656 is scaled to produce a clock frequency adjustment Ax 700 ′. This adjustment then causes the clock generator 702 'at destination 106' to adjust the clock frequency. In this embodiment of the system, phase detector 650 ′ and gain / scaling 658 ′ are present in synchronization calculation manager 352. Clock generator 702 'resides at destination device 106'.

[追加の考慮事項]
本特許出願で提供されるセクションの見出し及び本特許出願の名称は、単なる便宜上のものであり、本開示を限定するものとして決して解釈されるべきではない。
Additional considerations
The section headings and titles of this patent application provided in this patent application are for convenience only and should in no way be construed as limiting the present disclosure.

互いに通信するデバイスは、その他のことが明示される場合を除き、互いに連続して通信する必要はない。さらに、互いに通信するデバイスは、直接、又は1つ若しくは複数の論理的若しくは物理的な中間物を通して間接的に通信し得る。   Devices that communicate with each other need not communicate sequentially with each other, unless explicitly stated otherwise. Further, devices that communicate with each other may communicate directly or indirectly through one or more logical or physical intermediates.

互いに通信する幾つかの構成要素を有する一実施形態の説明は、全てのそのような構成要素が必要とされることを暗に示すものではない。逆に、本発明の1つ又は複数の多種多様な可能な実施形態を説明するため、且つ本発明の1つ又は複数の態様をより十分に説明するために、様々な任意選択的構成要素を記載し得る。同様に、プロセスステップ、方法ステップ、アルゴリズム等は逐次順で説明されることがあるが、そのようなプロセス、方法、及びアルゴリズムは一般に、逆のことが特記される場合を除き、代替の順序で機能するように構成することもできる。換言すれば、本特許出願に記載され得る任意の順序又は順番のステップはそれ自体として、ステップがその順序で実行されるという要件を示さない。記載されるプロセスのステップは実際に任意の順序で実行し得る。さらに、ステップによっては、同時に発生するものとして説明又は暗示されていない(例えば、一方のステップが別のステップの後に説明されているため)にもかかわらず、同時に実行してもよいものがある。さらに、図面での図示によるプロセスの説明は、示されるプロセスが他の変形及び変更を除外することを暗示するものではなく、示されるプロセス又はその任意のステップが本発明の1つ又は複数に必要であることを暗示するものではなく、示されるプロセスが好ましいことを暗示するものでもない。また、ステップは一般に、実施形態毎に1回説明されるが、これは、1回のみ行われなければならないこと、又はプロセス、方法、若しくはアルゴリズムが実施又は実行される都度、1回のみ行い得ることを意味するものではない。ステップによっては、幾つかの実施形態若しくは幾つかの場合で省いてもよいものもあり、又はステップによっては、所与の実施形態若しくは場合で2回以上実行し得るものもある。   The description of an embodiment having several components that communicate with each other does not imply that all such components are required. Conversely, various optional components may be used to describe one or more of the various possible embodiments of the present invention and to more fully describe one or more aspects of the present invention. Can be described. Similarly, process steps, method steps, algorithms, etc. may be described in a sequential order, but such processes, methods, and algorithms are generally in an alternate order, unless stated to the contrary. It can also be configured to function. In other words, any order or sequence of steps that may be described in this patent application does not in itself indicate the requirement that the steps be performed in that order. The process steps described may actually be performed in any order. Furthermore, some steps may be performed simultaneously, even though they are not described or implied as occurring simultaneously (eg, because one step is described after another). Further, the description of the process by way of illustration in the drawings does not imply that the process shown excludes other variations and modifications, and the process shown or any step thereof is required for one or more of the invention. It does not imply that it is, nor does it imply that the process shown is preferred. Also, although steps are generally described once for each embodiment, this must be done only once, or can be done only once each time a process, method, or algorithm is implemented or executed. It doesn't mean that. Some steps may be omitted in some embodiments or in some cases, or some steps may be performed more than once in a given embodiment or case.

単一のデバイス又は物品が記載される場合、2つ以上のデバイス又は物品を単一のデバイス又は物品の代わりに使用し得ることが容易に理解し得る。同様に、2つ以上のデバイス又は物品が記載される場合、単一のデバイス又は物品を2つ以上のデバイス又は物品の代わりに使用し得ることが容易に理解し得る。   Where a single device or article is described, it can be readily appreciated that more than one device or article can be used in place of a single device or article. Similarly, where more than one device or article is described, it can be readily appreciated that a single device or article can be used in place of more than one device or article.

デバイスの機能又は特徴は代替として、そのような機能又は特徴を有するものとして明示的に説明されていない1つ又は複数の他のデバイスによって実施してもよい。したがって、本発明の1つ又は複数の他の実施形態はデバイス自体を含む必要がない。   Device functions or features may alternatively be implemented by one or more other devices not explicitly described as having such functions or features. Thus, one or more other embodiments of the present invention need not include the device itself.

本明細書で記載又は参照される技法及びメカニズムは、明確にするために、単数形で説明されることがある。しかし、特定の実施形態が、特に断りのない限り、技法の複数の反復又はメカニズムの複数の反復を含むことに留意されたい。図中のプロセスの説明又はブロックは、プロセスでの特定の論理機能又はステップを実施する1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの部分を表すものとして理解されたい。当業者には理解されるように、関わる機能に応じて、略同時又は逆順を含め、例えば、示される順又は考察される順以外で機能を実行し得る代替の実施態様は、本発明の実施形態の範囲内に含まれる。   The techniques and mechanisms described or referenced herein may be described in the singular for the sake of clarity. However, it should be noted that certain embodiments include multiple iterations of the technique or multiple iterations of the mechanism unless otherwise noted. Process descriptions or blocks in the figures should be understood as representing modules, segments, or portions of code that contain one or more executable instructions that perform a particular logical function or step in the process. As will be appreciated by those skilled in the art, alternative embodiments that may perform functions other than in the order shown or discussed, including substantially simultaneous or reverse order, depending on the function involved, are examples of implementations of the invention. Included within the scope of the form.

一般に、本明細書に開示される技法は、ハードウェア又はソフトウェアとハードウェアとの組み合わせで実施し得る。例えば、オペレーティングシステムカーネル、別個のユーザプロセス、ネットワークアプリケーションにバインドされたライブラリパッケージ、特に構築されたマシン、特定用途向け集積回路(ASIC)、又はネットワークインタフェースカードで実施し得る。   In general, the techniques disclosed herein may be implemented in hardware or a combination of software and hardware. For example, it may be implemented in an operating system kernel, a separate user process, a library package bound to a network application, in particular a built machine, an application specific integrated circuit (ASIC), or a network interface card.

本明細書に開示される実施形態のうちの少なくとも幾つかのソフトウェア/ハードウェアハイブリッド実施態様は、メモリに記憶されたコンピュータプログラムによって選択的にアクティブ化又は再構成されるプログラマブルネットワーク常駐マシン(断続的に接続されるネットワークアウェアマシンを含むものとして理解され得る)で実施し得る。そのようなネットワークデバイスは、異なるタイプのネットワーク通信プロトコルを利用するように構成又は設計し得る複数のネットワークインタフェースを有し得る。これらのマシンの幾つかの一般構造は、所与の機能ユニットを実施し得る1つ又は複数の例示的な手段を示すために、本明細書において開示し得る。特定の実施形態によれば、本明細書に開示される様々な実施形態の特徴又は機能の少なくとも幾つかは、例えば、エンドユーザコンピュータシステム、クライアントコンピュータ、ネットワークサーバ又は他のサーバシステム、モバイル計算デバイス(例えば、タブレット計算デバイス、携帯電話、スマートフォン、ラップトップ等)、消費者電子デバイス、音楽プレーヤ、任意の他の適する電子デバイス、ルータ、スイッチ等、又はそれらの任意の組み合わせ等の1つ又は複数のネットワークに関連付けられた1つ又は複数の汎用コンピュータで実施し得る。少なくとも幾つかの実施形態では、本明細書に開示される様々な実施形態の特徴又は機能の少なくとも幾つかは、1つ又は複数の仮想化計算環境(例えば、ネットワーク計算クラウド、1つ又は複数の物理的計算マシンでホストされる仮想マシン等)で実施し得る。さらに、幾つかの実施形態では、本発明の1つ若しくは複数の態様又は全ての態様は、任意選択的に、特にプログラムされたチップ(例えば、特定用途向け集積回路、すなわちASIC、又は消去可能プログラマブル読み取り専用メモリ、すなわちEPROM)又は当技術分野で既知の何らかの他のハードウェアのみの手法を介して実施し得る。   A software / hardware hybrid implementation of at least some of the embodiments disclosed herein is a programmable network resident machine (intermittently) that is selectively activated or reconfigured by a computer program stored in memory. Can be understood as including network-aware machines connected to the network). Such a network device may have multiple network interfaces that may be configured or designed to utilize different types of network communication protocols. Some general structures of these machines may be disclosed herein to illustrate one or more exemplary means that can implement a given functional unit. According to certain embodiments, at least some of the features or functions of the various embodiments disclosed herein can be, for example, an end-user computer system, a client computer, a network server or other server system, a mobile computing device One or more of (eg, tablet computing device, mobile phone, smartphone, laptop, etc.), consumer electronic device, music player, any other suitable electronic device, router, switch, etc., or any combination thereof One or more general purpose computers associated with a network of In at least some embodiments, at least some of the features or functions of the various embodiments disclosed herein may include one or more virtualized computing environments (eg, a network computing cloud, one or more Or a virtual machine hosted on a physical computing machine). Further, in some embodiments, one or more aspects or all aspects of the present invention optionally include a specifically programmed chip (eg, application specific integrated circuit, ie, ASIC, or erasable programmable). Read-only memory (or EPROM) or any other hardware-only technique known in the art.

[例示的なハードウェア実施形態の説明]
これより図10を参照して、本明細書に開示される特徴又は機能の少なくとも一部の実施に適する例示的な計算デバイス1200を示すブロック図を示す。計算デバイス1200は、例えば、前段落で列挙した計算マシンのうちの任意の1つであり得るか、又は実際に、メモリに記憶された1つ又は複数のプログラムに従ってソフトウェア又はハードウェアベースの命令を実行可能な任意の他の電子デバイスであり得る。計算デバイス1200は、広域ネットワーク、大都市圏ネットワーク、ローカルエリアネットワーク、無線ネットワーク、インターネット、又は任意の他のネットワーク等の通信ネットワークを介して、有線であれ無線であれ関係なく、そのような通信に既知のプロトコルを使用して、クライアント又はサーバ等の複数の他の計算デバイスと通信するように構成し得る。
[Description of Exemplary Hardware Embodiment]
With reference now to FIG. 10, a block diagram illustrating an exemplary computing device 1200 suitable for implementing at least some of the features or functions disclosed herein is shown. The computing device 1200 can be, for example, any one of the computing machines listed in the previous paragraph, or in fact, software or hardware-based instructions according to one or more programs stored in memory. It can be any other electronic device that can be implemented. The computing device 1200 can communicate over a communication network such as a wide area network, a metropolitan area network, a local area network, a wireless network, the Internet, or any other network, whether wired or wireless. It may be configured to communicate with multiple other computing devices such as clients or servers using known protocols.

一実施形態では、計算デバイス1200は、1つ又は複数の中央演算処理装置(CPU)1202、1つ又は複数のインタフェース1210、及び1つ又は複数のバス1206(周辺機器相互接続(PCI)バス等)を含む。適切なソフトウェア又はファームウェアの制御下で動作する場合、CPU1202は、特に構成された計算デバイス又はマシンの機能に関連付けられた特定の機能の実施を担当し得る。例えば、少なくとも1つの実施形態では、計算デバイス1200は、CPU1202と、ローカルメモリ1201及び/又はリモートメモリ1220と、インタフェース1210とを利用するサーバシステムとして機能するように構成又は設計し得る。少なくとも1つの実施形態では、CPU1202は、例えば、オペレーティングシステム及び任意の適切なアプリケーションソフトウェア、ドライバ等を含み得るソフトウェアモジュール又は構成要素の制御下で、異なるタイプの機能及び/又は動作のうちの1つ又は複数を実行させ得る。   In one embodiment, the computing device 1200 includes one or more central processing units (CPUs) 1202, one or more interfaces 1210, and one or more buses 1206 (such as a peripheral component interconnect (PCI) bus). )including. When operating under the control of appropriate software or firmware, the CPU 1202 may be responsible for performing specific functions associated with functions of a specifically configured computing device or machine. For example, in at least one embodiment, computing device 1200 may be configured or designed to function as a server system that utilizes CPU 1202, local memory 1201 and / or remote memory 1220, and interface 1210. In at least one embodiment, the CPU 1202 is one of different types of functions and / or operations under the control of a software module or component that may include, for example, an operating system and any suitable application software, drivers, etc. Or more than one may be executed.

CPU1202は、例えば、インテル(Intel)、ARM、クゥアルコム(Qualcomm)、及びAMDファミリのマイクロプロセッサのうちの1つからのプロセッサ等の1つ又は複数のプロセッサ1203を含み得る。幾つかの実施形態では、プロセッサ1203は、計算デバイス1200の動作を制御する、特定用途向け集積回路(ASIC)、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、フィールドプログラマブルゲートアレイ(FPGA)等の特に設計されたハードウェアを含み得る。特定の実施形態では、ローカルメモリ1201(例えば、1つ又は複数のレベルのキャッシュメモリを含む不揮発性ランダムアクセスメモリ(RAM)及び/又は読み取り専用メモリ(ROM)等)は、CPU1202の一部をなしてもよい。しかし、メモリをシステム1200に結合し得る多くの異なる方法がある。メモリ1201は、例えば、データ、プログラミング命令等のキャッシュ及び/又は記憶等の様々な目的で使用し得る。   The CPU 1202 may include one or more processors 1203, such as, for example, a processor from one of Intel, ARM, Qualcomm, and AMD family of microprocessors. In some embodiments, the processor 1203 controls the operation of the computing device 1200, such as an application specific integrated circuit (ASIC), an electrically erasable programmable read only memory (EEPROM), a field programmable gate array (FPGA). And specifically designed hardware. In certain embodiments, local memory 1201 (eg, non-volatile random access memory (RAM) and / or read only memory (ROM) including one or more levels of cache memory) is part of CPU 1202. May be. However, there are many different ways in which memory can be coupled to system 1200. The memory 1201 may be used for various purposes such as caching and / or storing data, programming instructions, etc., for example.

本明細書で使用される場合、「プロセッサ」という用語は、単に当技術分野でプロセッサ、モバイルプロセッサ、又はマイクロプロセッサと呼ばれる集積回路に限定されず、マイクロコントローラ、マイクロコンピュータ、プログラマブル論理コントローラ、特定用途向け集積回路、及び任意の他のプログラマブル回路を広く指す。   As used herein, the term “processor” is not limited to simply an integrated circuit referred to in the art as a processor, mobile processor, or microprocessor, but includes a microcontroller, microcomputer, programmable logic controller, and specific application. Directed integrated circuit, and any other programmable circuit.

一実施形態では、インタフェース1210はネットワークインタフェースカード(NIC)として提供される。一般に、NICは、コンピュータネットワークを介するデータパケットの送受信を制御し、他のタイプのインタフェース1210は、例えば、計算デバイス1200と併用される他の周辺機器をサポートし得る。提供し得るインタフェースの中でも、イーサネットインタフェース、フレーム中継インタフェース、ケーブルインタフェース、DSLインタフェース、トークンリングインタフェース、グラフィックスインタフェース等である。さらに、例えば、ユニバーサルシリアルバス(USB)、シリアル、イーサネット、ファイアワイヤ(Fire wire)(登録商標)、PCI、パラレル、無線周波(RF),ブルートゥース(Bluetooth)(登録商標)、近距離通信(例えば、近距離磁場を使用する)、802.11(WiFi)、フレーム中継、TCP/IP、ISDN、高速イーサネットインタフェース、ギガビットイーサネットインタフェース、非同期転送モード(ATM)インタフェース、高速シリアルインタフェース(HSSI)インタフェース、POSインタフェース、ファイバデータ分散インタフェース(FDDI)等の様々なタイプのインタフェースを提供し得る。一般に、そのようなインタフェース1210は、適切なメディアと通信するのに適切なポートを含み得る。場合によっては、独立したプロセッサと、幾つかの場合では、揮発性メモリ及び/又は不揮発性メモリ(例えば、RAM)とを含むこともできる。   In one embodiment, interface 1210 is provided as a network interface card (NIC). In general, the NIC controls the transmission and reception of data packets over the computer network, and other types of interfaces 1210 may support other peripherals used in conjunction with the computing device 1200, for example. Among the interfaces that can be provided, there are an Ethernet interface, a frame relay interface, a cable interface, a DSL interface, a token ring interface, a graphics interface, and the like. Further, for example, universal serial bus (USB), serial, Ethernet, Fire wire (registered trademark), PCI, parallel, radio frequency (RF), Bluetooth (registered trademark), near field communication (for example, , 802.11 (WiFi), frame relay, TCP / IP, ISDN, high-speed Ethernet interface, Gigabit Ethernet interface, asynchronous transfer mode (ATM) interface, high-speed serial interface (HSSI) interface, POS Various types of interfaces may be provided, such as interfaces, fiber data distribution interfaces (FDDI). In general, such an interface 1210 may include an appropriate port to communicate with the appropriate media. In some cases, an independent processor and, in some cases, volatile and / or non-volatile memory (eg, RAM) may be included.

図10に示されるシステムは、本明細書に記載される本発明の1つ又は複数を実施する計算デバイス1200の特定の1つのアーキテクチャを示すが、決して、本明細書で記載される特徴及び技法の少なくとも一部を実施し得る唯一のデバイスアーキテクチャではない。例えば、1つ又は任意の数のプロセッサ1203を有するアーキテクチャを使用し得、そのようなプロセッサ1203は、単一のデバイスに存在してもよく、又は任意の数のデバイスに分散してもよい。一実施形態では、単一のプロセッサ1203が、通信及び計算ルーティングを処理するが、他の実施形態では、別個の専用通信プロセッサを提供し得る。様々な実施形態では、クライアントデバイス(クライアントソフトウェアを実行するタブレットデバイス又はスマートフォン等)と、サーバシステム(より詳細に後述するサーバシステム等)とを含む本発明によるシステムで異なるタイプの特徴又は機能を実施し得る。   The system shown in FIG. 10 illustrates one particular architecture of computing device 1200 that implements one or more of the inventions described herein, but in no way is the features and techniques described herein. Is not the only device architecture that can implement at least part of For example, an architecture with one or any number of processors 1203 may be used, and such processors 1203 may reside on a single device or distributed across any number of devices. In one embodiment, a single processor 1203 handles communication and computational routing, but in other embodiments, a separate dedicated communication processor may be provided. In various embodiments, different types of features or functions are implemented in a system according to the present invention including a client device (such as a tablet device or a smartphone that executes client software) and a server system (such as a server system described in more detail below). Can do.

ネットワークデバイスの構成に関係なく、本発明のシステムは、汎用ネットワーク動作用のデータ、プログラム命令、又は本明細書で記載される実施形態の機能に関連する他の情報(又は上記の任意の組み合わせ)を記憶するように構成される1つ若しくは複数のメモリ又はメモリモジュール(例えば、リモートメモリブロック1220及びローカルメモリ1201等)を利用し得る。プログラム命令は、例えば、オペレーティングシステム及び/又は1つ又は複数のアプリケーションの実行を制御し得るか、又はそれ(ら)を含み得る。メモリ1220又はメモリ1201、1220は、データ構造、構成データ、暗号化データ、過去のシステム動作情報、又は本明細書に記載される任意の他の特定若しくは汎用非プログラム情報を記憶するように構成することもできる。   Regardless of the configuration of the network device, the system of the present invention may be used for general network operation data, program instructions, or other information related to the functionality of the embodiments described herein (or any combination of the above). One or more memories or memory modules (eg, remote memory block 1220 and local memory 1201 etc.) configured to store The program instructions may, for example, control or include the execution of an operating system and / or one or more applications. Memory 1220 or memory 1201, 1220 is configured to store data structure, configuration data, encrypted data, past system operational information, or any other specific or general purpose non-program information described herein. You can also.

そのような情報及びプログラム命令を利用して、本明細書に記載される1つ又は複数のシステム又は方法を実施し得るため、少なくとも幾つかのネットワークデバイス実施形態は、例えば、本明細書に記載される様々な動作を実行するためのプログラム命令、状態情報を記憶する構成又は設計し得る非一時的機械可読記憶媒体を含み得る。そのような非一時的機械可読記憶媒体の例としては、ハードディスク、フロッピーディスク(登録商標)、及び磁気テープ等の磁気媒体、CD−ROMディスク等の光学媒体、光ディスク等の磁気光学媒体、及び読み取り専用メモリデバイス(ROM)、フラッシュメモリ、固体状態ドライブ、メモリスタメモリ、ランダムアクセスメモリ(RAM)等のプログラム命令を記憶し実行するように特に構成されるハードウェアデバイスが挙げられるが、これらに限定されない。プログラム命令の例としては、コンパイラによって生成し得るようなオブジェクトコード、アセンブラ若しくはリンカによって生成し得るような機械コード、例えば、Java(登録商標)コンパイラによって生成し、Java仮想マシン等を使用して実行し得るようなバイトコード、又はインタプリタ(例えば、パイソン(Python)、パール(Perl)、ルビー(Ruby)、グルービィ(Groovy)、又は任意の他のスクリプト言語で書かれたスクリプト)を使用してコンピュータによって実行し得るより高水準のコードを含むファイルが挙げられる。   Since such information and program instructions may be utilized to implement one or more systems or methods described herein, at least some network device embodiments are described herein, for example. Non-transitory machine readable storage media that may be configured or designed to store program instructions, state information for performing various operations performed. Examples of such non-transitory machine-readable storage media include magnetic media such as hard disks, floppy disks (registered trademark) and magnetic tapes, optical media such as CD-ROM disks, magneto-optical media such as optical disks, and reading Hardware devices that are specifically configured to store and execute program instructions, such as, but not limited to, dedicated memory devices (ROM), flash memory, solid state drives, memristor memory, random access memory (RAM), etc. Not. Examples of program instructions include object code that can be generated by a compiler, machine code that can be generated by an assembler or linker, for example, generated by a Java (registered trademark) compiler, and executed using a Java virtual machine or the like. A computer using bytecode, or an interpreter, such as a script written in Python, Perl, Ruby, Groovy, or any other scripting language File containing higher level code that can be executed by.

幾つかの実施形態では、本発明によるシステムは、スタンドアロン計算システムで実施し得る。これより図11を参照して、スタンドアロン計算システムでの1つ若しくは複数の実施形態又はその構成要素の典型的で例示的なアーキテクチャを示すブロック図を示す。計算デバイス1300はプロセッサ1310を含み、プロセッサ1310は、例えば、クライアントアプリケーション1330等の本発明の実施形態の1つ又は複数の機能又はアプリケーションを実施するソフトウェアを実行し得る。プロセッサ1310は、例えば、あるバージョンのマイクロソフトウィンドウズ(Windows)(登録商標)オペレーティングシステム、アップル(Apple)のMacOS(登録商標)/X又はiOSオペレーティングシステム、リナックス(Linux)(登録商標)オペレーティングシステムの幾つかのバラエティ、グーグル(Google)のアンドロイド(Android)(商標)オペレーティングシステム等のオペレーティングシステム1320の制御下で計算命令を実行し得る。多くの場合、1つ又は複数の共有サービス1325がシステム1300で動作可能であり得、クライアントアプリケーション1330に共通サービスを提供するのに有用であり得る。サービス1325は、例えば、ウィンドウズ(Windows)(登録商標)サービス、リナックス(Linux)環境でのユーザ空間共通サービス、又はオペレーティングシステム1310と併用される任意の他のタイプの共通サービスアーキテクチャであり得る。入力デバイス1370は、例えば、キーボード、タッチスクリーン、マイクロホン(例えば、音声入力用)、マウス、タッチパッド、トラックボール、又はそれらの任意の組み合わせを含め、ユーザ入力の受信に適する任意のタイプのものであり得る。出力デバイス1360は、システム1300からリモートであるか、それともローカルであるかに関係なく、出力を1人又は複数のユーザに提供するのに適する任意のタイプのものであり得、例えば、視覚的出力用の1つ又は複数の画面、スピーカ、プリンタ、又はそれらの任意の組み合わせを含み得る。メモリ1340は、プロセッサ1310によって使用されて、例えば、ソフトウェアを実行する当技術分野で既知の任意の構造及びアーキテクチャを有するランダムアクセスメモリであり得る。記憶デバイス1350は、デジタル形態でデータを記憶する任意の磁気、光学、機械的、メモリスタ、又は電気的記憶デバイスであり得る。記憶デバイス1350の例としては、フラッシュメモリ、磁気ハードディスク、CD−ROM等を含む。   In some embodiments, the system according to the present invention may be implemented in a standalone computing system. Referring now to FIG. 11, a block diagram illustrating an exemplary architecture of one or more embodiments or components thereof in a stand-alone computing system is shown. The computing device 1300 includes a processor 1310, which may execute software that implements one or more functions or applications of an embodiment of the invention, such as, for example, a client application 1330. The processor 1310 may be, for example, some versions of Microsoft Windows® operating system, Apple's MacOS® / X or iOS operating system, or Linux® operating system. Calculation instructions may be executed under the control of an operating system 1320, such as Google's Android ™ operating system. In many cases, one or more shared services 1325 may be operable in system 1300 and may be useful in providing common services to client applications 1330. Service 1325 can be, for example, a Windows® service, a user space common service in a Linux environment, or any other type of common service architecture used in conjunction with operating system 1310. Input device 1370 may be of any type suitable for receiving user input, including, for example, a keyboard, touch screen, microphone (eg, for voice input), mouse, touch pad, trackball, or any combination thereof. possible. Output device 1360 may be of any type suitable for providing output to one or more users, whether remote from system 1300 or local, eg, visual output One or more screens, speakers, printers, or any combination thereof. Memory 1340 may be random access memory used by processor 1310 and having any structure and architecture known in the art to execute software, for example. Storage device 1350 may be any magnetic, optical, mechanical, memristor, or electrical storage device that stores data in digital form. Examples of the storage device 1350 include a flash memory, a magnetic hard disk, a CD-ROM, and the like.

幾つかの実施形態では、本発明のシステムは、任意の数のクライアント及び/又はサーバを有するような分散計算ネットワークで実施し得る。これより図12を参照し分散計算ネットワークで本発明の一実施形態によるシステムの少なくとも一部を実施する例示的なアーキテクチャを示すブロック図を示す。本実施形態によれば、任意の数のクライアント1430を提供し得る。各クライアント1430は、本発明のクライアント側部分を実施するソフトウェアを実行し得、クライアントは、図11に示されるようなシステム1300を備え得る。加えて、任意の数のサーバ1420を提供して、1つ又は複数のクライアント1430から受信される要求を処理し得る。クライアント1430及びサーバ1420は、1つ又は複数の電子ネットワーク1410を介して互いに通信し得、電子ネットワーク1410は、様々な実施形態では、インターネット、広域ネットワーク、モバイル電話回線網、無線ネットワーク(WiFi(登録商標)、WiMax(登録商標)等)、又はローカルエリアネットワーク(又は実際には、当技術分野で既知の任意のネットワークトポロジー、本発明は、いかなるネットワークトポロジーも任意の他のネットワークトポロジーよりも好むということがない)のうちの任意であり得る。ネットワーク1410は、例えば、有線プロトコル及び/又は無線プロトコルを含む任意の既知のネットワークプロトコルを使用して実施し得る。   In some embodiments, the system of the present invention may be implemented in a distributed computing network having any number of clients and / or servers. Referring now to FIG. 12, a block diagram illustrating an exemplary architecture for implementing at least a portion of a system according to an embodiment of the present invention in a distributed computing network is shown. According to this embodiment, any number of clients 1430 may be provided. Each client 1430 may execute software that implements the client-side portion of the present invention, and the client may comprise a system 1300 as shown in FIG. In addition, any number of servers 1420 may be provided to process requests received from one or more clients 1430. Client 1430 and server 1420 may communicate with each other via one or more electronic networks 1410, which in various embodiments may include the Internet, wide area networks, mobile telephone networks, wireless networks (WiFi (registration)). Trademark), WiMax®, etc.), or a local area network (or indeed any network topology known in the art), the present invention prefers any network topology over any other network topology Can be any). The network 1410 may be implemented using any known network protocol including, for example, a wired protocol and / or a wireless protocol.

加えて、幾つかの実施形態では、サーバ1420は、必要な場合に外部サービス1470を呼び出して、追加情報を得るか、又は特定の呼び出しに関する追加データを参照し得る。外部サービス1470との通信は、例えば、1つ又は複数のネットワーク1410を介して行い得る。様々な実施形態では、外部サービス1470は、ハードウェアデバイス自体に関連するか、又はインストールされたウェブ対応サービス又は機能を含み得る。例えば、クライアントアプリケーション1330がスマートフォン又は他の電子デバイスで実施される実施形態では、クライアントアプリケーション1330は、クラウド内のサーバシステム1420又は特定の企業若しくはユーザの構内のうちの1つ若しくは複数に展開される外部サービス1470に記憶される情報を取得し得る。   In addition, in some embodiments, the server 1420 may call an external service 1470 to obtain additional information, if necessary, or reference additional data regarding a particular call. Communication with external service 1470 may be performed via one or more networks 1410, for example. In various embodiments, the external service 1470 may include a web-enabled service or function that is associated with or installed on the hardware device itself. For example, in embodiments where the client application 1330 is implemented on a smartphone or other electronic device, the client application 1330 is deployed on one or more of a server system 1420 in the cloud or a specific company or user premises. Information stored in the external service 1470 may be obtained.

本発明の幾つかの実施形態では、クライアント1430又はサーバ1420(又は両方)は、1つ又は複数のネットワーク1410を介してローカル又はリモートに展開し得る1つ又は複数の専用サーバ又はアプリケーションを利用し得る。例えば、1つ又は複数のデータベース1440を本発明の1つ又は複数の実施形態により使用し得るか、又は参照し得る。データベース1440を多種多様なアーキテクチャで、多種多様なデータアクセス及び処理手段を使用して構成し得ることを当業者は理解されたい。例えば、様々な実施形態では、1つ又は複数のデータベース1440は、構造化クエリ言語(SQL)を使用する関係データベースシステムを含み得、一方、他のデータベース1440は、当技術分野で「NoSQL」(例えば、ハドゥープ(Hadoop)(登録商標)、カサンドラ(Cassandra)(登録商標)、グーグルビッグテーブル(Google BigTable)(登録商標)等)と呼ばれるような代替のデータ記憶技術を含み得る。幾つかの実施形態では、カラム指向データベース、インメモリデータベース、クラスタデータベース、分散データベース、又はフラットファイルデータリポジトリ等の変形データベースアーキテクチャを本発明により使用し得る。本明細書において特定の実施形態に対して特定のデータベース技術又は特定の構成の構成要素が指定されない限り、既知又は将来のデータベース技術の任意の組み合わせを適宜使用し得ることを当業者は理解し得る。さらに、本明細書で使用される「データベース」という用語が、物理的なデータベースマシン、単一のデータベースシステムとして機能するマシンのクラスタ、又は全体データベース管理システム内の論理データベースを指し得ることを理解されたい。「データベース」という用語の所与の使用に対して特定の意味が指定されない限り、この用語のこれらの意味のうちの任意の意味を意味するものと解釈されたく、これらの意味の全てが、当業者による「データベース」という用語の通常の意味として理解される。   In some embodiments of the present invention, client 1430 or server 1420 (or both) utilize one or more dedicated servers or applications that can be deployed locally or remotely over one or more networks 1410. obtain. For example, one or more databases 1440 may be used or referenced by one or more embodiments of the present invention. Those skilled in the art will appreciate that the database 1440 can be configured in a wide variety of architectures and using a wide variety of data access and processing means. For example, in various embodiments, one or more databases 1440 may include a relational database system that uses a structured query language (SQL), while other databases 1440 are “NoSQL” ( For example, it may include alternative data storage technologies such as those referred to as Hadoop®, Cassandra®, Google BigTable®, etc. In some embodiments, a modified database architecture such as a column-oriented database, an in-memory database, a cluster database, a distributed database, or a flat file data repository may be used with the present invention. Those skilled in the art will understand that any combination of known or future database technologies may be used as appropriate unless specific database technologies or components of a particular configuration are specified herein for a particular embodiment. . Further, it is understood that the term “database” as used herein may refer to a physical database machine, a cluster of machines functioning as a single database system, or a logical database within an overall database management system. I want. Unless a specific meaning is specified for a given use of the term “database”, it is to be construed to mean any of these meanings of this term, and all of these meanings It is understood as the ordinary meaning of the term “database” by a vendor.

同様に、本発明の大半の実施形態は、1つ又は複数のセキュリティシステム1460及び構成システム1450を利用し得る。セキュリティ及び構成の管理は、一般的な情報技術(IT)及びウェブ機能であり、それぞれの幾らかの量は一般に任意のIT又はウェブシステムに関連付けられる。特定のセキュリティ1460又は構成システム1450若しくは手法が任意の特定の実施形態の説明によって特に要求されない限り、限定ではなく、現在当技術分野で既知であるか、又は将来知られる任意の構成又はセキュリティサブシステムを、本発明の実施形態と併せて使用し得ることを当業者は理解し得る。   Similarly, most embodiments of the present invention may utilize one or more security systems 1460 and configuration systems 1450. Security and configuration management is a general information technology (IT) and web function, with some amount of each generally associated with any IT or web system. Any configuration or security subsystem currently known in the art or known in the future, without limitation, unless a particular security 1460 or configuration system 1450 or technique is specifically required by the description of any particular embodiment Can be used in conjunction with embodiments of the present invention.

様々な実施形態では、本発明のシステム又は方法を実施する機能は、任意の数のクライアント及び/又はサーバ構成要素に分散し得る。例えば、本発明に関連して様々な機能を実行する様々なソフトウェアモジュールを実施し得、そのようなモジュールは、様々に実施して、サーバ及び/又はクライアント構成要素で実行することができる。   In various embodiments, the functionality to implement the system or method of the present invention may be distributed over any number of client and / or server components. For example, various software modules may be implemented that perform various functions in connection with the present invention, and such modules may be variously implemented and executed on server and / or client components.

したがって、本明細書に開示される様々な実施形態は、ソースから、同じ視聴覚空間内のTV及びスピーカ等の複数のメディアデバイスへのメディアの送信を可能にする。実施形態によれば、これは、Wi−Fi等の無線ネットワークを介して行い得る。様々な実施形態は、同じリスニングゾーン又は閲覧ゾーン内にあるスピーカ等の全てのメディアレンダリングデバイスが、互いに精密に同期できるようにし、それにより、聴き手及び/又は閲覧者はいかなる非意図的なメディア経験も認識しない。   Accordingly, the various embodiments disclosed herein allow transmission of media from a source to multiple media devices such as TVs and speakers in the same audiovisual space. According to embodiments, this may be done via a wireless network such as Wi-Fi. Various embodiments allow all media rendering devices such as speakers within the same listening zone or viewing zone to be precisely synchronized with each other so that the listener and / or viewer can use any unintentional media. Does not recognize experience.

上述した様々な実施形態の可能な様々な変更を当業者は認識し得る。したがって、本発明は特許請求の範囲及びその均等物によって規定される。   Those skilled in the art will recognize the various possible variations of the various embodiments described above. Therefore, the present invention is defined by the claims and their equivalents.

Claims (15)

イベントベース同期型マルチメディア再生システムであって、
各々ローカルクロックを備えるとともにネットワークに接続され、前記ネットワークを介して受信したメディアをレンダリングするように構成された複数の宛先デバイスと、
前記ネットワークに接続されたデバイス上で動作するとともに前記複数の宛先デバイスと通信するように構成された同期モジュールであって、一意のイベント識別子nを有する共通イベントEnを、前記複数の宛先デバイスの各々に定期的に送信する前記同期モジュールと、
を備え、
各宛先デバイスは、イベントEnが受信される時刻Dxnを記録し、少なくとも前記時刻Dxn及び前記一意のイベント識別子nを含む肯定応答メッセージを送信し、
前記同期モジュールは更に、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとの周波数差を特定するステップと、
(b)前記第1の宛先デバイスと各宛先デバイスとの間における(a)で特定された差を補償する周波数調整値を計算するステップと、
(c)(b)で求められた周波数調整値に関連する量だけクロック周波数を調整する処理、及び(b)で求められた周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理のうちの少なくとも一方を行うように各宛先デバイスに指示するステップと
を実行するものであり、
各宛先デバイスは、前記同期モジュールが前記各ステップを実行することにより、オーディオメディア又はビデオメディアをストリーミングするように構成されたメディアソースデバイスから前記ネットワークを介して受信したメディアを同期してレンダリングする、システム。
An event-based synchronized multimedia playback system,
A plurality of destination devices each comprising a local clock and connected to a network and configured to render media received over the network;
A synchronization module operating on a device connected to the network and configured to communicate with the plurality of destination devices, wherein a common event En having a unique event identifier n is assigned to each of the plurality of destination devices. Said synchronization module to periodically transmit to,
With
Each destination device records a time Dxn at which the event En is received and sends an acknowledgment message including at least the time Dxn and the unique event identifier n,
The synchronization module is further configured for each of the plurality of destination devices.
(A) identifying a frequency difference between the local clock of each destination device and the local clock of the first destination device;
(B) calculating a frequency adjustment value that compensates for the difference identified in (a) between the first destination device and each destination device;
(C) receiving from the media source device to perform the process of adjusting the clock frequency by an amount related to the frequency adjustment value determined in (b), and the frequency adjustment related to the frequency adjustment value determined in (b). Instructing each destination device to perform at least one of the processes for performing the sample rate conversion of the media,
Each destination device synchronously renders media received over the network from a media source device configured to stream audio or video media, with the synchronization module performing the steps. system.
前記宛先デバイスは、前記周波数調整値を使用して、前記メディアのレンダリングに使用されるローカルクロックを調整する、請求項1に記載のシステム。 The system of claim 1, wherein the destination device uses the frequency adjustment value to adjust a local clock used for rendering the media. 前記宛先デバイスは、クロック周波数を調整する代わりに、前記周波数調整値を使用して、前記メディアのレンダリング前に前記メディアのサンプルレート変換を実行する、請求項1に記載のシステム。 The system of claim 1, wherein the destination device uses the frequency adjustment value to perform a sample rate conversion of the media prior to rendering the media instead of adjusting a clock frequency. 共通イベントベース同期型マルチメディア再生方法であって、
(a)ネットワークに接続されたデバイスで動作する同期モジュールから一意のイベント識別子nを有する共通イベントEnを定期的に送信するステップと、
(b)前記ネットワークを介して、ローカルクロックを備える複数の宛先デバイスの各々で前記イベントEnを受信するステップと、
(c)各宛先デバイスで、イベントEnが受信される時刻Dxnを記録するステップと、
(d)各宛先デバイスから前記同期モジュールに、少なくとも前記時刻Dxn及び前記一意のイベント識別子nを含む肯定応答メッセージを送信するステップと、
(e)各宛先デバイスの前記ローカルクロック間の周波数差を前記同期モジュールにより特定するステップと、
(f)ステップ(e)において特定された差を補償する周波数調整値を計算するステップと、
(g)ステップ(f)において求められた周波数調整値に関連する量だけクロック周波数を調整する処理、及びステップ(f)で求められた周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理のうちの少なくとも一方を行うように各宛先デバイスに指示するステップと、
(h)各宛先デバイスが、この周波数調整値を使用して、オーディオメディア又はビデオメディアをストリーミングするメディアソースデバイスから前記ネットワークを介して受信したメディアを同期してレンダリングするステップと、
を備える方法。
A common event-based synchronized multimedia playback method,
(A) periodically transmitting a common event En having a unique event identifier n from a synchronization module operating on a device connected to the network;
(B) receiving the event En at each of a plurality of destination devices having a local clock via the network;
(C) recording the time Dxn at which the event En is received at each destination device;
(D) sending an acknowledgment message including at least the time Dxn and the unique event identifier n from each destination device to the synchronization module;
(E) identifying a frequency difference between the local clocks of each destination device with the synchronization module;
(F) calculating a frequency adjustment value that compensates for the difference identified in step (e);
(G) a media source device to perform the process of adjusting the clock frequency by an amount related to the frequency adjustment value determined in step (f), and the frequency adjustment related to the frequency adjustment value determined in step (f). Instructing each destination device to perform at least one of processing to perform sample rate conversion of the media received from;
(H) each destination device uses this frequency adjustment value to synchronously render media received over the network from a media source device streaming audio or video media;
A method comprising:
前記宛先デバイスは、前記周波数調整値を使用して、前記メディアのレンダリングに使用されるローカルクロックを調整する、請求項4に記載の方法。 The method of claim 4, wherein the destination device uses the frequency adjustment value to adjust a local clock used for rendering the media. 前記宛先デバイスは、クロック周波数を調整する代わりに、前記周波数調整値を使用して、前記メディアのレンダリング前に前記メディアのサンプルレート変換を実行する、請求項4に記載の方法。 5. The method of claim 4, wherein the destination device uses the frequency adjustment value to perform a sample rate conversion of the media prior to rendering the media instead of adjusting a clock frequency. イベントベース同期型マルチメディア再生システムであって、
各々ローカルクロックを備えるとともにネットワークに接続され、前記ネットワークを介して受信したメディアをレンダリングするように構成された複数の宛先デバイスと、
前記ネットワークに接続されたデバイス上で動作するとともに前記複数の宛先デバイスと通信するように構成された同期モジュールと、
を備え、
前記同期モジュールは、複数の肯定応答メッセージをイベントEn毎の収集情報として収集し、受信したイベント識別子nを有する肯定応答メッセージの収集情報を取得して、イベントEnについての肯定応答メッセージのサブセットを作成し、イベントEnについての前記肯定応答メッセージのサブセットを使用することにより第1の宛先デバイス用の周波数調整値を計算し、前記第1の宛先デバイスに対し、
前記計算された周波数調整値に関連する量だけクロック周波数を調整する処理、または、
前記計算された周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理
を実行するように指示する、システム。
An event-based synchronized multimedia playback system,
A plurality of destination devices each comprising a local clock and connected to a network and configured to render media received over the network;
A synchronization module operating on a device connected to the network and configured to communicate with the plurality of destination devices;
With
The synchronization module collects a plurality of acknowledgment messages as collection information for each event En, obtains collection information of the acknowledgment messages having the received event identifier n, and creates a subset of the acknowledgment messages for the event En Calculating a frequency adjustment value for a first destination device by using a subset of the acknowledgment messages for event En, and for the first destination device,
Adjusting the clock frequency by an amount related to the calculated frequency adjustment value, or
A system instructing to perform a sample rate conversion process for media received from a media source device to perform a frequency adjustment associated with the calculated frequency adjustment value.
各宛先デバイスによって受信されるイベントメッセージが前記同期モジュールから発せられる、請求項7に記載のシステム。   The system of claim 7, wherein an event message received by each destination device originates from the synchronization module. 各宛先デバイスによって受信されるイベントメッセージが、前記複数の宛先デバイス、前記メディアソースデバイス、及び前記同期モジュール以外の外部ソースから発せられる、請求項7に記載のシステム。   The system of claim 7, wherein an event message received by each destination device originates from an external source other than the plurality of destination devices, the media source device, and the synchronization module. 前記同期モジュールは更に、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとのクロックオフセットを特定するステップと、
(b)前記クロックオフセットだけクロックカウント又は位相を調整するように各宛先デバイスに指示するステップと
を実行する、請求項1に記載のシステム。
The synchronization module is further configured for each of the plurality of destination devices.
(A) identifying a clock offset between the local clock of each destination device and the local clock of the first destination device;
And (b) instructing each destination device to adjust a clock count or phase by the clock offset.
前記同期モジュールは更に、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとのクロックオフセットを特定するステップと、
(b)前記クロックオフセットだけクロックカウント又は位相を調整するように各宛先デバイスに指示するステップと
を実行する、請求項4に記載の方法。
The synchronization module is further configured for each of the plurality of destination devices.
(A) identifying a clock offset between the local clock of each destination device and the local clock of the first destination device;
And (b) instructing each destination device to adjust a clock count or phase by the clock offset.
前記同期モジュールは更に、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとのクロックオフセットを特定するステップと、
(b)前記クロックオフセットだけクロックカウント又は位相を調整するように各宛先デバイスに指示するステップと
を実行する、請求項7に記載のシステム。
The synchronization module is further configured for each of the plurality of destination devices.
(A) identifying a clock offset between the local clock of each destination device and the local clock of the first destination device;
And (b) instructing each destination device to adjust a clock count or phase by the clock offset.
イベントベース同期型マルチメディア再生システムであって、
各々ローカルクロックを備えるとともにネットワークに接続され、前記ネットワークを介して受信したメディアをレンダリングするように構成された複数の宛先デバイスと、
前記複数の宛先デバイスのうちの1つで動作する同期モジュールと、
を備え、
前記同期モジュールは、一意のイベント識別子nを有する共通イベントEnを、前記複数の宛先デバイスの各々に定期的に送信し、
各宛先デバイスは、イベントEnを受信した時刻Dxnを記録し、少なくとも前記時刻Dxn及び前記一意のイベント識別子nを含む肯定応答メッセージを前記同期モジュールに返信し、
前記同期モジュールは、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとの周波数差を特定するステップと、
(b)前記第1の宛先デバイスと各宛先デバイスとの間における(a)で特定された差を補償する周波数調整値を計算するステップと、
(c)(b)で求められた周波数調整値に関連する量だけクロック周波数を調整する処理、及び(b)で求められた周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理のうちの少なくとも一方を行うように各宛先デバイスに指示するステップと
を実行するように構成されている、システム。
An event-based synchronized multimedia playback system,
A plurality of destination devices each comprising a local clock and connected to a network and configured to render media received over the network;
A synchronization module operating on one of the plurality of destination devices;
With
The synchronization module periodically transmits a common event En having a unique event identifier n to each of the plurality of destination devices;
Each destination device records a time Dxn at which the event En is received, and returns an acknowledgment message including at least the time Dxn and the unique event identifier n to the synchronization module;
The synchronization module for each of the plurality of destination devices;
(A) identifying a frequency difference between the local clock of each destination device and the local clock of the first destination device;
(B) calculating a frequency adjustment value that compensates for the difference identified in (a) between the first destination device and each destination device;
(C) receiving from the media source device to perform the process of adjusting the clock frequency by an amount related to the frequency adjustment value determined in (b), and the frequency adjustment related to the frequency adjustment value determined in (b). And a step of instructing each destination device to perform at least one of the processes of performing the sample rate conversion of the media.
イベントベース同期型マルチメディア再生システムであって、
少なくともメモリとプロセッサとを備えるデバイス上で動作し、ネットワークに接続された同期モジュールを備え、
前記同期モジュールは、前記ネットワークを介して、一意のイベント識別子nを有する共通イベントEnを複数の宛先デバイスの各々に定期的に送信し、
前記同期モジュールは、前記ネットワークを介して複数の肯定応答メッセージを受信し、各肯定応答メッセージは、対応するイベントEnが特定の宛先デバイスで受信された時刻Dxn及び前記一意のイベント識別子nを少なくとも含むものであり、
前記同期モジュールは、前記複数の宛先デバイスの各々について、
(a)各宛先デバイスのローカルクロックと第1の宛先デバイスのローカルクロックとの周波数差を特定するステップと、
(b)前記第1の宛先デバイスと各宛先デバイスとの間における(a)で特定された差を補償する周波数調整値を計算するステップと、
(c)(b)で求められた周波数調整値に関連する量だけクロック周波数を調整する処理、及び(b)で求められた周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理のうちの少なくとも一方を行うように各宛先デバイスに指示する指示メッセージを各宛先デバイスに送信するステップと
を実行する、システム。
An event-based synchronized multimedia playback system,
Operating on a device comprising at least a memory and a processor, comprising a synchronization module connected to a network;
The synchronization module periodically transmits a common event En having a unique event identifier n to each of a plurality of destination devices via the network;
The synchronization module receives a plurality of acknowledgment messages over the network, each acknowledgment message including at least a time Dxn when a corresponding event En was received at a particular destination device and the unique event identifier n. Is,
The synchronization module for each of the plurality of destination devices;
(A) identifying a frequency difference between the local clock of each destination device and the local clock of the first destination device;
(B) calculating a frequency adjustment value that compensates for the difference identified in (a) between the first destination device and each destination device;
(C) receiving from the media source device to perform the process of adjusting the clock frequency by an amount related to the frequency adjustment value determined in (b), and the frequency adjustment related to the frequency adjustment value determined in (b). Transmitting an instruction message to each destination device to instruct each destination device to perform at least one of the processes for performing the sample rate conversion of the media.
共通イベントベース同期型マルチメディア再生方法であって、
(a)少なくともメモリとプロセッサとを備えるとともにネットワークに接続された同期デバイスから、各々一意のイベント識別子nを有する複数の共通イベントEnを送信するステップと、
(b)前記同期デバイスで複数の宛先デバイスからの複数の肯定応答メッセージを受信するステップであって、共通イベントEnが特定の宛先デバイスで受信された時刻Dxn及び前記一意のイベント識別子nを各々少なくとも含む複数の肯定応答メッセージを受信するステップと、
(c)前記複数の肯定応答メッセージに基づいて、各宛先デバイスのクロック間の周波数差を前記同期デバイスで特定するステップと、
(d)ステップ(c)において特定された差を補償する周波数調整値を前記同期デバイスで計算するステップと、
(e)ステップ(d)において求められた周波数調整値に関連する量だけクロック周波数を調整する処理、及びステップ(d)で求められた周波数調整値に関連する周波数調整を実行するべくメディアソースデバイスから受信したメディアのサンプルレート変換を行う処理のうちの少なくとも一方を行うように各宛先デバイスに指示メッセージを送信するステップと、
を備える方法。
A common event-based synchronized multimedia playback method,
(A) transmitting a plurality of common events En each having a unique event identifier n from a synchronization device comprising at least a memory and a processor and connected to a network;
(B) receiving a plurality of acknowledgment messages from a plurality of destination devices at the synchronization device, each including at least a time Dxn at which a common event En is received at a specific destination device and the unique event identifier n Receiving a plurality of acknowledgment messages including:
(C) identifying a frequency difference between clocks of each destination device with the synchronization device based on the plurality of acknowledgment messages;
(D) calculating at the synchronization device a frequency adjustment value that compensates for the difference identified in step (c);
(E) a media source device to perform the process of adjusting the clock frequency by an amount related to the frequency adjustment value determined in step (d), and the frequency adjustment related to the frequency adjustment value determined in step (d). Sending an instruction message to each destination device to perform at least one of the processes of converting the sample rate of the media received from;
A method comprising:
JP2015543100A 2012-11-16 2013-11-18 Common event-based multi-device media playback Active JP6290915B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261727624P 2012-11-16 2012-11-16
US61/727,624 2012-11-16
PCT/US2013/070634 WO2014078818A1 (en) 2012-11-16 2013-11-18 Common event-based multidevice media playback

Publications (3)

Publication Number Publication Date
JP2016503623A JP2016503623A (en) 2016-02-04
JP2016503623A5 JP2016503623A5 (en) 2016-12-22
JP6290915B2 true JP6290915B2 (en) 2018-03-07

Family

ID=50731764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015543100A Active JP6290915B2 (en) 2012-11-16 2013-11-18 Common event-based multi-device media playback

Country Status (4)

Country Link
EP (1) EP2920953A4 (en)
JP (1) JP6290915B2 (en)
CN (1) CN104937919A (en)
WO (1) WO2014078818A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7156902B2 (en) 2018-10-24 2022-10-19 マレリ株式会社 scarf

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104320240B (en) 2014-11-03 2016-08-17 武汉数字派特科技有限公司 A kind of provide the method and apparatus of global clock in system
IL240927A (en) 2015-01-01 2017-11-30 Muvix Media Networks Ltd Methods and devices for distributed audio/video synchronization and playback using an a/v orchestrator
NL2016028B1 (en) * 2015-12-23 2017-07-05 Buddybox Holding B V Sound unit, such as a loudspeaker box giving an enhanced experience.
CN105611222B (en) * 2015-12-25 2019-03-15 北京紫荆视通科技有限公司 Audio data processing method, device, controlled device and system
CN107239253B (en) * 2016-03-29 2020-05-12 扬智科技股份有限公司 Wireless local area network player, system and method for synchronizing playing speed
US10241748B2 (en) * 2016-12-13 2019-03-26 EVA Automation, Inc. Schedule-based coordination of audio sources
TWI660628B (en) * 2018-02-05 2019-05-21 佳世達科技股份有限公司 Method for playback synchronization of media among devices
CN110289929B (en) * 2019-06-12 2021-06-08 上海理工大学 Network synchronization method
CN112311521B (en) * 2020-10-30 2023-11-17 昆腾微电子股份有限公司 Equipment group audio synchronization method and device, electronic equipment and storage medium
CN112714353B (en) * 2020-12-28 2022-08-30 杭州电子科技大学 Distributed synchronization method for multimedia stream
CN112953600B (en) * 2021-02-07 2022-09-23 炬芯科技股份有限公司 Bluetooth system and communication method thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305645A (en) * 1995-05-11 1996-11-22 Fuji Xerox Co Ltd Compound information transfer device and method
JP2001075553A (en) * 1999-09-08 2001-03-23 Namco Ltd Screen regenerating device and comuter readable recording medium
EP1280024B1 (en) * 2001-07-26 2009-04-01 Freescale Semiconductor, Inc. Clock synchronization in a distributed system
JP2005006037A (en) * 2003-06-12 2005-01-06 Nec Corp Medium synchronization system and service providing method used for the same
US8234395B2 (en) * 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US8677002B2 (en) * 2006-01-28 2014-03-18 Blackfire Research Corp Streaming media system and method
US20110035511A1 (en) * 2009-08-07 2011-02-10 Cisco Technology, Inc. Remote Hardware Timestamp-Based Clock Synchronization
JP5450656B2 (en) * 2009-12-25 2014-03-26 株式会社東芝 Communication device and time synchronization system
US9209987B2 (en) * 2010-03-02 2015-12-08 Microsoft Technology Licensing, Llc Social media playback
US10712771B2 (en) * 2010-08-13 2020-07-14 Netflix, Inc. System and method for synchronized playback of streaming digital content
US9131256B2 (en) * 2010-09-30 2015-09-08 Verizon Patent And Licensing Inc. Method and apparatus for synchronizing content playback

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7156902B2 (en) 2018-10-24 2022-10-19 マレリ株式会社 scarf

Also Published As

Publication number Publication date
EP2920953A4 (en) 2016-07-27
EP2920953A1 (en) 2015-09-23
JP2016503623A (en) 2016-02-04
CN104937919A (en) 2015-09-23
WO2014078818A1 (en) 2014-05-22

Similar Documents

Publication Publication Date Title
US8762580B2 (en) Common event-based multidevice media playback
JP6290915B2 (en) Common event-based multi-device media playback
US9338208B2 (en) Common event-based multidevice media playback
US9843489B2 (en) System and method for synchronous media rendering over wireless networks with wireless performance monitoring
JP6640359B2 (en) Wireless audio sync
US7805210B2 (en) Synchronizing multi-channel speakers over a network
US20170289231A1 (en) Clock Synchronization Techniques Including Modification of Sample Rate Conversion
US9780894B2 (en) Systems for synchronous playback of media using a hybrid bluetooth™ and Wi-Fi network
US20150381343A1 (en) System and method for monitoring media stream buffers of media output devices in order to synchronize media content output
US9804633B2 (en) Indirect clock measuring and media adjustment
US9973290B2 (en) System for media rebroadcasting for synchronized rendering across multiple devices
WO2020163476A1 (en) Latency negotiation in a heterogeneous network of synchronized speakers
US20170019198A1 (en) System for synchronous playback of media using a hybrid bluetooth™ and wi-fi network
US20230216910A1 (en) Audio synchronization in wireless systems
EP3868043B1 (en) Wireless audio synchronization
WO2014128360A1 (en) Synchronization of audio and video content
WO2016134186A1 (en) Synchronous media rendering over wireless networks with wireless performance monitoring
JP2012161088A (en) Data distribution system and relay device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161031

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180208

R150 Certificate of patent or registration of utility model

Ref document number: 6290915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250