KR20150055031A - Playback synchronization - Google Patents

Playback synchronization Download PDF

Info

Publication number
KR20150055031A
KR20150055031A KR1020157009458A KR20157009458A KR20150055031A KR 20150055031 A KR20150055031 A KR 20150055031A KR 1020157009458 A KR1020157009458 A KR 1020157009458A KR 20157009458 A KR20157009458 A KR 20157009458A KR 20150055031 A KR20150055031 A KR 20150055031A
Authority
KR
South Korea
Prior art keywords
media
messages
clock
clock offset
network
Prior art date
Application number
KR1020157009458A
Other languages
Korean (ko)
Other versions
KR102132309B1 (en
Inventor
천호 이
대니 라우
Original Assignee
디티에스, 인코포레이티드
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 디티에스, 인코포레이티드 filed Critical 디티에스, 인코포레이티드
Priority claimed from US14/025,658 external-priority patent/US9237324B2/en
Publication of KR20150055031A publication Critical patent/KR20150055031A/en
Application granted granted Critical
Publication of KR102132309B1 publication Critical patent/KR102132309B1/en

Links

Images

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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/43615Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • 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
    • 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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W56/00Synchronisation arrangements
    • H04W56/001Synchronization between nodes
    • H04W56/0015Synchronization between nodes one node acting as a reference for the others

Landscapes

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

Abstract

다양한 예시적인 실시예들은 수신측 미디어 디바이스와 송신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법 및 미디어 디바이스에 관한 것으로서, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 단계 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값(clock offset value)들을 발생시키는 단계; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계를 포함한다.Various exemplary embodiments relate to a method and media device for synchronizing media playback between a receiving media device and a transmitting media device, comprising: receiving, at a receiving media device, a plurality of messages from a transmitting media device, The plurality of messages including a plurality of transmitter timestamps; Generating a plurality of clock offset values based on a plurality of transmitter time stamps and a clock of the receiving media device; Identifying a minimum clock offset value from among the plurality of clock offset values; Finding a first presentation time associated with the first media data and the first media data for playback; And rendering the first media data at a first time coinciding with the first presentation time based on the minimum clock offset.

Figure P1020157009458
Figure P1020157009458

Description

재생 동기화{PLAYBACK SYNCHRONIZATION}Playback Synchronization {PLAYBACK SYNCHRONIZATION}

관련 출원의 상호 참조Cross reference of related application

본 출원은 2012년 9월 14일자로 출원된, 발명의 명칭이 "재생 동기화(Playback Synchronization)"인 Lee 등의 미국 가특허 출원 제61/701,326호(이 출원의 전체 개시 내용은 이로써 본 명세서에 완전히 기재되어 있는 것처럼 모든 목적들을 위해 참조 문헌으로서 본 명세서에 포함됨)를 기초로 우선권을 주장한다.The present application is related to U.S. Provisional Patent Application No. 61 / 701,326, entitled " Playback Synchronization "filed on September 14, 2012, the entire disclosure of which is incorporated herein by reference. Incorporated herein by reference in its entirety for all purposes as if fully set forth).

본 출원은 2010년 10월 22일자로 출원된, 발명의 명칭이 "미디어 배포 아키텍처(Media Distribution Architecture)"인 Lau 등의 미국 가특허 출원 제61/405,835호를 기초로 우선권을 주장하는, 2011년 10월 21일자로 출원된, 발명의 명칭이 "미디어 배포 아키텍처(Media Distribution Architecture)"인 Lau 등의 미국 출원 제13/278,799호(이 출원들의 전체 개시 내용들은 이로써 본 명세서에 완전히 기재되어 있는 것처럼 모든 목적들을 위해 참조 문헌으로서 본 명세서에 포함됨)에 관한 것이다.This application claims the benefit of US Provisional Application No. 61 / 405,835, filed October 22, 2010, entitled " Media Distribution Architecture ", Lau et al. U.S. Application No. 13 / 278,799, entitled " Media Distribution Architecture "filed on October 21, entitled " Media Distribution Architecture ", the entire disclosures of which are hereby incorporated by reference as if fully set forth herein Incorporated herein by reference in its entirety for all purposes).

본 명세서에 개시된 다양한 예시적인 실시예들은 일반적으로 미디어 스트리밍 및 네트워크화된 미디어 재생에 관한 것이다.The various illustrative embodiments disclosed herein generally relate to media streaming and networked media playback.

스마트폰 및 태블릿과 같은 전자 디바이스들이 더 보편화됨에 따라, 사람들은 음악 및 비디오와 같은 콘텐츠를 재생하기 위해 이러한 디바이스들을 더 빈번히 사용하고 있다. 종종, 이 미디어 소스들은 사용자가 충분히 만족하도록 미디어를 렌더링하지 않을 수 있다. 예를 들어, 디스플레이가 너무 작을 수 있거나, 스피커 볼륨이 충분한 품질 또는 음량을 갖지 않을 수 있다. 더욱이, 미디어 소스로부터의 출력을 다수의 사람들이 쉽게 또는 편안하게 즐기지 못할 수 있다. 게다가, 사용자가, 미디어 소스를 휴대하고 있지 않은 경우, 자신의 집 전체의 다양한 장소들에서 미디어를 즐길 수 없다.As electronic devices such as smart phones and tablets become more popular, people are using these devices more often to play content such as music and video. Often, these media sources may not render the media sufficiently to satisfy the user. For example, the display may be too small, or the speaker volume may not have sufficient quality or volume. Moreover, the output from a media source may not be easily or comfortably enjoyed by a large number of people. In addition, if the user is not carrying a media source, he or she can not enjoy the media at various locations throughout his / her home.

다양한 예시적인 실시예들의 간략한 발명의 내용이 이하에서 제시된다. 본 발명의 범주를 제한하기 위한 것이 아니라 다양한 예시적인 실시예들의 일부 태양들을 강조하고 소개하기 위한 얼마간의 간략화 및 생략이 이하의 발명의 내용에서 행해질 수 있다. 통상의 기술자가 발명 개념들을 제조 및 사용할 수 있게 하는 데 적절한, 바람직한 예시적인 실시예의 상세한 설명들이 나중의 섹션들에 나올 것이다.A brief summary of the various exemplary embodiments is provided below. Some simplifications and omissions for the purpose of highlighting and introducing some aspects of various exemplary embodiments, rather than limiting the scope of the invention, may be made in the following description of the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The following detailed description of preferred exemplary embodiments will be found in the following sections, which are suitable for enabling a person skilled in the art to make and use the inventive concepts.

본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법에 관한 것이며, 본 방법은, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 단계 - 복수의 메시지들은 복수의 송신기 타임스탬프(sender timestamp)들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값(clock offset value)들을 발생시키는 단계; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계를 포함한다.The various embodiments described herein relate to a method of synchronizing media playback between a sending media device and a receiving media device, the method comprising receiving, at the receiving media device, a plurality of messages from the receiving media device The plurality of messages including a plurality of sender timestamps; Generating a plurality of clock offset values based on a plurality of transmitter time stamps and a clock of the receiving media device; Identifying a minimum clock offset value from among the plurality of clock offset values; Finding a first presentation time associated with the first media data and the first media data for playback; And rendering the first media data at a first time coinciding with the first presentation time based on the minimum clock offset.

본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 미디어 재생을 동기화시키는 수신측 미디어 디바이스에 관한 것이며, 수신측 미디어 디바이스는 재생을 위한 미디어 데이터를 저장하도록 구성된 메모리; 송신측 미디어 디바이스와 통신하도록 구성된 네트워크 인터페이스; 및 네트워크 인터페이스를 통해, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하고 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키며; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하고; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내며; 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키도록 구성된 프로세서를 포함한다.The various embodiments described herein relate to a receiving-side media device for synchronizing media playback with a transmitting-side media device, the receiving-side media device comprising: a memory configured to store media data for playback; A network interface configured to communicate with a transmitting-side media device; And receiving, via the network interface, a plurality of messages from the transmitting media device, the plurality of messages including a plurality of transmitter timestamps; Generate a plurality of clock offset values based on a plurality of transmitter time stamps and a clock of the receiving media device; Identify a minimum clock offset value from among the plurality of clock offset values; Finds a first presentation time associated with the first media data and the first media data for playback; And to render the first media data at a first time that coincides with the first presentation time based on the minimum clock offset value.

본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키기 위해 수신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩되어 있는 비일시적 기계 판독가능 저장 매체에 관한 것이며, 본 매체는, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 명령어들 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 명령어들; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 명령어들; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내는 명령어들; 및 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 명령어들을 포함한다.The various embodiments described herein relate to non-transitory machine-readable storage media encoded with instructions for a receiving-side media device to execute to synchronize media playback between a transmitting-side media device and a receiving-side media device , The medium comprising, at a receiving-side media device, instructions for receiving a plurality of messages from a transmitting-side media device, the plurality of messages including a plurality of transmitter timestamps; Instructions for generating a plurality of clock offset values based on a plurality of transmitter time stamps and a clock of a receiving media device; Instructions for identifying a minimum clock offset value from among a plurality of clock offset values; Instructions for finding a first presentation time associated with first media data and first media data for playback; And rendering the first media data at a first time that coincides with the first presentation time based on the minimum clock offset value.

다양한 실시예들은 그에 부가하여 수신측 미디어 디바이스와 송신측 미디어 디바이스 사이의 왕복 이동(round-trip transit)으로부터 복수의 타임스탬프들을 획득하는 단계; 복수의 타임스탬프들에 기초하여 하한 오프셋 값(lower bound offset value)을 설정하는 단계; 및 최소 클록 오프셋 값을 식별한 후에, 최소 클록 오프셋 값이 하한 오프셋 값보다 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 실제 클록 오프셋(true clock offset)의 더 나은 추정치를 나타내는 것으로 결정하는 단계를 포함하고, 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계는 최소 클록 오프셋 값이 하한 오프셋 값보다 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 실제 클록 오프셋의 더 나은 추정치를 나타내는 것으로 결정한 것에 기초하여 수행된다.Various embodiments further include obtaining a plurality of timestamps from a round-trip transit between the receiving and transmitting media devices; Setting a lower bound offset value based on a plurality of time stamps; And determining that the minimum clock offset value represents a better estimate of the true clock offset between the transmitting device clock and the receiving device clock than the lower limit offset value after identifying the minimum clock offset value And rendering the first media data at a first time that coincides with the first presentation time based on the minimum clock offset is performed when the minimum clock offset value is greater than or equal to the lower limit offset value and the actual clock between the transmitting device clock and the receiving device clock Lt; RTI ID = 0.0 > a < / RTI > better estimate of the offset.

최소 클록 오프셋 값을 식별하는 단계가 복수의 클록 오프셋 값들의 제1 클록 오프셋 값을 발생시키는 단계; 최소 클록 오프셋 값을 제1 오프셋 클록 값과 같도록 설정하는 단계; 최소 클록 오프셋 값을 제1 오프셋 클록 값과 같도록 설정한 후에 복수의 클록 오프셋 값들의 제2 클록 오프셋 값을 발생시키는 단계; 제2 클록 오프셋 값이 최소 클록 오프셋 값보다 작은 것으로 결정하는 단계; 및 제2 클록 오프셋 값이 최소 클록 오프셋 값보다 작은 것으로 결정한 것에 기초하여 최소 클록 오프셋 값을 제2 오프셋 클록 값과 같도록 설정하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.Wherein identifying a minimum clock offset value comprises generating a first clock offset value of a plurality of clock offset values; Setting a minimum clock offset value equal to a first offset clock value; Generating a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value equal to the first offset clock value; Determining that the second clock offset value is less than the minimum clock offset value; And setting the minimum clock offset value equal to the second offset clock value based on determining that the second clock offset value is less than the minimum clock offset value.

다양한 실시예들은 그에 부가하여 수신측 미디어 디바이스의 클록의 값으로부터 최소 오프셋 값을 차감함으로써 클록의 값을 수정하는 단계를 포함하고, 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간은 제1 제공 시간과 일치하는 클록의 값을 포함한다.Various embodiments further include modifying the value of the clock by subtracting the minimum offset value from the value of the clock of the receiving-side media device, wherein a first time corresponding to the first presentation time, based on the minimum clock offset value, Includes the value of the clock coinciding with the first presentation time.

다양한 실시예들은 그에 부가하여, 수신측 미디어 디바이스에서, 메시지를 송신측 미디어 디바이스로부터 수신하는 단계 - 메시지는 제2 미디어 데이터, 제2 제공 시간, 및 송신기 타임스탬프를 포함함 -; 송신기 타임스탬프에 기초하여 클록 오프셋 값을 발생시키는 단계; 클록 오프셋 값이 수신측 미디어 디바이스의 클록과 송신측 미디어 디바이스의 클록 사이의 실제 오프셋의 최소 클록 오프셋 값보다 더 정확한 표현인 것으로 결정하는 단계; 클록 오프셋 값에 기초하여 최소 클록 오프셋 값을 조절하는 단계; 재생을 위한 제3 미디어 데이터 및 제3 미디어 데이터와 연관된 제3 제공 시간을 찾아내는 단계; 최소 클록 오프셋 값을 조절한 후에 최소 클록 오프셋 값에 기초하여 제3 제공 시간과 일치하는 제2 시간에서 제3 미디어 데이터를 렌더링시키는 단계를 포함한다.Various embodiments additionally include, in the receiving media device, receiving a message from the transmitting media device, the message including second media data, a second presentation time, and a transmitter timestamp; Generating a clock offset value based on a transmitter timestamp; Determining that the clock offset value is a more accurate representation of the minimum clock offset value of the actual offset between the clock of the receiving-side media device and the clock of the transmitting-side media device; Adjusting a minimum clock offset value based on the clock offset value; Determining a third presentation time associated with the third media data and the third media data for playback; And rendering the third media data at a second time coinciding with the third presentation time based on the minimum clock offset value after adjusting the minimum clock offset value.

클록 오프셋 값이 수신측 미디어 디바이스의 클록과 송신측 미디어 디바이스의 클록 사이의 실제 오프셋의 최소 클록 오프셋 값보다 더 정확한 표현인 것으로 결정하는 단계가 클록 오프셋 값이 0보다 작은 것으로 결정하는 단계를 포함하고, 클록 오프셋 값에 기초하여 최소 클록 오프셋 값을 조절하는 단계가 수신측 미디어 디바이스의 클록의 값으로부터 오프셋 값을 차감함으로써 클록의 값을 수정하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.Determining that the clock offset value is a more accurate representation of the minimum clock offset value of the actual offset between the clock of the receiving media device and the clock of the transmitting media device includes determining that the clock offset value is less than zero And adjusting the minimum clock offset value based on the clock offset value includes modifying the value of the clock by subtracting the offset value from the value of the clock of the receiving media device.

다양한 실시예들은 그에 부가하여 복수의 타임스탬프들의 적어도 하나의 송신기 타임스탬프를 송신측 미디어 디바이스의 시간 영역으로부터 수신측 미디어 디바이스의 시간 영역으로 변환하는 단계를 포함하고, 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 단계는 복수의 타임스탬프들의 적어도 하나의 송신기 타임스탬프를 송신측 미디어 디바이스의 시간 영역으로부터 수신측 미디어 디바이스의 시간 영역으로 변환한 후에 적어도 하나의 송신기 타임스탬프에 기초하여 적어도 하나의 클록 오프셋 값을 발생시키는 단계를 포함한다.Various embodiments further include converting at least one transmitter time stamp of the plurality of time stamps from a time domain of the transmitting media device to a time domain of the receiving media device, wherein the plurality of transmitter timestamps and the receiving Generating a plurality of clock offset values based on a clock of the side media device includes converting at least one transmitter timestamp of the plurality of timestamps from a time domain of the transmitting media device to a time domain of the receiving media device And generating at least one clock offset value based on one transmitter time stamp.

복수의 메시지들이 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 본 방법이 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키는 단계; 제1 복수의 메시지들이 도착하는 간격들의 제1 척도가 네트워크가 불안정함을 나타내는 것으로 결정하는 단계; 송신측 미디어 디바이스에 부가의 메시지들을 전송하라고 지시하는 단계; 송신측 미디어 디바이스에 부가의 메시지들을 전송하라고 지시한 후에 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키는 단계; 제2 복수의 메시지들이 도착하는 간격들의 제2 척도가 네트워크가 안정적임을 나타내는 것으로 결정하는 단계를 포함하고, 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계가 제2 복수의 메시지들과 연관된 복수의 클록 오프셋 값들의 적어도 하나의 클록 오프셋 값을 이용하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.The method comprising: generating a first measure of intervals at which a first plurality of messages arrive, the plurality of messages comprising a first plurality of messages and a second plurality of messages; Determining that a first measure of intervals at which a first plurality of messages arrive indicates that the network is unstable; Instructing the sending media device to send additional messages; Generating a second measure of intervals at which a second plurality of messages arrive after instructing the sending media device to send additional messages; Determining that a second measure of the intervals at which a second plurality of messages arrive indicates that the network is stable, wherein identifying a minimum clock offset value from among the plurality of clock offset values is associated with a second plurality of messages Various embodiments are described that include utilizing at least one clock offset value of a plurality of clock offset values.

복수의 메시지들이 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 본 방법이 송신측 미디어 디바이스가 제1 복수의 메시지들을 전송하는 단계, 송신측 미디어 디바이스가 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키는 단계, 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타내는 것으로 결정하는 단계, 송신측 미디어 디바이스가, 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타내는 것으로 결정한 것에 기초하여, 제2 복수의 메시지들을 전송하는 단계, 송신측 미디어 디바이스가 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키는 단계, 및 제2 네트워크 성능 척도가 네트워크가 안정적임을 나타내는 것으로 결정하는 단계를 추가로 포함하는 다양한 실시예들이 기술되어 있다.Wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages, the method further comprising the steps of the transmitting media device transmitting a first plurality of messages, the transmitting media device transmitting a first plurality of messages Determining that the first network performance metric indicates that the network is unstable; determining if the first network performance metric indicates that the network is unstable; Generating a second network performance metric associated with a transmission of a second plurality of messages, and wherein the second network performance metric indicates that the network is stable Various embodiments are further described that include the step of determining All.

다양한 예시적인 실시예들을 더 잘 이해하기 위해, 첨부 도면들을 참조한다.
도 1은 미디어 재생을 위한 한 예시적인 환경을 나타낸 도면.
도 2는 가상 미디어 네트워크를 형성하고 운영하는 한 예시적인 방법을 나타낸 도면.
도 3은 한 예시적인 가상 미디어 네트워크를 나타낸 도면.
도 4는 미디어 소스의 한 예시적인 구성요소 다이어그램을 나타낸 도면.
도 5는 미디어 노드의 한 예시적인 구성요소 다이어그램을 나타낸 도면.
도 6은 미디어 디바이스의 한 예시적인 하드웨어 다이어그램을 나타낸 도면.
도 7은 미디어 신호를 브로드캐스트하는 한 예시적인 방법을 나타낸 도면.
도 8은 송신측 미디어 디바이스가 수신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법을 나타낸 도면.
도 9는 수신측 미디어 디바이스가 송신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법을 나타낸 도면.
도 10은 수신측 미디어 디바이스가 미디어 스트리밍 동안 보다 나은 재생 동기화를 달성하는 한 예시적인 방법을 나타낸 도면.
도 11은 하한 오프셋을 결정하는 한 예시적인 방법을 나타낸 도면.
BRIEF DESCRIPTION OF THE DRAWINGS For a better understanding of the various exemplary embodiments, reference is made to the accompanying drawings.
1 illustrates an exemplary environment for media playback;
2 illustrates an exemplary method of forming and operating a virtual media network;
3 illustrates an exemplary virtual media network;
4 shows an exemplary component diagram of a media source;
5 shows an exemplary component diagram of a media node;
6 illustrates one exemplary hardware diagram of a media device;
7 illustrates an exemplary method for broadcasting a media signal;
8 illustrates an exemplary method by which a transmitting-side media device synchronizes playback with a receiving-side media device;
9 illustrates an exemplary method by which a receiving-side media device synchronizes playback with a transmitting-side media device;
10 illustrates an exemplary method as long as the receiving media device achieves better playback synchronization during media streaming;
11 illustrates an exemplary method for determining a lower bound offset;

본 명세서에 제시된 설명 및 도면들은 다양한 원리들을 예시하고 있다. 통상의 기술자가, 비록 본 명세서에 명확하게 기술되거나 도시되어 있지 않지만, 이 원리들을 구현하고 본 개시 내용의 범주 내에 포함되는 다양한 구성들을 안출할 수 있을 것임을 잘 알 것이다. 본 명세서에서 사용되는 바와 같이, "또는"이라는 용어는, 본 명세서에서 사용되는 바와 같이, 달리 언급하지 않는 한(예컨대, "또는 그렇지 않으면" 또는 "또는 대안에서"), 비배타적인 또는(non-exclusive or)(즉, 및/또는)을 말한다. 그에 부가하여, 본 명세서에 기술된 다양한 실시예들이 꼭 상호 배타적일 필요는 없고, 본 명세서에 기술된 원리들을 포함하는 부가의 실시예들을 생성하도록 결합될 수 있다.The description and drawings presented herein illustrate various principles. It will be appreciated by those of ordinary skill in the art that, although not explicitly described or shown herein, it is possible to implement various principles that are within the scope of the present disclosure. As used herein, the term "or ", as used herein, unless otherwise indicated (e.g.," or otherwise "or" or alternatively "), non-exclusive, or -exclusive or) (i.e., and / or). In addition, the various embodiments described herein are not necessarily mutually exclusive, and may be combined to produce additional embodiments that include the principles described herein.

본 명세서에 기술된 다양한 실시예들은 미디어 콘텐츠를 배포하는 아키텍처를 이용한다. 다양한 미디어 디바이스들 사이에서 정확한 타이밍 동기화를 유지하면서 다수의 구역들로의 미디어의 동시 전송을 가능하게 하는 유선 및 무선 미디어 전송 기술이 제공될 수 있다. 사용자는 스피커들, 디스플레이들, 또는 다른 렌더링 디바이스들의 네트워크를 가질 수 있고, 어느 렌더링 디바이스들이 미디어를 능동적으로 출력하고 있는지를 독립적으로 선택할 수 있다. 이러한 렌더링 디바이스들은, 본 명세서에서 기술될 다른 디바이스들과 함께, 가상 미디어 네트워크에 속할 수 있다.The various embodiments described herein utilize an architecture for distributing media content. Wired and wireless media transmission techniques may be provided that enable simultaneous transmission of media to multiple zones while maintaining accurate timing synchronization between various media devices. The user may have a network of speakers, displays, or other rendering devices, and may independently select which rendering devices are actively outputting the media. These rendering devices, along with other devices to be described herein, may belong to a virtual media network.

가상 미디어 네트워크에 의해 렌더링되는 미디어는 미디어 소스로부터 발신될 수 있다. 미디어 소스는 셀폰, 태블릿, 스테레오, 셋톱 박스, PC, 또는 기타 디바이스일 수 있다. 가상 미디어 네트워크에서의 미디어의 전송 방법은 보조 케이블을 통하는 것과 같은 유선, 또는 블루투스 또는 WiFi에서와 같은 무선일 수 있다. 스피커들 및 기타 렌더링 디바이스들 자체는 자기 형성 네트워크(self-forming network)에서 통제될 수 있다. 미디어가 미디어 소스에 의해 네트워크 내로 주입될 수 있고, 종단점 네트워크 자체가 오디오/비디오 배포, 타이밍 및 렌더링을 제어할 수 있다. 일부 실시예들에서, 네트워크에 주입되는 오디오는 오디오-비디오 신호의 오디오 부분이다. 비디오 신호는 미디어 소스(예컨대, 태블릿 컴퓨터) 상에서 재생될 수 있다. 오디오 신호는 비디오 신호와 동기된 채로 있을 수 있다.The media rendered by the virtual media network may originate from a media source. The media source may be a cell phone, tablet, stereo, set-top box, PC, or other device. The method of transmitting media in a virtual media network may be wired, such as via an auxiliary cable, or wireless, such as in Bluetooth or WiFi. Speakers and other rendering devices themselves can be controlled in a self-forming network. Media can be injected into the network by the media source and the endpoint network itself can control audio / video distribution, timing and rendering. In some embodiments, audio injected into the network is an audio portion of an audio-video signal. The video signal may be played on a media source (e.g., a tablet computer). The audio signal may remain synchronized with the video signal.

다양한 실시예들에서, 사용자는 미디어의 소스로서 역할할 임의의 미디어 애플리케이션(media application)을 선택할 수 있다. 예를 들어, 사용자는 MP3 애플리케이션, 인터넷 라디오 애플리케이션 등을 선택할 수 있다. 사용자는 이어서, 미디어가 선택된 출력 디바이스로 송신되게 하기 위해, 그의 거실에 있는 스피커와 같은 출력 디바이스를 선택할 수 있다. 오디오가, 운영 체제에 의해, 선택된 출력 디바이스로 송신될 수 있다. 사용자는 스피커들의 볼륨을 제어하는 것 뿐만 아니라 다른 스피커들을 가상 미디어 네트워크에 부가하는 것 등을 위해 제2 애플리케이션을 호출할 수 있다. 일부 실시예들에서, 제2 애플리케이션은 미디어를 결코 수정하지 않는다. 네트워크 내의 디바이스들은 오디오/비디오 배포, 타이밍, 및 렌더링을 처리할 수 있다. 따라서, 미디어 소스가 이러한 처리의 부담을 지고 있지 않을 수 있다. 더욱이, 이러한 구성은 사용자가 자신이 좋아하는 어느 미디어 애플리케이션이라도, 미디어 애플리케이션을 수정할 필요 없이, 미디어의 소스로서 선택할 수 있게 할 것이다.In various embodiments, the user may select any media application that will serve as the source of the media. For example, a user may select an MP3 application, an Internet radio application, and the like. The user can then select an output device, such as a speaker in its living room, to cause the media to be transmitted to the selected output device. Audio may be transmitted by the operating system to the selected output device. The user may call the second application for controlling the volume of the speakers as well as adding other speakers to the virtual media network, In some embodiments, the second application never modifies the media. Devices in the network can handle audio / video distribution, timing, and rendering. Therefore, the media source may not be burdened with such processing. Moreover, such a configuration would allow the user to select any media application of his or her choice as the source of the media without having to modify the media application.

다양한 실시예들에서, 가상 미디어 네트워크를 통해 배포된 미디어가 동기된 채로 있을 수 있다. 이러한 재생 동기화를 달성하기 위해, 미디어 데이터를 전송하는 다양한 미디어 디바이스들은, 연관된 미디어가 어느 때에 렌더링되어야만 하는지를 나타내기 위해, 미디어 데이터의 프레임들과 연관된 타임스탬프들을 포함시킬 수 있다. 이러한 메커니즘을 가능하게 하기 위해, 미디어 디바이스들은 미디어 디바이스들의 내부 클록들 간의 차이들을 참작하는 방법들을 구비하고 있을 수 있다. 예를 들어, 2대의 미디어 디바이스들이 다양한 클록 값들로 동작하기 시작할 수 있거나, 클록들이 약간 상이한 속도들로 작동하는 것으로 인해 클록 값들이 동작 동안 멀어질 수 있다.In various embodiments, the media distributed over the virtual media network may remain synchronized. To achieve this playback synchronization, various media devices transmitting media data may include timestamps associated with frames of media data to indicate when the associated media should be rendered. To enable such a mechanism, the media devices may have methods for considering differences between the internal clocks of the media devices. For example, the two media devices may start to operate at various clock values, or the clock values may drift during operation due to the clocks operating at slightly different speeds.

네트워크화된 클록 동기화의 일부 방법들이 과거에 개발되었지만, 이러한 방법들은 네트워크 지연이 비교적 일정하고 따라서 렌더링 프로세스의 일부로서 쉽게 참작되는 유선 네트워크들에서만 신뢰성이 있을 수 있다. 다른 한편으로, WiFi 또는 블루투스와 같은 무선 네트워크들에서, 네트워크 지연이 짧은 기간들에 걸쳐 상당히 변할 수 있고, 그로써 동기화 패킷이 송신된 때를 추정하는 프로세스를 복잡하게 만든다. 본 명세서에 기술된 다양한 방법들은 네트워크화된 클록 동기화의 프로세스에 대한 이러한 가변 지연의 효과를 감소시키거나 제거하는 클록 동기화 프로세스를 구현한다. 예를 들어, 일정 기간에 걸쳐 다수의 잠재적인 클록 오프셋 값들을 발생시킴으로써, 수신측 디바이스는 그룹 중에서 최소 오프셋 값을 선택하고 그로써 적어도 네트워크 지연의 가변 성분에 의해 영향을 받은 오프셋 값을 이용할 수 있다. 네트워크화된 클록 동기화를 개선시키기 위한 다양한 부가의 특징들이 이하에서 보다 상세히 기술될 것이다.Although some methods of networked clock synchronization have been developed in the past, these methods may be reliable only in wired networks where the network delay is relatively constant and therefore easily considered as part of the rendering process. On the other hand, in wireless networks such as WiFi or Bluetooth, the network delay can vary considerably over short periods, thereby complicating the process of estimating when a synchronization packet is transmitted. The various methods described herein implement a clock synchronization process that reduces or eliminates the effect of this variable delay on the process of networked clock synchronization. For example, by generating a number of potential clock offset values over a period of time, the receiving device can select a minimum offset value from among the groups and thereby use at least the offset value affected by the variable component of the network delay. Various additional features for improving networked clock synchronization will be described in greater detail below.

본 설명 전체에 걸쳐 이하의 정의들이 사용될 것이다:Throughout this description, the following definitions will be used:

브로드캐스터(Broadcaster) - 가상 미디어 네트워크를 위해 포맷팅되어 있는 미디어 스트림을 전송할 수 있는 임의의 디바이스 또는 이러한 디바이스 내의 브로드캐스팅 메커니즘.Broadcaster - Any device capable of transmitting media streams formatted for virtual media networks, or a broadcasting mechanism within such devices.

렌더러(Renderer) - 가상 미디어 네트워크를 위해 포맷팅되어 있는 미디어 스트림을 렌더링할 수 있는 임의의 디바이스 또는 이러한 디바이스 내의 렌더링 메커니즘.Renderer - Any device capable of rendering a media stream that is formatted for a virtual media network, or a rendering mechanism within such a device.

미디어 노드(Media Node) - 렌더러 또는 브로드캐스터를 포함하는 임의의 디바이스. 일부 실시예들의 미디어 노드들은 네트워크 시간 동기화 및 미디어 라우팅 정보를 비롯한 네트워크의 상태를 유지하는 일을 맡고 있을 수 있다.Media Node - Any device that contains a renderer or broadcaster. The media nodes of some embodiments may be in charge of maintaining the state of the network, including network time synchronization and media routing information.

미디어 소스(Media source) - 원본 미디어를 싱크(sink)로 전송하는 임의의 디바이스. 예를 들어, 미디어 데이터를 전송할 수 있는 셀룰러폰, 스마트폰, 태블릿, 셋톱 박스, 텔레비전, DVD/블루레이/기타 미디어 플레이어, 스테레오 시스템, 비디오 게임 콘솔, 랩톱, 데스크톱 PC, 서버, 또는 임의의 다른 디바이스와 같은 거의 모든 유형의 하드웨어를 포함할 수 있다.Media source - Any device that transmits source media to a sink. For example, a cellular phone, a smartphone, a tablet, a set top box, a television, a DVD / Blu-ray / other media player, a stereo system, a video game console, a laptop, a desktop PC, Devices, and the like.

싱크 - 소스로부터 발신하는 미디어를 수신하는 임의의 디바이스 또는 미디어 신호를 수신하기 위한 디바이스 내의 메커니즘.Sync - Any device that receives media originating from a source or mechanism in a device for receiving media signals.

게이트웨이 지원 미디어 노드(Gateway Capable Media Node) - 싱크 및 브로드캐스터를 겸비한 임의의 디바이스. 게이트웨이는 싱크를 통해 미디어를 받아 가상 미디어 네트워크 내로 렌더러들로 재브로드캐스트한다.Gateway Capable Media Node - Any device that has a sink and broadcaster. The gateway receives the media through the sink and rebroadcasts it into the renderers into the virtual media network.

가상 미디어 네트워크(Virtual Media Network) - 적어도 하나의 게이트웨이를 가지는 하나 이상의 노드들의 그룹. 가상 미디어 네트워크는 사용자에 의해 설정될 수 있고, 네트워크 내의 렌더링 디바이스들 사이에 동기화되어 있는 미디어 신호를 렌더링할 수 있다. 유의할 점은, 일부 실시예들에서, 하나의 미디어 노드만이 가상 미디어 네트워크의 활성 게이트웨이(active gateway)로서 역할한다는 것이다.Virtual Media Network - A group of one or more nodes having at least one gateway. The virtual media network can be set by the user and render media signals that are synchronized between rendering devices in the network. It should be noted that, in some embodiments, only one media node acts as an active gateway of the virtual media network.

미디어 디바이스(Media device) - 예를 들어, 미디어 노드 또는 미디어 소스와 같은 가상 미디어 네트워크와 관련하여 동작하는 임의의 디바이스.Media device - any device that operates in conjunction with a virtual media network, such as, for example, a media node or a media source.

유사한 참조 번호들이 유사한 구성요소들 또는 단계들을 가리키는 도면들을 이제부터 참조하여, 다양한 예시적인 실시예들의 광의의 태양들이 개시되어 있다.Various aspects of various exemplary embodiments are now described with reference to the drawings in which like reference numerals refer to like elements or steps.

도 1은 미디어 재생을 위한 한 예시적인 환경(100)을 나타낸 것이다. 이 예에서, 총 5개의 네트워크 미디어 노드들(104a, 104b, 106a 내지 106c)이 있고; 다양한 예시적인 실시예들은 보다 적은 또는 보다 많은 수의 미디어 노드들(도시 생략)을 포함할 수 있다. 예시적인 실시예(100)는 2개의 가상 미디어 네트워크들로 구성된 것으로 도시되어 있다. 도시된 바와 같이, 미디어 소스(102a)는 하나의 가상 미디어 네트워크에 대한 미디어 신호의 소스로서 역할하는 반면, 미디어 소스(102b)는 다른 가상 미디어 네트워크에 대한 미디어 소스로서 역할하지만, 다른 구성들이 가능하다. 미디어 신호는 오디오 또는 비디오일 수 있다. 다양한 실시예들에서, 미디어 신호는 오디오-비디오 신호의 오디오 부분이다. 비디오 신호는 미디어 소스(102a, 102b) 상에서 재생될 수 있다. 유의할 점은, 예시적인 실시예에서, 다양한 신호들이 상이한 디바이스들에 의해 렌더링될 때 오디오 신호가 비디오 신호와 동기된 채로 있다는 것이다. 또한 유의할 점은, 비디오 신호가 가상 미디어 네트워크 내의 디바이스들 중 하나의 디바이스로, 또는 미디어 소스 노드(102a, 102b) 이외의 어떤 디바이스로 송신될 수 있다는 것이다. 다양한 실시예들에서, 각각의 가상 미디어 네트워크는 하나의 게이트웨이 디바이스를 가지는 반면, 다른 실시예들에서, 가상 미디어 네트워크는 다수의 게이트웨이 디바이스들을 이용한다. 앞서 살펴본 바와 같이, 게이트웨이 디바이스는 미디어 신호를 수신하는 싱크 및 브로드캐스터를 가진다. 게이트웨이 디바이스는 오디오 및/또는 비디오를 렌더링하는 렌더러를 가질 수 있거나 그렇지 않을 수 있다. 예시된 예에서, 거실에 있는 디바이스는 제1 가상 미디어 네트워크에 대한 게이트웨이로서 역할하지만, 브로드캐스터를 가지는 상이한 디바이스는 게이트웨이로서 기능할 수 있다.Figure 1 illustrates one exemplary environment 100 for media playback. In this example, there are a total of five network media nodes 104a, 104b, 106a-106c; The various exemplary embodiments may include fewer or greater numbers of media nodes (not shown). The exemplary embodiment 100 is shown as consisting of two virtual media networks. As shown, media source 102a serves as a source of media signals for one virtual media network, while media source 102b serves as a media source for other virtual media networks, although other configurations are possible . The media signal may be audio or video. In various embodiments, the media signal is an audio portion of an audio-video signal. The video signal may be played on the media sources 102a, 102b. It should be noted that, in the exemplary embodiment, when the various signals are rendered by different devices, the audio signal remains synchronized with the video signal. It should also be noted that the video signal may be sent to one of the devices in the virtual media network or to some device other than the media source node 102a, 102b. In various embodiments, each virtual media network has one gateway device, while in other embodiments, the virtual media network uses multiple gateway devices. As discussed above, the gateway device has a sink and a broadcaster that receive media signals. The gateway device may or may not have a renderer that renders audio and / or video. In the illustrated example, the device in the living room acts as a gateway to the first virtual media network, but a different device with a broadcaster can act as a gateway.

일부 실시예들에서, 본 시스템은 정확한 타이밍 동기화를 유지하면서 미디어의 다수의 구역들로의 동시 전송을 가능하게 한다. 하나의 예로서, 사용자는 스피커들의 네트워크를 구성할 수 있고, 어느 스피커들이 능동적으로 재생하고 있고 그들의 재생을 동기화시키고 있는지를 독립적으로 선택할 수 있다. 네트워크로의 미디어의 전송 방법은 보조 케이블을 통하는 것과 같은 유선, 또는 블루투스, WiFi 또는 다른 네트워크 통신 프로토콜에서와 같은 무선일 수 있다. 하나의 예로서, 거실 게이트웨이(104a)는 미디어 신호를 스테레오 수신기(108) 그리고 그 결과 그의 보조 라인(auxiliary line)들 중 하나에 의해 그에 연결된 스피커들(110)에 제공하는 보조 출력 라인(auxiliary out line)을 가진다. 다른 한편으로, 거실 게이트웨이(104a)는 미디어 신호를 무선 전송을 통해 사무실 렌더러(106a) 및 주방 렌더러(106b)에 제공할 수 있다. 그에 부가하여, 거실 게이트웨이(104a)는 그 자신의 렌더러를 가질 수 있거나 그렇지 않을 수 있다. 일부 실시예들에서, 네트워크에 속하는 다양한 미디어 노드들은 미디어 스트림의 상이한 채널들을 제공받아 렌더링한다. 예를 들어, 미디어 소스는 비디오 신호를 렌더링할 수 있고, 제1 렌더러는 스테레오 믹스 오디오 신호(stereo mix audio signal)의 좌 스피커 채널을 렌더링할 수 있으며, 제2 렌더러는 스테레오 믹스 오디오 신호의 우 스피커 채널을 렌더링할 수 있고, 게이트웨이는 비디오 신호 및 스테레오 믹스 오디오 신호의 양쪽 채널들을 렌더링할 수 있다. 미디어 디바이스들 간의 이러한 채널들의 다양한 다른 채널 방식들 및 배포들이 명확할 것이다.In some embodiments, the system enables simultaneous transmission of media to multiple regions while maintaining accurate timing synchronization. As an example, the user can configure the network of speakers and independently select which speakers are actively playing and synchronizing their playback. The method of transmitting media to the network may be wired, such as via an auxiliary cable, or wireless, such as in a Bluetooth, WiFi or other network communication protocol. As an example, the living room gateway 104a may provide an auxiliary output line (not shown) that provides the media signal to the speakers 110 connected thereto by one of the stereo receiver 108 and its auxiliary lines line. On the other hand, the living room gateway 104a may provide media signals to the office renderer 106a and the kitchen renderer 106b via wireless transmission. In addition, the living room gateway 104a may or may not have its own renderer. In some embodiments, various media nodes belonging to the network receive and render different channels of the media stream. For example, a media source may render a video signal, a first renderer may render a left speaker channel of a stereo mix audio signal, and a second renderer may render a stereo mix audio signal Channel, and the gateway can render both channels of the video signal and the stereo mix audio signal. Various different channel schemes and distributions of these channels between media devices will be apparent.

일부 실시예들에서, 미디어 노드들(104a, 104b, 106a 내지 106c) 자체는 자기 형성 네트워크에서 통제된다. 미디어 노드들(104a, 104b, 106a 내지 106c) 자체가 오디오/비디오 배포, 타이밍, 및 렌더링을 제어할 수 있다. 따라서, 처리 부하의 많은 부분이 미디어 소스(102)로부터 제거될 수 있다. 도 1의 예는 가정 환경에 관한 것이지만, 실시예들이 그것으로 제한되지 않는다. 가상 미디어 네트워크들이 임의의 환경에 설치될 수 있다.In some embodiments, the media nodes 104a, 104b, 106a through 106c themselves are controlled in a self-organizing network. Media nodes 104a, 104b, 106a through 106c themselves may control audio / video distribution, timing, and rendering. Thus, much of the processing load can be removed from the media source 102. The example of FIG. 1 relates to a home environment, but the embodiments are not limited thereto. Virtual media networks can be installed in any environment.

도 2는 가상 미디어 네트워크를 형성하고 운영하는 한 예시적인 방법(200)을 나타낸 것이다. 단계(202)에서, 미디어 디바이스들은 서로를 발견하고 디바이스 상태 정보를 교환한다. 단계(202)는, 예를 들어, 미디어 노드들(104, 106)의 전원이 켜질 때, 일어날 수 있다. 미디어 노드들(104, 106)의 전원이 서로 상이한 때에 켜질 수 있기 때문에, 이 단계는 계속하여 실행되거나, 반복되거나, 다른 방식으로 진행할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 미디어 노드들(104, 106)이 서로의 존재 및, 예를 들어, 소스, 싱크, 브로드캐스터, 또는 렌더러로서 역할할 수 있는 것과 같은 능력을 알게 되는 "자기 발견" 프로토콜("self-discovery" protocol)을 수행한다. 교환된 디바이스 상태 정보는 또한, 예를 들어, 디바이스가 가상 미디어 네트워크에서 현재 활성인지, 이러한 가상 미디어 네트워크의 ID(identity), 디바이스가 현재 게이트웨이로서 기능하고 있는지, 기타와 같은 정보를 포함할 수 있다.FIG. 2 illustrates an exemplary method 200 for forming and operating a virtual media network. In step 202, the media devices discover each other and exchange device status information. Step 202 may occur, for example, when the media nodes 104 and 106 are powered on. Because the media nodes 104 and 106 may be powered on at different times, this step may continue, repeat, or otherwise proceed. In some embodiments, the media nodes 104, 106 may be configured to allow the media nodes 104, 106 to have the ability to act as the presence of each other and, for example, as a source, sink, broadcaster, Quot; self-discovery " protocol (see " self-discovery " The exchanged device status information may also include information such as, for example, whether the device is currently active in the virtual media network, the identity of the virtual media network, whether the device is currently acting as a gateway, .

단계(204)에서, 미디어 소스(102)는 게이트웨이 미디어 노드(104)와 페어링(pair)된다. 사용자는 게이트웨이로서 역할하게 될 하나의 미디어 노드(104)를 특정하여 선택할 수 있거나, 게이트웨이가 사용자 개입 없이 자동으로 결정될 수 있다. 예를 들어, 스마트폰(102a)의 사용자는 거실 미디어 노드(104a)를 주 청취 디바이스(primary listening device)로서 선택할 수 있고, 그 결과 그것이 게이트웨이가 된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)가 그의 상태에 기초하여 미디어 소스 노드(102)에 대한 현재 활성인 출력 디바이스로서 선택된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 게이트웨이로서 기능하면서 미디어 소스 노드(102)에 대한 활성 출력 디바이스로서 역할하고, 그에 따라 미디어 데이터의 적어도 일부 채널들을 렌더링한다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 디바이스 또는 상태 정보를 미디어 소스(102)에 보고한다.At step 204, the media source 102 is paired with the gateway media node 104. The user can select one media node 104 to be served as a gateway, or the gateway can be automatically determined without user intervention. For example, a user of the smartphone 102a may select the living room media node 104a as the primary listening device, which results in a gateway. In some embodiments, the gateway media node 104 is selected as the currently active output device for the media source node 102 based on its state. In some embodiments, the gateway media node 104 serves as a gateway and acts as an active output device for the media source node 102, thereby rendering at least some of the channels of media data. In some embodiments, the gateway media node 104 reports device or status information to the media source 102.

단계(206)에서, 가상 미디어 네트워크가 형성된다. 단계(206)는 사용자가 미디어 노드들(104, 106)을 선택한 것에 응답하여 수행될 수 있다. 예를 들어, 사용자는 사용자가 미디어 노드들(104, 106)을 선택할 수 있게 하는 미디어 소스(102) 상의 소프트웨어 프로그램에 액세스할 수 있다. 유의할 점은, 미디어 노드(104, 106)가 이미 상이한 가상 미디어 네트워크의 일부인 경우, 이 미디어 노드(104, 106)가 미디어 소스(102)를 통해 이용가능하지 않은 것으로 표시될 수 있다는 것이다. 그에 부가하여 또는 다른 대안으로서, 사용자는 사용 중인 미디어 노드(104, 106)가 현재의 가상 미디어 네트워크에 포함시키기 위해 해방되도록 요청할 수 있을 것이다. 다양한 실시예들에서, 단계(206)의 결과, 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104, 106)로 포워딩하라고 게이트웨이 미디어 노드(104)에 지시한다.At step 206, a virtual media network is formed. Step 206 may be performed in response to the user selecting media nodes 104 and 106. For example, a user may access a software program on a media source 102 that allows a user to select media nodes 104, 106. It should be noted that if the media nodes 104 and 106 are already part of a different virtual media network then this media node 104 and 106 may be marked as not available through the media source 102. [ Additionally or alternatively, the user may request that the media node 104 (106) in use be freed for inclusion in the current virtual media network. In various embodiments, step 206 directs the gateway media node 104 to forward the media signal to the other media nodes 104, 106 in the virtual media network.

단계(208)에서, 미디어가 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 전송될 수 있다. 이 단계(208)는 사용자가 미디어가 미디어 소스와 연관된 출력 디바이스 상에서 제공되도록 선택한 것에 응답하여 개시될 수 있을 것이다. 예를 들어, 사용자는 미디어를 재생하는 임의의 애플리케이션을 스마트폰(102a) 상에서 실행하고 있을 수 있다. 사용자는 이어서 게이트웨이 미디어 노드(104)를 출력 디바이스로서 선택할 수 있고, 미디어가 게이트웨이 미디어 노드(104)로 전송될 수 있다. 유의할 점은, 이 미디어 전송이 운영 체제(OS) 레벨에서 일어날 수 있다는 것이다. 이 전송이 암시하는 바는 임의의 미디어 애플리케이션이 사용자에 의해 가상 미디어 네트워크에 대한 미디어 소스로서 선택될 수 있다는 것이다.At step 208, media may be transmitted from the media source 102 to the gateway media node 104. [ This step 208 may be initiated in response to the user selecting the media to be provided on the output device associated with the media source. For example, a user may be running any application that plays media on the smartphone 102a. The user can then select the gateway media node 104 as an output device and the media can be transmitted to the gateway media node 104. [ It should be noted that this media transfer may occur at the operating system (OS) level. This transmission implies that any media application may be selected by the user as a media source for the virtual media network.

단계(210)에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 예를 들어, 거실 게이트웨이(104a)는 그가 스마트폰(102a)으로부터 수신한 미디어 신호를 사무실 렌더러(106a), 주방 렌더러(106b), 및 스테레오 수신기(108)로 브로드캐스트할 수 있다. 일부 실시예들에서, 각각의 미디어 노드(104, 106)는 그 자신의 사용자 제어가능 레벨(예컨대, 볼륨)에서 미디어를 재생한다. 따라서, 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 어떤 명령들이 송신될 수 있다. 그렇지만, 게이트웨이는 처리의 많은 부분을 수행할 수 있다. 따라서, 미디어 소스(102)가 과중한 처리 부하로 꼼짝 못하게 되지는 않는다.At step 210, the gateway media node 104 may broadcast the media signal to the other media nodes 104 in the virtual media network. For example, the living room gateway 104a may broadcast the media signals he received from the smartphone 102a to the office renderer 106a, the kitchen renderer 106b, and the stereo receiver 108. In some embodiments, each media node 104, 106 plays media at its own user-controllable level (e.g., volume). Thus, certain commands may be transmitted from the media source 102 to the gateway media node 104. However, the gateway can perform much of the processing. Therefore, the media source 102 does not become stuck with a heavy processing load.

도 3은 한 예시적인 가상 미디어 네트워크(300)를 나타낸 것이다. 도시된 바와 같이, 미디어 신호를 수신하는 싱크들(322, 332) 및 미디어 신호를 다른 미디어 노드(320, 330, 340)에 제공하는 브로드캐스터들(324, 334)를 가지고 있기 때문에 게이트웨이로서 역할할 수 있는 2개의 미디어 노드들(320, 330)이 있다. 예시를 위해, 미디어 노드들(320, 330, 340)과 별개인 액세스 포인트(350)가 있다. 유의할 점은, 미디어 노드들(320, 330, 340) 중 하나가 액세스 포인트로서 기능할 수 있다는 것이다.FIG. 3 illustrates an exemplary virtual media network 300. FIG. As shown, since it has the sinks 322 and 332 for receiving the media signal and the broadcasters 324 and 334 for providing the media signal to the other media nodes 320, 330 and 340, There are two media nodes 320, 330 that can be used. For purposes of illustration, there is an access point 350 that is separate from the media nodes 320, 330, and 340. It should be noted that one of the media nodes 320, 330, 340 may function as an access point.

미디어 노드들(320, 330) 중 일부는 브로드캐스터(324, 334)를 포함하고 있다. 이러한 노드들은 본 명세서에서 브로드캐스팅 노드(broadcasting node)라고 할 수 있다. 브로드캐스터(324, 334)는 하드웨어 또는 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 다양한 실시예들에서, 브로드캐스터들(324, 334)은 다른 미디어 노드들(320, 330, 340)에 의해 이해되는 방송 시간 브로드캐스트 포맷(airtime broadcast format)으로 미디어를 전송한다. 유의할 점은, 이 포맷이 미디어 소스(310)로부터 미디어(360)를 송신하는 데 사용되는 포맷과 상이할 수 있다는 것이다. 로컬 재생이 원격 렌더러들 상에서의 재생과 동기화될 수 있도록, 브로드캐스터들(324, 334) 및 렌더러들(326, 336)이 동일한 미디어 노드(320, 330)에 공존할 수 있다. 소스 주입(source injection)이 소스-싱크 링크(source-sink link)를 통해 행해질 수 있다. 소스-싱크간 전송과 달리, 동기 재생과 함께 포인트-투-멀티포인트(point-to-multipoint) 미디어 전송을 위해 방송 시간 브로드캐스트(airtime broadcast)가 사용될 수 있다.Some of the media nodes 320, 330 include broadcasters 324, 334. These nodes may be referred to herein as broadcasting nodes. Broadcasters 324 and 334 may be implemented by any combination of hardware or software. In various embodiments, broadcasters 324 and 334 transmit media in an airtime broadcast format that is understood by other media nodes 320, 330, and 340. It is noted that this format may be different from the format used to transmit the media 360 from the media source 310. [ Broadcasters 324 and 334 and renderers 326 and 336 may coexist in the same media node 320 and 330 so that local playback can be synchronized with playback on remote renderers. Source injection can be done through a source-sink link. Unlike source-to-sink transmission, airtime broadcast can be used for point-to-multipoint media transmission with synchronous playback.

살펴본 바와 같이, 게이트웨이 지원 미디어 노드(320, 330)는 싱크(322, 332)와 브로드캐스터(324, 336)를 겸비하고 있다. 일부 실시예들에서, 게이트웨이들(320, 330)은 미디어 소스(310)로부터 미디어를 수신하고 미디어를 가상 미디어 네트워크 내의 다른 미디어 노드들(320, 330, 340)과 호환되는 포맷으로 재브로드캐스트한다. 게이트웨이들(320, 330)은 또한 렌더러들(326, 336)을 포함한다. 다양한 실시예들에서, 게이트웨이 미디어 노드(320, 330)는 종단점(endpoint)으로 간주된다.As we have seen, the gateway supported media nodes 320 and 330 have sinks 322 and 332 and broadcasters 324 and 336, respectively. In some embodiments, gateways 320 and 330 receive media from media source 310 and rebroadcast media in a format compatible with other media nodes 320, 330, 340 in the virtual media network . The gateways 320 and 330 also include the renderers 326 and 336. In various embodiments, the gateway media node 320, 330 is considered an endpoint.

다수의 게이트웨이 지원 미디어 노드들(320, 330)이 네트워크 상에 존재할 수 있다. 일부 실시예들에서, 게이트웨이 미디어 노드들(320, 330)은 사용할 미디어 소스(310)에 대한 최상의 게이트웨이를 결정하기 위해 선출 방법(election method)을 이용한다. 예를 들어, 렌더러(326, 336)를 갖는 하나의 미디어 노드(320, 330)만이 미디어 소스(310)에 대해 활성인 경우에, 그 렌더링 노드가 또한 최상의 게이트웨이일 수 있고, 그로써 다른 소스들을 위해 네트워크 대역폭을 절감한다. 다른 한편으로, 미디어 소스(310)에 대해 다수의 렌더러들이 활성인 경우, 최상의 게이트웨이는 가장 강한 또는 가장 양호한 네트워크 연결을 갖는 것일 수 있다. 최상의 후보를 식별하기 위해 선출 방식이 행해질 수 있고, 필요한 경우, 상이한 게이트웨이(320, 330)로의 스트림 핸드오프(stream handoff)가 일어날 수 있으며, 이 경우에 원래의 게이트웨이(320, 330)는 소스(310)의 싱크로 될 수 있다. 이것은 스트림 구성(stream construction) 동안 또는 스트림 중간에(mid-stream) 일어날 수 있다. 활성 게이트웨이가 디스에이블되는 경우에, 네트워크는 자체 치유(self-heal)할 수 있고 방송 시간 브로드캐스트 스트림(airtime broadcast stream)들을 재설정하기 위해 새로운 게이트웨이를 선출할 수 있다.A number of gateway supported media nodes 320, 330 may reside on the network. In some embodiments, the gateway media nodes 320,330 use an election method to determine the best gateway for the media source 310 to use. For example, if only one media node 320, 330 with a renderer 326, 336 is active for the media source 310, then the render node may also be the best gateway, Reduce network bandwidth. On the other hand, if multiple renderers are active for media source 310, then the best gateway may be the strongest or best network connection. An election scheme may be made to identify the best candidates and stream handoffs to different gateways 320 and 330 may occur if necessary and in this case the original gateways 320 and 330 may be a source 310). This may occur during stream construction or mid-stream. If the active gateway is disabled, the network may self-heal and may elect a new gateway to reset airtime broadcast streams.

미디어 노드들(320, 330, 340) 중 일부는 렌더러(326, 336, 346)를 포함하고 있다. 이러한 미디어 노드들(320, 330, 340)은 본 명세서에서 렌더링 노드라고 할 수 있다. 렌더러(326, 336, 346)는 하드웨어 또는 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 미디어 신호에 대해 오디오의 예를 사용하는 경우, 렌더러들(326, 336, 346)은 내부 전원 스피커(internally powered speaker)를 통해, 또는 다른 증폭기/스피커 디바이스로의 아날로그 또는 디지털 출력들을 통해 미디어 스트림을 디코딩하고 재생할 수 있다. 비디오의 경우, 렌더러(326, 336, 346)는 내부 전원 디스플레이를 통해, 또는 다른 디스플레이 또는 디스플레이를 갖거나 구동하는 디바이스로의 아날로그 또는 디지털 출력들을 통해 미디어 스트림을 디코딩하고 재생할 수 있다. 다양한 실시예들에서, 렌더러(326, 336, 346)를 갖는 미디어 노드(320, 330, 340)는 가상 벽시계(virtual wall clock)의 생성, 유지 관리 및 배포를 지원한다. 렌더러(326, 336, 346)는 방송 시간 스트림 포맷에서 지정된 타임스탬프에서 스트림을 정확하게 렌더링하기 위해 벽시계를 사용할 수 있다.Some of the media nodes 320, 330, 340 include a renderer 326, 336, 346. These media nodes 320,330, 340 may be referred to herein as rendering nodes. The renderers 326, 336, 346 may be implemented by any combination of hardware or software. When using the example of audio for the media signal, the renderers 326, 336, 346 may be configured to provide a media stream through analog or digital outputs to an amplifier / speaker device, Decoded and played back. In the case of video, the renderers 326, 336, 346 may decode and play the media stream through an internal power display or through analog or digital outputs to a device that has or drives another display or display. In various embodiments, the media nodes 320, 330, 340 with the renderers 326, 336, 346 support the creation, maintenance and distribution of virtual wall clocks. The renderers 326, 336, 346 may use the wall clock to accurately render the stream at the time stamp specified in the broadcast time stream format.

도 3의 예에서, 미디어 소스(310)와 게이트웨이 미디어 노드(320) 내의 싱크(322) 사이에 연결이 있다. 미디어(360)는 게이트웨이 미디어 노드(320) 내의 렌더러(326)에 의해 재생된다. 연결을 설정하기 위해, 사용자는 게이트웨이 미디어 노드(320)를 미디어 소스(310)에 대한 출력 디바이스로서 선택했을 수 있다. 예를 들어, 미디어 소스(310)는 사용자가 오디오를 어느 스피커로 송신할지를 선택할 수 있게 하는 셀룰러폰일 수 있다. 셀룰러폰에 의해 재생되고 있는 임의의 오디오가 선택된 스피커로 송신될 수 있다. 이와 같이, 어떤 애플리케이션이 오디오(예컨대, 인터넷 라디오, MP3 등)를 제공하고 있는지에 관계없이, 오디오는 게이트웨이 미디어 노드(320)로 라우팅될 수 있다. 유의할 점은, 이것이 행해지기 위해 오디오를 제공하는 애플리케이션에 대해 어떤 변경도 행해질 필요가 없을 수 있다는 것이다. 미디어 소스(310)와 게이트웨이 미디어 노드(320) 사이의 연결이 무선 또는 유선일 수 있다. 다양한 실시예들에서, 이는 무선 블루투스 연결이다. 그렇지만, 블루투스 이외의 무선 프로토콜이 사용될 수 있다.In the example of FIG. 3, there is a connection between the media source 310 and the sink 322 in the gateway media node 320. The media 360 is played by the renderer 326 in the gateway media node 320. To establish the connection, the user may have selected the gateway media node 320 as an output device for the media source 310. [ For example, the media source 310 may be a cellular phone that allows the user to select which speaker to send the audio to. Any audio being played back by the cellular phone may be transmitted to the selected speaker. As such, audio may be routed to the gateway media node 320, regardless of which application is providing audio (e.g., Internet radio, MP3, etc.). It should be noted that no changes need to be made to the application providing the audio to do this. The connection between the media source 310 and the gateway media node 320 may be wireless or wired. In various embodiments, this is a wireless Bluetooth connection. However, wireless protocols other than Bluetooth may be used.

미디어 소스(310)와 게이트웨이 미디어 노드(320) 내의 싱크(322) 간의 연결에 부가하여, 미디어 노드(320) 내의 브로드캐스터(324)는 미디어(360)를 미디어 노드(330) 내의 렌더러(336) 및 미디어 노드(340) 내의 렌더러(346)로 송신하는 데 사용된다. 이 예에서, 액세스 포인트(350)는 중재자로서 역할한다. 그렇지만, 액세스 포인트(350)가 꼭 필요한 것은 아닐 수 있다. 다양한 실시예들에서, 미디어 노드(320)는 액세스 포인트로서 역할한다. 미디어 소스(310)로부터 미디어 노드(330) 및 미디어 노드(340)로의 연결들이 미디어 소스(310)와 미디어 노드(320) 사이의 연결과 유사한 방식으로 설정되었을 수 있다. 사용자는 또한 미디어 노드들(330, 340)을 가상 미디어 네트워크(300)의 일부로서 설정하였을 수 있다. 미디어 소스(310)는 사용자가 어느 미디어 노드들(320, 330, 340)을 가상 네트워크에 부가할지를 선택할 수 있게 하는 소프트웨어 애플리케이션을 가질 수 있다. 이 애플리케이션은 미디어 신호를 가상 미디어 네트워크의 활성 부분인 다른 미디어 노드들(330, 340)로 포워딩하라고 미디어 노드(320)에 지시하는 명령들을 미디어 노드(320)로 송신할 수 있다. 미디어 노드(320)는 미디어 신호를 재포맷팅(reformatting)하는 것, 라우팅하는 것, 미디어 노드들 사이에서 재생을 동기화하는 것 등의 상세를 처리할 수 있다. 따라서, 미디어 소스(310)는 과중한 처리의 부담을 지고 있지 않다.The broadcaster 324 in the media node 320 may receive the media 360 from the renderer 336 in the media node 330. In addition to the connection between the media source 310 and the sink 322 in the gateway media node 320, And to the renderer 346 in the media node 340. In this example, the access point 350 acts as an intermediary. However, the access point 350 may not be necessary. In various embodiments, the media node 320 serves as an access point. Connections from media source 310 to media node 330 and media node 340 may have been established in a manner similar to the connection between media source 310 and media node 320. [ The user may also have configured the media nodes 330, 340 as part of the virtual media network 300. Media source 310 may have a software application that allows a user to select which media nodes 320, 330, 340 to add to the virtual network. The application may send commands to the media node 320 instructing the media node 320 to forward the media signal to other media nodes 330,340 that are active portions of the virtual media network. The media node 320 may process details such as reformatting the media signal, routing, synchronizing playback between the media nodes, and so on. Thus, the media source 310 is not burdened with heavy processing.

가상 미디어 네트워크(300)가 하나의 가능한 디바이스 세트의 하나의 가능한 구성에 불과하다는 것을 잘 알 것이다. 다양한 대안의 미디어 네트워크들(300)은 보다 적은 또는 부가의 디바이스들을 포함할 수 있고, 상이한 방식으로 미디어를 배포할 수 있다. 예를 들어, 미디어 소스(310)는 미디어를 액세스 포인트로 직접 전송할 수 있고, 미디어 노드(330)는 미디어 노드(320) 대신에 게이트웨이로서 역할할 수 있으며, 미디어 노드(340)는 가상 네트워크에 참여하지 않을 수 있다. 다양한 대안의 구성들이 명백할 것이다.It will be appreciated that the virtual media network 300 is only one possible configuration of one possible device set. The various alternative media networks 300 may include fewer or additional devices and may distribute the media in a different manner. For example, media source 310 may send media directly to an access point, media node 330 may act as a gateway instead of media node 320, and media node 340 may participate in a virtual network I can not. Various alternative arrangements will be apparent.

앞서 살펴본 바와 같이, 미디어 소스들(310)은 미디어(360)를 가상 미디어 네트워크(300)에 주입할 수 있다. 예들은 PC 또는 스마트폰을 포함한다. 이용가능한 미디어 주입 방법들은 아날로그 또는 디지털 전송을 지원하는 케이블들, 블루투스, 및 WiFi를 포함할 수 있다. 일부 실시예들에서, 미디어 소스(310)는 가상 미디어 네트워크와 호환되는 포맷으로 미디어 데이터를 전송하는 브로드캐스터이다. 다른 실시예들에서, 기술적 한계들은 미디어 소스(310)의 브로드캐스트 능력을 제한한다. 예를 들어, 많은 전화들의 보안 모델은 오디오 드라이버들이 제3자들에 의해 수정되지 못하게 할 수 있다. 또한, 미디어 소스 디바이스(310) 자체가 이용가능한 처리 또는 네트워크 대역폭을 갖지 않을 수 있다. 게다가, 일부 실시예들에서, 미디어 소스의 초기 링크에 대한 QoS 레벨은, 적어도 하나의 종단점이 가능한 최고의 충실도로 렌더링할 수 있도록, 다른 종단점들보다 더 높은 QoS를 이용한다.As discussed above, media sources 310 may inject media 360 into virtual media network 300. Examples include PCs or smartphones. Available media injection methods may include cables that support analog or digital transmission, Bluetooth, and WiFi. In some embodiments, the media source 310 is a broadcaster that transmits media data in a format compatible with the virtual media network. In other embodiments, the technical limitations limit the ability of the media source 310 to broadcast. For example, the security model of many phones may prevent audio drivers from being modified by third parties. In addition, the media source device 310 itself may not have available processing or network bandwidth. In addition, in some embodiments, the QoS level for the initial link of the media source utilizes a higher QoS than other endpoints, so that at least one endpoint can render with the highest possible fidelity.

유의할 점은, 미디어 소스(310)로부터 싱크(322)로의 전송을 위해 많은 포맷들 및 연결들이 사용될 수 있다는 것이다. 미디어 소스(310)는, 어떤 비제한적인 예들로서, 유선, BT A2DP, 또는 WiFi를 통한 특정의 프로토콜을 통해 싱크(322)로 전송할 수 있다. WiFi 프로토콜은 품질과 지연 시간 간의 절충을 제공하도록 또는 정확도를 보장하도록 설계되어 있을 수 있다. 예를 들어, 프로토콜은 오류들을 검출하고 데이터의 재전송을 요청할 수 있다. 종종, 이것이 브로드캐스트의 목적은 아닐 수 있지만, 브로드캐스트하기 이전에 미디어가 확실하게 도착하는 것이 중요하다. 본 명세서에 개시된 실시예들은 기존의 디바이스들과의 호환성을 유지한다.It is noted that many formats and connections may be used for transmission from the media source 310 to the sink 322. The media source 310 may transmit to the sink 322 via a wired, BT A2DP, or certain protocol over WiFi, as some non-limiting examples. The WiFi protocol may be designed to provide a tradeoff between quality and latency or to ensure accuracy. For example, the protocol may detect errors and request retransmission of data. Often this may not be the purpose of the broadcast, but it is important that the media arrive securely before broadcasting. The embodiments disclosed herein maintain compatibility with existing devices.

다양한 실시예들에서, 네트워크는 표준의 WiFi 인프라에 기초하고 있다. 각각의 미디어 노드는 그가 DHCP를 통해 IP 주소를 획득하는 액세스 포인트(350)에 연결될 수 있다. 일부 노드들(310, 320, 330)은 무선 액세스 키를 입력할 수 있게 하는 UI(디스플레이, 키보드 입력 등)를 갖지 않을 수 있다. 이러한 경우들에, 연결을 달성하기 위해 WPS-PBC가 사용될 수 있다. 다른 방법들은 사용자가 GUI 지원 디바이스(GUI enabled device)로부터 직접 종단점에 연결하고 노드에 의해 서비스되는 웹페이지, 또는 노드와 직접 통신하는 애플리케이션 페이지를 통해 네트워크 파라미터들을 입력하는 애드혹 모드를 포함할 수 있다. 다른 방법은 전화 또는 기타 디바이스 상에서 실행 중인 애플리케이션이 블루투스를 통해 미디어 노드와 통신하는 것이다. 애플리케이션은 어느 액세스 포인트에 연결할지 및 대응하는 네트워크 액세스 코드를 사용자에게 요구할 수 있다. 일부 실시예들에서, 미디어 노드(320, 330, 340)는 이 설정 단계 동안 사용자에 의해 이름을 제공받는다.In various embodiments, the network is based on a standard WiFi infrastructure. Each media node may be connected to an access point 350 through which it obtains an IP address through DHCP. Some nodes 310, 320, and 330 may not have a UI (display, keyboard input, etc.) that allows input of a wireless access key. In these cases, WPS-PBC may be used to achieve the connection. Other methods may include an ad hoc mode in which a user connects to an endpoint directly from a GUI enabled device and enters network parameters via a web page serviced by the node, or an application page communicating directly with the node. Another way is for an application running on the phone or other device to communicate with the media node via Bluetooth. The application can ask the user which access point to connect to and the corresponding network access code. In some embodiments, the media node 320, 330, 340 is given a name by the user during this setup step.

액세스 포인트(350) 등의 인프라가 없는 경우, 노드가 가상 액세스 포인트로 될 수 있다. 다른 노드들은 액세스 포인트(350)를 발견하고, 사설 네트워크(private network)를 형성하기 위해 연결될 수 있다. 보안 연결들을 이루기 위해 WPS-PBC 및 애드혹 방법들이 사용될 수 있다.In the absence of an infrastructure such as access point 350, the node may be a virtual access point. Other nodes may be connected to discover the access point 350 and form a private network. WPS-PBC and ad hoc methods can be used to achieve secure connections.

도 4는 미디어 소스(400)의 한 예시적인 구성요소 다이어그램을 나타낸 것이다. 미디어 소스(400)는 예시적인 환경(100)의 미디어 소스들(102a, 102b) 또는 예시적인 가상 미디어 네트워크(300)의 미디어 소스(310) 중 어느 하나에 대응할 수 있다. 미디어 소스(400)는 네트워크 인터페이스(410)를 포함할 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(410)는 다수의 별개의 인터페이스들을 포함한다. 예를 들어, 네트워크 인터페이스(410)는 WiFi 호환 인터페이스 및 블루투스 호환 인터페이스를 포함할 수 있다. 그에 부가하여 또는 다른 대안으로서, 네트워크 인터페이스(410)는 임의의 다른 프로토콜들과 호환되는 인터페이스들을 포함할 수 있다. 이 예에서, 미디어 신호(예컨대, 오디오 스트림 또는 비디오 스트림)는 네트워크 인터페이스(410)의 블루투스 호환 인터페이스를 사용하여 송신될 수 있다. 네트워크 인터페이스(410)의 WiFi 호환 인터페이스는 가상 미디어 네트워크를 제어하기 위한 명령들을 송신하는 데 사용될 수 있다.4 depicts an exemplary component diagram of a media source 400. As shown in FIG. The media source 400 may correspond to either the media sources 102a and 102b of the exemplary environment 100 or the media sources 310 of the exemplary virtual media network 300. [ The media source 400 may include a network interface 410. In various embodiments, network interface 410 includes a number of separate interfaces. For example, the network interface 410 may include a WiFi compatible interface and a Bluetooth compatible interface. Additionally or alternatively, the network interface 410 may include interfaces compatible with any other protocols. In this example, a media signal (e.g., an audio stream or a video stream) may be transmitted using the Bluetooth compatible interface of the network interface 410. The WiFi compatible interface of the network interface 410 may be used to transmit commands for controlling the virtual media network.

사용자는 가상 미디어 네트워크를 제어하기 위해 가상 네트워크 미디어 애플리케이션(420)에 액세스할 수 있다. 하나의 예로서, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 미디어 노드들(104, 106)을 선택하고 그들의 볼륨, 재생 등을 제어할 수 있게 하는 사용자 인터페이스를 제공할 수 있다. 일부 실시예들에서, 네트워크에 대한 마스터 볼륨 및 각각의 미디어 노드(104, 106)에 대한 개개의 볼륨들이 있다.The user may access the virtual network media application 420 to control the virtual media network. As one example, the virtual network media application 420 may provide a user interface that allows a user to select media nodes 104, 106 and control their volume, playback, and the like. In some embodiments, there are a master volume for the network and individual volumes for each media node 104,106.

미디어 소스 애플리케이션(430)은 미디어 소스(400) 상에서 오디오를 재생할 수 있는 임의의 애플리케이션일 수 있다. 예를 들어, 미디어 소스 애플리케이션은 MP3 플레이어, 인터넷 오디오, 웹 브라우저 등일 수 있다. 다양한 실시예들에서, 사용자에 의해 어떤 출력 디바이스가 선택되든 그 출력 디바이스 상에서 미디어가 재생될 것이다. 이 출력 디바이스 선택은 운영 체제(OS)(440)의 제어 하에 있을 수 있다. 예를 들어, OS(440)는 사용자가 출력 디바이스를 선택할 수 있게 하는 팝업 창을 제공할 수 있다. 미디어 노드들(104, 106) 중 하나 이상이 선택가능한 것들로서 나타날 수 있다. 미디어 노드들(104, 106) 중 하나를 선택함으로써, 오디오 애플리케이션과 연관된 미디어 신호가 네트워크 인터페이스(410)를 통해 미디어 소스(400)로부터 선택된 미디어 노드(104, 106)로 송신될 수 있다. 일부 실시예들에서, 미디어 라이브러리(450)는 미디어를 디코딩하는 데 사용된다. 미디어 라이브러리는 디코딩된 미디어를 네트워크 미디어 드라이버(445)로 송신하고, 네트워크 미디어 드라이버(445)는 미디어 신호를 선택된 출력 디바이스로 송신한다. 미디어 노드(104, 106)가 출력 디바이스로서 선택되어 있는 경우, 미디어 신호는 네트워크 인터페이스(450)를 통해 송신된다. 일부 실시예들에서, 네트워크 미디어 드라이버(445)는 블루투스 드라이버이다. 그렇지만, 네트워크 미디어 드라이버(445)는 임의의 프로토콜과 호환될 수 있다.The media source application 430 may be any application capable of playing audio on the media source 400. For example, the media source application may be an MP3 player, Internet audio, web browser, and the like. In various embodiments, the media will be played on the output device no matter which output device is selected by the user. This output device selection may be under the control of the operating system (OS) 440. For example, the OS 440 may provide a pop-up window that allows the user to select an output device. One or more of the media nodes 104, 106 may appear as selectable ones. By selecting one of the media nodes 104 and 106, a media signal associated with the audio application can be transmitted from the media source 400 via the network interface 410 to the selected media node 104, 106. In some embodiments, the media library 450 is used to decode the media. The media library sends the decoded media to the network media driver 445 and the network media driver 445 sends the media signal to the selected output device. If the media nodes 104, 106 are selected as output devices, the media signals are transmitted via the network interface 450. In some embodiments, the network media driver 445 is a Bluetooth driver. However, the network media driver 445 may be compatible with any protocol.

유의할 점은, 상기 실시예에서, 가상 미디어 애플리케이션(420)이 미디어 신호를 결코 건드리지 않는다는 것이다. 이것은, 미디어 소스(400)에 대한 적절한 출력 디바이스를 선택함으로써, 미디어 신호를 미디어 노드(104, 106)로 송신할 때 임의의 미디어 소스(430)가 사용될 수 있다는 장점을 가진다. 이와 같이, 가상 네트워크 미디어 애플리케이션(420)의 일부 실시예들은 임의의 미디어 소스 애플리케이션(430)과 호환된다. 더욱이, 미디어 소스 애플리케이션(430)에 대해 어떤 변경들도 필요하지 않을 수 있다.Note that, in the above embodiment, the virtual media application 420 never touches the media signal. This has the advantage that any media source 430 can be used when transmitting the media signal to the media node 104, 106, by selecting the appropriate output device for the media source 400. As such, some embodiments of the virtual network media application 420 are compatible with any media source application 430. Moreover, no changes to the media source application 430 may be required.

앞서 논의한 바와 같이, 게이트웨이 미디어 노드(104)의 일부 실시예들은, 미디어 신호가 가상 미디어 네트워크와 호환되도록, 미디어 신호의 재포맷팅 및 처리를 수행할 수 있다. 이와 같이, 게이트웨이 미디어 노드(104)는 처리의 많은 부분을 미디어 소스(102)로부터 덜어준다.As discussed above, some embodiments of the gateway media node 104 may perform reformatting and processing of media signals such that the media signals are compatible with the virtual media network. As such, the gateway media node 104 relieves much of the processing from the media source 102.

미디어 소스(400)가 하나의 예를 예시한 것이고 본 명세서에 기술된 방법들 및 기법들을 여전히 구현하면서 미디어 소스(400)에 대해 많은 수정들이 행해질 수 있다는 것을 잘 알 것이다. 예를 들어, 일부 실시예들에서, 네트워크 미디어 드라이버(445)는 가상 네트워크 미디어 드라이버를 포함하고, 가상 네트워크 미디어 애플리케이션(420)이 존재하지 않을 수 있다. 이러한 실시예에서, 사용자는, 미디어 신호들을 미디어 노드들(104, 106)로 송신하는 데 도움을 주기 위해, 가상 미디어 네트워크 드라이버(445)를 설치할 수 있다. 사용자가 미디어 신호를 미디어 노드(104, 106)로 송신하고자 할 때, 사용자는 OS(440)에 의해 제공된 인터페이스에서 미디어 노드를 간단히 선택한다. 이것은 가상 네트워크 미디어 드라이버(445)를 선택한다. 예를 들어, 미디어 신호가 미디어 라이브러리(450)로부터 가상 네트워크 미디어 드라이버(445)에 제공될 수 있다. 이전의 예에서와 같이, 미디어 소스 애플리케이션(430)은 미디어를 재생하는 데 사용되는 임의의 애플리케이션일 수 있다.It will be appreciated that the media source 400 is an illustration of one example and that many modifications may be made to the media source 400 while still implementing the methods and techniques described herein. For example, in some embodiments, the network media driver 445 includes a virtual network media driver, and the virtual network media application 420 may not be present. In this embodiment, a user may install a virtual media network driver 445 to help send media signals to the media nodes 104, 106. When a user wishes to transmit a media signal to media nodes 104 and 106, the user simply selects the media node from the interface provided by OS 440. [ This selects the virtual network media driver 445. For example, a media signal may be provided from the media library 450 to the virtual network media driver 445. As in the previous example, the media source application 430 may be any application used to play media.

가상 네트워크 미디어 애플리케이션(420)은 이전에 기술된 것과 유사할 수 있다. 예를 들어, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 가상 네트워크에 부가할 미디어 노드들(104, 106)을 선택하고 네트워크를 제어하는 인터페이스를 제공할 수 있다. 일부 실시예들에서, 가상 네트워크 미디어 애플리케이션(420)은 선택적인데, 그 이유는 그의 기능이 가상 네트워크 미디어 드라이버(445)에 포함되어 있을 수 있기 때문이다.The virtual network media application 420 may be similar to that previously described. For example, the virtual network media application 420 may provide an interface for a user to select the media nodes 104, 106 to add to the virtual network and to control the network. In some embodiments, the virtual network media application 420 is optional, because its functionality may be included in the virtual network media driver 445. [

그에 부가하여, 명령들을 송신하기 위해 명령 채널이 사용될 수 있고, 동일한 프로토콜을 사용하여 네트워크 인터페이스(410)를 통해 미디어 신호를 송신하기 위해 데이터 채널이 사용될 수 있다. 예를 들어, 명령들 및 데이터 둘 다가 WiFi 프로토콜 또는 블루투스 프로토콜에 따라 전송될 수 있다. 앞서 살펴본 바와 같이, 명령들 및 데이터가, 다른 대안으로서, 상이한 프로토콜들에 따라 전송될 수 있다.In addition, a command channel may be used to transmit commands, and a data channel may be used to transmit media signals via network interface 410 using the same protocol. For example, both commands and data may be transmitted in accordance with the WiFi protocol or the Bluetooth protocol. As previously noted, commands and data may alternatively be transmitted in accordance with different protocols.

유의할 점은, OS(440)에 드라이버(445)를 포함시킴으로써, 임의의 미디어 소스 애플리케이션(430)으로부터의 미디어 신호들이 미디어 노드(104, 106)로 송신될 수 있다는 것이다. 사용자가 해야 할 일은 단지 미디어 노드들(104, 106) 중 하나를 선택하는 것이다. 그에 응답하여, 가상 네트워크 미디어 드라이버(445)가 사용된다. 따라서, 미디어 소스(400) 상에서 실행되는 임의의 미디어 소스 애플리케이션(430)에서 가상 미디어 네트워크가 사용될 수 있다.It is noted that media signals from any media source application 430 may be transmitted to media nodes 104 and 106 by including driver 445 in OS 440. [ The user has only to select one of the media nodes 104, 106. In response, a virtual network media driver 445 is used. Thus, a virtual media network may be used in any media source application 430 running on the media source 400.

일부 실시예들에서, 미디어 소스 애플리케이션(430)이 가상 네트워크 미디어 애플리케이션(420)에 내장되어 있다. 어떤 이러한 실시예들에서, 미디어 소스 애플리케이션(430)에 의해 재생되는 임의의 미디어가 미디어 노드(104, 106)로 송신된다.In some embodiments, a media source application 430 is embedded in the virtual network media application 420. In some of these embodiments, any media played by the media source application 430 is transmitted to the media nodes 104, 106.

다양한 실시예들에서, 미디어가 미디어 소스(400) 및 가상 미디어 네트워크에 속하는 미디어 노드들(104, 106)에 의해 동시에 렌더링된다. 예를 들어, 미디어 소스(400)는 미디어의 비디오 채널을 렌더링할 수 있는 반면, 미디어 노드들(104, 106)은 미디어의 오디오 채널들을 렌더링할 수 있다. 어떤 이러한 실시예들에서, 다양한 미디어 채널들이 동기된 채로 있다. 예를 들어, 미디어 소스(400)는 미디어 데이터가 미디어 노드들(104, 106)에 의해 렌더링되어야만 하는 때를 나타내기 위해 타임스탬프들을 미디어 데이터와 함께 송신할 수 있다. 이와 유사하게, 게이트웨이(104)는 또한 미디어 데이터를 다른 미디어 노드들(104, 106)로 포워딩할 때 미디어 데이터와 연관된 타임스탬프들을 포함시킬 수 있다. 타임스탬프들의 이러한 교환을 가능하게 하기 위해, 다양한 미디어 디바이스들(104, 106, 400)은 가상 벽시계와 같은 공통의 기준 클록, 또는 다양한 시간 영역들 간에 타임스탬프들을 변환하는 방법을 가질 수 있으며, 이에 대해서는 이하에서 보다 상세히 기술될 것이다.In various embodiments, the media is simultaneously rendered by the media source 400 and the media nodes 104, 106 belonging to the virtual media network. For example, media source 400 may render a video channel of media, while media nodes 104 and 106 may render audio channels of media. In some of these embodiments, the various media channels remain synchronized. For example, the media source 400 may transmit timestamps with the media data to indicate when the media data should be rendered by the media nodes 104, 106. Similarly, the gateway 104 may also include timestamps associated with the media data when forwarding the media data to other media nodes 104, 106. To enable this exchange of timestamps, the various media devices 104,106, 400 may have a common reference clock, such as a virtual wall clock, or a method of transforming timestamps between various time regions, Will be described in more detail below.

도 5는 미디어 노드(500)의 한 예시적인 구성요소 다이어그램을 나타낸 것이다. 미디어 노드(500)는 예시적인 환경(100)의 미디어 노드들(104, 106) 중 하나 이상에 대응할 수 있다. 미디어 노드(500)는 네트워크 인터페이스(510)를 가질 수 있다. 네트워크 인터페이스(510)는 하나 이상의 무선 또는 유선 프로토콜들에 따른 통신을 가능하게 할 수 있다. 다양한 실시예들에서, 하나 이상의 안테나들이 네트워크 인터페이스(510)에 연결되어 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 WiFi 호환이기도 하고 블루투스 호환이기도 하다. 그에 부가하여 또는 다른 대안으로서, 네트워크 인터페이스(510)는 임의의 다른 프로토콜과 호환될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 하나 이상의 유선 네트워크 인터페이스들을 포함한다.FIG. 5 illustrates an exemplary component diagram of a media node 500. FIG. The media node 500 may correspond to one or more of the media nodes 104, 106 of the exemplary environment 100. The media node 500 may have a network interface 510. The network interface 510 may enable communication according to one or more wireless or wired protocols. In various embodiments, one or more antennas are coupled to the network interface 510. In some embodiments, the network interface 510 is WiFi compatible and Bluetooth compatible. Additionally or alternatively, the network interface 510 may be compatible with any other protocol. In some embodiments, the network interface 510 includes one or more wired network interfaces.

렌더러(520)는 스피커들(530), 디스플레이(540), 또는 기타 출력 디바이스(도시 생략)를 통해 제공하기 위한 미디어 신호를 처리하는 일을 맡고 있을 수 있다. 다양한 대안의 미디어 노드들이, 미디어 노드가 렌더링하도록 설계되어 있는 미디어의 유형에 따라, 스피커들(530) 또는 디스플레이(540)를 포함하지 않을 수 있다는 것을 잘 알 것이다. 게다가, 미디어 노드(500)가 렌더러(520)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 렌더링 디바이스가 아니라 게이트웨이 또는 기타 브로드캐스터로서만 기능하도록 설계되어 있다. 렌더링 모듈은 네트워크 인터페이스(510)로부터 미디어 신호를 수신할 수 있다.The renderer 520 may be in charge of processing the media signals for presentation via the speakers 530, the display 540, or other output device (not shown). It will be appreciated that various alternative media nodes may not include speakers 530 or display 540, depending on the type of media the media node is designed to render. In addition, the media node 500 may not include the renderer 520, in which case the media node 500 is designed to function only as a gateway or other broadcaster, not as a rendering device. The rendering module may receive the media signal from the network interface 510.

브로드캐스터(550)는 미디어 신호를 네트워크 인터페이스(510)를 통해 다른 적절한 미디어 노드들(104, 106)로 포워딩할 수 있을 것이다. 미디어 신호를 홈 스테레오 시스템과 같은 디바이스에 제공하기 위해 보조 출력(560)이 사용될 수 있다. 일부 실시예들에서, 브로드캐스터(550)는 미디어 신호들을 보조 출력(560)으로 포워딩하는 것을 처리한다. 다양한 실시예들에서, 미디어 노드(500)는 보조 출력(560)을 포함하지 않는다. 게다가, 미디어 노드(500)가 브로드캐스터(550)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 게이트웨이 또는 기타 브로드캐스팅 디바이스가 아니라 렌더링 디바이스로서만 기능하도록 설계되어 있다.The broadcaster 550 will be able to forward the media signal to the other suitable media nodes 104,106 via the network interface 510. [ An auxiliary output 560 may be used to provide the media signal to a device such as a home stereo system. In some embodiments, the broadcaster 550 processes forwarding the media signals to the auxiliary output 560. [ In various embodiments, the media node 500 does not include an auxiliary output 560. In addition, the media node 500 may not include a broadcaster 550, in which case the media node 500 is designed to function only as a rendering device, not as a gateway or other broadcasting device.

명령 모듈(570)은 미디어 신호를 제어하는 명령들을 처리할 수 있을 것이다. 이 명령들은 볼륨, 재생, 일시정지 등을 포함할 수 있을 것이다. 동기화 모듈(580)은 네트워크 내의 다양한 미디어 노드들 상에서의 재생 동안 미디어 신호의 정확한 동기화를 책임지고 있을 수 있다. 이하에서 더 상세히 기술할 것인 바와 같이, 동기화 모듈(580)은 초기 클록 동기화를 확립하기 위해 사용하기 위한 비콘 메시지(beacon message)들을 전송 또는 수신할 수 있다. 그에 부가하여, 미디어 스트림이 시작된 후에, 동기화 모듈(580)은 미디어 재생 동안 클록 동기화를 개선시키거나 보정하는 데 사용하기 위해 미디어 패킷들에 타임스탬프들을 삽입하거나 그로부터 추출할 수 있다.Command module 570 may be able to process commands that control the media signal. These commands may include volume, play, pause, and so on. The synchronization module 580 may be responsible for accurate synchronization of media signals during playback on various media nodes in the network. As will be described in greater detail below, the synchronization module 580 may send or receive beacon messages for use to establish initial clock synchronization. In addition, after the media stream is started, the synchronization module 580 may insert or extract timestamps in the media packets for use in improving or correcting clock synchronization during media playback.

미디어 노드들(104, 106)은 각종의 메커니즘들을 통해 제어될 수 있다. 제어기들은 스마트폰 앱(SmartPhone App), 태블릿 앱(Tablet App), TV 또는 셋톱 박스 상의 UI, 노드 상의 디스플레이를 갖거나 갖지 않는 버튼들, 또는 PC 앱(PC app)을 포함할 수 있다. 일부 실시예들에서, 이 디바이스들은 렌더러(520)가 특정의 스트림 또는 그의 특정의 채널들을 렌더링하는지, 렌더러(520)의 볼륨 출력, 및 마스터 볼륨을 제어할 수 있다.The media nodes 104 and 106 may be controlled through various mechanisms. The controllers may include a SmartPhone App, a Tablet App, a UI on a TV or set-top box, buttons with or without a display on the node, or a PC app (PC app). In some embodiments, the devices may control whether the renderer 520 renders a particular stream or its particular channels, the volume output of the renderer 520, and the master volume.

일부 실시예들에서, 미디어 노드(500)는 명령 프로토콜을 지원한다. 명령 프로토콜은 오디오 재생을 켜고/끄는 방법, 오디오 재생을 동기화된 구역들로 통합하는 방법, 재생, 빨리감기, 되감기 및 탐색과 같은 제어들을 전송하는 방법, 노드들로 메타데이터를 전송하는 방법, 네트워크 상태를 네트워크에 가입한 디바이스들로 통지하는 방법, 디바이스들이 네트워크를 떠날 때 상태를 업데이트하는 방법, 원격 사용자 인터페이스들을 통해 제어하는 방법, 및 방송 시간 네트워크(airtime network)를 유지하는 기타 메시지들 및 방법들을 포함할 수 있다.In some embodiments, the media node 500 supports a command protocol. The command protocol includes a method for turning on / off audio playback, a method for integrating audio playback into synchronized zones, a method for transmitting controls such as playback, fast forward, rewind and seek, a method for transmitting metadata to nodes, A method of notifying devices that have joined the network, a method of updating status when devices leave the network, a method of controlling via remote user interfaces, and other messages and methods for maintaining a broadcast time network Lt; / RTI >

유의할 점은, 미디어 노드(500)의 요소들이 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다는 것이다. 미디어 노드(500)는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들 상에서 실행될 때, 미디어 노드(500)의 다양한 요소들의 기능을 구현하는 명령어들을 갖는 컴퓨터 판독가능 저장 매체를 가질 수 있다.It should be noted that the elements of the media node 500 may be implemented in software, hardware, or a combination of software and hardware. The media node 500 may have one or more processors, and a computer-readable storage medium having instructions that, when executed on one or more processors, implement the functionality of the various elements of the media node 500.

도 6은 미디어 디바이스(600)의 한 예시적인 하드웨어 다이어그램을 나타낸 것이다. 예시적인 미디어 디바이스(600)는 예시적인 환경(100)의 미디어 디바이스들(102, 104, 106), 미디어 소스(400), 또는 미디어 노드(500) 중 임의의 것에 대응할 수 있다. 도시된 바와 같이, 하드웨어 디바이스(600)는 하나 이상의 시스템 버스들(660)을 통해 상호연결된 프로세서(610), 메모리(620), 사용자 인터페이스(630), 네트워크 인터페이스(640), 및 저장소(650)를 포함할 수 있다. 도 6이, 어떤 점들에서, 추상화를 구성한다는 것 및 미디어 디바이스(600)의 구성요소들의 실제 구성이 예시된 것보다 더 복잡할 수 있다는 것을 잘 알 것이다. 예를 들어, 프로세서(610) 및 메모리(620)는 로컬 마이크로프로세서 버스를 통해 연결될 수 있고, 사용자 인터페이스(630), 네트워크 인터페이스(640), 및 저장소(650)가 하나 이상의 입출력 버스들을 통해 연결될 수 있다.6 depicts an exemplary hardware diagram of media device 600. Media device 600 includes a plurality of media devices. Exemplary media device 600 may correspond to any of media devices 102, 104, 106, media source 400, or media node 500 in exemplary environment 100. As shown, the hardware device 600 includes a processor 610, a memory 620, a user interface 630, a network interface 640, and a storage 650 interconnected via one or more system buses 660. [ . ≪ / RTI > It will be appreciated that FIG. 6, at some points, constitutes an abstraction, and that the actual configuration of the components of the media device 600 may be more complex than illustrated. For example, the processor 610 and the memory 620 may be connected via a local microprocessor bus and the user interface 630, the network interface 640, and the storage 650 may be connected via one or more input / have.

프로세서(610)는 메모리(620) 또는 저장소(650)에 저장된 명령어들을 실행할 수 있는 임의의 하드웨어 디바이스일 수 있다. 그에 따라, 프로세서는 마이크로프로세서, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 기타 유사한 디바이스들을 포함할 수 있다.The processor 610 may be any hardware device capable of executing instructions stored in the memory 620 or the storage 650. Accordingly, the processor may include a microprocessor, a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other similar devices.

메모리(620)는, 예를 들어, L1, L2 또는 L3 캐시 또는 시스템 메모리와 같은 다양한 메모리들을 포함할 수 있다. 그에 따라, 메모리(620)는 SRAM(static random access memory), DRAM(dynamic RAM), 플래시 메모리, ROM(read only memory), 또는 기타 유사한 메모리 디바이스들을 포함할 수 있다.Memory 620 may include various memories, such as, for example, L1, L2 or L3 caches or system memory. Accordingly, memory 620 may include static random access memory (SRAM), dynamic RAM (DRAM), flash memory, read only memory (ROM), or other similar memory devices.

사용자 인터페이스(630)는 사용자와의 통신 또는 사용자를 위한 미디어의 렌더링을 가능하게 하는 하나 이상의 디바이스들을 포함할 수 있다. 예를 들어, 사용자 인터페이스(630)는 디스플레이, 스피커들, 프린터, 보조 출력, 마우스, 키보드, 영숫자 키패드, 트랙볼, 스타일러스, 또는 버튼들을 포함할 수 있다.The user interface 630 may include one or more devices that enable communication with a user or rendering media for a user. For example, the user interface 630 may include a display, speakers, printer, auxiliary output, mouse, keyboard, alphanumeric keypad, trackball, stylus, or buttons.

네트워크 인터페이스(640)는 다른 하드웨어 디바이스들과의 통신을 가능하게 하는 하나 이상의 디바이스들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(640)는 이더넷 프로토콜, TCP/IP 프로토콜들, WiFi 프로토콜, 또는 블루투스 프로토콜에 따라 통신하도록 구성된 하나 이상의 NIC(network interface card)들을 포함할 수 있다. 네트워크 인터페이스(640)에 대한 다양한 대안의 또는 부가의 하드웨어 또는 구성들이 명백할 것이다.Network interface 640 may include one or more devices that enable communication with other hardware devices. For example, network interface 640 may include one or more network interface cards (NICs) configured to communicate in accordance with Ethernet protocols, TCP / IP protocols, WiFi protocols, or Bluetooth protocols. Various alternative or additional hardware or configurations for network interface 640 will be apparent.

저장소(650)는 ROM(read-only memory), RAM(random-access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들, 또는 유사한 저장 매체와 같은 하나 이상의 기계 판독가능 저장 매체를 포함할 수 있다. 저장소는 또한 데이터 및 코드를 미디어 디바이스(600)에 입력하고 그로부터 출력하기 위해, 플로피 디스크와 같은 휴대용 비휘발성 저장 매체를 포함할 수 있다. 다양한 실시예들에서, 저장소(650)는 프로세서(610)가 실행하기 위한 명령어들 또는 프로세서(510)가 처리할 수 있는 데이터를 저장한다. 예를 들어, 저장소는 미디어 디바이스(600)의 기본 기능들을 조정하기 위한 운영 체제(670) 및 다른 미디어 디바이스가 재생을 동기화하는 데 충분한 정보를 전송하기 위한 또는 재생을 동기화하기 위해 다른 미디어 디바이스에 의해 전송되는 이러한 정보를 처리하기 위한 동기화 명령어들(672)을 저장할 수 있다.Storage 650 includes one or more machine-readable storage media, such as read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, can do. The repository may also include a portable non-volatile storage medium, such as a floppy disk, for inputting and outputting data and code to and from the media device 600. In various embodiments, the store 650 stores instructions for the processor 610 to execute or data that the processor 510 can process. For example, the repository may include an operating system 670 for coordinating the basic functions of the media device 600, and other media devices for transferring sufficient information to synchronize playback or for synchronizing playback And may store synchronization instructions 672 for processing such information being transmitted.

미디어 디바이스(600)의 역할 또는 능력에 따라, 저장소(650)는 다양한 부가의 명령어들을 저장할 수 있다. 예를 들어, 미디어 디바이스(600)가 미디어 소스로서 기능할 수 있는 경우, 저장소(650)는 미디어를 획득하거나 디바이스(600) 상에서 재생하기 위한 미디어 소스 애플리케이션 명령어들(674), 미디어를 디코딩하기 위한 미디어 라이브러리 명령어들(676), 또는 사용자가 명령들을 가상 미디어 네트워크로 전송할 수 있게 하기 위한 가상 네트워크 미디어 애플리케이션 명령어들(678)을 저장할 수 있다. 예시적인 미디어 소스(400)의 설명과 같은 이상의 설명을 바탕으로, 이 명령어들(674, 676, 678)에 대한 다양한 다른 기능들이 명백할 것이다. 미디어 디바이스(600)가, 그에 부가하여 또는 다른 대안으로서, 미디어 노드로서 기능할 수 있는 경우, 저장소는 미디어 소스 또는 기타 제어기에 의해 발행된 명령들을 처리하기 위한 명령 모듈 명령어들(680), 미디어를 다른 미디어 노드들로 포워딩하기 위한 브로드캐스터 명령어들(682), 및 미디어를 다른 디바이스들과 동기하여 렌더링하기 위한 렌더러 명령어들(684)을 저장할 수 있다. 예시적인 미디어 노드(500)의 설명과 같은 이상의 설명을 바탕으로, 이 명령어들(680, 682, 684)에 대한 다양한 다른 기능들이 명백할 것이다.Depending on the role or capability of the media device 600, the repository 650 may store various additional instructions. For example, if the media device 600 can function as a media source, the storage 650 may include media source application commands 674 for acquiring or reproducing media on the device 600, Media library commands 676, or virtual network media application commands 678 for enabling a user to transmit commands to the virtual media network. Based on the above description, such as the description of exemplary media source 400, various other functions for these commands 674, 676, 678 will be apparent. When the media device 600 is additionally or alternatively capable of functioning as a media node, the storage may include command module instructions 680 for processing commands issued by a media source or other controller, Broadcaster commands 682 for forwarding to other media nodes, and renderer commands 684 for rendering media in sync with other devices. Based on the above description, such as the description of exemplary media node 500, various other functions for these commands 680, 682, 684 will be apparent.

미디어 디바이스(600)에 들어 있는 구성요소들은 본 명세서에 기술된 방법들 및 시스템들에서 사용하기에 적당한 컴퓨터 시스템들에서 전형적으로 발견되는 것들이고, 이러한 컴퓨터 구성요소들의 광의의 카테고리를 나타내기 위한 것이다. 이와 같이, 미디어 디바이스(600)는 셀룰러폰, 스마트폰, PDA, 태블릿 컴퓨터, 개인용 컴퓨터, 모바일 컴퓨팅 디바이스, 워크스테이션, 서버, 마이크로컴퓨터, 메인프레임 컴퓨터, 또는 임의의 다른 컴퓨팅 디바이스일 수 있다. 컴퓨터는 또한 상이한 버스 구성들, 네트워크로 연결된 플랫폼들, 멀티-프로세서 플랫폼들 등을 포함할 수 있다. 유닉스(Unix), 리눅스(Linux), 윈도즈(Windows), 매킨토시 OS(Macintosh OS), 팜 OS(Palm OS), 안드로이드 OS(Android OS), iOS 및 기타 적당한 운영 체제들을 비롯한 다양한 운영 체제들(660)이 사용될 수 있다.The components contained in the media device 600 are those typically found in computer systems suitable for use in the methods and systems described herein and are intended to represent a broad category of such computer components . As such, the media device 600 may be a cellular phone, a smartphone, a PDA, a tablet computer, a personal computer, a mobile computing device, a workstation, a server, a microcomputer, a mainframe computer, or any other computing device. The computer may also include different bus configurations, networked platforms, multi-processor platforms, and the like. Various operating systems 660, including Unix, Linux, Windows, Macintosh OS, Palm OS, Android OS, iOS, and other suitable operating systems ) Can be used.

도 7은 미디어 신호를 브로드캐스트하는 한 예시적인 방법(700)을 나타낸 것이다. 방법(700)은 방법(200)의 단계(210)에 대응할 수 있다. 단계(710)에서, 게이트웨이 미디어 노드(104) 및 다른 미디어 노드들(102, 104, 106)은 타이밍 파라미터들을 설정할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 가상 벽시계에 동기화된다. 의도된 렌더링 시간으로 미디어 스트림을 타임스탬핑(timestamp)하기 위해 가상 벽시계가 브로드캐스터에 의해 사용될 수 있다. 주어진 시간에 미디어 샘플들을 정확히 렌더링하기 위해 가상 벽시계가 렌더러들에 의해 사용될 수 있다. 가상 벽시계는 미디어 노드들(104, 106)이 렌더링 시간에 대한 공통된 이해를 갖도록 보장하는 데 도움을 줄 수 있다. 일부 실시예들에서, 각각의 렌더링 디바이스는 미디어 스트림에 지정된 시간에 샘플들을 렌더링한다. 샘플링 주파수, 워드 크기(word size), 채널들의 수, 인코딩 포맷 등을 비롯한 스트림의 렌더링을 위한 기타 정보가 또한 스트림 포맷에 포함될 수 있다.Figure 7 illustrates an exemplary method 700 for broadcasting a media signal. Method 700 may correspond to step 210 of method 200. In step 710, the gateway media node 104 and other media nodes 102, 104, 106 may set timing parameters. In some embodiments, the media nodes 104, 106 are synchronized to a virtual wall clock. A virtual wall clock can be used by the broadcaster to timestamp the media stream with the intended rendering time. A virtual wall clock can be used by the renderers to accurately render media samples at a given time. The virtual wall clock can help ensure that the media nodes 104, 106 have a common understanding of the rendering time. In some embodiments, each rendering device renders samples at a time specified in the media stream. Other information for rendering the stream, including sampling frequency, word size, number of channels, encoding format, etc., may also be included in the stream format.

단계(710)에서, 가상 벽시계 또는 어떤 다른 공통된 타이밍 기준이 설정될 수 있다. 예를 들어, 게이트웨이 미디어 노드(104)는 각각의 비콘 메시지가 전송된 때를 나타내는 타임스탬프들을 포함하는 비콘 메시지들의 "플러딩(flood)"을 개시할 수 있다. 이어서, 수신측 미디어 노드(104, 106)는 송신기의 타임스탬프와 각각의 비콘 메시지가 전송된 때 사이의 차이를 결정함으로써 오프셋 값을 계산할 수 있다. 이 계산된 오프셋은 다음과 같은 3개의 독립적인 값들의 합을 반영할 수 있다: 송신측 디바이스와 수신측 디바이스의 클록들 사이의 실제 오프셋; 네트워크 전파 시간, 송신측 디바이스가 타임스탬프를 삽입하는 것과 비콘 메시지를 실제로 전송하는 것 사이의 소요 시간, 및 수신측 디바이스가 비콘 메시지를 수신하는 것과 수신 시간을 결정하는 것 사이의 소요 시간과 같은 시간들과 연관된 고정된 지연; 및 네트워크 변동들과 연관된 그리고 다양한 무선 네트워크 연결들에 공통인 가변 지연. 고정된 지연이 실질적으로 일정하기 때문에, 수신측 디바이스는 최소의 계산된 오프셋이, 그 계산된 오프셋들 중에서, 가장 작은 가변 네트워크 지연을 포함하는 오프셋이고 따라서 "실제 클록 오프셋 + 고정된 네트워크 지연"의 이용가능한 가장 근접한 추정이라고 확신할 수 있다. 수신측 디바이스는 이어서, 최소 오프셋에 기초하여, 그 자신의 클록을 조절할 수 있거나, 차후의 송신측 디바이스 타임스탬프들을 로컬 클록과 비교하는 데 사용하기 위해 오프셋을 존속시킬 수 있다. 적절한 동기화를 보장하기 위해 렌더링 프로세스 동안 고정된 네트워크 지연이 고려될 수 있다. 미디어 소스(102)와 미디어 게이트웨이(104) 사이의 동기화를 확립시키기 위해 유사한 방법들이 사용될 수 있다.In step 710, a virtual wall clock or some other common timing reference may be set. For example, the gateway media node 104 may initiate a "flood" of beacon messages that include timestamps indicating when each beacon message was transmitted. The receiving media node 104, 106 may then calculate the offset value by determining the difference between the time stamp of the transmitter and the time each respective beacon message is transmitted. This calculated offset can reflect the sum of three independent values: the actual offset between the clocks of the transmitting and receiving devices; Time such as network propagation time, the time between the insertion of the time stamp by the transmitting device and the actual transmission of the beacon message, and the time between the receiving device determining the receiving time of the beacon message and the receiving time A fixed delay associated with < RTI ID = 0.0 > And a variable delay associated with network variations and common to various wireless network connections. Because the fixed delay is substantially constant, the receiving device knows that the smallest calculated offset is the offset, including the smallest variable network delay, among the calculated offsets, and thus the "actual clock offset + fixed network delay" It can be assured that it is the closest estimate available. The receiving device may then adjust its own clock based on the minimum offset or may sustain the offset for use in comparing subsequent transmitting device timestamps with the local clock. Fixed network delays can be considered during the rendering process to ensure proper synchronization. Similar methods may be used to establish synchronization between the media source 102 and the media gateway 104.

단계(720)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 미디어 소스(102)로부터 수신한다. 단계(730)에서, 게이트웨이 미디어 노드(104)가 미디어를 디코딩한다. 게이트웨이는 디코딩 이전에 미디어 신호를 역다중화(de-multiplex)할 수 있다.At step 720, the gateway media node 104 receives a media signal from the media source 102. [ At step 730, the gateway media node 104 decodes the media. The gateway may de-multiplex the media signal prior to decoding.

단계(740)에서, 게이트웨이 미디어 노드(104)는 다른 미디어 노드들(104, 106)로 브로드캐스트하기 위해 미디어를 재인코딩한다. 유의할 점은, 게이트웨이가 사용되는 미디어 소스(102)와 상이한 인코딩을 사용할 수 있다는 것이다. 예를 들어, 미디어 신호가 블루투스와 호환되는 포맷으로 미디어 소스(102)에서 인코딩되었을 수 있다. 미디어 신호가 WiFi와 호환되는 포맷으로 재인코딩될 수 있다.At step 740, the gateway media node 104 re-encodes the media to broadcast to the other media nodes 104,106. It should be noted that the gateway may use an encoding different from the media source 102 in which it is used. For example, the media signal may have been encoded in media source 102 in a format compatible with Bluetooth. The media signal can be re-encoded in a format compatible with WiFi.

단계(750)에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 캡슐화한다. 다양한 실시예들에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 압축한다. 오디오 미디어 신호를 압축하는 한 예로서, 고품질 네트워크들에서는, 최소 처리 오버헤드로 대역폭을 절반으로 삭감하기 위해 FLAC(Free Audio Lossless Codec)과 같은 경량 무손실 압축(light lossless compression) 기법이 사용될 수 있다. 저품질 네트워크들에서는, 사운드 품질 및 처리 오버헤드를 대가로 네트워크 대역폭을 최소화하기 위해 OGG 또는 AAC(Advance Audio Coding)과 같은 상위 압축 표준이 사용될 수 있다. 압축 알고리즘 자체 이외에, 신호가 보다 낮은 샘플링 레이트로 재샘플링되거나, 모노 스트림(mono stream)으로 다운믹싱(down-mix)되거나, 보다 낮은 샘플 해상도(sample resolution)로 다운샘플링(down-sample)될 수 있다. 미디어 스트림을 압축된 형태로 인코딩(encoding) 또는 트랜스코딩(transcoding)하는 것은 처리 오버헤드를 대가로 보다 적은 네트워크 대역폭을 사용함으로써 방송 시간 신뢰성(airtime reliability)을 개선시킬 수 있다. 지원되는 코덱들은 다양한 비트 레이트들, 샘플링 주파수들, 채널들, 및 샘플 크기들의 무손실 및 손실 압축 기법들을 포함할 수 있다.At step 750, the gateway media node 104 encapsulates the media signal. In various embodiments, the gateway media node 104 compresses the media signal. As an example of compressing audio media signals, in high quality networks, light lossless compression techniques such as Free Audio Lossless Codec (FLAC) may be used to reduce the bandwidth in half with minimal processing overhead. In low quality networks, higher compression standards such as OGG or AAC (Advance Audio Coding) may be used to minimize network bandwidth in exchange for sound quality and processing overhead. In addition to the compression algorithm itself, the signal may be resampled at a lower sampling rate, down-mixed into a mono stream, or down-sampled at a lower sample resolution. have. Encoding or transcoding media streams in compressed form can improve airtime reliability by using less network bandwidth in exchange for processing overhead. The supported codecs may include lossless and lossy compression techniques of various bit rates, sampling frequencies, channels, and sample sizes.

일부 실시예들에서, 모든 미디어 노드들(104, 106)이 지원되는 인코딩 포맷들을 인식하고 있다. 일부 실시예들에서, 모든 브로드캐스터들은 지원되는 포맷들로 인코딩할 수 있다. 일부 실시예들에서, 모든 렌더러들은 지원되는 포맷들을 디코딩할 수 있다. 각각의 스트림에 대해 사용되는 인코딩 포맷은 네트워크 품질로부터의 피드백, 이용가능한 처리 자원들, 지원되는 렌더링 구역(rendering zone)들의 수, 지원되는 활성 스트림들의 수, 및 최대 허용 지연 시간에 의해 미디어 노드들(104, 106) 간에 결정될 수 있다.In some embodiments, all of the media nodes 104, 106 are aware of the supported encoding formats. In some embodiments, all broadcasters may encode in supported formats. In some embodiments, all renderers may decode the supported formats. The encoding format used for each stream is determined by feedback from network quality, available processing resources, the number of rendering zones supported, the number of active streams supported, and the maximum allowed delay time, (104, 106).

선택적인 단계(760)에서, 중복 패킷(redundant packet)들이 부가된다. 미디어 신호가 압축되어 있는 경우, 부가의 패킷들이 부가될 수 있다. 일부 실시예들에서, 한 그룹의 패킷이 한 그룹의 중복 패킷과 인터리빙되어 있다. 예를 들어, 2:1 압축비의 경우, 2초 분량의 원본 미디어 신호가 1초 분량으로 압축될 수 있다. 하나의 예로서, 1초 분량의 데이터 패킷들이 1초 분량의 중복 패킷들과 인터리빙될 수 있다. 그룹 내의 패킷들의 수는 1 이상일 수 있다.At optional step 760, redundant packets are added. If the media signal is compressed, additional packets may be added. In some embodiments, a group of packets is interleaved with a group of redundant packets. For example, in the case of a 2: 1 compression ratio, a two second source media signal can be compressed in one second. As an example, one second of data packets may be interleaved with one second of redundant packets. The number of packets in the group may be one or more.

일부 실시예들에서, 브로드캐스팅은 2가지 옵션들을 가진다. 옵션 A에서, 예시된 바와 같이, 단계(770)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 옵션 B(도시 생략)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 무선 액세스 포인트로 송신할 수 있다. 무선 액세스 포인트가 미디어 신호를 다른 미디어 노드들로 브로드캐스트할 수 있다.In some embodiments, broadcasting has two options. In Option A, as illustrated, at step 770, the gateway media node 104 may broadcast the media signal to the other media nodes 104. In Option B (not shown), the gateway media node 104 may send a media signal to the wireless access point. The wireless access point may broadcast the media signal to other media nodes.

방송 미디어가 네트워크 대역폭의 최대 소비자일 수 있다. 전형적인 미압축된 오디오 스트림들은 1.5 mbps를 초과할 수 있다. 전송은 액세스 포인트(310)로의 상향에서 스트림당 1.5 mbps와 렌더러(306)로의 하향에서 스트림당 부가의 1.5 mbps, 총 3 mbps를 소비할 수 있다. 포인트-투-포인트 사이멀캐스팅(point-to-point simulcasting)의 경우, 전형적인 대역폭은 "3 mbps x 사이멀캐스팅된 스트림들의 수"일 수 있다. 이것은 네트워크를 포화시킬 가능성이 있다.Broadcast media can be the largest consumer of network bandwidth. Typical uncompressed audio streams may exceed 1.5 mbps. The transmission may consume 1.5 mbps per stream upstream to access point 310 and an additional 1.5 mbps per stream downstream to renderer 306, a total of 3 mbps. For point-to-point simulcasting, the typical bandwidth may be "3 mbps x number of streams < RTI ID = 0.0 > This is likely to saturate the network.

다양한 실시예들은 다수의 전송 프로토콜들을 지원한다. 일부 실시예들에서, UDP over IP가 사용된다. 유의할 점은, 일부 실시예들에서, 수신측 미디어 노드가 패킷들의 수신을 확인 응답할 필요가 없다는 것이다. 예를 들어, UDP over IP는 패킷들의 수신을 필요로 하지 않을 수 있다. 일부 실시예들에서, 수신측 미디어 노드는 게이트웨이에 수신되지 않은 데이터 패킷을 재송신하라고 요청할 수 있다. 유의할 점은, UDP over IP를 사용하는 일 실시예에서 이것이 일어날 수 있다는 것이다. 앞서 언급된 바와 같이, 일부 실시예들에서, 중복 데이터 패킷들이 송신된다.Various embodiments support multiple transport protocols. In some embodiments, UDP over IP is used. Note that, in some embodiments, the receiving media node does not need to acknowledge receipt of packets. For example, UDP over IP may not require reception of packets. In some embodiments, the receiving media node may request the gateway to retransmit data packets not received. Note that this can happen in one embodiment using UDP over IP. As noted above, in some embodiments, redundant data packets are transmitted.

네트워크 통계가 미디어 노드들(104, 106)에 의해 유지될 수 있다. 다양한 실시예들에서, 선출된 브로드캐스터 또는 게이트웨이는 서비스 품질, 지연 시간, 프로세서 이용률, 및 네트워크 이용률의 균형을 이루기 위해 최상의 전송 방법들을 결정하는 일을 맡고 있다. 예를 들어, 높은 이용가능한 대역폭 및 개개의 노드들(104, 106)에의 강력한 연결들에 의해, 네트워크가 양호한 품질을 가지는 경우, 보장형 전송 프로토콜(guaranteed transmission protocol)이 사용될 수 있다. 네트워크가 포화되거나 저품질을 가지는 경우, 멀티캐스팅 기법이 바람직할 수 있다. 부가의 방법들은 대역폭을 절감하는 데 그리고 전송 오류들을 검출, 정정 또는 은폐하는 데 도움을 줄 수 있다. 일반적으로, 스트림 구성 시에 결정된 가장 적합한 프로토콜에서 멀티캐스팅, 사이멀캐스팅 및 포인트-투-포인트 프로토콜들이 지원되고, 네트워크 품질, 이용가능한 처리 능력, 및 스트림들의 수가 결정 프로세스에서의 기여 인자들이다.Network statistics may be maintained by the media nodes 104, 106. In various embodiments, the elected broadcaster or gateway is in charge of determining the best transmission methods to balance service quality, latency, processor utilization, and network utilization. For example, a guaranteed transmission protocol may be used if the network has good quality, due to the high available bandwidth and strong connections to the individual nodes 104,106. If the network is saturated or poor quality, a multicasting technique may be desirable. Additional methods can help to reduce bandwidth and detect, correct, or conceal transmission errors. Generally, multicasting, simulcasting, and point-to-point protocols are supported in the most appropriate protocol determined at the time of stream configuration, and network quality, available processing power, and number of streams are contributing factors in the decision process.

미디어 클록이 벽시계를 참조하여 미디어 스트림을 통해 복구될 수 있고, 미디어 프레임들 또는 샘플 그룹들에 동기화될 수 있다. 미디어 클록은 하드웨어 프레임 클록들, 워드 클록들 및 비트 클록들의 형성을 주도할 수 있다. 미디어 스트림을 통한 동기화는 논리적 관점에서 볼 때 미디어 노드들(104, 106)에서 정확한 클록들이 발생될 수 있도록 보장해줄 수 있다. 수정(crystal)과 같은 하드웨어에서의 약간의 변동들은 클록 드리프트(clock drift) 및 클록 타이밍에서의 기타 변동들을 야기할 수 있다. 미디어 클록 및 벽시계의 상시 측정 및 비교는 시스템이 드리프트를 검출할 수 있게 한다. 일부 실시예들에서, 소프트웨어-전용 미디어 클록 복구 메커니즘은 디바이스들에 걸쳐 미디어 클록들을 재동기시키기 위해 미디어 샘플들을 미디어 렌더링 버퍼들에 부가하거나 그로부터 제거하는 것을 수반한다. 일부 실시예들에서, 명백한 클릭(clicking) 또는 건너뜀(skipping)의 효과들을 야기하지 않는 방식으로 렌더링 버퍼 조작이 행해진다. VCXO(voltage controlled oscillator, 전압 제어 발진기)들을 사용하는 하드웨어 메커니즘이 드리프트 측정들에 기초하여 프로세서로부터 제어될 수 있고, 하드웨어 발진기들을 보다 엄격한 동기화로 푸시(push) 또는 풀(pull)할 수 있다.The media clock can be recovered via the media stream with reference to the wall clock and synchronized to media frames or sample groups. The media clock can lead to the formation of hardware frame clocks, word clocks, and bit clocks. Synchronization through the media stream can ensure that accurate clocks are generated at media nodes 104 and 106 from a logical point of view. Some variations in hardware, such as crystal, can cause clock drift and other variations in clock timing. The constant measurement and comparison of media clocks and wall clocks allows the system to detect drift. In some embodiments, the software-only media clock recovery mechanism involves adding or removing media samples to media render buffers to resynchronize media clocks across the devices. In some embodiments, rendering buffer manipulation is done in a manner that does not result in obvious clicking or skipping effects. A hardware mechanism using voltage controlled oscillators (VCXOs) can be controlled from the processor based on drift measurements and can push or pull hardware oscillators with more stringent synchronization.

앞서 살펴본 바와 같이, 본 명세서에 기술된 다양한 시스템들은 공통의 타이밍 기준을 설정함으로써 다수의 디바이스들 사이에서 미디어 재생을 동기화시킬 수 있다. 예를 들어, 미디어 소스 및 미디어 게이트웨이가 이러한 공통의 타이밍 기준을 설정하기 위해 협력할 수 있거나, 미디어 게이트웨이 및 미디어 노드가 이러한 공통의 타이밍 기준을 설정하기 위해 협력할 수 있다. 타이밍 파라미터들을 설정하는 것과 관련하여, 본 방법이 2대의 미디어 디바이스들(송신측 미디어 디바이스 및 수신측 미디어 디바이스) 간에 분할될 수 있다. 다양한 실시예들에서, 공통의 타이밍 기준은 송신측 미디어 디바이스에서의 클록 값의 수신측 미디어 디바이스에서의 추정이다.As discussed above, the various systems described herein can synchronize media playback among multiple devices by setting a common timing reference. For example, media sources and media gateways can cooperate to set up these common timing criteria, or media gateways and media nodes can cooperate to set up this common timing criterion. With regard to setting the timing parameters, the method may be partitioned between two media devices (a transmitting-side media device and a receiving-side media device). In various embodiments, the common timing reference is an estimate on the receiving-side media device of the clock value at the transmitting-side media device.

도 8은 송신측 미디어 디바이스가 수신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법(800)을 나타낸 것이다. 예시적인 방법(800)은, 예를 들어, 예시적인 환경(100)의 미디어 소스(102) 또는 미디어 게이트웨이(104)와 같은 송신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(800)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.8 illustrates an exemplary method 800 as far as the transmitting media device synchronizes playback with the receiving media device. The exemplary method 800 may be performed by any media device that functions as a transmitting-side media device, such as, for example, the media source 102 of the exemplary environment 100 or the media gateway 104. The method 800 may be performed as part of step 710 of the exemplary method 700 or at any time when synchronization of timing parameters between media devices is appropriate.

방법(800)은 단계(805)에서 시작하고, 송신측 디바이스가 수신측 디바이스에서 타이밍 파라미터들을 설정하는 데 사용하기 위한 "비콘 메시지들"을 플러딩하기 시작해야만 하는 것으로 송신측 디바이스가 결정할 수 있는 단계(810)로 진행한다. 예를 들어, 송신측 디바이스는 수신측 디바이스의 전원이 켜진 것으로, 수신측 디바이스가 가상 미디어 네트워크에 부가된 것으로, 또는 송신측 디바이스가 미디어를 수신측 디바이스로 전송하기 시작해야 하는 것으로 결정할 수 있다. 단계(815)에서, 송신측 디바이스는 새로운 비콘 메시지를 발생시킨다. 비콘 메시지는 수신측 디바이스에 의해 인식될 임의의 유형의 패킷 또는 다른 데이터 메시지일 수 있다. 예를 들어, 비콘 메시지는 송신측 디바이스 및 수신측 디바이스 둘 다가 구현하는 독점 프로토콜에 따라 형성될 수 있다. 비콘 메시지가 수신측 디바이스로 가는 도중에 있는 라우터 또는 스위치와 같은 하나 이상의 중간 디바이스들을 통과할 수 있는 실시예들과 같은 다양한 실시예들에서, 송신측 디바이스는 비콘 메시지가 고우선순위 트래픽을 구성한다는 플래그 또는 기타 표시를 담고 있는 비콘 메시지를 구성한다. 네트워크 내에서 비콘 메시지에 우선순위를 부여하는 다양한 메커니즘들은 각종의 가능한 네트워킹 기술들에 의해 이용되는 개개의 우선순위 부여 방식들에 기초하여 달라질 것이다. 비콘 메시지들의 이러한 우선순위 부여는 혼합 토폴로지 네트워크들을 통한 라우팅 시간들을 최적화하고 그로써 가변적인 네트워크 지연 인자를 감소시키는 데 도움을 줄 수 있다.The method 800 begins at step 805 and includes steps that the sending device may determine that the sending device must begin to flood "beacon messages" for use in setting the timing parameters at the receiving device (810). For example, the transmitting device may determine that the receiving device is powered on, that the receiving device is attached to the virtual media network, or that the transmitting device should begin transmitting media to the receiving device. At step 815, the transmitting device generates a new beacon message. The beacon message may be any type of packet or other data message to be recognized by the receiving device. For example, a beacon message may be formed according to a proprietary protocol implemented by both the transmitting device and the receiving device. In various embodiments, such as embodiments in which the beacon message may pass through one or more intermediate devices, such as a router or switch on the way to the destination device, the sending device may send a flag indicating that the beacon message constitutes high- Configure a beacon message containing the other indication. The various mechanisms for prioritizing beacon messages within a network will vary based on the individual prioritization schemes used by various possible networking technologies. This prioritization of beacon messages can help to optimize routing times over mixed topology networks and thereby reduce variable network delay factors.

그 다음에, 단계(820)에서, 송신측 디바이스는 송신측 디바이스의 클록에 의해 현재 표현되는 시간으로 비콘 메시지를 타임스탬핑한다. 이러한 타임스탬프는 "송신기 타임스탬프"라고 할 수 있다. 그 다음에, 단계(825)에서, 송신측 디바이스는 비콘 메시지를 하나 이상의 수신측 디바이스들로 전송한다. 단계(820)와 단계(825) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(800)의 다양한 구현례들은 단계(820)와 단계(825) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다. 다양한 실시예들에서, 송신측 디바이스가 다수의 다른 미디어 디바이스들에 대한 타이밍 파라미터들을 설정하는 역할을 한다. 예를 들어, 미디어 게이트웨이(104)는 비콘 메시지들을 다수의 다른 미디어 노드들(104, 106)로 전송할 수 있다. 어떤 이러한 실시예들에서, 송신측 디바이스는, 단계(825)에서, 예를 들어, 비콘 메시지의 복사본들을 각각의 미디어 디바이스로 개별적으로 어드레싱함으로써 또는 메시지를 다수의 미디어 디바이스들로 멀티캐스팅함으로써 비콘 메시지를 다수의 미디어 디바이스들로 전송한다. 다른 대안으로서 또는 그에 부가하여, 송신측 디바이스는 다수의 다른 미디어 디바이스들을 수용하기 위해 방법(800)을 여러번 실행한다.Then, at step 820, the transmitting device timestamps the beacon message with the time currently represented by the clock of the transmitting device. Such a time stamp may be referred to as a "transmitter time stamp ". Then, at step 825, the transmitting device sends a beacon message to one or more receiving devices. The elapsed time between steps 820 and 825 forms part of the fixed delay component of the clock offset values to be calculated by the receiving device. Accordingly, various implementations of the method 800 attempt to reduce or minimize the number of operations occurring between steps 820 and 825. [ In various embodiments, the transmitting device is responsible for setting timing parameters for a number of different media devices. For example, the media gateway 104 may send beacon messages to a number of other media nodes 104, 106. In some such embodiments, the sending device may send a beacon message, e. G., By individually addressing each copy of the beacon message to each media device, or by multicasting the message to a plurality of media devices, To a plurality of media devices. Alternatively or additionally, the sending device executes the method 800 multiple times to accommodate a number of different media devices.

단계(830)에서, 송신측 디바이스는 송신측 디바이스가 비콘 메시지들을 수신측 디바이스로 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 송신측 디바이스는, 사전 결정된 수의 비콘 메시지들이 전송될 때까지, 비콘 메시지들을 계속하여 플러딩할 수 있다. 다양한 실시예들에서, 송신측 디바이스는, 다른 대안으로서 또는 그에 부가하여, 단계(830)의 조건을 수신측 디바이스로부터의 피드백에 기초한다. 예를 들어, 수신측 디바이스는 충분한 동기화가 달성될 때의 메시지 또는 사전 결정된 수의 비콘 메시지들의 전송에도 불구하고 충분한 동기화가 달성되지 않았다는 것을 나타내는 메시지를 송신할 수 있다. 플러딩이 중단되어야만 하는지를 결정하는 또 다른 방법으로서, 송신측 디바이스는 플러딩 기간 동안 네트워크 성능을 모니터링하고, 네트워크 성능이 어떤 최소 허용 임계치를 충족시킬 때까지 플러딩을 계속한다. 예를 들어, 송신측 디바이스는, 비콘 메시지들에 부가하여, 왕복 진단 메시지(roundtrip diagnostic message)들을 수신측 디바이스로 전송할 수 있다. 다른 대안으로서, 수신측 디바이스는 그에 부가하여 네트워크 진단을 위해 비콘 메시지들을 다시 송신측 디바이스로 전송하도록 구성될 수 있다. 수신측 디바이스로부터 다시 메시지를 수신할 때, 송신측 디바이스는 네트워크 성능 척도의 하나 이상의 척도들을 발생시킨다. 예를 들어, 송신측 디바이스는 이전의 플러딩 창(flooding window)에 걸친 네트워크 지연 또는 지터의 척도들을 발생시킬 수 있고, 척도들이 어떤 최소 허용 네트워크 성능보다 더 낮은 경우, 사전 결정된 수의 비콘 메시지들이 전송되었더라도, 비콘 메시지들을 계속하여 플러딩할 수 있다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.At step 830, the sending device determines whether the sending device has completed flooding the beacon messages to the receiving device. For example, the sending device may continue to flood the beacon messages until a predetermined number of beacon messages have been transmitted. In various embodiments, the transmitting device is based on feedback from the receiving device as a further alternative, or in addition, to the conditions of step 830. [ For example, the receiving device may send a message indicating that sufficient synchronization has not been achieved despite the transmission of the message when a sufficient synchronization has been achieved or a predetermined number of beacon messages. As another method of determining if flooding should be interrupted, the sending device monitors network performance during the flooding period and continues flooding until the network performance meets a certain minimum allowed threshold. For example, in addition to beacon messages, the transmitting device may send roundtrip diagnostic messages to the receiving device. As another alternative, the receiving device may be further configured to send beacon messages back to the transmitting device for network diagnosis. Upon receiving the message again from the receiving device, the sending device generates one or more measures of the network performance metric. For example, the sending device may generate scales of network delay or jitter over the previous flooding window, and if the scales are lower than some minimum allowed network capability, a predetermined number of beacon messages are sent , Beacon messages can continue to flood. Based on the teachings herein, it will be clear that various combinations of these and other methods for determining the sufficiency of beacon message flooding may be utilized.

송신측 디바이스가, 단계(830)에서, 비콘 메시지 플러딩이 계속되어야 하는 것으로 결정하는 경우, 방법(800)은 부가의 비콘 메시지들을 전송하기 위해 단계(815)로 루프백한다. 플러딩 창이 사전 결정된 수의 비콘 메시지들의 전송을 포함하는 다양한 실시예들에서, 송신측 디바이스는, 네트워크 성능 또는 기타 인자들에 기초하여, 이전의 창이 불충분했던 것으로 결정하고, 단계(815)로 루프백하기 전에 비콘 메시지 카운터를 리셋시킬 수 있으며, 그로써 새로운 창에서 다른 비콘 메시지 세트의 전송을 개시한다. 다른 한편으로, 송신측 디바이스가, 단계(830)에서, 플러딩이 종료되어야 하는 것으로 결정하는 경우, 방법(800)은 단계(835)에서 종료한다. 그 후에, 송신측 디바이스는 새로 동기화된 수신측 디바이스로 미디어를 전송하기 시작한다.If the sending device determines in step 830 that beacon message flooding should continue, the method 800 loops back to step 815 to send additional beacon messages. In various embodiments, where the flooding window includes transmission of a predetermined number of beacon messages, the transmitting device determines that the previous window is insufficient based on network capabilities or other factors, and then proceeds to loop back to step 815 It is possible to reset the beacon message counter beforehand, thereby initiating transmission of another beacon message set in the new window. On the other hand, if the sending device determines in step 830 that the flooding should be terminated, the method 800 terminates in step 835. After that, the transmitting-side device starts to transmit the media to the newly synchronized receiving-side device.

유의할 점은, 다양한 실시예들에서, 송신측 디바이스가 비콘 메시지들에 기초하여 수신측 디바이스로부터 어떤 반환 메시지들도 수신할 수 없거나, 송신측 디바이스가 반환 메시지들을 수신하는 실시예들에서, 송신측 디바이스가 타이밍 파라미터들을 설정하기 위해 어떤 반환 메시지들도 이용하지 않는다는 것이다. 일부 실시예들에서, 반환 메시지들은 플러딩 기간의 충분성을 판단하는 데만 사용된다. 그에 따라, 그리고 다른 클록 동기화 방법들과 달리, 본 명세서에 기술된 방법들은 동기화 계산들의 대부분이 송신측 디바이스보다는 수신측 디바이스에 의해 수행되는 "단방향" 동기화 방법이라고 할 수 있다.It should be noted that, in various embodiments, in embodiments in which the transmitting device can not receive any return messages from the receiving device based on beacon messages, or the receiving device receives return messages, The device does not use any return messages to set the timing parameters. In some embodiments, return messages are used only to determine sufficiency of the flooding period. Hence, and unlike other clock synchronization methods, the methods described herein can be said to be a "one-way" synchronization method in which the majority of the synchronization calculations are performed by the receiving device rather than the transmitting device.

도 9는 수신측 미디어 디바이스가 송신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법(900)을 나타낸 것이다. 예시적인 방법(900)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(900)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.Figure 9 illustrates an exemplary method 900 as long as the receiving media device synchronizes playback with the receiving media device. The exemplary method 900 may be performed by any media device that functions as a receiving media device, such as, for example, the media gateway 104 of the exemplary environment 100 or other media nodes 104 and 106 . The method 900 may be performed as part of step 710 of the exemplary method 700 or at any time when synchronization of timing parameters between media devices is appropriate.

방법(900)은 단계(905)에서 시작하고, 수신측 디바이스가 새로운 메시지들이 수신되거나 처리될 때 현재의 최소 오프셋 값(running minimum offset value)을 유지하는 데 사용하기 위한 최소 오프셋 변수 "MinO"를 초기화하는 단계(910)로 진행한다. 그 다음에, 단계(915)에서, 수신측 디바이스는 송신측 디바이스로부터 비콘 메시지를 수신한다. 이어서, 단계(920)에서, 수신측 디바이스는 수신측 디바이스의 클록에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 이러한 타임스탬프는 "수신기 타임스탬프" "R(x)"라고 할 수 있다. 단계(915)와 단계(920) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(900)의 다양한 구현례들은 단계(920)와 단계(925) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다.The method 900 begins at step 905 and sets the minimum offset variable "MinO" for use by the receiving device to maintain a current running minimum offset value when new messages are received or processed The flow advances to step 910 to initialize. Then, at step 915, the receiving device receives a beacon message from the transmitting device. Then, at step 920, the receiving device generates a timestamp based on the time currently represented by the clock of the receiving device. This timestamp can be called "receiver timestamp" " R (x) ". The elapsed time between steps 915 and 920 forms part of the fixed delay component of the clock offset values to be calculated by the receiving device. Accordingly, various implementations of the method 900 attempt to reduce or minimize the number of operations that take place between steps 920 and 925.

단계(925)에서, 수신측 디바이스는 비콘 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 앞서 논의한 바와 같이, 송신기 타임스탬프는, 예시적인 방법(800)의 단계(820)에서와 같이, 전송 직전에 송신기 디바이스에 의해 비콘 메시지에 삽입된다. 단계(930)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정한다. 이러한 경우에, 방법(900)은 단계(935)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(930, 935)이 존재하지 않는다.At step 925, the receiving device extracts the transmitter timestamp "S (x)" from the beacon message. As discussed above, the transmitter timestamp is inserted into the beacon message by the transmitter device just prior to transmission, as in step 820 of the exemplary method 800. At step 930, the receiving device determines if the sending device is a media source of the virtual media network. For example, when the receiving-side device is operating as a gateway to the virtual media network, the receiving-side device determines that the transmitting-side device is the media source. In such a case, the method 900 proceeds to step 935. The receiving device then converts the transmitter timestamp from the time domain of the transmitting device to the time domain of the virtual media network. This conversion may involve adding or subtracting previously negotiated offsets between the two devices. Such negotiation and conversion between time zones may be performed according to any method known to those of ordinary skill in the art. In some alternative embodiments, the source device and the media nodes maintain clocks in the same time domain. In some such embodiments, steps 930 and 935 do not exist.

단계(935)에서 송신기 타임스탬프를 가상 미디어 네트워크 영역으로 변환한 후에, 또는 단계(930)에서 송신기가 미디어 소스가 아닌 것으로 결정한 후에, 방법(900)은 수신측 디바이스가, 예를 들어, 2개의 타임스탬프들 간의 차이와 같은 송신기 타임스탬프 및 수신기 타임스탬프에 기초한 오프셋 값을 계산하는 단계(940)로 진행한다. 이 현재 오프셋 값 "CurO"는 "송신기 클록과 수신기 클록 사이의 실제 오프셋 + 2개의 타임스탬프들 S(x) 및 R(x)의 생성 사이에서 비콘 메시지가 겪는 임의의 지연"과 동등하다. 앞서 살펴본 바와 같이, 이 지연은 2가지 성분들을 포함한다. 지연의 제1 성분은, 예를 들어, OS가 메시지를 전송/수신하는 것과 연관된 타임스탬프를 발생하는 것 사이의 소요 시간과 함께 메시지들이 이동하는 회로들 및 데이터 경로들과 연관된 일정한 지연과 같은, 네트워크의 하드웨어 및 소프트웨어 구성요소들을 통과하는 데 소요된 시간과 연관된 고정된 지연이다. 이러한 고정된 지연은 렌더링 프로세스의 일부로서 이미 고려되어 있을 수 있다. 지연의 제2 성분은 시간에 따라 변하는 지연과 연관된 가변 네트워크 지연이다. 예를 들어, WiFi와 같은 공유 매체 네트워크들은 전송 이전에 매체가 이용가능(clear)하게 되기를 기다릴 수 있고, 그에 따라, 상이한 때에 상이한 지연을 유입시킬 수 있다.After converting the transmitter timestamp into a virtual media network area in step 935 or after determining in step 930 that the transmitter is not a media source, the method 900 determines whether the receiving device has, for example, two The method proceeds to step 940 of calculating an offset value based on a transmitter timestamp and a receiver timestamp, such as the difference between timestamps. This current offset value "CurO" is equivalent to "any delay experienced by the beacon message between the actual offset between the transmitter clock and the receiver clock plus the generation of the two time stamps S (x) and R (x). As we have seen, this delay includes two components. The first component of the delay may be a time delay, for example, a certain delay associated with circuits and data paths through which the messages travel, along with the time between when the OS generates a timestamp associated with transmitting / It is a fixed delay associated with the time spent passing through the hardware and software components of the network. This fixed delay may already be considered as part of the rendering process. The second component of the delay is a variable network delay associated with a time varying delay. For example, shared media networks such as WiFi may wait for the media to become clear before transmission, and thus introduce different delays at different times.

가변 지연이 (지연을 제거하지 않고) 부가의 지연을 유입시키기만 하기 때문에, 최소로 지연된 메시지로부터 실제 클록 오프셋의 보다 나은 추정치가 획득된다. 그에 따라, 방법(900)은 실제 오프셋의 이용가능한 최상의 추정치로서 플러딩 동안 획득된 최소 오프셋 값을 탐색한다. 단계(945)에서, 수신측 디바이스는 현재 오프셋 CurO를 이전에 찾아낸 최소 오프셋과 비교하거나, 루프의 현재 반복이 단계(910)에서 초기화된 최소 오프셋 값에 대한 첫번째 반복인 경우, MinO와 비교한다. CurO가 MinO보다 작은 경우, CurO가 송신기 클록과 수신기 클록 사이의 실제 오프셋의 보다 가까운 추정치를 나타낸다는 것을 알게 된다. 단계(950)에서, 수신기 디바이스는 MinO의 값을 CurO의 값으로 덮어쓰기한다.A better estimate of the actual clock offset is obtained from the least delayed message since the variable delay only introduces additional delay (without eliminating the delay). Accordingly, the method 900 searches for the minimum offset value obtained during flooding as the best available estimate of the actual offset. At step 945, the receiving device compares the current offset, CurO, with the previously found minimum offset, or, if the current iteration of the loop is the first iteration to the minimum offset value initialized at step 910, with the MinO. If CurO is smaller than MinO, it is found that CurO represents a closer estimate of the actual offset between the transmitter clock and the receiver clock. At step 950, the receiver device overwrites the value of MinO with the value of CurO.

단계(955)에서, 수신기 디바이스는 송신기 디바이스가 비콘 메시지들을 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 수신기 디바이스는, 부가의 비콘 메시지를 기다릴 때, 타임아웃이 일어났는지를 결정할 수 있거나, 송신기 디바이스가 미디어 메시지들을 송신하기 시작한 것으로 결정할 수 있거나, 사전 결정된 수의 비콘 메시지가 수신된 것으로 결정할 수 있거나, 송신측 디바이스가 플러딩의 종료를 나타내는 특수 메시지를 전송한 것으로 결정할 수 있다. 다양한 실시예들에서, 수신기 디바이스는 플러딩이 오프셋의 원하는 정확도를 확립하는 데 충분했는지를 결정한다. 예를 들어, 수신기 디바이스는 비콘 메시지들이 수신되는 구간들을 추적할 수 있고, 측정된 구간들과 기지의 시간 구간의 비교에 기초하여, 네트워크가 원하는 정확도의 오프셋 값을 생성하기에 충분히 안정적이었는지 여부를 결정할 수 있다. 네트워크가 충분히 안정적이지 않은 경우, 수신측 디바이스는 부가의 플러딩이 수행되어야만 한다는 것을 나타내는 메시지를 송신측 디바이스로 전송한다. 다양한 수정들이 명백할 것이다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.At step 955, the receiver device determines whether the transmitter device has completed flooding the beacon messages. For example, when waiting for an additional beacon message, the receiver device may determine whether a timeout has occurred, or that the transmitter device has determined to start transmitting media messages, or that a predetermined number of beacon messages have been received , Or may determine that the sending device has sent a special message indicating the end of flooding. In various embodiments, the receiver device determines if flooding was sufficient to establish the desired accuracy of the offset. For example, the receiver device may track intervals over which beacon messages are received and determine whether the network is sufficiently stable to generate an offset value of the desired accuracy, based on a comparison of the measured intervals with a known time interval You can decide. If the network is not sufficiently stable, the receiving device sends a message to the transmitting device indicating that additional flooding should be performed. Various modifications will be apparent. Based on the teachings herein, it will be clear that various combinations of these and other methods for determining the sufficiency of beacon message flooding may be utilized.

수신측 디바이스가 부가의 플러딩이 수행되고 있거나 수행될 것이라고 결정하는 경우, 방법(900)은 부가의 비콘 메시지들을 처리하기 위해 단계(955)로부터 단계(915)로 루프백한다. 그렇지 않은 경우, 방법(900)은 수신측 디바이스가 결정된 최소 오프셋에 기초하여 로컬 클록을 리셋시키는 단계(960)로 진행한다. 예를 들어, 수신측 디바이스는, 로컬 클록을 송신측 디바이스의 실제 클록 값에 보다 가까운 것으로 추정된 새로운 값으로 설정하기 위해, 현재의 클록 값으로부터 MinO를 차감할 수 있다. 네트워크의 고정된 지연이 알려지거나 추정되는 일부 실시예들에서, 수신측 디바이스는, 계산된 오프셋 값의 실제 클록 오프셋 값을 분리시키려고 시도하기 위해, 현재의 클록 값으로부터 MinO를 차감하고 고정된 지연 값에 다시 가산한다. 일부 실시예들에서, 수신측 디바이스는 로컬 클록을 전혀 변경하지 않고, 그 대신에, 송신기 디바이스로부터 수신된 타임스탬프들과 로컬 클록을 비교하는 데 사용하기 위해 최소 오프셋 값 MinO를 유지할 수 있다. 예를 들어, 수신측 디바이스는 임의의 이러한 비교 전에 MinO를 타임스탬프에 가산할 수 있다. 다양한 대안의 수정들이 명백할 것이다. 방법(900)은 이어서 단계(965)에서 종료한다.If the receiving device determines that additional flooding is being performed or is to be performed, the method 900 loops back to step 915 from step 955 to process additional beacon messages. Otherwise, the method 900 proceeds to step 960 where the receiving device resets the local clock based on the determined minimum offset. For example, the receiving device may subtract MinO from the current clock value to set the local clock to a new value estimated to be closer to the actual clock value of the transmitting device. In some embodiments in which a fixed delay of the network is known or estimated, the receiving device subtracts MinO from the current clock value and attempts to subtract the actual clock offset value of the calculated offset value from the fixed delay value Lt; / RTI > In some embodiments, the receiving device does not change the local clock at all, but instead can maintain the minimum offset value MinO for use in comparing the local clock with the time stamps received from the transmitter device. For example, the receiving device may add MinO to the timestamp before any such comparison. Various alternative modifications will be apparent. The method 900 then ends at step 965.

다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 예를 들어, 플러딩 기간이 높은 가변 네트워크 지연의 기간으로 둘러싸여 있는 경우, 계산된 오프셋은 송신기 클록과 수신기 클록 사이의 오프셋의 실제 값보다 훨씬 더 클 수 있다. 어떤 이러한 실시예들에서, 수신기는 먼저 단계들(940 내지 950)에서 계산된 최소 오프셋을 이전에 설정된 하한 오프셋과 비교하여, 최소 오프셋이 하한 오프셋 초과인지를 결정한다. 그러한 경우, 수신기는 최소 오프셋에 기초하여 클록을 업데이트하지 않고, 이전에 설정된 하한을 계속하여 사용한다. 그렇지 않은 경우, 수신기는 단계(960)에 상세히 기술된 바와 같이 클록을 업데이트하는데, 그 이유는 최소 오프셋 값이 하한보다 작고 따라서 하한보다 더 나은 추정치이기 때문이다. 하한을 결정하는 한 예시적인 방법이 도 11과 관련하여 이하에서 보다 상세히 기술될 것이다.In various alternative embodiments, the receiving device utilizes a previously set lower limit offset to help ensure that a tremendously large offset computed during the flooding period is not used to reset the clock. For example, if the flooding period is surrounded by a period of variable network delay, the calculated offset may be much larger than the actual value of the offset between the transmitter clock and the receiver clock. In some such embodiments, the receiver first compares the calculated minimum offset in steps 940-950 with a previously set lower offset, and determines whether the minimum offset is above the lower limit offset. In such a case, the receiver does not update the clock based on the minimum offset, but continues to use the previously set lower limit. Otherwise, the receiver updates the clock as described in detail in step 960 because the minimum offset value is less than the lower limit and is therefore a better estimate than the lower limit. An exemplary method for determining the lower limit will be described in more detail below with respect to FIG.

다양한 실시예들에서, 수신측 디바이스는 동기화를 재확립시키기 위해 방법(900)을 주기적으로 수행한다. 어떤 이러한 실시예들에서, 수신측 디바이스는 클록을 그의 원래의 값으로 리셋시키거나, 저장된 오프셋 값을 삭제하거나, 그렇지 않으면 방법(900)의 이전의 실행들에 기초하여 행해진 임의의 변경들을 "롤백(roll back)"시켜 클록 오프셋을 결정하는 일을 "다시 시작"한다. 클록 오프셋을 주기적으로 재설정하는 것에 의해, 수신측 디바이스는 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 클록 드리프트를 더 잘 참작할 수 있다.In various embodiments, the receiving device periodically performs the method 900 to reestablish synchronization. In some such embodiments, the receiving device may reset the clock to its original value, delete the stored offset value, or otherwise make any changes made based on previous executions of the method 900, roll back "to" restart " the task of determining the clock offset. By periodically resetting the clock offset, the receiving device may better consider the clock drift between the transmitting device clock and the receiving device clock.

본 명세서에서의 개시 내용을 바탕으로, 방법(900)이 각각의 비콘 메시지가 수신될 때 이를 처리하는 실시간 방법으로서 기술되어 있지만, 다양한 대안의 실시예들이 비콘 메시지들을 일괄적으로 처리하는 방법들을 이용한다는 것이 명백할 것이다. 예를 들어, 어떤 이러한 실시예들에서, 수신측 디바이스는 다수의 비콘 메시지들을 수신하고, 수신 시에 메시지들을 타임스탬핑하며, 단계들(925 내지 960)과 관련하여 기술된 것과 유사한 방식으로 최소 오프셋을 찾아내기 위해 수신된 메시지들을 순차적으로 나중에 처리한다.Based on the teachings herein, while the method 900 is described as a real-time method for processing each beacon message as it is received, various alternative embodiments utilize methods for collectively processing beacon messages . For example, in some such embodiments, the receiving device receives a plurality of beacon messages, timestamps the messages upon receipt, and provides a minimum offset < RTI ID = 0.0 > And subsequently processes the received messages sequentially.

이상의 방법들이 2대의 디바이스들 사이의 클록 오프셋의 최상의 추정치를 발생시키려고 시도하고 있지만, 네트워크 상태들이 이 초기 플러딩 기간 후에 일시적으로 개선될 수 있고 나중에 보다 나은 추정치가 획득될 수 있는 것이 가능하다는 것을 잘 알 것이다. 그에 따라, 초기 타이밍 파라미터 설정 후에 클록 오프셋들을 더 잘 추정하려고 시도하기 위해 여러 방법들이 이용될 수 있다. 이러한 방법들은 또한 클록 드리프트의 가능성을 해결할 수 있고, 여기서 수정, 온도, 또는 기타 파라미터들의 차이가 송신측 디바이스 클록 및 수신측 디바이스 클록으로 하여금 약간 상이한 속도로 동작하게 할 수 있다.While the above approaches are attempting to generate the best estimate of the clock offset between the two devices, it is well known that network conditions can be temporarily improved after this initial flooding period and a better estimate can be obtained later will be. Accordingly, several methods can be used to attempt to better estimate clock offsets after initial timing parameter settings. These methods can also address the possibility of clock drift where the modification, temperature, or other differences in parameters can cause the transmitting device clock and the receiving device clock to operate at slightly different rates.

도 10은 수신측 미디어 디바이스가 미디어 스트리밍 동안 보다 나은 재생 동기화를 달성하는 한 예시적인 방법(1000)을 나타낸 것이다. 예시적인 방법(1000)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(1000)은 예시적인 방법(700)의 단계(780)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.Figure 10 illustrates an exemplary method 1000 as long as the receiving media device achieves better playback synchronization during media streaming. The exemplary method 1000 may be performed by any media device that functions as a receiving media device, such as, for example, the media gateway 104 of the exemplary environment 100 or other media nodes 104, . Method 1000 may be performed as part of step 780 of exemplary method 700 or at any time when synchronization of timing parameters between media devices is appropriate.

방법(1000)은 단계(1005)에서 시작하고, 수신측 디바이스가 송신측 디바이스로부터 미디어 데이터 패킷을 수신하는 단계(1010)로 진행한다. 그 다음에, 단계(1015)에서, 수신측 디바이스는 수신측 디바이스의 클록 R(x)에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 단계(1020)에서, 수신측 디바이스는 미디어 데이터 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 송신기 타임스탬프는 전송 직전에 송신기 디바이스에 의해 미디어 데이터 메시지에 삽입되었을 수 있다. 단계(1025)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정할 수 있다. 이러한 경우에, 방법(1000)은 단계(1030)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법들에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(1020, 1030)이 존재한다.The method 1000 begins at step 1005 and proceeds to step 1010, where the receiving device receives a media data packet from the transmitting device. Then, at step 1015, the receiving device generates a timestamp based on the time currently represented by the clock R (x) of the receiving device. At step 1020, the receiving device extracts the transmitter timestamp "S (x)" from the media data message. The transmitter timestamp may have been inserted into the media data message by the transmitter device immediately prior to transmission. In step 1025, the receiving device determines whether the sending device is a media source of the virtual media network. For example, if the receiving device is operating as a gateway to the virtual media network, the receiving device may determine that the transmitting device is a media source. In this case, the method 1000 proceeds to step 1030. [ The receiving device then converts the transmitter timestamp from the time domain of the transmitting device to the time domain of the virtual media network. This conversion may involve adding or subtracting previously negotiated offsets between the two devices. Such negotiation and conversion between time zones may be performed according to any methods known to those of ordinary skill in the art. In some alternative embodiments, the source device and the media nodes maintain clocks in the same time domain. In some such embodiments, steps 1020 and 1030 exist.

단계(1030)에서 송신기 타임스탬프를 가상 미디어 네트워크 영역으로 변환한 후에, 또는 단계(1025)에서 송신기가 미디어 소스가 아닌 것으로 결정한 후에, 방법(1000)은 수신측 디바이스가, 예를 들어, 2개의 타임스탬프들 간의 차이와 같은 송신기 타임스탬프 및 수신기 타임스탬프에 기초한 오프셋 값을 계산하는 단계(1035)로 진행한다. 송신기 타임스탬프가 변환된 경우에, 변환된 타임스탬프가 오프셋을 계산하는 데 사용된다. 이 오프셋 값 "O"는 "송신기 클록과 수신기 클록 사이의 실제 오프셋 + 고정된 지연 및 가변 지연 둘 다를 비롯한, 2개의 타임스탬프들 S(x) 및 R(x)의 생성 사이에서 미디어 데이터 메시지가 겪는 임의의 지연"과 동등하다. 단계(1040)에서, 수신측 디바이스는 오프셋 값이 이전에 이용된 것보다 클록들 사이의 오프셋의 더 나은 추정을 나타내는지를 결정한다. 예를 들어, 이전에 결정된 최소 오프셋이 수신측 디바이스의 클록을 리셋시키는 데 사용되는 다양한 실시예들에서, 수신측 디바이스는 현재 오프셋 O가 영(0)보다 작은지를 결정한다. 이 비교에 대한 플러스 결과는 이전에 사용된 최소 오프셋이 얼마간의 가변 네트워크 지연을 포함했을 수 있다는 것과 로컬 클록으로부터의 그의 차감이 이상적인 설정점을 "오버슈트(overshoot)"했다는 것을 나타내고, 그로써 로컬 클록을 송신기의 클록보다 늦어지게 설정한다. 현재 오프셋 O는, 이전에 사용된 최소보다 더 작은(또는 0) 가변 지연을 포함시키는 것에 의해, 이 오버슈트를 음수인 것으로 나타낼 수 있다. 이러한 경우에, 현재 오프셋 O가 실제 클록 오프셋의 새로운 최상의 추정치를 나타내는 것으로 판단될 것이고, 단계(1045)에서, 로컬 클록을 다시 리셋시키는 데 사용될 수 있으며, 그로써 이전의 오버슈트를 적어도 부분으로 보정한다. 다른 실시예들에 대한 다양한 수정들이 명백할 것이다. 예를 들어, 이전에 결정된 최소 오프셋이 로컬 클록을 수정하는 데 사용되지 않고 그 대신에 타임스탬프 비교들에서 사용하기 위해 존속되는 실시예들에서, 단계(1040)는 현재 오프셋 O가 이전의 최소 오프셋 MinO보다 작은지를 결정하고, 그러한 경우, 수신측 디바이스는, 단계(1045)에서, MinO를 O와 같도록 설정한다. 다양한 다른 수정들이 명백할 것이다.After converting the transmitter timestamp into a virtual media network area in step 1030 or after determining in step 1025 that the transmitter is not a media source, the method 1000 may be repeated until the receiving device receives, for example, The method proceeds to step 1035 of calculating an offset value based on a transmitter timestamp and a receiver timestamp, such as a difference between timestamps. If the transmitter timestamp has been transformed, the transformed timestamp is used to compute the offset. This offset value " O "is the difference between the generation of two timestamps S (x) and R (x), including both the actual offset between the transmitter clock and the receiver clock plus both fixed and variable delays. &Quot; any delay experienced ". At step 1040, the receiving device determines if the offset value represents a better estimate of the offset between clocks than previously used. For example, in various embodiments where the previously determined minimum offset is used to reset the clock of the receiving device, the receiving device determines if the current offset O is less than zero (0). A positive result for this comparison indicates that the previously used minimum offset may have included some variable network delay and that its subtraction from the local clock has "overshooted" the ideal set point, Is set to be slower than the clock of the transmitter. The current offset O may indicate this overshoot as being negative by including a smaller (or zero) variable delay than the previously used minimum. In this case, the current offset O will be determined to represent the new best estimate of the actual clock offset, and at step 1045, the local clock may be used to reset again, thereby at least partially correcting the previous overshoot . Various modifications to other embodiments will be apparent. For example, in embodiments in which the previously determined minimum offset is not used to modify the local clock and instead is retained for use in timestamp comparisons, step 1040 determines whether the current offset O is greater than the previous minimum offset < RTI ID = 0.0 > MinO, and in such a case, the receiving device sets MinO equal to O in step 1045. [ Various other modifications will be apparent.

다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 어떤 이러한 실시예에서, 수신기는 먼저 단계(1035)에서 계산된 오프셋을 이전에 설정된 하한 오프셋과 비교하여, 그 오프셋이 하한 오프셋보다 실제 오프셋의 더 나은 추정치를 나타내는지를 결정한다. 그러한 경우, 수신기는 최소 오프셋에 기초하여 클록을 업데이트하지 않고, 이전에 설정된 하한을 계속하여 사용한다. 그렇지 않은 경우, 수신기는 단계(1045)에 상세히 기술된 바와 같이 클록을 업데이트하는데, 그 이유는 오프셋 값이 하한보다 더 나은 추정치이기 때문이다. 하한을 결정하는 한 예시적인 방법이 도 11과 관련하여 이하에서 보다 상세히 기술될 것이다.In various alternative embodiments, the receiving device utilizes a previously set lower limit offset to help ensure that a tremendously large offset computed during the flooding period is not used to reset the clock. In some such embodiments, the receiver first compares the offset calculated in step 1035 with a previously set lower limit offset to determine if the offset represents a better estimate of the actual offset than the lower limit offset. In such a case, the receiver does not update the clock based on the minimum offset, but continues to use the previously set lower limit. Otherwise, the receiver updates the clock as described in detail in step 1045, since the offset value is a better estimate than the lower limit. An exemplary method for determining the lower limit will be described in more detail below with respect to FIG.

단계(1050)에서, 수신측 디바이스는, 예를 들어, 미디어 출력을 적절한 때에 렌더링하기 위해, 수신된 미디어 패킷을 계속하여 처리한다. 예를 들어, 수신측 디바이스는 송신기 타임스탬프 및 수신기 타임스탬프와 별개인 제공 시간을 미디어 데이터 패킷으로부터 추출할 수 있다. 이러한 제공 시간은 메시지가 담고 있는 미디어 데이터가 렌더링되어야만 하는 시간을 나타낸다. 제공 시간을 추출한 후에, 수신측 디바이스는 제공 시간과 일치하는 때에 미디어 데이터를 렌더링시킨다. 예를 들어, 수신측 디바이스는 로컬 재생 디바이스에 의한 재생을 위해 미디어 데이터를 버퍼링할 수 있거나, 재생을 위해 메시지를 다른 미디어 노드로 포워딩할 수 있다. 제공 시간과 "일치"하는 현재 시간이 현재 시간과 제공 타임스탬프 간의 동등성을 포함할 수 있지만 다른 형태의 일치도 포함할 수 있다는 것을 잘 알 것이다. 예를 들어, 다양한 실시예들에서, "현재 시간 - 존속된 최소 오프셋 값"이 제공 타임스탬프와 일치할 때 현재 시간이 일치한다. 그에 부가하여 또는 다른 대안으로서, 일치하는지에 대한 비교는 고정된 지연 값을 가산하거나, 차감하거나, 다른 방식으로 고려한다. 로컬 클록, 제공 타임스탬프, 및 다른 어쩌면 이용가능한 값들에 기초하여 재생을 위한 적절한 때를 결정하는 다양한 다른 방법들이 명백할 것이다. 게다가, 최소 오프셋 값에 기초하여 현재 시간이 제공 시간과 일치한다는 개념은 최소 오프셋 값에 의해 이전에 수정되었지만 최소 오프셋 값을 명확하게 고려하지 않은 로컬 클록을 이용한 비교들을 포함한다는 것을 잘 알 것이다. 다양한 실시예들은 데이터가 적절한 때에 출력되도록 하기 위해 출력 직전에 이러한 비교를 수행한다. 다른 실시예들은 미디어가 제공 시간에 재생될 가능성이 있는 위치에서 미디어 데이터를 재생 버퍼에 삽입하기 위해 이러한 비교를 사용한다. 이러한 삽입은, 재생의 타이밍을 조절하기 위해, 미디어 데이터의 삽입 이전에 "더미" 데이터의 삽입을 수반할 수 있다. 버퍼에서 데이터의 재생 타이밍을 제어하는 다양한 부가의 방법들이 명백할 것이다.At step 1050, the receiving device continues to process the received media packet, for example, to render the media output at an appropriate time. For example, the receiving device may extract from the media data packet a serving time that is separate from the transmitter timestamp and the receiver timestamp. This presentation time represents the time that the media data contained in the message must be rendered. After extracting the presentation time, the receiving device renders the media data when it coincides with the presentation time. For example, the receiving device may buffer the media data for playback by a local playback device, or may forward the message to another media node for playback. It will be appreciated that the current time to "match" the serving time may include an equality between the current time and the serving timestamp, but may also include other forms of matching. For example, in various embodiments, the current time coincides when the "current time-sustained minimum offset value" matches the provided timestamp. In addition, or as a further alternative, a comparison of whether to match adds, subtracts, or otherwise considers the fixed delay value. Various other ways of determining the appropriate time for playback based on the local clock, the provisioned timestamp, and possibly other possible values will be apparent. In addition, it will be appreciated that the concept that the current time coincides with the provision time based on the minimum offset value includes comparisons using a local clock that has previously been modified by the minimum offset value, but does not explicitly consider the minimum offset value. Various embodiments perform this comparison just before the output so that the data is output at the appropriate time. Other embodiments use this comparison to insert media data into the playback buffer at a location where the media is likely to be played back at presentation time. Such insertion may involve insertion of "dummy" data prior to insertion of the media data to adjust the timing of playback. Various additional methods of controlling the playback timing of data in the buffer will be apparent.

도 11은 하한 오프셋을 결정하는 한 예시적인 방법(1100)을 나타낸 것이다. 앞서 살펴본 바와 같이, 다양한 대안의 실시예들은 그에 부가하여, 보다 나은 클록 오프셋 추정치들을 결정하기 위해, 비콘 플러딩 및 미디어 패킷들의 분석 이전에 하한 오프셋을 설정한다. 예시적인 방법(1100)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(1100)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.FIG. 11 illustrates an exemplary method 1100 for determining a lower bound offset. As discussed above, various alternative embodiments additionally set a lower limit offset prior to analysis of beacon flooding and media packets to determine better clock offset estimates. The exemplary method 1100 may be performed by any media device that functions as a receiving media device, such as, for example, the media gateway 104 of the exemplary environment 100 or other media nodes 104 and 106 . The method 1100 may be performed as part of step 710 of the exemplary method 700 or at any time when synchronization of timing parameters between media devices is appropriate.

방법(1100)은 단계(1105)에서 시작하고, 수신측 디바이스가, 송신측 디바이스로부터 핸드쉐이크 메시지를 수신함으로써 하한을 계산하기 위해, 수신측 디바이스와 송신측 디바이스 사이의 왕복 이동으로부터 타임스탬프들을 수집하기 시작하는 단계(1110)로 진행할 수 있다. 다양한 실시예들에서, 핸드쉐이크 메시지는 비콘 메시지들 또는 미디어 데이터 패킷들이 송신되는 채널과 상이한 채널을 통해 전송된다. 예를 들어, 핸드쉐이크 메시지는 블루투스 채널을 통해 전송될 수 있는 반면, 비콘 메시지들 및 미디어 데이터 패킷 메시지들은 WiFi 채널을 통해 전송될 수 있다. 이용되는 핸드쉐이크 프로토콜의 일부로서, 송신기는 송신기가 핸드쉐이크 메시지를 전송한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t1을 핸드쉐이크 메시지에 포함시킨다. 이어서, 단계(1115)에서, 단계(1110)에서의 핸드쉐이크 메시지의 수신에 가까운 때에, 수신기는 수신기 클록에 따른 수신 타임스탬프 t2를 기록한다.The method 1100 begins at step 1105 and the receiving device collects timestamps from the reciprocal movement between the receiving device and the transmitting device to calculate the lower bound by receiving the handshake message from the transmitting device (1110). In various embodiments, the handshake message is transmitted over a different channel than the channel through which beacon messages or media data packets are transmitted. For example, handshake messages may be transmitted over a Bluetooth channel, while beacon messages and media data packet messages may be transmitted over a WiFi channel. As part of the handshake protocol used, the transmitter includes a time stamp t1 according to the transmitter clock in the handshake message, which indicates the time at which the transmitter transmitted the handshake message. Then, at step 1115, near the reception of the handshake message at step 1110, the receiver records the reception time stamp t2 according to the receiver clock.

그 다음에, 수신기 디바이스는, 단계(1120)에서, 수신기가 핸드쉐이크 메시지를 송신기로 재송신하는 시간을 나타내는, 수신기 클록에 따른 타임스탬프 t3를 발생시킴으로써, 핸드쉐이크 메시지를 다시 송신기 디바이스로 전송할 준비를 한다. 일부 실시예들에서, 수신기는 타임스탬프 t3를 송신기로부터 수신된 핸드쉐이크 메시지에 또는 새로 발생된 핸드쉐이크 메시지에 삽입시킬 수 있다. 이어서, 단계(1125)에서, 타임스탬프 t4의 발생에 가까운 때에, 수신기는 핸드쉐이크 메시지를 송신기로 전송한다. 그 다음에, 단계(1130)에서, 수신기는 핸드쉐이크 메시지를 다시 송신기로부터 수신할 수 있다. 송신기가 핸드쉐이크 메시지를 처리하는 것의 일부로서, 핸드쉐이크 메시지는 이제 송신기가 핸드쉐이크 메시지를 수신한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t4를 포함한다.The receiver device then prepares, in step 1120, to transmit the handshake message back to the transmitter device by generating a time stamp t3 according to the receiver clock, which indicates the time at which the receiver retransmits the handshake message to the transmitter do. In some embodiments, the receiver may insert the time stamp t3 into the handshake message received from the transmitter or into the newly generated handshake message. Then, at step 1125, near the occurrence of the time stamp t4, the receiver sends a handshake message to the transmitter. Then, at step 1130, the receiver may receive the handshake message back from the transmitter. As part of the transmitter processing the handshake message, the handshake message now includes a time stamp t4 according to the transmitter clock, indicating the time at which the transmitter received the handshake message.

이하에서 설명할 것인 바와 같이, 4개의 타임스탬프들 t1 내지 t4는 하한 오프셋을 계산하는 데 사용될 수 있다. 그렇지만, 어떤 실시예들에서, 수신기 디바이스는 먼저, 핸드쉐이크 프로세스 동안의 네트워크 지연이 정확한 또는 그렇지 않으면 허용가능한 하한을 제공하기에 충분히 낮은지를 결정하기 위해, 핸드쉐이크 메시지가 경험한 네트워크 통과 시간을 계산하는 데 타임스탬프들 t1 내지 t4를 사용한다. 그에 따라, 수신기 디바이스는, 단계(1135)에서, 하기의 식을 사용하여 통과 시간을 계산한다: 통과 시간 = ((t2-t1)+(t4-t3))/2. 그 다음에, 수신기는, 예를 들어, 통과 시간이 사전 결정된 임계치 미만인지를 결정함으로써, 계산된 통과 시간이 허용가능한지를 결정한다. 계산된 통과 시간이 허용가능하지 않은 경우, 수신기 디바이스는, 단계(1145)에서, 핸드쉐이크 프로세스를 재시도하라고 송신기에 지시하고, 프로세스를 재시도하기 위해 단계(1110)로 루프백한다. 다른 한편으로, 네트워크 통과 시간이 허용가능한 경우, 수신기는, 단계(1150)에서, 타임스탬프들을 사용하여 이하의 식을 사용해 하한 오프셋을 계산한다: 하한 오프셋 = ((t2-t1)-(t4-t3))/2. 본 방법은 이어서 단계(1155)에서 종료한다.As will be described below, the four time stamps tl through t4 can be used to calculate the lower limit offset. However, in some embodiments, the receiver device first calculates the network transit time experienced by the handshake message to determine if the network delay during the handshake process is low enough to provide an accurate or otherwise acceptable lower bound The time stamps t1 to t4 are used. Accordingly, the receiver device calculates the transit time using the following equation at step 1135: Transit time = ((t2-t1) + (t4-t3)) / 2. The receiver then determines, for example, whether the calculated transit time is acceptable by determining that the transit time is below a predetermined threshold. If the calculated transit time is not acceptable, the receiver device instructs the transmitter to retry the handshake process at step 1145 and loops back to step 1110 to retry the process. On the other hand, if the network transit time is acceptable, the receiver computes the lower limit offset using the time stamps in step 1150, using the following equation: Lower limit offset = ((t2-t1) - (t4- t3)) / 2. The method then ends at step 1155.

일부 실시예들에서, 수신기 디바이스에 의해 생성된 타임스탬프들이 송신기 디바이스에 의해 생성된 타임스탬프들보다 작도록 송신기 클록이 수신기 클록보다 늦어질 수 있다는 것이 명백할 것이다. 상기 하한 클록 오프셋 식이 계산된 값의 부호에 기초하여 클록 조절의 방향을 나타낼 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 수신기 디바이스는, 상대 조절 방향이 아니라 크기만이 비교되도록, 어느 오프셋이 보다 나은 추정인지를 결정하기 위해 다양한 계산된 오프셋들을 비교할 때 절대값들을 이용할 수 있다.In some embodiments, it will be apparent that the transmitter clock may be slower than the receiver clock so that the time stamps generated by the receiver device are smaller than the time stamps generated by the transmitter device. It will be appreciated that the lower clock offset equation may indicate the direction of clock adjustment based on the sign of the calculated value. In some embodiments, the receiver device may use absolute values when comparing various calculated offsets to determine which offset is a better estimate, so that only the magnitude, not the relative adjustment direction, is compared.

다양한 실시예들에서, 수신측 디바이스는 동기화를 재확립시키기 위해 방법(1100)을 주기적으로 수행한다. 어떤 이러한 실시예들에서, 수신측 디바이스는 클록을 그의 원래의 값으로 리셋시키거나, 저장된 하한 오프셋 값을 삭제하거나, 그렇지 않으면 방법(1100)의 이전의 실행들에 기초하여 행해진 임의의 변경들을 "롤백"시켜 클록 오프셋을 결정하는 일을 "다시 시작"한다. 하한 오프셋을 주기적으로 재설정하는 것에 의해, 수신측 디바이스는 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 클록 드리프트를 더 잘 참작할 수 있다.In various embodiments, the receiving device periodically performs the method 1100 to reestablish synchronization. In some such embodiments, the receiving device may reset the clock to its original value, delete the stored lower limit offset value, or otherwise make any changes made based on previous executions of the method 1100 to " Rollback "to" resume " the task of determining the clock offset. By periodically resetting the lower-limit offset, the receiving-side device may better consider the clock drift between the transmitting-side device clock and the receiving-side device clock.

이상의 내용을 바탕으로, 다양한 실시예들은 가변 지연들을 나타내는 네트워크들에 속하는 미디어 디바이스들 간의 미디어 재생의 동기화를 가능하게 한다. 예를 들어, 수신측 디바이스가 복수의 메시지들로부터 최소 클록 오프셋을 식별하는 단방향 동기화 방법을 구현하는 것에 의해, 클록 동기화에 대한 가변 지연의 효과들이 감소될 수 있다. 게다가, 미디어 스트림이 시작된 후에 보다 나은 동기화 파라미터들을 계속하여 탐색하는 것에 의해, 수신측 디바이스는 클록 드리프트를 참작하면서 동기화를 개선시킬 수 있다. 이상의 내용을 바탕으로, 다양한 부가의 장점들이 명백할 것이다.Based on the above, various embodiments enable synchronization of media playback between media devices belonging to networks that exhibit variable delays. For example, by implementing a unidirectional synchronization method in which a receiving device identifies a minimum clock offset from a plurality of messages, the effects of variable delay on clock synchronization can be reduced. In addition, by continually searching for better synchronization parameters after the media stream is started, the receiving device can improve synchronization while taking into account clock drift. Based on the above, various additional advantages will be apparent.

본 발명의 다양한 예시적인 실시예들이 하드웨어로 구현될 수 있다는 것이 이상의 설명으로부터 명백할 것이다. 게다가, 다양한 예시적인 실시예들이 본 명세서에 상세히 기술된 동작들을 수행하기 위해 적어도 하나의 프로세서에 의해 판독되어 실행될 수 있는, 기계 판독가능 저장 매체에 저장된 명령어들로서 구현될 수 있다. 기계 판독가능 저장 매체는 개인용 또는 랩톱 컴퓨터, 서버, 또는 기타 컴퓨팅 디바이스와 같은 기계에 의해 판독가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 이와 같이, 유형적(tangible) 및 비일시적(non-transitory) 기계 판독가능 저장 매체는 ROM(read-only memory), RAM(random-access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들, 및 유사한 저장 매체를 포함할 수 있다. 게다가, 본 명세서에서 사용되는 바와 같이, "프로세서"라는 용어가 본 명세서에 기술된 기능들을 수행할 수 있는 마이크로프로세서, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 임의의 다른 디바이스를 포함한다는 것을 잘 알 것이다.It will be clear from the foregoing description that the various illustrative embodiments of the invention may be implemented in hardware. In addition, various illustrative embodiments may be implemented as instructions stored on a machine-readable storage medium, which may be read and executed by at least one processor to perform the operations described in detail herein. The machine-readable storage medium may include any mechanism for storing information in a machine-readable form, such as a personal or laptop computer, a server, or other computing device. As such, tangible and non-transitory machine-readable storage media can be read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices , And similar storage media. Moreover, as used herein, the term "processor" is intended to encompass a microprocessor, a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC) Lt; RTI ID = 0.0 > device. ≪ / RTI >

통상의 기술자라면 본 명세서에서의 임의의 블록도들이 본 발명의 원리들을 구현하는 예시적인 회로의 개념적 관점들을 나타내고 있다는 것을 잘 알 것이다. 마찬가지로, 임의의 플로우차트들, 흐름도들, 상태 천이도들, 의사 코드, 기타가 기계 판독가능 매체에 실질적으로 표현되어 있을 수 있고 따라서 컴퓨터 또는 프로세서에 의해(이러한 컴퓨터 또는 프로세서가 명확히 도시되어 있든 그렇지 않든 간에) 실행될 수 있는 다양한 프로세스들을 나타낸다는 것을 잘 알 것이다.It will be appreciated by those of ordinary skill in the art that any of the block diagrams herein represent conceptual aspects of exemplary circuits that implement the principles of the present invention. Likewise, any flow charts, flowcharts, state transitions, pseudo code, etc., may be substantially represented on a machine-readable medium and may thus be accessed by a computer or processor (whether such computer or processor is explicitly shown or otherwise Whether or not the process is being executed).

다양한 예시적인 실시예들이 그의 특정의 예시적인 측면들을 특히 참조하여 상세히 기술되어 있지만, 본 발명이 다른 방식들로 실시될 수 있고 그의 상세들이 다양한 명백한 점들에서 수정될 수 있다는 것을 잘 알 것이다. 통상의 기술자에게는 즉각 명백한 바와 같이, 본 발명의 사상 및 범주 내에 있으면서 변형들 및 수정들이 실시될 수 있다. 그에 따라, 상기 개시 내용, 설명, 및 도면들은 단지 예시를 위한 것이며, 청구범위에 의해서만 한정되는 본 발명을 결코 제한하지 않는다.While the various illustrative embodiments have been described in detail with particular reference to certain specific exemplary aspects thereof, it will be appreciated that the invention may be practiced in other ways, and its details may be modified in various obvious respects. Variations and modifications may be practiced within the spirit and scope of the invention, as will be immediately apparent to one of ordinary skill in the art. Accordingly, the disclosure, description, and figures are for illustrative purposes only, and are in no way limiting the invention, which is limited only by the claims.

102a, 102b: 미디어 소스 104a: 거실 게이트웨이
104b: 침실 게이트웨이 106a: 사무실 렌더러
106b: 주방 렌더러 106c: 손님방 렌더러
108: 스테레오 수신기 110: 스피커들
310: 미디어 소스 320: 미디어 노드
322: 싱크 324: 브로드캐스터
326: 렌더러 330: 미디어 노드
332: 싱크 334: 브로드캐스터
336: 렌더러 340: 미디어 노드
346: 렌더러 350: 액세스 포인트
360: 미디어 410: 네트워크 인터페이스
420: 가상 네트워크 미디어 애플리케이션
430: 미디어 소스 애플리케이션 440: 운영 체제
445: 네트워크 미디어 드라이버 450: 미디어 라이브러리
510: 네트워크 인터페이스 520: 렌더러
530: 스피커들 540: 디스플레이
550: 브로드캐스터 560: 보조 출력
570: 명령 모듈 580: 동기화 모듈
610: 프로세서 620: 메모리
630: 사용자 인터페이스 640: 네트워크 인터페이스
650: 저장소 660: 시스템 버스
670: 운영 체제 672: 동기화 명령어들
674: 미디어 소스 애플리케이션 676: 미디어 라이브러리 명령어들
678: 가상 네트워크 미디어 애플리케이션 명령어들
680: 명령 모듈 명령어들 682: 브로드캐스터 명령어들
684: 렌더러 명령어들
102a, 102b: media source 104a: living room gateway
104b: bedroom gateway 106a: office renderer
106b: Kitchen Renderer 106c: Guest Renderer
108: stereo receiver 110: speakers
310: media source 320: media node
322: Sink 324: Broadcaster
326: Renderer 330: Media Node
332: Sink 334: Broadcaster
336: Renderer 340: Media Node
346: Renderer 350: Access Point
360: Media 410: Network Interface
420: Virtual network media application
430: media source application 440: operating system
445: Network Media Driver 450: Media Library
510: Network Interface 520: Renderer
530: Speakers 540: Display
550: Broadcaster 560: Auxiliary output
570: command module 580: synchronization module
610: Processor 620: Memory
630: User interface 640: Network interface
650: Storage 660: System bus
670: Operating System 672: Synchronization Instructions
674: Media source application 676: Media library commands
678: Virtual network media application commands
680: Command module instructions 682: Broadcaster instructions
684: Renderer commands

Claims (15)

송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법에 있어서,
상기 수신측 미디어 디바이스에서, 복수의 메시지들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 - 을 상기 송신측 미디어 디바이스로부터 수신하는 단계;
상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 단계;
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계;
재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및
상기 최소 클록 오프셋에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간에서 상기 제1 미디어 데이터를 렌더링시키는 단계를
포함하는, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
A method of synchronizing media playback between a transmitting-side media device and a receiving-side media device,
Receiving, at the receiving-side media device, from the transmitting-side media device a plurality of messages, the plurality of messages including a plurality of transmitter timestamps;
Generating a plurality of clock offset values based on the plurality of transmitter time stamps and the clock of the receiving media device;
Identifying a minimum clock offset value from the plurality of clock offset values;
Determining a first presentation time associated with the first media data for playback and the first media data; And
Rendering the first media data at a first time coinciding with the first presentation time based on the minimum clock offset
Wherein the media playback is synchronized between the transmitting and receiving media devices.
제1항에 있어서, 최소 클록 오프셋 값을 식별하는 단계는,
상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키는 단계;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정하는 단계;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키는 단계;
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하는 단계; 및
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 오프셋 클록 값과 같도록 설정하는 단계를
포함하는, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
2. The method of claim 1, wherein identifying a minimum clock offset value comprises:
Generating a first clock offset value of the plurality of clock offset values;
Setting the minimum clock offset value equal to the first offset clock value;
Generating a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value to be equal to the first offset clock value;
Determining that the second clock offset value is less than the minimum clock offset value; And
Setting the minimum clock offset value equal to the second offset clock value based on a determination that the second clock offset value is less than the minimum clock offset value
Wherein the media playback is synchronized between the transmitting and receiving media devices.
제1항에 있어서, 상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 오프셋 값을 차감함으로써 상기 클록의 값을 수정하는 단계를 더 포함하고,
상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값을 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
2. The method of claim 1, further comprising: modifying the value of the clock by subtracting the minimum offset value from the value of the clock of the receiving media device,
And wherein the first time coinciding with the first presentation time based on the minimum clock offset value comprises a value of the clock coinciding with the first presentation time. How to synchronize media playback.
제1항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 방법은,
상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도(measure)를 발생시키는 단계;
상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하는 단계;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하는 단계;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키는 단계;
상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하는 단계를
더 포함하고,
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계는 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하는 단계를 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
2. The method of claim 1, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages,
Generating a first measure of intervals at which the first plurality of messages arrive;
Determining that the first measure of intervals at which the first plurality of messages arrive indicates that the network is unstable;
Instructing the transmitting-side media device to transmit additional messages;
Generating a second measure of intervals at which the second plurality of messages arrive after instructing the transmitting media device to transmit additional messages;
Determining that the second measure of intervals at which the second plurality of messages arrive indicates that the network is stable
Further included,
Wherein identifying a minimum clock offset value among the plurality of clock offset values comprises using at least one clock offset value of the plurality of clock offset values associated with the second plurality of messages. A method for synchronizing media playback between a device and a receiving media device.
제1항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 방법은,
상기 송신측 미디어 디바이스가 상기 제1 복수의 메시지들을 전송하는 단계;
상기 송신측 미디어 디바이스가 상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키는 단계;
상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하는 단계;
상기 송신측 미디어 디바이스가, 상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하는 단계;
상기 송신측 미디어 디바이스가 상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키는 단계; 및
상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하는 단계를
더 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
2. The method of claim 1, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages,
The sending media device sending the first plurality of messages;
The sending media device generating a first network performance metric associated with the transmission of the first plurality of messages;
Determining that the first network performance metric indicates that the network is unstable;
The transmitting media device transmitting the second plurality of messages based on the determination that the first network performance metric indicates that the network is unstable;
Generating a second network performance metric associated with the transmission of the second plurality of messages by the sending media device; And
Determining that the second network performance metric indicates that the network is stable
Wherein the media device is further configured to synchronize media playback between the transmitting and receiving media devices.
송신측 미디어 디바이스와 미디어 재생을 동기화시키는 수신측 미디어 디바이스에 있어서,
재생을 위한 미디어 데이터를 저장하도록 구성된 메모리;
상기 송신측 미디어 디바이스와 통신하도록 구성된 네트워크 인터페이스; 및
프로세서를
포함하고,
상기 프로세서는,
상기 네트워크 인터페이스를 통해, 복수의 메시지들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 - 을 상기 송신측 미디어 디바이스로부터 수신하고;
상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키고;
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하고;
재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내며;
상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간에서 상기 제1 미디어 데이터를 렌더링시키도록 구성되는 것인, 수신측 미디어 디바이스.
A receiving-side media device for synchronizing media playback with a transmitting-side media device,
A memory configured to store media data for playback;
A network interface configured to communicate with the sending media device; And
Processor
Including,
The processor comprising:
Receive, via the network interface, a plurality of messages, the plurality of messages including a plurality of transmitter timestamps from the transmitting media device;
Generate a plurality of clock offset values based on the plurality of transmitter time stamps and the clock of the receiving media device;
Identify a minimum clock offset value from the plurality of clock offset values;
Find first media data for playback and a first presentation time associated with the first media data;
And render the first media data at a first time that coincides with the first presentation time based on the minimum clock offset value.
제6항에 있어서, 최소 클록 오프셋 값을 식별할 때, 상기 프로세서는,
상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키고;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정하고;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키고;
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하며;
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 오프셋 클록 값과 같도록 설정하도록 구성되는 것인, 수신측 미디어 디바이스.
7. The method of claim 6, wherein, when identifying a minimum clock offset value,
Generate a first clock offset value of the plurality of clock offset values;
Setting the minimum clock offset value equal to the first offset clock value;
Generate a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value to be equal to the first offset clock value;
Determine that the second clock offset value is less than the minimum clock offset value;
And to set the minimum clock offset value equal to the second offset clock value based on a determination that the second clock offset value is less than the minimum clock offset value.
제6항에 있어서, 상기 프로세서는 또한,
상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 오프셋 값을 차감함으로써 상기 클록의 값을 수정하도록 구성되고,
상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값인 것인, 수신측 미디어 디바이스.
7. The apparatus of claim 6,
And to modify the value of the clock by subtracting the minimum offset value from the value of the clock of the receiving media device,
Wherein the first time coinciding with the first presentation time based on the minimum clock offset value is a value of the clock coinciding with the first presentation time.
제6항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 프로세서는 또한,
상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키고;
상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하고;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하고;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키며;
상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하도록 구성되고,
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별할 때, 상기 프로세서는 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하도록 구성되는 것인, 수신측 미디어 디바이스.
7. The apparatus of claim 6, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages,
Generate a first measure of intervals at which the first plurality of messages arrive;
Determine that the first measure of intervals at which the first plurality of messages arrive indicates that the network is unstable;
Direct the sending media device to send additional messages;
Generate a second measure of intervals at which the second plurality of messages arrive after instructing the transmitting media device to send additional messages;
Wherein the second measure of intervals at which the second plurality of messages arrive determines that the network is stable,
Wherein the processor is configured to use a clock offset value of at least one of the plurality of clock offset values associated with the second plurality of messages when identifying a minimum clock offset value from the plurality of clock offset values, Side media device.
시스템에 있어서,
제6항의 상기 수신측 미디어 디바이스 - 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함함 -; 및
상기 송신측 미디어 디바이스를
포함하고,
상기 송신측 미디어 디바이스는,
상기 수신측 미디어 디바이스와 통신하도록 구성된 송신측 미디어 디바이스 네트워크 인터페이스; 및
송신측 미디어 디바이스 프로세서를
포함하고,
상기 송신측 미디어 디바이스 프로세서는,
상기 제1 복수의 메시지들을 전송하고,
상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키고,
상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하고,
상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하고,
상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키며,
상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하도록 구성되는 것인, 시스템.
In the system,
The receiving media device of claim 6, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages; And
Side media device
Including,
Wherein the transmitting-
A transmitting-side media device network interface configured to communicate with the receiving-side media device; And
The sender media device processor
Including,
Wherein the transmitting-side media device processor comprises:
Transmitting the first plurality of messages,
Generate a first network performance metric associated with the transmission of the first plurality of messages,
The first network performance metric determining that the network is unstable,
Sending the second plurality of messages based on a determination that the first network performance metric indicates that the network is unstable,
Generating a second network performance metric associated with the transmission of the second plurality of messages,
And the second network performance metric is determined to indicate that the network is stable.
송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키기 위해 수신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩된 비일시적 기계 판독가능 저장 매체에 있어서,
상기 수신측 미디어 디바이스에서, 복수의 메시지들을 상기 송신측 미디어 디바이스로부터 수신하기 위한 명령어들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -;
상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키기 위한 명령어들;
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하기 위한 명령어들;
재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내기 위한 명령어들; 및
상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간에서 상기 제1 미디어 데이터를 렌더링시키기 위한 명령어들을 포함하는, 비일시적 기계 판독가능 저장 매체.
A non-transitory machine-readable storage medium encoded with instructions for a receiving-side media device to execute to synchronize media playback between a transmitting-side media device and a receiving-side media device,
Instructions, at the receiving media device, for receiving a plurality of messages from the transmitting media device, the plurality of messages including a plurality of transmitter timestamps;
Instructions for generating a plurality of clock offset values based on the plurality of transmitter time stamps and the clock of the receiving media device;
Instructions for identifying a minimum clock offset value from the plurality of clock offset values;
Instructions for finding first media data for playback and a first presentation time associated with the first media data; And
And rendering the first media data at a first time that coincides with the first presentation time based on the minimum clock offset value.
제11항에 있어서, 최소 클록 오프셋 값을 식별하기 위한 상기 명령어들은,
상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키기 위한 명령어들;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정하기 위한 명령어들;
상기 최소 클록 오프셋 값을 상기 제1 오프셋 클록 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키기 위한 명령어들;
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하기 위한 명령어들; 및
상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 오프셋 클록 값과 같도록 설정하기 위한 명령어들을 포함하는 것인, 비일시적 기계 판독가능 저장 매체.
12. The method of claim 11, wherein the instructions for identifying a minimum clock offset value comprise:
Instructions for generating a first clock offset value of the plurality of clock offset values;
Instructions for setting the minimum clock offset value equal to the first offset clock value;
Instructions for generating a second one of the plurality of clock offset values after setting the minimum clock offset value equal to the first offset clock value;
Instructions for determining that the second clock offset value is less than the minimum clock offset value; And
Instructions for setting the minimum clock offset value equal to the second offset clock value based on a determination that the second clock offset value is less than the minimum clock offset value. media.
제11항에 있어서, 상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 오프셋 값을 차감함으로써 상기 클록의 값을 수정하기 위한 명령어들을 더 포함하고,
상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값인 것인, 비일시적 기계 판독가능 저장 매체.
12. The apparatus of claim 11, further comprising instructions for modifying a value of the clock by subtracting the minimum offset value from a value of a clock of the receiving media device,
Wherein the first time coinciding with the first presentation time based on the minimum clock offset value is a value of the clock coinciding with the first presentation time.
제11항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 매체는 또한,
상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키기 위한 명령어들;
상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하기 위한 명령어들;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하기 위한 명령어들;
부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키기 위한 명령어들; 및
상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하기 위한 명령어들을 포함하고,
상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하기 위한 상기 명령어들은 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하기 위한 명령어들을 포함하는 것인, 비일시적 기계 판독가능 저장 매체.
12. The method of claim 11, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages,
Instructions for generating a first measure of intervals at which the first plurality of messages arrive;
Instructions for determining that the first measure of intervals at which the first plurality of messages arrive indicates that the network is unstable;
Instructions for instructing the transmitting media device to send additional messages;
Instructions for generating a second measure of intervals at which the second plurality of messages arrive after instructing the transmitting media device to transmit additional messages; And
Instructions for determining that the second measure of intervals at which the second plurality of messages arrive indicates that the network is stable,
Wherein the instructions for identifying a minimum clock offset value among the plurality of clock offset values comprise instructions for utilizing a clock offset value of at least one of the plurality of clock offset values associated with the second plurality of messages , Non-transitory machine-readable storage medium.
비일시적 기계 판독가능 매체 세트(set)에 있어서,
제11항의 상기 비일시적 기계 판독가능 저장 매체 - 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함함 -; 및
상기 송신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩된 부가의 비일시적 기계 판독가능 저장 매체를
포함하고,
상기 부가의 비일시적 기계 판독가능 저장 매체는,
상기 제1 복수의 메시지들을 전송하기 위한 명령어들;
상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키기 위한 명령어들;
상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하기 위한 명령어들;
상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하기 위한 명령어들;
상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키기 위한 명령어들; 및
상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하기 위한 명령어들을
포함하는 것인, 비일시적 기계 판독가능 매체 세트.
For a non-transitory machine-readable medium set,
12. The non-transitory machine-readable storage medium of claim 11, wherein the plurality of messages comprises a first plurality of messages and a second plurality of messages; And
Additional non-volatile machine readable storage medium encoded with instructions for executing the transmitting media device
Including,
The additional non-volatile machine-readable storage medium comprising:
Instructions for transmitting the first plurality of messages;
Instructions for generating a first network performance metric associated with the transmission of the first plurality of messages;
Instructions for determining that the first network performance metric indicates that the network is unstable;
Instructions for sending the second plurality of messages based on the determination that the first network performance metric indicates that the network is unstable;
Instructions for generating a second network performance metric associated with the transmission of the second plurality of messages; And
And the second network performance metric indicates instructions to determine that the network is stable
≪ / RTI >
KR1020157009458A 2012-09-14 2013-09-12 Playback synchronization KR102132309B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261701326P 2012-09-14 2012-09-14
US61/701,326 2012-09-14
US14/025,658 US9237324B2 (en) 2010-10-22 2013-09-12 Playback synchronization
PCT/US2013/059539 WO2014043405A1 (en) 2012-09-14 2013-09-12 Playback synchronization
US14/025,658 2013-09-12

Publications (2)

Publication Number Publication Date
KR20150055031A true KR20150055031A (en) 2015-05-20
KR102132309B1 KR102132309B1 (en) 2020-07-09

Family

ID=50278689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157009458A KR102132309B1 (en) 2012-09-14 2013-09-12 Playback synchronization

Country Status (3)

Country Link
JP (2) JP2015536064A (en)
KR (1) KR102132309B1 (en)
WO (1) WO2014043405A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190106986A (en) * 2016-09-14 2019-09-18 디티에스 엘엘씨 Multimode synchronous rendering of audio and video
KR102181005B1 (en) * 2020-01-06 2020-11-19 쉐어잇 주식회사 Broadcast system and method having time synchronization function

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9866596B2 (en) 2015-05-04 2018-01-09 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US10015216B2 (en) 2015-08-06 2018-07-03 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US9906572B2 (en) 2015-08-06 2018-02-27 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US10120641B2 (en) * 2016-12-13 2018-11-06 EVA Automation, Inc. Software-assisted wireless coordination of audio playback
WO2018152242A1 (en) * 2017-02-15 2018-08-23 Amazon Technologies, Inc. Selection of master device for synchronized audio
US10264358B2 (en) 2017-02-15 2019-04-16 Amazon Technologies, Inc. Selection of master device for synchronized audio
GB201703796D0 (en) 2017-03-09 2017-04-26 Decawave Ltd Remote signal synchronization
US11784839B2 (en) 2019-12-31 2023-10-10 Dish Network Technologies India Private Limited Dynamic low latency mode for a digital video production system
US11178202B2 (en) * 2020-03-16 2021-11-16 Apple Inc. Clock compensation for streaming media systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100034103A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Robust Jitter-Free Remote Clock Offset Measuring Method
US7684396B2 (en) * 2005-12-08 2010-03-23 Electronics And Telecommunications Research Institute Transmission apparatus having a plurality of network interfaces and transmission method using the same
US20110276648A1 (en) * 2010-05-07 2011-11-10 Microsoft Corporation Clock synchronization for shared media playback

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3201313B2 (en) * 1997-08-01 2001-08-20 日本ビクター株式会社 Data transmission system and playback device
JP3544963B2 (en) * 2001-09-20 2004-07-21 株式会社東芝 Method and apparatus for synchronous playback
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
RU2254682C1 (en) * 2003-10-27 2005-06-20 Общество с ограниченной ответственностью "Алгоритм" Method for radio communication in wireless local network
JP4467478B2 (en) * 2005-07-13 2010-05-26 シャープ株式会社 Transmission apparatus and time synchronization method
WO2007036046A1 (en) * 2005-09-30 2007-04-05 Research In Motion Limited Methods and apparatus for dynamically adjusting a data packet window size for data packet transmission in a wireless communication network
JP4777224B2 (en) * 2006-12-01 2011-09-21 三菱電機株式会社 Data reproducing apparatus and data reproducing method
JP5167862B2 (en) * 2008-02-27 2013-03-21 日本電気株式会社 Clock synchronization system, clock synchronization method, program, and recording medium
US8473638B2 (en) * 2008-05-02 2013-06-25 James Aweya Method and apparatus for time and frequency transfer in communication networks
JP2009272945A (en) * 2008-05-08 2009-11-19 Victor Co Of Japan Ltd Synchronous reproduction apparatus
WO2012054872A2 (en) * 2010-10-22 2012-04-26 Phorus Llc Media distribution architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7684396B2 (en) * 2005-12-08 2010-03-23 Electronics And Telecommunications Research Institute Transmission apparatus having a plurality of network interfaces and transmission method using the same
US20100034103A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Robust Jitter-Free Remote Clock Offset Measuring Method
US20110276648A1 (en) * 2010-05-07 2011-11-10 Microsoft Corporation Clock synchronization for shared media playback

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190106986A (en) * 2016-09-14 2019-09-18 디티에스 엘엘씨 Multimode synchronous rendering of audio and video
KR102181005B1 (en) * 2020-01-06 2020-11-19 쉐어잇 주식회사 Broadcast system and method having time synchronization function

Also Published As

Publication number Publication date
JP7391500B2 (en) 2023-12-05
JP2015536064A (en) 2015-12-17
JP2019024214A (en) 2019-02-14
KR102132309B1 (en) 2020-07-09
WO2014043405A1 (en) 2014-03-20

Similar Documents

Publication Publication Date Title
US9237324B2 (en) Playback synchronization
JP7391500B2 (en) playback synchronization
US10757466B2 (en) Multimode synchronous rendering of audio and video
JP6640359B2 (en) Wireless audio sync
JP7230008B2 (en) Systems and methods for providing real-time audio and data
US20120099594A1 (en) Media distribution architecture
CN101809906B (en) Synchronizing related data streams in interconnection networks
US20080259966A1 (en) Synchronization of one or more source RTP streams at multiple receiver destinations
US9804633B2 (en) Indirect clock measuring and media adjustment
CN107438990B (en) Method and apparatus for delivering timing information
CN104813303B (en) Playback synchronizes
US10805664B2 (en) Wireless audio synchronization
US20210112106A1 (en) System and Method for Synchronizing Networked Rendering Devices
JP5082715B2 (en) Receiving device, receiving method, and computer program
JP3906678B2 (en) Data communication system, data transmission apparatus, data reception apparatus and method, and computer program
CN108632557B (en) Audio and video synchronization method and terminal

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right