KR20150055031A - Playback synchronization - Google Patents
Playback synchronization Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 130
- 238000009877 rendering Methods 0.000 claims abstract description 33
- 230000005540 biological transmission Effects 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 11
- 241001024304 Mino Species 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 238000009826 distribution Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000005236 sound signal Effects 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 235000008113 selfheal Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/43615—Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1827—Network arrangements for conference optimisation or adaptation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising 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/43076—Synchronising 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
- H04N21/43637—Adapting 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W56/00—Synchronisation arrangements
- H04W56/001—Synchronization between nodes
- H04W56/0015—Synchronization 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.
Description
관련 출원의 상호 참조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
일부 실시예들에서, 본 시스템은 정확한 타이밍 동기화를 유지하면서 미디어의 다수의 구역들로의 동시 전송을 가능하게 한다. 하나의 예로서, 사용자는 스피커들의 네트워크를 구성할 수 있고, 어느 스피커들이 능동적으로 재생하고 있고 그들의 재생을 동기화시키고 있는지를 독립적으로 선택할 수 있다. 네트워크로의 미디어의 전송 방법은 보조 케이블을 통하는 것과 같은 유선, 또는 블루투스, 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
일부 실시예들에서, 미디어 노드들(104a, 104b, 106a 내지 106c) 자체는 자기 형성 네트워크에서 통제된다. 미디어 노드들(104a, 104b, 106a 내지 106c) 자체가 오디오/비디오 배포, 타이밍, 및 렌더링을 제어할 수 있다. 따라서, 처리 부하의 많은 부분이 미디어 소스(102)로부터 제거될 수 있다. 도 1의 예는 가정 환경에 관한 것이지만, 실시예들이 그것으로 제한되지 않는다. 가상 미디어 네트워크들이 임의의 환경에 설치될 수 있다.In some embodiments, the
도 2는 가상 미디어 네트워크를 형성하고 운영하는 한 예시적인 방법(200)을 나타낸 것이다. 단계(202)에서, 미디어 디바이스들은 서로를 발견하고 디바이스 상태 정보를 교환한다. 단계(202)는, 예를 들어, 미디어 노드들(104, 106)의 전원이 켜질 때, 일어날 수 있다. 미디어 노드들(104, 106)의 전원이 서로 상이한 때에 켜질 수 있기 때문에, 이 단계는 계속하여 실행되거나, 반복되거나, 다른 방식으로 진행할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 미디어 노드들(104, 106)이 서로의 존재 및, 예를 들어, 소스, 싱크, 브로드캐스터, 또는 렌더러로서 역할할 수 있는 것과 같은 능력을 알게 되는 "자기 발견" 프로토콜("self-discovery" protocol)을 수행한다. 교환된 디바이스 상태 정보는 또한, 예를 들어, 디바이스가 가상 미디어 네트워크에서 현재 활성인지, 이러한 가상 미디어 네트워크의 ID(identity), 디바이스가 현재 게이트웨이로서 기능하고 있는지, 기타와 같은 정보를 포함할 수 있다.FIG. 2 illustrates an
단계(204)에서, 미디어 소스(102)는 게이트웨이 미디어 노드(104)와 페어링(pair)된다. 사용자는 게이트웨이로서 역할하게 될 하나의 미디어 노드(104)를 특정하여 선택할 수 있거나, 게이트웨이가 사용자 개입 없이 자동으로 결정될 수 있다. 예를 들어, 스마트폰(102a)의 사용자는 거실 미디어 노드(104a)를 주 청취 디바이스(primary listening device)로서 선택할 수 있고, 그 결과 그것이 게이트웨이가 된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)가 그의 상태에 기초하여 미디어 소스 노드(102)에 대한 현재 활성인 출력 디바이스로서 선택된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 게이트웨이로서 기능하면서 미디어 소스 노드(102)에 대한 활성 출력 디바이스로서 역할하고, 그에 따라 미디어 데이터의 적어도 일부 채널들을 렌더링한다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 디바이스 또는 상태 정보를 미디어 소스(102)에 보고한다.At
단계(206)에서, 가상 미디어 네트워크가 형성된다. 단계(206)는 사용자가 미디어 노드들(104, 106)을 선택한 것에 응답하여 수행될 수 있다. 예를 들어, 사용자는 사용자가 미디어 노드들(104, 106)을 선택할 수 있게 하는 미디어 소스(102) 상의 소프트웨어 프로그램에 액세스할 수 있다. 유의할 점은, 미디어 노드(104, 106)가 이미 상이한 가상 미디어 네트워크의 일부인 경우, 이 미디어 노드(104, 106)가 미디어 소스(102)를 통해 이용가능하지 않은 것으로 표시될 수 있다는 것이다. 그에 부가하여 또는 다른 대안으로서, 사용자는 사용 중인 미디어 노드(104, 106)가 현재의 가상 미디어 네트워크에 포함시키기 위해 해방되도록 요청할 수 있을 것이다. 다양한 실시예들에서, 단계(206)의 결과, 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104, 106)로 포워딩하라고 게이트웨이 미디어 노드(104)에 지시한다.At
단계(208)에서, 미디어가 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 전송될 수 있다. 이 단계(208)는 사용자가 미디어가 미디어 소스와 연관된 출력 디바이스 상에서 제공되도록 선택한 것에 응답하여 개시될 수 있을 것이다. 예를 들어, 사용자는 미디어를 재생하는 임의의 애플리케이션을 스마트폰(102a) 상에서 실행하고 있을 수 있다. 사용자는 이어서 게이트웨이 미디어 노드(104)를 출력 디바이스로서 선택할 수 있고, 미디어가 게이트웨이 미디어 노드(104)로 전송될 수 있다. 유의할 점은, 이 미디어 전송이 운영 체제(OS) 레벨에서 일어날 수 있다는 것이다. 이 전송이 암시하는 바는 임의의 미디어 애플리케이션이 사용자에 의해 가상 미디어 네트워크에 대한 미디어 소스로서 선택될 수 있다는 것이다.At
단계(210)에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 예를 들어, 거실 게이트웨이(104a)는 그가 스마트폰(102a)으로부터 수신한 미디어 신호를 사무실 렌더러(106a), 주방 렌더러(106b), 및 스테레오 수신기(108)로 브로드캐스트할 수 있다. 일부 실시예들에서, 각각의 미디어 노드(104, 106)는 그 자신의 사용자 제어가능 레벨(예컨대, 볼륨)에서 미디어를 재생한다. 따라서, 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 어떤 명령들이 송신될 수 있다. 그렇지만, 게이트웨이는 처리의 많은 부분을 수행할 수 있다. 따라서, 미디어 소스(102)가 과중한 처리 부하로 꼼짝 못하게 되지는 않는다.At
도 3은 한 예시적인 가상 미디어 네트워크(300)를 나타낸 것이다. 도시된 바와 같이, 미디어 신호를 수신하는 싱크들(322, 332) 및 미디어 신호를 다른 미디어 노드(320, 330, 340)에 제공하는 브로드캐스터들(324, 334)를 가지고 있기 때문에 게이트웨이로서 역할할 수 있는 2개의 미디어 노드들(320, 330)이 있다. 예시를 위해, 미디어 노드들(320, 330, 340)과 별개인 액세스 포인트(350)가 있다. 유의할 점은, 미디어 노드들(320, 330, 340) 중 하나가 액세스 포인트로서 기능할 수 있다는 것이다.FIG. 3 illustrates an exemplary
미디어 노드들(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
살펴본 바와 같이, 게이트웨이 지원 미디어 노드(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
다수의 게이트웨이 지원 미디어 노드들(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
미디어 노드들(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
도 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
미디어 소스(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
가상 미디어 네트워크(300)가 하나의 가능한 디바이스 세트의 하나의 가능한 구성에 불과하다는 것을 잘 알 것이다. 다양한 대안의 미디어 네트워크들(300)은 보다 적은 또는 부가의 디바이스들을 포함할 수 있고, 상이한 방식으로 미디어를 배포할 수 있다. 예를 들어, 미디어 소스(310)는 미디어를 액세스 포인트로 직접 전송할 수 있고, 미디어 노드(330)는 미디어 노드(320) 대신에 게이트웨이로서 역할할 수 있으며, 미디어 노드(340)는 가상 네트워크에 참여하지 않을 수 있다. 다양한 대안의 구성들이 명백할 것이다.It will be appreciated that the
앞서 살펴본 바와 같이, 미디어 소스들(310)은 미디어(360)를 가상 미디어 네트워크(300)에 주입할 수 있다. 예들은 PC 또는 스마트폰을 포함한다. 이용가능한 미디어 주입 방법들은 아날로그 또는 디지털 전송을 지원하는 케이블들, 블루투스, 및 WiFi를 포함할 수 있다. 일부 실시예들에서, 미디어 소스(310)는 가상 미디어 네트워크와 호환되는 포맷으로 미디어 데이터를 전송하는 브로드캐스터이다. 다른 실시예들에서, 기술적 한계들은 미디어 소스(310)의 브로드캐스트 능력을 제한한다. 예를 들어, 많은 전화들의 보안 모델은 오디오 드라이버들이 제3자들에 의해 수정되지 못하게 할 수 있다. 또한, 미디어 소스 디바이스(310) 자체가 이용가능한 처리 또는 네트워크 대역폭을 갖지 않을 수 있다. 게다가, 일부 실시예들에서, 미디어 소스의 초기 링크에 대한 QoS 레벨은, 적어도 하나의 종단점이 가능한 최고의 충실도로 렌더링할 수 있도록, 다른 종단점들보다 더 높은 QoS를 이용한다.As discussed above,
유의할 점은, 미디어 소스(310)로부터 싱크(322)로의 전송을 위해 많은 포맷들 및 연결들이 사용될 수 있다는 것이다. 미디어 소스(310)는, 어떤 비제한적인 예들로서, 유선, BT A2DP, 또는 WiFi를 통한 특정의 프로토콜을 통해 싱크(322)로 전송할 수 있다. WiFi 프로토콜은 품질과 지연 시간 간의 절충을 제공하도록 또는 정확도를 보장하도록 설계되어 있을 수 있다. 예를 들어, 프로토콜은 오류들을 검출하고 데이터의 재전송을 요청할 수 있다. 종종, 이것이 브로드캐스트의 목적은 아닐 수 있지만, 브로드캐스트하기 이전에 미디어가 확실하게 도착하는 것이 중요하다. 본 명세서에 개시된 실시예들은 기존의 디바이스들과의 호환성을 유지한다.It is noted that many formats and connections may be used for transmission from the
다양한 실시예들에서, 네트워크는 표준의 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
액세스 포인트(350) 등의 인프라가 없는 경우, 노드가 가상 액세스 포인트로 될 수 있다. 다른 노드들은 액세스 포인트(350)를 발견하고, 사설 네트워크(private network)를 형성하기 위해 연결될 수 있다. 보안 연결들을 이루기 위해 WPS-PBC 및 애드혹 방법들이 사용될 수 있다.In the absence of an infrastructure such as
도 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
사용자는 가상 미디어 네트워크를 제어하기 위해 가상 네트워크 미디어 애플리케이션(420)에 액세스할 수 있다. 하나의 예로서, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 미디어 노드들(104, 106)을 선택하고 그들의 볼륨, 재생 등을 제어할 수 있게 하는 사용자 인터페이스를 제공할 수 있다. 일부 실시예들에서, 네트워크에 대한 마스터 볼륨 및 각각의 미디어 노드(104, 106)에 대한 개개의 볼륨들이 있다.The user may access the virtual
미디어 소스 애플리케이션(430)은 미디어 소스(400) 상에서 오디오를 재생할 수 있는 임의의 애플리케이션일 수 있다. 예를 들어, 미디어 소스 애플리케이션은 MP3 플레이어, 인터넷 오디오, 웹 브라우저 등일 수 있다. 다양한 실시예들에서, 사용자에 의해 어떤 출력 디바이스가 선택되든 그 출력 디바이스 상에서 미디어가 재생될 것이다. 이 출력 디바이스 선택은 운영 체제(OS)(440)의 제어 하에 있을 수 있다. 예를 들어, OS(440)는 사용자가 출력 디바이스를 선택할 수 있게 하는 팝업 창을 제공할 수 있다. 미디어 노드들(104, 106) 중 하나 이상이 선택가능한 것들로서 나타날 수 있다. 미디어 노드들(104, 106) 중 하나를 선택함으로써, 오디오 애플리케이션과 연관된 미디어 신호가 네트워크 인터페이스(410)를 통해 미디어 소스(400)로부터 선택된 미디어 노드(104, 106)로 송신될 수 있다. 일부 실시예들에서, 미디어 라이브러리(450)는 미디어를 디코딩하는 데 사용된다. 미디어 라이브러리는 디코딩된 미디어를 네트워크 미디어 드라이버(445)로 송신하고, 네트워크 미디어 드라이버(445)는 미디어 신호를 선택된 출력 디바이스로 송신한다. 미디어 노드(104, 106)가 출력 디바이스로서 선택되어 있는 경우, 미디어 신호는 네트워크 인터페이스(450)를 통해 송신된다. 일부 실시예들에서, 네트워크 미디어 드라이버(445)는 블루투스 드라이버이다. 그렇지만, 네트워크 미디어 드라이버(445)는 임의의 프로토콜과 호환될 수 있다.The
유의할 점은, 상기 실시예에서, 가상 미디어 애플리케이션(420)이 미디어 신호를 결코 건드리지 않는다는 것이다. 이것은, 미디어 소스(400)에 대한 적절한 출력 디바이스를 선택함으로써, 미디어 신호를 미디어 노드(104, 106)로 송신할 때 임의의 미디어 소스(430)가 사용될 수 있다는 장점을 가진다. 이와 같이, 가상 네트워크 미디어 애플리케이션(420)의 일부 실시예들은 임의의 미디어 소스 애플리케이션(430)과 호환된다. 더욱이, 미디어 소스 애플리케이션(430)에 대해 어떤 변경들도 필요하지 않을 수 있다.Note that, in the above embodiment, the
앞서 논의한 바와 같이, 게이트웨이 미디어 노드(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
가상 네트워크 미디어 애플리케이션(420)은 이전에 기술된 것과 유사할 수 있다. 예를 들어, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 가상 네트워크에 부가할 미디어 노드들(104, 106)을 선택하고 네트워크를 제어하는 인터페이스를 제공할 수 있다. 일부 실시예들에서, 가상 네트워크 미디어 애플리케이션(420)은 선택적인데, 그 이유는 그의 기능이 가상 네트워크 미디어 드라이버(445)에 포함되어 있을 수 있기 때문이다.The virtual
그에 부가하여, 명령들을 송신하기 위해 명령 채널이 사용될 수 있고, 동일한 프로토콜을 사용하여 네트워크 인터페이스(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
유의할 점은, OS(440)에 드라이버(445)를 포함시킴으로써, 임의의 미디어 소스 애플리케이션(430)으로부터의 미디어 신호들이 미디어 노드(104, 106)로 송신될 수 있다는 것이다. 사용자가 해야 할 일은 단지 미디어 노드들(104, 106) 중 하나를 선택하는 것이다. 그에 응답하여, 가상 네트워크 미디어 드라이버(445)가 사용된다. 따라서, 미디어 소스(400) 상에서 실행되는 임의의 미디어 소스 애플리케이션(430)에서 가상 미디어 네트워크가 사용될 수 있다.It is noted that media signals from any
일부 실시예들에서, 미디어 소스 애플리케이션(430)이 가상 네트워크 미디어 애플리케이션(420)에 내장되어 있다. 어떤 이러한 실시예들에서, 미디어 소스 애플리케이션(430)에 의해 재생되는 임의의 미디어가 미디어 노드(104, 106)로 송신된다.In some embodiments, a
다양한 실시예들에서, 미디어가 미디어 소스(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
도 5는 미디어 노드(500)의 한 예시적인 구성요소 다이어그램을 나타낸 것이다. 미디어 노드(500)는 예시적인 환경(100)의 미디어 노드들(104, 106) 중 하나 이상에 대응할 수 있다. 미디어 노드(500)는 네트워크 인터페이스(510)를 가질 수 있다. 네트워크 인터페이스(510)는 하나 이상의 무선 또는 유선 프로토콜들에 따른 통신을 가능하게 할 수 있다. 다양한 실시예들에서, 하나 이상의 안테나들이 네트워크 인터페이스(510)에 연결되어 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 WiFi 호환이기도 하고 블루투스 호환이기도 하다. 그에 부가하여 또는 다른 대안으로서, 네트워크 인터페이스(510)는 임의의 다른 프로토콜과 호환될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 하나 이상의 유선 네트워크 인터페이스들을 포함한다.FIG. 5 illustrates an exemplary component diagram of a
렌더러(520)는 스피커들(530), 디스플레이(540), 또는 기타 출력 디바이스(도시 생략)를 통해 제공하기 위한 미디어 신호를 처리하는 일을 맡고 있을 수 있다. 다양한 대안의 미디어 노드들이, 미디어 노드가 렌더링하도록 설계되어 있는 미디어의 유형에 따라, 스피커들(530) 또는 디스플레이(540)를 포함하지 않을 수 있다는 것을 잘 알 것이다. 게다가, 미디어 노드(500)가 렌더러(520)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 렌더링 디바이스가 아니라 게이트웨이 또는 기타 브로드캐스터로서만 기능하도록 설계되어 있다. 렌더링 모듈은 네트워크 인터페이스(510)로부터 미디어 신호를 수신할 수 있다.The
브로드캐스터(550)는 미디어 신호를 네트워크 인터페이스(510)를 통해 다른 적절한 미디어 노드들(104, 106)로 포워딩할 수 있을 것이다. 미디어 신호를 홈 스테레오 시스템과 같은 디바이스에 제공하기 위해 보조 출력(560)이 사용될 수 있다. 일부 실시예들에서, 브로드캐스터(550)는 미디어 신호들을 보조 출력(560)으로 포워딩하는 것을 처리한다. 다양한 실시예들에서, 미디어 노드(500)는 보조 출력(560)을 포함하지 않는다. 게다가, 미디어 노드(500)가 브로드캐스터(550)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 게이트웨이 또는 기타 브로드캐스팅 디바이스가 아니라 렌더링 디바이스로서만 기능하도록 설계되어 있다.The
명령 모듈(570)은 미디어 신호를 제어하는 명령들을 처리할 수 있을 것이다. 이 명령들은 볼륨, 재생, 일시정지 등을 포함할 수 있을 것이다. 동기화 모듈(580)은 네트워크 내의 다양한 미디어 노드들 상에서의 재생 동안 미디어 신호의 정확한 동기화를 책임지고 있을 수 있다. 이하에서 더 상세히 기술할 것인 바와 같이, 동기화 모듈(580)은 초기 클록 동기화를 확립하기 위해 사용하기 위한 비콘 메시지(beacon message)들을 전송 또는 수신할 수 있다. 그에 부가하여, 미디어 스트림이 시작된 후에, 동기화 모듈(580)은 미디어 재생 동안 클록 동기화를 개선시키거나 보정하는 데 사용하기 위해 미디어 패킷들에 타임스탬프들을 삽입하거나 그로부터 추출할 수 있다.
미디어 노드들(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
일부 실시예들에서, 미디어 노드(500)는 명령 프로토콜을 지원한다. 명령 프로토콜은 오디오 재생을 켜고/끄는 방법, 오디오 재생을 동기화된 구역들로 통합하는 방법, 재생, 빨리감기, 되감기 및 탐색과 같은 제어들을 전송하는 방법, 노드들로 메타데이터를 전송하는 방법, 네트워크 상태를 네트워크에 가입한 디바이스들로 통지하는 방법, 디바이스들이 네트워크를 떠날 때 상태를 업데이트하는 방법, 원격 사용자 인터페이스들을 통해 제어하는 방법, 및 방송 시간 네트워크(airtime network)를 유지하는 기타 메시지들 및 방법들을 포함할 수 있다.In some embodiments, the
유의할 점은, 미디어 노드(500)의 요소들이 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다는 것이다. 미디어 노드(500)는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들 상에서 실행될 때, 미디어 노드(500)의 다양한 요소들의 기능을 구현하는 명령어들을 갖는 컴퓨터 판독가능 저장 매체를 가질 수 있다.It should be noted that the elements of the
도 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
프로세서(610)는 메모리(620) 또는 저장소(650)에 저장된 명령어들을 실행할 수 있는 임의의 하드웨어 디바이스일 수 있다. 그에 따라, 프로세서는 마이크로프로세서, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 기타 유사한 디바이스들을 포함할 수 있다.The
메모리(620)는, 예를 들어, L1, L2 또는 L3 캐시 또는 시스템 메모리와 같은 다양한 메모리들을 포함할 수 있다. 그에 따라, 메모리(620)는 SRAM(static random access memory), DRAM(dynamic RAM), 플래시 메모리, ROM(read only memory), 또는 기타 유사한 메모리 디바이스들을 포함할 수 있다.
사용자 인터페이스(630)는 사용자와의 통신 또는 사용자를 위한 미디어의 렌더링을 가능하게 하는 하나 이상의 디바이스들을 포함할 수 있다. 예를 들어, 사용자 인터페이스(630)는 디스플레이, 스피커들, 프린터, 보조 출력, 마우스, 키보드, 영숫자 키패드, 트랙볼, 스타일러스, 또는 버튼들을 포함할 수 있다.The
네트워크 인터페이스(640)는 다른 하드웨어 디바이스들과의 통신을 가능하게 하는 하나 이상의 디바이스들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(640)는 이더넷 프로토콜, TCP/IP 프로토콜들, WiFi 프로토콜, 또는 블루투스 프로토콜에 따라 통신하도록 구성된 하나 이상의 NIC(network interface card)들을 포함할 수 있다. 네트워크 인터페이스(640)에 대한 다양한 대안의 또는 부가의 하드웨어 또는 구성들이 명백할 것이다.
저장소(650)는 ROM(read-only memory), RAM(random-access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들, 또는 유사한 저장 매체와 같은 하나 이상의 기계 판독가능 저장 매체를 포함할 수 있다. 저장소는 또한 데이터 및 코드를 미디어 디바이스(600)에 입력하고 그로부터 출력하기 위해, 플로피 디스크와 같은 휴대용 비휘발성 저장 매체를 포함할 수 있다. 다양한 실시예들에서, 저장소(650)는 프로세서(610)가 실행하기 위한 명령어들 또는 프로세서(510)가 처리할 수 있는 데이터를 저장한다. 예를 들어, 저장소는 미디어 디바이스(600)의 기본 기능들을 조정하기 위한 운영 체제(670) 및 다른 미디어 디바이스가 재생을 동기화하는 데 충분한 정보를 전송하기 위한 또는 재생을 동기화하기 위해 다른 미디어 디바이스에 의해 전송되는 이러한 정보를 처리하기 위한 동기화 명령어들(672)을 저장할 수 있다.
미디어 디바이스(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
미디어 디바이스(600)에 들어 있는 구성요소들은 본 명세서에 기술된 방법들 및 시스템들에서 사용하기에 적당한 컴퓨터 시스템들에서 전형적으로 발견되는 것들이고, 이러한 컴퓨터 구성요소들의 광의의 카테고리를 나타내기 위한 것이다. 이와 같이, 미디어 디바이스(600)는 셀룰러폰, 스마트폰, PDA, 태블릿 컴퓨터, 개인용 컴퓨터, 모바일 컴퓨팅 디바이스, 워크스테이션, 서버, 마이크로컴퓨터, 메인프레임 컴퓨터, 또는 임의의 다른 컴퓨팅 디바이스일 수 있다. 컴퓨터는 또한 상이한 버스 구성들, 네트워크로 연결된 플랫폼들, 멀티-프로세서 플랫폼들 등을 포함할 수 있다. 유닉스(Unix), 리눅스(Linux), 윈도즈(Windows), 매킨토시 OS(Macintosh OS), 팜 OS(Palm OS), 안드로이드 OS(Android OS), iOS 및 기타 적당한 운영 체제들을 비롯한 다양한 운영 체제들(660)이 사용될 수 있다.The components contained in the
도 7은 미디어 신호를 브로드캐스트하는 한 예시적인 방법(700)을 나타낸 것이다. 방법(700)은 방법(200)의 단계(210)에 대응할 수 있다. 단계(710)에서, 게이트웨이 미디어 노드(104) 및 다른 미디어 노드들(102, 104, 106)은 타이밍 파라미터들을 설정할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 가상 벽시계에 동기화된다. 의도된 렌더링 시간으로 미디어 스트림을 타임스탬핑(timestamp)하기 위해 가상 벽시계가 브로드캐스터에 의해 사용될 수 있다. 주어진 시간에 미디어 샘플들을 정확히 렌더링하기 위해 가상 벽시계가 렌더러들에 의해 사용될 수 있다. 가상 벽시계는 미디어 노드들(104, 106)이 렌더링 시간에 대한 공통된 이해를 갖도록 보장하는 데 도움을 줄 수 있다. 일부 실시예들에서, 각각의 렌더링 디바이스는 미디어 스트림에 지정된 시간에 샘플들을 렌더링한다. 샘플링 주파수, 워드 크기(word size), 채널들의 수, 인코딩 포맷 등을 비롯한 스트림의 렌더링을 위한 기타 정보가 또한 스트림 포맷에 포함될 수 있다.Figure 7 illustrates an
단계(710)에서, 가상 벽시계 또는 어떤 다른 공통된 타이밍 기준이 설정될 수 있다. 예를 들어, 게이트웨이 미디어 노드(104)는 각각의 비콘 메시지가 전송된 때를 나타내는 타임스탬프들을 포함하는 비콘 메시지들의 "플러딩(flood)"을 개시할 수 있다. 이어서, 수신측 미디어 노드(104, 106)는 송신기의 타임스탬프와 각각의 비콘 메시지가 전송된 때 사이의 차이를 결정함으로써 오프셋 값을 계산할 수 있다. 이 계산된 오프셋은 다음과 같은 3개의 독립적인 값들의 합을 반영할 수 있다: 송신측 디바이스와 수신측 디바이스의 클록들 사이의 실제 오프셋; 네트워크 전파 시간, 송신측 디바이스가 타임스탬프를 삽입하는 것과 비콘 메시지를 실제로 전송하는 것 사이의 소요 시간, 및 수신측 디바이스가 비콘 메시지를 수신하는 것과 수신 시간을 결정하는 것 사이의 소요 시간과 같은 시간들과 연관된 고정된 지연; 및 네트워크 변동들과 연관된 그리고 다양한 무선 네트워크 연결들에 공통인 가변 지연. 고정된 지연이 실질적으로 일정하기 때문에, 수신측 디바이스는 최소의 계산된 오프셋이, 그 계산된 오프셋들 중에서, 가장 작은 가변 네트워크 지연을 포함하는 오프셋이고 따라서 "실제 클록 오프셋 + 고정된 네트워크 지연"의 이용가능한 가장 근접한 추정이라고 확신할 수 있다. 수신측 디바이스는 이어서, 최소 오프셋에 기초하여, 그 자신의 클록을 조절할 수 있거나, 차후의 송신측 디바이스 타임스탬프들을 로컬 클록과 비교하는 데 사용하기 위해 오프셋을 존속시킬 수 있다. 적절한 동기화를 보장하기 위해 렌더링 프로세스 동안 고정된 네트워크 지연이 고려될 수 있다. 미디어 소스(102)와 미디어 게이트웨이(104) 사이의 동기화를 확립시키기 위해 유사한 방법들이 사용될 수 있다.In
단계(720)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 미디어 소스(102)로부터 수신한다. 단계(730)에서, 게이트웨이 미디어 노드(104)가 미디어를 디코딩한다. 게이트웨이는 디코딩 이전에 미디어 신호를 역다중화(de-multiplex)할 수 있다.At
단계(740)에서, 게이트웨이 미디어 노드(104)는 다른 미디어 노드들(104, 106)로 브로드캐스트하기 위해 미디어를 재인코딩한다. 유의할 점은, 게이트웨이가 사용되는 미디어 소스(102)와 상이한 인코딩을 사용할 수 있다는 것이다. 예를 들어, 미디어 신호가 블루투스와 호환되는 포맷으로 미디어 소스(102)에서 인코딩되었을 수 있다. 미디어 신호가 WiFi와 호환되는 포맷으로 재인코딩될 수 있다.At
단계(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
일부 실시예들에서, 모든 미디어 노드들(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
일부 실시예들에서, 브로드캐스팅은 2가지 옵션들을 가진다. 옵션 A에서, 예시된 바와 같이, 단계(770)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 옵션 B(도시 생략)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 무선 액세스 포인트로 송신할 수 있다. 무선 액세스 포인트가 미디어 신호를 다른 미디어 노드들로 브로드캐스트할 수 있다.In some embodiments, broadcasting has two options. In Option A, as illustrated, at
방송 미디어가 네트워크 대역폭의 최대 소비자일 수 있다. 전형적인 미압축된 오디오 스트림들은 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
다양한 실시예들은 다수의 전송 프로토콜들을 지원한다. 일부 실시예들에서, 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
방법(800)은 단계(805)에서 시작하고, 송신측 디바이스가 수신측 디바이스에서 타이밍 파라미터들을 설정하는 데 사용하기 위한 "비콘 메시지들"을 플러딩하기 시작해야만 하는 것으로 송신측 디바이스가 결정할 수 있는 단계(810)로 진행한다. 예를 들어, 송신측 디바이스는 수신측 디바이스의 전원이 켜진 것으로, 수신측 디바이스가 가상 미디어 네트워크에 부가된 것으로, 또는 송신측 디바이스가 미디어를 수신측 디바이스로 전송하기 시작해야 하는 것으로 결정할 수 있다. 단계(815)에서, 송신측 디바이스는 새로운 비콘 메시지를 발생시킨다. 비콘 메시지는 수신측 디바이스에 의해 인식될 임의의 유형의 패킷 또는 다른 데이터 메시지일 수 있다. 예를 들어, 비콘 메시지는 송신측 디바이스 및 수신측 디바이스 둘 다가 구현하는 독점 프로토콜에 따라 형성될 수 있다. 비콘 메시지가 수신측 디바이스로 가는 도중에 있는 라우터 또는 스위치와 같은 하나 이상의 중간 디바이스들을 통과할 수 있는 실시예들과 같은 다양한 실시예들에서, 송신측 디바이스는 비콘 메시지가 고우선순위 트래픽을 구성한다는 플래그 또는 기타 표시를 담고 있는 비콘 메시지를 구성한다. 네트워크 내에서 비콘 메시지에 우선순위를 부여하는 다양한 메커니즘들은 각종의 가능한 네트워킹 기술들에 의해 이용되는 개개의 우선순위 부여 방식들에 기초하여 달라질 것이다. 비콘 메시지들의 이러한 우선순위 부여는 혼합 토폴로지 네트워크들을 통한 라우팅 시간들을 최적화하고 그로써 가변적인 네트워크 지연 인자를 감소시키는 데 도움을 줄 수 있다.The
그 다음에, 단계(820)에서, 송신측 디바이스는 송신측 디바이스의 클록에 의해 현재 표현되는 시간으로 비콘 메시지를 타임스탬핑한다. 이러한 타임스탬프는 "송신기 타임스탬프"라고 할 수 있다. 그 다음에, 단계(825)에서, 송신측 디바이스는 비콘 메시지를 하나 이상의 수신측 디바이스들로 전송한다. 단계(820)와 단계(825) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(800)의 다양한 구현례들은 단계(820)와 단계(825) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다. 다양한 실시예들에서, 송신측 디바이스가 다수의 다른 미디어 디바이스들에 대한 타이밍 파라미터들을 설정하는 역할을 한다. 예를 들어, 미디어 게이트웨이(104)는 비콘 메시지들을 다수의 다른 미디어 노드들(104, 106)로 전송할 수 있다. 어떤 이러한 실시예들에서, 송신측 디바이스는, 단계(825)에서, 예를 들어, 비콘 메시지의 복사본들을 각각의 미디어 디바이스로 개별적으로 어드레싱함으로써 또는 메시지를 다수의 미디어 디바이스들로 멀티캐스팅함으로써 비콘 메시지를 다수의 미디어 디바이스들로 전송한다. 다른 대안으로서 또는 그에 부가하여, 송신측 디바이스는 다수의 다른 미디어 디바이스들을 수용하기 위해 방법(800)을 여러번 실행한다.Then, at
단계(830)에서, 송신측 디바이스는 송신측 디바이스가 비콘 메시지들을 수신측 디바이스로 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 송신측 디바이스는, 사전 결정된 수의 비콘 메시지들이 전송될 때까지, 비콘 메시지들을 계속하여 플러딩할 수 있다. 다양한 실시예들에서, 송신측 디바이스는, 다른 대안으로서 또는 그에 부가하여, 단계(830)의 조건을 수신측 디바이스로부터의 피드백에 기초한다. 예를 들어, 수신측 디바이스는 충분한 동기화가 달성될 때의 메시지 또는 사전 결정된 수의 비콘 메시지들의 전송에도 불구하고 충분한 동기화가 달성되지 않았다는 것을 나타내는 메시지를 송신할 수 있다. 플러딩이 중단되어야만 하는지를 결정하는 또 다른 방법으로서, 송신측 디바이스는 플러딩 기간 동안 네트워크 성능을 모니터링하고, 네트워크 성능이 어떤 최소 허용 임계치를 충족시킬 때까지 플러딩을 계속한다. 예를 들어, 송신측 디바이스는, 비콘 메시지들에 부가하여, 왕복 진단 메시지(roundtrip diagnostic message)들을 수신측 디바이스로 전송할 수 있다. 다른 대안으로서, 수신측 디바이스는 그에 부가하여 네트워크 진단을 위해 비콘 메시지들을 다시 송신측 디바이스로 전송하도록 구성될 수 있다. 수신측 디바이스로부터 다시 메시지를 수신할 때, 송신측 디바이스는 네트워크 성능 척도의 하나 이상의 척도들을 발생시킨다. 예를 들어, 송신측 디바이스는 이전의 플러딩 창(flooding window)에 걸친 네트워크 지연 또는 지터의 척도들을 발생시킬 수 있고, 척도들이 어떤 최소 허용 네트워크 성능보다 더 낮은 경우, 사전 결정된 수의 비콘 메시지들이 전송되었더라도, 비콘 메시지들을 계속하여 플러딩할 수 있다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.At
송신측 디바이스가, 단계(830)에서, 비콘 메시지 플러딩이 계속되어야 하는 것으로 결정하는 경우, 방법(800)은 부가의 비콘 메시지들을 전송하기 위해 단계(815)로 루프백한다. 플러딩 창이 사전 결정된 수의 비콘 메시지들의 전송을 포함하는 다양한 실시예들에서, 송신측 디바이스는, 네트워크 성능 또는 기타 인자들에 기초하여, 이전의 창이 불충분했던 것으로 결정하고, 단계(815)로 루프백하기 전에 비콘 메시지 카운터를 리셋시킬 수 있으며, 그로써 새로운 창에서 다른 비콘 메시지 세트의 전송을 개시한다. 다른 한편으로, 송신측 디바이스가, 단계(830)에서, 플러딩이 종료되어야 하는 것으로 결정하는 경우, 방법(800)은 단계(835)에서 종료한다. 그 후에, 송신측 디바이스는 새로 동기화된 수신측 디바이스로 미디어를 전송하기 시작한다.If the sending device determines in
유의할 점은, 다양한 실시예들에서, 송신측 디바이스가 비콘 메시지들에 기초하여 수신측 디바이스로부터 어떤 반환 메시지들도 수신할 수 없거나, 송신측 디바이스가 반환 메시지들을 수신하는 실시예들에서, 송신측 디바이스가 타이밍 파라미터들을 설정하기 위해 어떤 반환 메시지들도 이용하지 않는다는 것이다. 일부 실시예들에서, 반환 메시지들은 플러딩 기간의 충분성을 판단하는 데만 사용된다. 그에 따라, 그리고 다른 클록 동기화 방법들과 달리, 본 명세서에 기술된 방법들은 동기화 계산들의 대부분이 송신측 디바이스보다는 수신측 디바이스에 의해 수행되는 "단방향" 동기화 방법이라고 할 수 있다.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
방법(900)은 단계(905)에서 시작하고, 수신측 디바이스가 새로운 메시지들이 수신되거나 처리될 때 현재의 최소 오프셋 값(running minimum offset value)을 유지하는 데 사용하기 위한 최소 오프셋 변수 "MinO"를 초기화하는 단계(910)로 진행한다. 그 다음에, 단계(915)에서, 수신측 디바이스는 송신측 디바이스로부터 비콘 메시지를 수신한다. 이어서, 단계(920)에서, 수신측 디바이스는 수신측 디바이스의 클록에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 이러한 타임스탬프는 "수신기 타임스탬프" "R(x)"라고 할 수 있다. 단계(915)와 단계(920) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(900)의 다양한 구현례들은 단계(920)와 단계(925) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다.The
단계(925)에서, 수신측 디바이스는 비콘 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 앞서 논의한 바와 같이, 송신기 타임스탬프는, 예시적인 방법(800)의 단계(820)에서와 같이, 전송 직전에 송신기 디바이스에 의해 비콘 메시지에 삽입된다. 단계(930)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정한다. 이러한 경우에, 방법(900)은 단계(935)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(930, 935)이 존재하지 않는다.At
단계(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
가변 지연이 (지연을 제거하지 않고) 부가의 지연을 유입시키기만 하기 때문에, 최소로 지연된 메시지로부터 실제 클록 오프셋의 보다 나은 추정치가 획득된다. 그에 따라, 방법(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
단계(955)에서, 수신기 디바이스는 송신기 디바이스가 비콘 메시지들을 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 수신기 디바이스는, 부가의 비콘 메시지를 기다릴 때, 타임아웃이 일어났는지를 결정할 수 있거나, 송신기 디바이스가 미디어 메시지들을 송신하기 시작한 것으로 결정할 수 있거나, 사전 결정된 수의 비콘 메시지가 수신된 것으로 결정할 수 있거나, 송신측 디바이스가 플러딩의 종료를 나타내는 특수 메시지를 전송한 것으로 결정할 수 있다. 다양한 실시예들에서, 수신기 디바이스는 플러딩이 오프셋의 원하는 정확도를 확립하는 데 충분했는지를 결정한다. 예를 들어, 수신기 디바이스는 비콘 메시지들이 수신되는 구간들을 추적할 수 있고, 측정된 구간들과 기지의 시간 구간의 비교에 기초하여, 네트워크가 원하는 정확도의 오프셋 값을 생성하기에 충분히 안정적이었는지 여부를 결정할 수 있다. 네트워크가 충분히 안정적이지 않은 경우, 수신측 디바이스는 부가의 플러딩이 수행되어야만 한다는 것을 나타내는 메시지를 송신측 디바이스로 전송한다. 다양한 수정들이 명백할 것이다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.At
수신측 디바이스가 부가의 플러딩이 수행되고 있거나 수행될 것이라고 결정하는 경우, 방법(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
다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 예를 들어, 플러딩 기간이 높은 가변 네트워크 지연의 기간으로 둘러싸여 있는 경우, 계산된 오프셋은 송신기 클록과 수신기 클록 사이의 오프셋의 실제 값보다 훨씬 더 클 수 있다. 어떤 이러한 실시예들에서, 수신기는 먼저 단계들(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
다양한 실시예들에서, 수신측 디바이스는 동기화를 재확립시키기 위해 방법(900)을 주기적으로 수행한다. 어떤 이러한 실시예들에서, 수신측 디바이스는 클록을 그의 원래의 값으로 리셋시키거나, 저장된 오프셋 값을 삭제하거나, 그렇지 않으면 방법(900)의 이전의 실행들에 기초하여 행해진 임의의 변경들을 "롤백(roll back)"시켜 클록 오프셋을 결정하는 일을 "다시 시작"한다. 클록 오프셋을 주기적으로 재설정하는 것에 의해, 수신측 디바이스는 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 클록 드리프트를 더 잘 참작할 수 있다.In various embodiments, the receiving device periodically performs the
본 명세서에서의 개시 내용을 바탕으로, 방법(900)이 각각의 비콘 메시지가 수신될 때 이를 처리하는 실시간 방법으로서 기술되어 있지만, 다양한 대안의 실시예들이 비콘 메시지들을 일괄적으로 처리하는 방법들을 이용한다는 것이 명백할 것이다. 예를 들어, 어떤 이러한 실시예들에서, 수신측 디바이스는 다수의 비콘 메시지들을 수신하고, 수신 시에 메시지들을 타임스탬핑하며, 단계들(925 내지 960)과 관련하여 기술된 것과 유사한 방식으로 최소 오프셋을 찾아내기 위해 수신된 메시지들을 순차적으로 나중에 처리한다.Based on the teachings herein, while the
이상의 방법들이 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
방법(1000)은 단계(1005)에서 시작하고, 수신측 디바이스가 송신측 디바이스로부터 미디어 데이터 패킷을 수신하는 단계(1010)로 진행한다. 그 다음에, 단계(1015)에서, 수신측 디바이스는 수신측 디바이스의 클록 R(x)에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 단계(1020)에서, 수신측 디바이스는 미디어 데이터 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 송신기 타임스탬프는 전송 직전에 송신기 디바이스에 의해 미디어 데이터 메시지에 삽입되었을 수 있다. 단계(1025)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정할 수 있다. 이러한 경우에, 방법(1000)은 단계(1030)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법들에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(1020, 1030)이 존재한다.The
단계(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
다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 어떤 이러한 실시예에서, 수신기는 먼저 단계(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
단계(1050)에서, 수신측 디바이스는, 예를 들어, 미디어 출력을 적절한 때에 렌더링하기 위해, 수신된 미디어 패킷을 계속하여 처리한다. 예를 들어, 수신측 디바이스는 송신기 타임스탬프 및 수신기 타임스탬프와 별개인 제공 시간을 미디어 데이터 패킷으로부터 추출할 수 있다. 이러한 제공 시간은 메시지가 담고 있는 미디어 데이터가 렌더링되어야만 하는 시간을 나타낸다. 제공 시간을 추출한 후에, 수신측 디바이스는 제공 시간과 일치하는 때에 미디어 데이터를 렌더링시킨다. 예를 들어, 수신측 디바이스는 로컬 재생 디바이스에 의한 재생을 위해 미디어 데이터를 버퍼링할 수 있거나, 재생을 위해 메시지를 다른 미디어 노드로 포워딩할 수 있다. 제공 시간과 "일치"하는 현재 시간이 현재 시간과 제공 타임스탬프 간의 동등성을 포함할 수 있지만 다른 형태의 일치도 포함할 수 있다는 것을 잘 알 것이다. 예를 들어, 다양한 실시예들에서, "현재 시간 - 존속된 최소 오프셋 값"이 제공 타임스탬프와 일치할 때 현재 시간이 일치한다. 그에 부가하여 또는 다른 대안으로서, 일치하는지에 대한 비교는 고정된 지연 값을 가산하거나, 차감하거나, 다른 방식으로 고려한다. 로컬 클록, 제공 타임스탬프, 및 다른 어쩌면 이용가능한 값들에 기초하여 재생을 위한 적절한 때를 결정하는 다양한 다른 방법들이 명백할 것이다. 게다가, 최소 오프셋 값에 기초하여 현재 시간이 제공 시간과 일치한다는 개념은 최소 오프셋 값에 의해 이전에 수정되었지만 최소 오프셋 값을 명확하게 고려하지 않은 로컬 클록을 이용한 비교들을 포함한다는 것을 잘 알 것이다. 다양한 실시예들은 데이터가 적절한 때에 출력되도록 하기 위해 출력 직전에 이러한 비교를 수행한다. 다른 실시예들은 미디어가 제공 시간에 재생될 가능성이 있는 위치에서 미디어 데이터를 재생 버퍼에 삽입하기 위해 이러한 비교를 사용한다. 이러한 삽입은, 재생의 타이밍을 조절하기 위해, 미디어 데이터의 삽입 이전에 "더미" 데이터의 삽입을 수반할 수 있다. 버퍼에서 데이터의 재생 타이밍을 제어하는 다양한 부가의 방법들이 명백할 것이다.At
도 11은 하한 오프셋을 결정하는 한 예시적인 방법(1100)을 나타낸 것이다. 앞서 살펴본 바와 같이, 다양한 대안의 실시예들은 그에 부가하여, 보다 나은 클록 오프셋 추정치들을 결정하기 위해, 비콘 플러딩 및 미디어 패킷들의 분석 이전에 하한 오프셋을 설정한다. 예시적인 방법(1100)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(1100)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.FIG. 11 illustrates an
방법(1100)은 단계(1105)에서 시작하고, 수신측 디바이스가, 송신측 디바이스로부터 핸드쉐이크 메시지를 수신함으로써 하한을 계산하기 위해, 수신측 디바이스와 송신측 디바이스 사이의 왕복 이동으로부터 타임스탬프들을 수집하기 시작하는 단계(1110)로 진행할 수 있다. 다양한 실시예들에서, 핸드쉐이크 메시지는 비콘 메시지들 또는 미디어 데이터 패킷들이 송신되는 채널과 상이한 채널을 통해 전송된다. 예를 들어, 핸드쉐이크 메시지는 블루투스 채널을 통해 전송될 수 있는 반면, 비콘 메시지들 및 미디어 데이터 패킷 메시지들은 WiFi 채널을 통해 전송될 수 있다. 이용되는 핸드쉐이크 프로토콜의 일부로서, 송신기는 송신기가 핸드쉐이크 메시지를 전송한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t1을 핸드쉐이크 메시지에 포함시킨다. 이어서, 단계(1115)에서, 단계(1110)에서의 핸드쉐이크 메시지의 수신에 가까운 때에, 수신기는 수신기 클록에 따른 수신 타임스탬프 t2를 기록한다.The
그 다음에, 수신기 디바이스는, 단계(1120)에서, 수신기가 핸드쉐이크 메시지를 송신기로 재송신하는 시간을 나타내는, 수신기 클록에 따른 타임스탬프 t3를 발생시킴으로써, 핸드쉐이크 메시지를 다시 송신기 디바이스로 전송할 준비를 한다. 일부 실시예들에서, 수신기는 타임스탬프 t3를 송신기로부터 수신된 핸드쉐이크 메시지에 또는 새로 발생된 핸드쉐이크 메시지에 삽입시킬 수 있다. 이어서, 단계(1125)에서, 타임스탬프 t4의 발생에 가까운 때에, 수신기는 핸드쉐이크 메시지를 송신기로 전송한다. 그 다음에, 단계(1130)에서, 수신기는 핸드쉐이크 메시지를 다시 송신기로부터 수신할 수 있다. 송신기가 핸드쉐이크 메시지를 처리하는 것의 일부로서, 핸드쉐이크 메시지는 이제 송신기가 핸드쉐이크 메시지를 수신한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t4를 포함한다.The receiver device then prepares, in
이하에서 설명할 것인 바와 같이, 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
일부 실시예들에서, 수신기 디바이스에 의해 생성된 타임스탬프들이 송신기 디바이스에 의해 생성된 타임스탬프들보다 작도록 송신기 클록이 수신기 클록보다 늦어질 수 있다는 것이 명백할 것이다. 상기 하한 클록 오프셋 식이 계산된 값의 부호에 기초하여 클록 조절의 방향을 나타낼 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 수신기 디바이스는, 상대 조절 방향이 아니라 크기만이 비교되도록, 어느 오프셋이 보다 나은 추정인지를 결정하기 위해 다양한 계산된 오프셋들을 비교할 때 절대값들을 이용할 수 있다.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
이상의 내용을 바탕으로, 다양한 실시예들은 가변 지연들을 나타내는 네트워크들에 속하는 미디어 디바이스들 간의 미디어 재생의 동기화를 가능하게 한다. 예를 들어, 수신측 디바이스가 복수의 메시지들로부터 최소 클록 오프셋을 식별하는 단방향 동기화 방법을 구현하는 것에 의해, 클록 동기화에 대한 가변 지연의 효과들이 감소될 수 있다. 게다가, 미디어 스트림이 시작된 후에 보다 나은 동기화 파라미터들을 계속하여 탐색하는 것에 의해, 수신측 디바이스는 클록 드리프트를 참작하면서 동기화를 개선시킬 수 있다. 이상의 내용을 바탕으로, 다양한 부가의 장점들이 명백할 것이다.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:
104b:
106b:
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 오프셋 클록 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제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 제공 시간과 일치하는 상기 클록의 값을 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.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 척도(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 복수의 메시지들의 전송과 연관된 제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.
상기 복수의 클록 오프셋 값들 중 제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.
상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 오프셋 값을 차감함으로써 상기 클록의 값을 수정하도록 구성되고,
상기 최소 클록 오프셋 값에 기초하여 상기 제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.
상기 제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.
상기 복수의 클록 오프셋 값들 중 제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.
상기 최소 클록 오프셋 값에 기초하여 상기 제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.
상기 제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.
제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 >
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261701326P | 2012-09-14 | 2012-09-14 | |
US61/701,326 | 2012-09-14 | ||
PCT/US2013/059539 WO2014043405A1 (en) | 2012-09-14 | 2013-09-12 | Playback synchronization |
US14/025,658 US9237324B2 (en) | 2010-10-22 | 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)
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 (11)
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 |
US9906572B2 (en) | 2015-08-06 | 2018-02-27 | 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 |
US10255033B2 (en) * | 2016-12-13 | 2019-04-09 | EVA Automation, Inc. | Wireless coordination of audio playback |
EP3583509A4 (en) * | 2017-02-15 | 2020-11-18 | 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 |
US10452345B1 (en) * | 2018-05-15 | 2019-10-22 | Sonos, Inc. | Media playback system with virtual line-in |
JP7495501B2 (en) * | 2019-12-23 | 2024-06-04 | ツィネモ・ゲーエムベーハー | Multimedia streaming technology with different security policies |
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)
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)
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 |
CA2624671C (en) * | 2005-09-30 | 2012-01-03 | 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 |
US20120099594A1 (en) * | 2010-10-22 | 2012-04-26 | Phorus Llc | Media distribution architecture |
-
2013
- 2013-09-12 KR KR1020157009458A patent/KR102132309B1/en active IP Right Grant
- 2013-09-12 JP JP2015532053A patent/JP2015536064A/en active Pending
- 2013-09-12 WO PCT/US2013/059539 patent/WO2014043405A1/en active Application Filing
-
2018
- 2018-09-18 JP JP2018173888A patent/JP7391500B2/en active Active
Patent Citations (3)
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)
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 |
---|---|
WO2014043405A1 (en) | 2014-03-20 |
JP2015536064A (en) | 2015-12-17 |
JP2019024214A (en) | 2019-02-14 |
JP7391500B2 (en) | 2023-12-05 |
KR102132309B1 (en) | 2020-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9237324B2 (en) | Playback synchronization | |
JP7391500B2 (en) | playback synchronization | |
US11184661B2 (en) | Multimode synchronous rendering of audio and video | |
JP6640359B2 (en) | Wireless audio sync | |
US20120099594A1 (en) | Media distribution architecture | |
CN101809906B (en) | Synchronizing related data streams in interconnection networks | |
JP7230008B2 (en) | Systems and methods for providing real-time audio and data | |
US20080259966A1 (en) | Synchronization of one or more source RTP streams at multiple receiver destinations | |
US20240348673A1 (en) | System and Method for Synchronizing Networked Rendering Devices | |
US10805664B2 (en) | Wireless audio synchronization | |
CN104813303B (en) | Playback synchronizes | |
US20160054753A1 (en) | Indirect clock measuring and media adjustment | |
CN107438990B (en) | Method and apparatus for delivering timing information | |
JP3906678B2 (en) | Data communication system, data transmission apparatus, data reception apparatus and method, and computer program | |
JP5082715B2 (en) | Receiving device, receiving method, and computer program |
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 |