KR102132309B1 - 재생 동기화 - Google Patents

재생 동기화 Download PDF

Info

Publication number
KR102132309B1
KR102132309B1 KR1020157009458A KR20157009458A KR102132309B1 KR 102132309 B1 KR102132309 B1 KR 102132309B1 KR 1020157009458 A KR1020157009458 A KR 1020157009458A KR 20157009458 A KR20157009458 A KR 20157009458A KR 102132309 B1 KR102132309 B1 KR 102132309B1
Authority
KR
South Korea
Prior art keywords
media
clock offset
messages
offset value
network
Prior art date
Application number
KR1020157009458A
Other languages
English (en)
Other versions
KR20150055031A (ko
Inventor
천호 이
대니 라우
Original Assignee
디티에스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디티에스, 인코포레이티드 filed Critical 디티에스, 인코포레이티드
Priority claimed from US14/025,658 external-priority patent/US9237324B2/en
Publication of KR20150055031A publication Critical patent/KR20150055031A/ko
Application granted granted Critical
Publication of KR102132309B1 publication Critical patent/KR102132309B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/43615Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43076Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video or multiplex stream to a specific local network, e.g. a IEEE 1394 or Bluetooth® network
    • H04N21/43637Adapting the video or multiplex stream to a specific local network, e.g. a IEEE 1394 or Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W56/00Synchronisation arrangements
    • H04W56/001Synchronization between nodes
    • H04W56/0015Synchronization between nodes one node acting as a reference for the others

Abstract

다양한 예시적인 실시예들은 수신측 미디어 디바이스와 송신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법 및 미디어 디바이스에 관한 것으로서, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 단계 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값(clock offset value)들을 발생시키는 단계; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계를 포함한다.

Description

재생 동기화{PLAYBACK SYNCHRONIZATION}
관련 출원의 상호 참조
본 출원은 2012년 9월 14일자로 출원된, 발명의 명칭이 "재생 동기화(Playback Synchronization)"인 Lee 등의 미국 가특허 출원 제61/701,326호(이 출원의 전체 개시 내용은 이로써 본 명세서에 완전히 기재되어 있는 것처럼 모든 목적들을 위해 참조 문헌으로서 본 명세서에 포함됨)를 기초로 우선권을 주장한다.
본 출원은 2010년 10월 22일자로 출원된, 발명의 명칭이 "미디어 배포 아키텍처(Media Distribution Architecture)"인 Lau 등의 미국 가특허 출원 제61/405,835호를 기초로 우선권을 주장하는, 2011년 10월 21일자로 출원된, 발명의 명칭이 "미디어 배포 아키텍처(Media Distribution Architecture)"인 Lau 등의 미국 출원 제13/278,799호(이 출원들의 전체 개시 내용들은 이로써 본 명세서에 완전히 기재되어 있는 것처럼 모든 목적들을 위해 참조 문헌으로서 본 명세서에 포함됨)에 관한 것이다.
본 명세서에 개시된 다양한 예시적인 실시예들은 일반적으로 미디어 스트리밍 및 네트워크화된 미디어 재생에 관한 것이다.
스마트폰 및 태블릿과 같은 전자 디바이스들이 더 보편화됨에 따라, 사람들은 음악 및 비디오와 같은 콘텐츠를 재생하기 위해 이러한 디바이스들을 더 빈번히 사용하고 있다. 종종, 이 미디어 소스들은 사용자가 충분히 만족하도록 미디어를 렌더링하지 않을 수 있다. 예를 들어, 디스플레이가 너무 작을 수 있거나, 스피커 볼륨이 충분한 품질 또는 음량을 갖지 않을 수 있다. 더욱이, 미디어 소스로부터의 출력을 다수의 사람들이 쉽게 또는 편안하게 즐기지 못할 수 있다. 게다가, 사용자가, 미디어 소스를 휴대하고 있지 않은 경우, 자신의 집 전체의 다양한 장소들에서 미디어를 즐길 수 없다.
다양한 예시적인 실시예들의 간략한 발명의 내용이 이하에서 제시된다. 본 발명의 범주를 제한하기 위한 것이 아니라 다양한 예시적인 실시예들의 일부 태양들을 강조하고 소개하기 위한 얼마간의 간략화 및 생략이 이하의 발명의 내용에서 행해질 수 있다. 통상의 기술자가 발명 개념들을 제조 및 사용할 수 있게 하는 데 적절한, 바람직한 예시적인 실시예의 상세한 설명들이 나중의 섹션들에 나올 것이다.
본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법에 관한 것이며, 본 방법은, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 단계 - 복수의 메시지들은 복수의 송신기 타임스탬프(sender timestamp)들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값(clock offset value)들을 발생시키는 단계; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계를 포함한다.
본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 미디어 재생을 동기화시키는 수신측 미디어 디바이스에 관한 것이며, 수신측 미디어 디바이스는 재생을 위한 미디어 데이터를 저장하도록 구성된 메모리; 송신측 미디어 디바이스와 통신하도록 구성된 네트워크 인터페이스; 및 네트워크 인터페이스를 통해, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하고 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키며; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하고; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내며; 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키도록 구성된 프로세서를 포함한다.
본 명세서에 기술된 다양한 실시예들은 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키기 위해 수신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩되어 있는 비일시적 기계 판독가능 저장 매체에 관한 것이며, 본 매체는, 수신측 미디어 디바이스에서, 복수의 메시지들을 송신측 미디어 디바이스로부터 수신하는 명령어들 - 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -; 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 명령어들; 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 명령어들; 재생을 위한 제1 미디어 데이터 및 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내는 명령어들; 및 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 명령어들을 포함한다.
다양한 실시예들은 그에 부가하여 수신측 미디어 디바이스와 송신측 미디어 디바이스 사이의 왕복 이동(round-trip transit)으로부터 복수의 타임스탬프들을 획득하는 단계; 복수의 타임스탬프들에 기초하여 하한 오프셋 값(lower bound offset value)을 설정하는 단계; 및 최소 클록 오프셋 값을 식별한 후에, 최소 클록 오프셋 값이 하한 오프셋 값보다 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 실제 클록 오프셋(true clock offset)의 더 나은 추정치를 나타내는 것으로 결정하는 단계를 포함하고, 최소 클록 오프셋에 기초하여 제1 제공 시간과 일치하는 제1 시간에서 제1 미디어 데이터를 렌더링시키는 단계는 최소 클록 오프셋 값이 하한 오프셋 값보다 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 실제 클록 오프셋의 더 나은 추정치를 나타내는 것으로 결정한 것에 기초하여 수행된다.
최소 클록 오프셋 값을 식별하는 단계가 복수의 클록 오프셋 값들의 제1 클록 오프셋 값을 발생시키는 단계; 최소 클록 오프셋 값을 제1 클록 오프셋 값과 같도록 설정하는 단계; 최소 클록 오프셋 값을 제1 클록 오프셋 값과 같도록 설정한 후에 복수의 클록 오프셋 값들의 제2 클록 오프셋 값을 발생시키는 단계; 제2 클록 오프셋 값이 최소 클록 오프셋 값보다 작은 것으로 결정하는 단계; 및 제2 클록 오프셋 값이 최소 클록 오프셋 값보다 작은 것으로 결정한 것에 기초하여 최소 클록 오프셋 값을 제2 클록 오프셋 값과 같도록 설정하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.
다양한 실시예들은 그에 부가하여 수신측 미디어 디바이스의 클록의 값으로부터 최소 오프셋 값을 차감함으로써 클록의 값을 수정하는 단계를 포함하고, 최소 클록 오프셋 값에 기초하여 제1 제공 시간과 일치하는 제1 시간은 제1 제공 시간과 일치하는 클록의 값을 포함한다.
다양한 실시예들은 그에 부가하여, 수신측 미디어 디바이스에서, 메시지를 송신측 미디어 디바이스로부터 수신하는 단계 - 메시지는 제2 미디어 데이터, 제2 제공 시간, 및 송신기 타임스탬프를 포함함 -; 송신기 타임스탬프에 기초하여 클록 오프셋 값을 발생시키는 단계; 클록 오프셋 값이 수신측 미디어 디바이스의 클록과 송신측 미디어 디바이스의 클록 사이의 실제 오프셋의 최소 클록 오프셋 값보다 더 정확한 표현인 것으로 결정하는 단계; 클록 오프셋 값에 기초하여 최소 클록 오프셋 값을 조절하는 단계; 재생을 위한 제3 미디어 데이터 및 제3 미디어 데이터와 연관된 제3 제공 시간을 찾아내는 단계; 최소 클록 오프셋 값을 조절한 후에 최소 클록 오프셋 값에 기초하여 제3 제공 시간과 일치하는 제2 시간에서 제3 미디어 데이터를 렌더링시키는 단계를 포함한다.
클록 오프셋 값이 수신측 미디어 디바이스의 클록과 송신측 미디어 디바이스의 클록 사이의 실제 오프셋의 최소 클록 오프셋 값보다 더 정확한 표현인 것으로 결정하는 단계가 클록 오프셋 값이 0보다 작은 것으로 결정하는 단계를 포함하고, 클록 오프셋 값에 기초하여 최소 클록 오프셋 값을 조절하는 단계가 수신측 미디어 디바이스의 클록의 값으로부터 오프셋 값을 차감함으로써 클록의 값을 수정하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.
다양한 실시예들은 그에 부가하여 복수의 타임스탬프들의 적어도 하나의 송신기 타임스탬프를 송신측 미디어 디바이스의 시간 영역으로부터 수신측 미디어 디바이스의 시간 영역으로 변환하는 단계를 포함하고, 복수의 송신기 타임스탬프들 및 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 단계는 복수의 타임스탬프들의 적어도 하나의 송신기 타임스탬프를 송신측 미디어 디바이스의 시간 영역으로부터 수신측 미디어 디바이스의 시간 영역으로 변환한 후에 적어도 하나의 송신기 타임스탬프에 기초하여 적어도 하나의 클록 오프셋 값을 발생시키는 단계를 포함한다.
복수의 메시지들이 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 본 방법이 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키는 단계; 제1 복수의 메시지들이 도착하는 간격들의 제1 척도가 네트워크가 불안정함을 나타내는 것으로 결정하는 단계; 송신측 미디어 디바이스에 부가의 메시지들을 전송하라고 지시하는 단계; 송신측 미디어 디바이스에 부가의 메시지들을 전송하라고 지시한 후에 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키는 단계; 제2 복수의 메시지들이 도착하는 간격들의 제2 척도가 네트워크가 안정적임을 나타내는 것으로 결정하는 단계를 포함하고, 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계가 제2 복수의 메시지들과 연관된 복수의 클록 오프셋 값들의 적어도 하나의 클록 오프셋 값을 이용하는 단계를 포함하는 다양한 실시예들이 기술되어 있다.
복수의 메시지들이 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 본 방법이 송신측 미디어 디바이스가 제1 복수의 메시지들을 전송하는 단계, 송신측 미디어 디바이스가 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키는 단계, 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타내는 것으로 결정하는 단계, 송신측 미디어 디바이스가, 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타내는 것으로 결정한 것에 기초하여, 제2 복수의 메시지들을 전송하는 단계, 송신측 미디어 디바이스가 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키는 단계, 및 제2 네트워크 성능 척도가 네트워크가 안정적임을 나타내는 것으로 결정하는 단계를 추가로 포함하는 다양한 실시예들이 기술되어 있다.
다양한 예시적인 실시예들을 더 잘 이해하기 위해, 첨부 도면들을 참조한다.
도 1은 미디어 재생을 위한 한 예시적인 환경을 나타낸 도면.
도 2는 가상 미디어 네트워크를 형성하고 운영하는 한 예시적인 방법을 나타낸 도면.
도 3은 한 예시적인 가상 미디어 네트워크를 나타낸 도면.
도 4는 미디어 소스의 한 예시적인 구성요소 다이어그램을 나타낸 도면.
도 5는 미디어 노드의 한 예시적인 구성요소 다이어그램을 나타낸 도면.
도 6은 미디어 디바이스의 한 예시적인 하드웨어 다이어그램을 나타낸 도면.
도 7은 미디어 신호를 브로드캐스트하는 한 예시적인 방법을 나타낸 도면.
도 8은 송신측 미디어 디바이스가 수신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법을 나타낸 도면.
도 9는 수신측 미디어 디바이스가 송신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법을 나타낸 도면.
도 10은 수신측 미디어 디바이스가 미디어 스트리밍 동안 보다 나은 재생 동기화를 달성하는 한 예시적인 방법을 나타낸 도면.
도 11은 하한 오프셋을 결정하는 한 예시적인 방법을 나타낸 도면.
본 명세서에 제시된 설명 및 도면들은 다양한 원리들을 예시하고 있다. 통상의 기술자가, 비록 본 명세서에 명확하게 기술되거나 도시되어 있지 않지만, 이 원리들을 구현하고 본 개시 내용의 범주 내에 포함되는 다양한 구성들을 안출할 수 있을 것임을 잘 알 것이다. 본 명세서에서 사용되는 바와 같이, "또는"이라는 용어는, 본 명세서에서 사용되는 바와 같이, 달리 언급하지 않는 한(예컨대, "또는 그렇지 않으면" 또는 "또는 대안에서"), 비배타적인 또는(non-exclusive or)(즉, 및/또는)을 말한다. 그에 부가하여, 본 명세서에 기술된 다양한 실시예들이 꼭 상호 배타적일 필요는 없고, 본 명세서에 기술된 원리들을 포함하는 부가의 실시예들을 생성하도록 결합될 수 있다.
본 명세서에 기술된 다양한 실시예들은 미디어 콘텐츠를 배포하는 아키텍처를 이용한다. 다양한 미디어 디바이스들 사이에서 정확한 타이밍 동기화를 유지하면서 다수의 구역들로의 미디어의 동시 전송을 가능하게 하는 유선 및 무선 미디어 전송 기술이 제공될 수 있다. 사용자는 스피커들, 디스플레이들, 또는 다른 렌더링 디바이스들의 네트워크를 가질 수 있고, 어느 렌더링 디바이스들이 미디어를 능동적으로 출력하고 있는지를 독립적으로 선택할 수 있다. 이러한 렌더링 디바이스들은, 본 명세서에서 기술될 다른 디바이스들과 함께, 가상 미디어 네트워크에 속할 수 있다.
가상 미디어 네트워크에 의해 렌더링되는 미디어는 미디어 소스로부터 발신될 수 있다. 미디어 소스는 셀폰, 태블릿, 스테레오, 셋톱 박스, PC, 또는 기타 디바이스일 수 있다. 가상 미디어 네트워크에서의 미디어의 전송 방법은 보조 케이블을 통하는 것과 같은 유선, 또는 블루투스 또는 WiFi에서와 같은 무선일 수 있다. 스피커들 및 기타 렌더링 디바이스들 자체는 자기 형성 네트워크(self-forming network)에서 통제될 수 있다. 미디어가 미디어 소스에 의해 네트워크 내로 주입될 수 있고, 종단점 네트워크 자체가 오디오/비디오 배포, 타이밍 및 렌더링을 제어할 수 있다. 일부 실시예들에서, 네트워크에 주입되는 오디오는 오디오-비디오 신호의 오디오 부분이다. 비디오 신호는 미디어 소스(예컨대, 태블릿 컴퓨터) 상에서 재생될 수 있다. 오디오 신호는 비디오 신호와 동기된 채로 있을 수 있다.
다양한 실시예들에서, 사용자는 미디어의 소스로서 역할할 임의의 미디어 애플리케이션(media application)을 선택할 수 있다. 예를 들어, 사용자는 MP3 애플리케이션, 인터넷 라디오 애플리케이션 등을 선택할 수 있다. 사용자는 이어서, 미디어가 선택된 출력 디바이스로 송신되게 하기 위해, 그의 거실에 있는 스피커와 같은 출력 디바이스를 선택할 수 있다. 오디오가, 운영 체제에 의해, 선택된 출력 디바이스로 송신될 수 있다. 사용자는 스피커들의 볼륨을 제어하는 것 뿐만 아니라 다른 스피커들을 가상 미디어 네트워크에 부가하는 것 등을 위해 제2 애플리케이션을 호출할 수 있다. 일부 실시예들에서, 제2 애플리케이션은 미디어를 결코 수정하지 않는다. 네트워크 내의 디바이스들은 오디오/비디오 배포, 타이밍, 및 렌더링을 처리할 수 있다. 따라서, 미디어 소스가 이러한 처리의 부담을 지고 있지 않을 수 있다. 더욱이, 이러한 구성은 사용자가 자신이 좋아하는 어느 미디어 애플리케이션이라도, 미디어 애플리케이션을 수정할 필요 없이, 미디어의 소스로서 선택할 수 있게 할 것이다.
다양한 실시예들에서, 가상 미디어 네트워크를 통해 배포된 미디어가 동기된 채로 있을 수 있다. 이러한 재생 동기화를 달성하기 위해, 미디어 데이터를 전송하는 다양한 미디어 디바이스들은, 연관된 미디어가 어느 때에 렌더링되어야만 하는지를 나타내기 위해, 미디어 데이터의 프레임들과 연관된 타임스탬프들을 포함시킬 수 있다. 이러한 메커니즘을 가능하게 하기 위해, 미디어 디바이스들은 미디어 디바이스들의 내부 클록들 간의 차이들을 참작하는 방법들을 구비하고 있을 수 있다. 예를 들어, 2대의 미디어 디바이스들이 다양한 클록 값들로 동작하기 시작할 수 있거나, 클록들이 약간 상이한 속도들로 작동하는 것으로 인해 클록 값들이 동작 동안 멀어질 수 있다.
네트워크화된 클록 동기화의 일부 방법들이 과거에 개발되었지만, 이러한 방법들은 네트워크 지연이 비교적 일정하고 따라서 렌더링 프로세스의 일부로서 쉽게 참작되는 유선 네트워크들에서만 신뢰성이 있을 수 있다. 다른 한편으로, WiFi 또는 블루투스와 같은 무선 네트워크들에서, 네트워크 지연이 짧은 기간들에 걸쳐 상당히 변할 수 있고, 그로써 동기화 패킷이 송신된 때를 추정하는 프로세스를 복잡하게 만든다. 본 명세서에 기술된 다양한 방법들은 네트워크화된 클록 동기화의 프로세스에 대한 이러한 가변 지연의 효과를 감소시키거나 제거하는 클록 동기화 프로세스를 구현한다. 예를 들어, 일정 기간에 걸쳐 다수의 잠재적인 클록 오프셋 값들을 발생시킴으로써, 수신측 디바이스는 그룹 중에서 최소 오프셋 값을 선택하고 그로써 적어도 네트워크 지연의 가변 성분에 의해 영향을 받은 오프셋 값을 이용할 수 있다. 네트워크화된 클록 동기화를 개선시키기 위한 다양한 부가의 특징들이 이하에서 보다 상세히 기술될 것이다.
본 설명 전체에 걸쳐 이하의 정의들이 사용될 것이다:
브로드캐스터(Broadcaster) - 가상 미디어 네트워크를 위해 포맷팅되어 있는 미디어 스트림을 전송할 수 있는 임의의 디바이스 또는 이러한 디바이스 내의 브로드캐스팅 메커니즘.
렌더러(Renderer) - 가상 미디어 네트워크를 위해 포맷팅되어 있는 미디어 스트림을 렌더링할 수 있는 임의의 디바이스 또는 이러한 디바이스 내의 렌더링 메커니즘.
미디어 노드(Media Node) - 렌더러 또는 브로드캐스터를 포함하는 임의의 디바이스. 일부 실시예들의 미디어 노드들은 네트워크 시간 동기화 및 미디어 라우팅 정보를 비롯한 네트워크의 상태를 유지하는 일을 맡고 있을 수 있다.
미디어 소스(Media source) - 원본 미디어를 싱크(sink)로 전송하는 임의의 디바이스. 예를 들어, 미디어 데이터를 전송할 수 있는 셀룰러폰, 스마트폰, 태블릿, 셋톱 박스, 텔레비전, DVD/블루레이/기타 미디어 플레이어, 스테레오 시스템, 비디오 게임 콘솔, 랩톱, 데스크톱 PC, 서버, 또는 임의의 다른 디바이스와 같은 거의 모든 유형의 하드웨어를 포함할 수 있다.
싱크 - 소스로부터 발신하는 미디어를 수신하는 임의의 디바이스 또는 미디어 신호를 수신하기 위한 디바이스 내의 메커니즘.
게이트웨이 지원 미디어 노드(Gateway Capable Media Node) - 싱크 및 브로드캐스터를 겸비한 임의의 디바이스. 게이트웨이는 싱크를 통해 미디어를 받아 가상 미디어 네트워크 내로 렌더러들로 재브로드캐스트한다.
가상 미디어 네트워크(Virtual Media Network) - 적어도 하나의 게이트웨이를 가지는 하나 이상의 노드들의 그룹. 가상 미디어 네트워크는 사용자에 의해 설정될 수 있고, 네트워크 내의 렌더링 디바이스들 사이에 동기화되어 있는 미디어 신호를 렌더링할 수 있다. 유의할 점은, 일부 실시예들에서, 하나의 미디어 노드만이 가상 미디어 네트워크의 활성 게이트웨이(active gateway)로서 역할한다는 것이다.
미디어 디바이스(Media device) - 예를 들어, 미디어 노드 또는 미디어 소스와 같은 가상 미디어 네트워크와 관련하여 동작하는 임의의 디바이스.
유사한 참조 번호들이 유사한 구성요소들 또는 단계들을 가리키는 도면들을 이제부터 참조하여, 다양한 예시적인 실시예들의 광의의 태양들이 개시되어 있다.
도 1은 미디어 재생을 위한 한 예시적인 환경(100)을 나타낸 것이다. 이 예에서, 총 5개의 네트워크 미디어 노드들(104a, 104b, 106a 내지 106c)이 있고; 다양한 예시적인 실시예들은 보다 적은 또는 보다 많은 수의 미디어 노드들(도시 생략)을 포함할 수 있다. 예시적인 실시예(100)는 2개의 가상 미디어 네트워크들로 구성된 것으로 도시되어 있다. 도시된 바와 같이, 미디어 소스(102a)는 하나의 가상 미디어 네트워크에 대한 미디어 신호의 소스로서 역할하는 반면, 미디어 소스(102b)는 다른 가상 미디어 네트워크에 대한 미디어 소스로서 역할하지만, 다른 구성들이 가능하다. 미디어 신호는 오디오 또는 비디오일 수 있다. 다양한 실시예들에서, 미디어 신호는 오디오-비디오 신호의 오디오 부분이다. 비디오 신호는 미디어 소스(102a, 102b) 상에서 재생될 수 있다. 유의할 점은, 예시적인 실시예에서, 다양한 신호들이 상이한 디바이스들에 의해 렌더링될 때 오디오 신호가 비디오 신호와 동기된 채로 있다는 것이다. 또한 유의할 점은, 비디오 신호가 가상 미디어 네트워크 내의 디바이스들 중 하나의 디바이스로, 또는 미디어 소스 노드(102a, 102b) 이외의 어떤 디바이스로 송신될 수 있다는 것이다. 다양한 실시예들에서, 각각의 가상 미디어 네트워크는 하나의 게이트웨이 디바이스를 가지는 반면, 다른 실시예들에서, 가상 미디어 네트워크는 다수의 게이트웨이 디바이스들을 이용한다. 앞서 살펴본 바와 같이, 게이트웨이 디바이스는 미디어 신호를 수신하는 싱크 및 브로드캐스터를 가진다. 게이트웨이 디바이스는 오디오 및/또는 비디오를 렌더링하는 렌더러를 가질 수 있거나 그렇지 않을 수 있다. 예시된 예에서, 거실에 있는 디바이스는 제1 가상 미디어 네트워크에 대한 게이트웨이로서 역할하지만, 브로드캐스터를 가지는 상이한 디바이스는 게이트웨이로서 기능할 수 있다.
일부 실시예들에서, 본 시스템은 정확한 타이밍 동기화를 유지하면서 미디어의 다수의 구역들로의 동시 전송을 가능하게 한다. 하나의 예로서, 사용자는 스피커들의 네트워크를 구성할 수 있고, 어느 스피커들이 능동적으로 재생하고 있고 그들의 재생을 동기화시키고 있는지를 독립적으로 선택할 수 있다. 네트워크로의 미디어의 전송 방법은 보조 케이블을 통하는 것과 같은 유선, 또는 블루투스, WiFi 또는 다른 네트워크 통신 프로토콜에서와 같은 무선일 수 있다. 하나의 예로서, 거실 게이트웨이(104a)는 미디어 신호를 스테레오 수신기(108) 그리고 그 결과 그의 보조 라인(auxiliary line)들 중 하나에 의해 그에 연결된 스피커들(110)에 제공하는 보조 출력 라인(auxiliary out line)을 가진다. 다른 한편으로, 거실 게이트웨이(104a)는 미디어 신호를 무선 전송을 통해 사무실 렌더러(106a) 및 주방 렌더러(106b)에 제공할 수 있다. 그에 부가하여, 거실 게이트웨이(104a)는 그 자신의 렌더러를 가질 수 있거나 그렇지 않을 수 있다. 일부 실시예들에서, 네트워크에 속하는 다양한 미디어 노드들은 미디어 스트림의 상이한 채널들을 제공받아 렌더링한다. 예를 들어, 미디어 소스는 비디오 신호를 렌더링할 수 있고, 제1 렌더러는 스테레오 믹스 오디오 신호(stereo mix audio signal)의 좌 스피커 채널을 렌더링할 수 있으며, 제2 렌더러는 스테레오 믹스 오디오 신호의 우 스피커 채널을 렌더링할 수 있고, 게이트웨이는 비디오 신호 및 스테레오 믹스 오디오 신호의 양쪽 채널들을 렌더링할 수 있다. 미디어 디바이스들 간의 이러한 채널들의 다양한 다른 채널 방식들 및 배포들이 명확할 것이다.
일부 실시예들에서, 미디어 노드들(104a, 104b, 106a 내지 106c) 자체는 자기 형성 네트워크에서 통제된다. 미디어 노드들(104a, 104b, 106a 내지 106c) 자체가 오디오/비디오 배포, 타이밍, 및 렌더링을 제어할 수 있다. 따라서, 처리 부하의 많은 부분이 미디어 소스(102)로부터 제거될 수 있다. 도 1의 예는 가정 환경에 관한 것이지만, 실시예들이 그것으로 제한되지 않는다. 가상 미디어 네트워크들이 임의의 환경에 설치될 수 있다.
도 2는 가상 미디어 네트워크를 형성하고 운영하는 한 예시적인 방법(200)을 나타낸 것이다. 단계(202)에서, 미디어 디바이스들은 서로를 발견하고 디바이스 상태 정보를 교환한다. 단계(202)는, 예를 들어, 미디어 노드들(104, 106)의 전원이 켜질 때, 일어날 수 있다. 미디어 노드들(104, 106)의 전원이 서로 상이한 때에 켜질 수 있기 때문에, 이 단계는 계속하여 실행되거나, 반복되거나, 다른 방식으로 진행할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 미디어 노드들(104, 106)이 서로의 존재 및, 예를 들어, 소스, 싱크, 브로드캐스터, 또는 렌더러로서 역할할 수 있는 것과 같은 능력을 알게 되는 "자기 발견" 프로토콜("self-discovery" protocol)을 수행한다. 교환된 디바이스 상태 정보는 또한, 예를 들어, 디바이스가 가상 미디어 네트워크에서 현재 활성인지, 이러한 가상 미디어 네트워크의 ID(identity), 디바이스가 현재 게이트웨이로서 기능하고 있는지, 기타와 같은 정보를 포함할 수 있다.
단계(204)에서, 미디어 소스(102)는 게이트웨이 미디어 노드(104)와 페어링(pair)된다. 사용자는 게이트웨이로서 역할하게 될 하나의 미디어 노드(104)를 특정하여 선택할 수 있거나, 게이트웨이가 사용자 개입 없이 자동으로 결정될 수 있다. 예를 들어, 스마트폰(102a)의 사용자는 거실 미디어 노드(104a)를 주 청취 디바이스(primary listening device)로서 선택할 수 있고, 그 결과 그것이 게이트웨이가 된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)가 그의 상태에 기초하여 미디어 소스 노드(102)에 대한 현재 활성인 출력 디바이스로서 선택된다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 게이트웨이로서 기능하면서 미디어 소스 노드(102)에 대한 활성 출력 디바이스로서 역할하고, 그에 따라 미디어 데이터의 적어도 일부 채널들을 렌더링한다. 일부 실시예들에서, 게이트웨이 미디어 노드(104)는 디바이스 또는 상태 정보를 미디어 소스(102)에 보고한다.
단계(206)에서, 가상 미디어 네트워크가 형성된다. 단계(206)는 사용자가 미디어 노드들(104, 106)을 선택한 것에 응답하여 수행될 수 있다. 예를 들어, 사용자는 사용자가 미디어 노드들(104, 106)을 선택할 수 있게 하는 미디어 소스(102) 상의 소프트웨어 프로그램에 액세스할 수 있다. 유의할 점은, 미디어 노드(104, 106)가 이미 상이한 가상 미디어 네트워크의 일부인 경우, 이 미디어 노드(104, 106)가 미디어 소스(102)를 통해 이용가능하지 않은 것으로 표시될 수 있다는 것이다. 그에 부가하여 또는 다른 대안으로서, 사용자는 사용 중인 미디어 노드(104, 106)가 현재의 가상 미디어 네트워크에 포함시키기 위해 해방되도록 요청할 수 있을 것이다. 다양한 실시예들에서, 단계(206)의 결과, 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104, 106)로 포워딩하라고 게이트웨이 미디어 노드(104)에 지시한다.
단계(208)에서, 미디어가 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 전송될 수 있다. 이 단계(208)는 사용자가 미디어가 미디어 소스와 연관된 출력 디바이스 상에서 제공되도록 선택한 것에 응답하여 개시될 수 있을 것이다. 예를 들어, 사용자는 미디어를 재생하는 임의의 애플리케이션을 스마트폰(102a) 상에서 실행하고 있을 수 있다. 사용자는 이어서 게이트웨이 미디어 노드(104)를 출력 디바이스로서 선택할 수 있고, 미디어가 게이트웨이 미디어 노드(104)로 전송될 수 있다. 유의할 점은, 이 미디어 전송이 운영 체제(OS) 레벨에서 일어날 수 있다는 것이다. 이 전송이 암시하는 바는 임의의 미디어 애플리케이션이 사용자에 의해 가상 미디어 네트워크에 대한 미디어 소스로서 선택될 수 있다는 것이다.
단계(210)에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 가상 미디어 네트워크 내의 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 예를 들어, 거실 게이트웨이(104a)는 그가 스마트폰(102a)으로부터 수신한 미디어 신호를 사무실 렌더러(106a), 주방 렌더러(106b), 및 스테레오 수신기(108)로 브로드캐스트할 수 있다. 일부 실시예들에서, 각각의 미디어 노드(104, 106)는 그 자신의 사용자 제어가능 레벨(예컨대, 볼륨)에서 미디어를 재생한다. 따라서, 미디어 소스(102)로부터 게이트웨이 미디어 노드(104)로 어떤 명령들이 송신될 수 있다. 그렇지만, 게이트웨이는 처리의 많은 부분을 수행할 수 있다. 따라서, 미디어 소스(102)가 과중한 처리 부하로 꼼짝 못하게 되지는 않는다.
도 3은 한 예시적인 가상 미디어 네트워크(300)를 나타낸 것이다. 도시된 바와 같이, 미디어 신호를 수신하는 싱크들(322, 332) 및 미디어 신호를 다른 미디어 노드(320, 330, 340)에 제공하는 브로드캐스터들(324, 334)를 가지고 있기 때문에 게이트웨이로서 역할할 수 있는 2개의 미디어 노드들(320, 330)이 있다. 예시를 위해, 미디어 노드들(320, 330, 340)과 별개인 액세스 포인트(350)가 있다. 유의할 점은, 미디어 노드들(320, 330, 340) 중 하나가 액세스 포인트로서 기능할 수 있다는 것이다.
미디어 노드들(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)가 사용될 수 있다.
살펴본 바와 같이, 게이트웨이 지원 미디어 노드(320, 330)는 싱크(322, 332)와 브로드캐스터(324, 336)를 겸비하고 있다. 일부 실시예들에서, 게이트웨이들(320, 330)은 미디어 소스(310)로부터 미디어를 수신하고 미디어를 가상 미디어 네트워크 내의 다른 미디어 노드들(320, 330, 340)과 호환되는 포맷으로 재브로드캐스트한다. 게이트웨이들(320, 330)은 또한 렌더러들(326, 336)을 포함한다. 다양한 실시예들에서, 게이트웨이 미디어 노드(320, 330)는 종단점(endpoint)으로 간주된다.
다수의 게이트웨이 지원 미디어 노드들(320, 330)이 네트워크 상에 존재할 수 있다. 일부 실시예들에서, 게이트웨이 미디어 노드들(320, 330)은 사용할 미디어 소스(310)에 대한 최상의 게이트웨이를 결정하기 위해 선출 방법(election method)을 이용한다. 예를 들어, 렌더러(326, 336)를 갖는 하나의 미디어 노드(320, 330)만이 미디어 소스(310)에 대해 활성인 경우에, 그 렌더링 노드가 또한 최상의 게이트웨이일 수 있고, 그로써 다른 소스들을 위해 네트워크 대역폭을 절감한다. 다른 한편으로, 미디어 소스(310)에 대해 다수의 렌더러들이 활성인 경우, 최상의 게이트웨이는 가장 강한 또는 가장 양호한 네트워크 연결을 갖는 것일 수 있다. 최상의 후보를 식별하기 위해 선출 방식이 행해질 수 있고, 필요한 경우, 상이한 게이트웨이(320, 330)로의 스트림 핸드오프(stream handoff)가 일어날 수 있으며, 이 경우에 원래의 게이트웨이(320, 330)는 소스(310)의 싱크로 될 수 있다. 이것은 스트림 구성(stream construction) 동안 또는 스트림 중간에(mid-stream) 일어날 수 있다. 활성 게이트웨이가 디스에이블되는 경우에, 네트워크는 자체 치유(self-heal)할 수 있고 방송 시간 브로드캐스트 스트림(airtime broadcast stream)들을 재설정하기 위해 새로운 게이트웨이를 선출할 수 있다.
미디어 노드들(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)는 방송 시간 스트림 포맷에서 지정된 타임스탬프에서 스트림을 정확하게 렌더링하기 위해 벽시계를 사용할 수 있다.
도 3의 예에서, 미디어 소스(310)와 게이트웨이 미디어 노드(320) 내의 싱크(322) 사이에 연결이 있다. 미디어(360)는 게이트웨이 미디어 노드(320) 내의 렌더러(326)에 의해 재생된다. 연결을 설정하기 위해, 사용자는 게이트웨이 미디어 노드(320)를 미디어 소스(310)에 대한 출력 디바이스로서 선택했을 수 있다. 예를 들어, 미디어 소스(310)는 사용자가 오디오를 어느 스피커로 송신할지를 선택할 수 있게 하는 셀룰러폰일 수 있다. 셀룰러폰에 의해 재생되고 있는 임의의 오디오가 선택된 스피커로 송신될 수 있다. 이와 같이, 어떤 애플리케이션이 오디오(예컨대, 인터넷 라디오, MP3 등)를 제공하고 있는지에 관계없이, 오디오는 게이트웨이 미디어 노드(320)로 라우팅될 수 있다. 유의할 점은, 이것이 행해지기 위해 오디오를 제공하는 애플리케이션에 대해 어떤 변경도 행해질 필요가 없을 수 있다는 것이다. 미디어 소스(310)와 게이트웨이 미디어 노드(320) 사이의 연결이 무선 또는 유선일 수 있다. 다양한 실시예들에서, 이는 무선 블루투스 연결이다. 그렇지만, 블루투스 이외의 무선 프로토콜이 사용될 수 있다.
미디어 소스(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)는 과중한 처리의 부담을 지고 있지 않다.
가상 미디어 네트워크(300)가 하나의 가능한 디바이스 세트의 하나의 가능한 구성에 불과하다는 것을 잘 알 것이다. 다양한 대안의 미디어 네트워크들(300)은 보다 적은 또는 부가의 디바이스들을 포함할 수 있고, 상이한 방식으로 미디어를 배포할 수 있다. 예를 들어, 미디어 소스(310)는 미디어를 액세스 포인트로 직접 전송할 수 있고, 미디어 노드(330)는 미디어 노드(320) 대신에 게이트웨이로서 역할할 수 있으며, 미디어 노드(340)는 가상 네트워크에 참여하지 않을 수 있다. 다양한 대안의 구성들이 명백할 것이다.
앞서 살펴본 바와 같이, 미디어 소스들(310)은 미디어(360)를 가상 미디어 네트워크(300)에 주입할 수 있다. 예들은 PC 또는 스마트폰을 포함한다. 이용가능한 미디어 주입 방법들은 아날로그 또는 디지털 전송을 지원하는 케이블들, 블루투스, 및 WiFi를 포함할 수 있다. 일부 실시예들에서, 미디어 소스(310)는 가상 미디어 네트워크와 호환되는 포맷으로 미디어 데이터를 전송하는 브로드캐스터이다. 다른 실시예들에서, 기술적 한계들은 미디어 소스(310)의 브로드캐스트 능력을 제한한다. 예를 들어, 많은 전화들의 보안 모델은 오디오 드라이버들이 제3자들에 의해 수정되지 못하게 할 수 있다. 또한, 미디어 소스 디바이스(310) 자체가 이용가능한 처리 또는 네트워크 대역폭을 갖지 않을 수 있다. 게다가, 일부 실시예들에서, 미디어 소스의 초기 링크에 대한 QoS 레벨은, 적어도 하나의 종단점이 가능한 최고의 충실도로 렌더링할 수 있도록, 다른 종단점들보다 더 높은 QoS를 이용한다.
유의할 점은, 미디어 소스(310)로부터 싱크(322)로의 전송을 위해 많은 포맷들 및 연결들이 사용될 수 있다는 것이다. 미디어 소스(310)는, 어떤 비제한적인 예들로서, 유선, BT A2DP, 또는 WiFi를 통한 특정의 프로토콜을 통해 싱크(322)로 전송할 수 있다. WiFi 프로토콜은 품질과 지연 시간 간의 절충을 제공하도록 또는 정확도를 보장하도록 설계되어 있을 수 있다. 예를 들어, 프로토콜은 오류들을 검출하고 데이터의 재전송을 요청할 수 있다. 종종, 이것이 브로드캐스트의 목적은 아닐 수 있지만, 브로드캐스트하기 이전에 미디어가 확실하게 도착하는 것이 중요하다. 본 명세서에 개시된 실시예들은 기존의 디바이스들과의 호환성을 유지한다.
다양한 실시예들에서, 네트워크는 표준의 WiFi 인프라에 기초하고 있다. 각각의 미디어 노드는 그가 DHCP를 통해 IP 주소를 획득하는 액세스 포인트(350)에 연결될 수 있다. 일부 노드들(310, 320, 330)은 무선 액세스 키를 입력할 수 있게 하는 UI(디스플레이, 키보드 입력 등)를 갖지 않을 수 있다. 이러한 경우들에, 연결을 달성하기 위해 WPS-PBC가 사용될 수 있다. 다른 방법들은 사용자가 GUI 지원 디바이스(GUI enabled device)로부터 직접 종단점에 연결하고 노드에 의해 서비스되는 웹페이지, 또는 노드와 직접 통신하는 애플리케이션 페이지를 통해 네트워크 파라미터들을 입력하는 애드혹 모드를 포함할 수 있다. 다른 방법은 전화 또는 기타 디바이스 상에서 실행 중인 애플리케이션이 블루투스를 통해 미디어 노드와 통신하는 것이다. 애플리케이션은 어느 액세스 포인트에 연결할지 및 대응하는 네트워크 액세스 코드를 사용자에게 요구할 수 있다. 일부 실시예들에서, 미디어 노드(320, 330, 340)는 이 설정 단계 동안 사용자에 의해 이름을 제공받는다.
액세스 포인트(350) 등의 인프라가 없는 경우, 노드가 가상 액세스 포인트로 될 수 있다. 다른 노드들은 액세스 포인트(350)를 발견하고, 사설 네트워크(private network)를 형성하기 위해 연결될 수 있다. 보안 연결들을 이루기 위해 WPS-PBC 및 애드혹 방법들이 사용될 수 있다.
도 4는 미디어 소스(400)의 한 예시적인 구성요소 다이어그램을 나타낸 것이다. 미디어 소스(400)는 예시적인 환경(100)의 미디어 소스들(102a, 102b) 또는 예시적인 가상 미디어 네트워크(300)의 미디어 소스(310) 중 어느 하나에 대응할 수 있다. 미디어 소스(400)는 네트워크 인터페이스(410)를 포함할 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(410)는 다수의 별개의 인터페이스들을 포함한다. 예를 들어, 네트워크 인터페이스(410)는 WiFi 호환 인터페이스 및 블루투스 호환 인터페이스를 포함할 수 있다. 그에 부가하여 또는 다른 대안으로서, 네트워크 인터페이스(410)는 임의의 다른 프로토콜들과 호환되는 인터페이스들을 포함할 수 있다. 이 예에서, 미디어 신호(예컨대, 오디오 스트림 또는 비디오 스트림)는 네트워크 인터페이스(410)의 블루투스 호환 인터페이스를 사용하여 송신될 수 있다. 네트워크 인터페이스(410)의 WiFi 호환 인터페이스는 가상 미디어 네트워크를 제어하기 위한 명령들을 송신하는 데 사용될 수 있다.
사용자는 가상 미디어 네트워크를 제어하기 위해 가상 네트워크 미디어 애플리케이션(420)에 액세스할 수 있다. 하나의 예로서, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 미디어 노드들(104, 106)을 선택하고 그들의 볼륨, 재생 등을 제어할 수 있게 하는 사용자 인터페이스를 제공할 수 있다. 일부 실시예들에서, 네트워크에 대한 마스터 볼륨 및 각각의 미디어 노드(104, 106)에 대한 개개의 볼륨들이 있다.
미디어 소스 애플리케이션(430)은 미디어 소스(400) 상에서 오디오를 재생할 수 있는 임의의 애플리케이션일 수 있다. 예를 들어, 미디어 소스 애플리케이션은 MP3 플레이어, 인터넷 오디오, 웹 브라우저 등일 수 있다. 다양한 실시예들에서, 사용자에 의해 어떤 출력 디바이스가 선택되든 그 출력 디바이스 상에서 미디어가 재생될 것이다. 이 출력 디바이스 선택은 운영 체제(OS)(440)의 제어 하에 있을 수 있다. 예를 들어, OS(440)는 사용자가 출력 디바이스를 선택할 수 있게 하는 팝업 창을 제공할 수 있다. 미디어 노드들(104, 106) 중 하나 이상이 선택가능한 것들로서 나타날 수 있다. 미디어 노드들(104, 106) 중 하나를 선택함으로써, 오디오 애플리케이션과 연관된 미디어 신호가 네트워크 인터페이스(410)를 통해 미디어 소스(400)로부터 선택된 미디어 노드(104, 106)로 송신될 수 있다. 일부 실시예들에서, 미디어 라이브러리(450)는 미디어를 디코딩하는 데 사용된다. 미디어 라이브러리는 디코딩된 미디어를 네트워크 미디어 드라이버(445)로 송신하고, 네트워크 미디어 드라이버(445)는 미디어 신호를 선택된 출력 디바이스로 송신한다. 미디어 노드(104, 106)가 출력 디바이스로서 선택되어 있는 경우, 미디어 신호는 네트워크 인터페이스(450)를 통해 송신된다. 일부 실시예들에서, 네트워크 미디어 드라이버(445)는 블루투스 드라이버이다. 그렇지만, 네트워크 미디어 드라이버(445)는 임의의 프로토콜과 호환될 수 있다.
유의할 점은, 상기 실시예에서, 가상 미디어 애플리케이션(420)이 미디어 신호를 결코 건드리지 않는다는 것이다. 이것은, 미디어 소스(400)에 대한 적절한 출력 디바이스를 선택함으로써, 미디어 신호를 미디어 노드(104, 106)로 송신할 때 임의의 미디어 소스(430)가 사용될 수 있다는 장점을 가진다. 이와 같이, 가상 네트워크 미디어 애플리케이션(420)의 일부 실시예들은 임의의 미디어 소스 애플리케이션(430)과 호환된다. 더욱이, 미디어 소스 애플리케이션(430)에 대해 어떤 변경들도 필요하지 않을 수 있다.
앞서 논의한 바와 같이, 게이트웨이 미디어 노드(104)의 일부 실시예들은, 미디어 신호가 가상 미디어 네트워크와 호환되도록, 미디어 신호의 재포맷팅 및 처리를 수행할 수 있다. 이와 같이, 게이트웨이 미디어 노드(104)는 처리의 많은 부분을 미디어 소스(102)로부터 덜어준다.
미디어 소스(400)가 하나의 예를 예시한 것이고 본 명세서에 기술된 방법들 및 기법들을 여전히 구현하면서 미디어 소스(400)에 대해 많은 수정들이 행해질 수 있다는 것을 잘 알 것이다. 예를 들어, 일부 실시예들에서, 네트워크 미디어 드라이버(445)는 가상 네트워크 미디어 드라이버를 포함하고, 가상 네트워크 미디어 애플리케이션(420)이 존재하지 않을 수 있다. 이러한 실시예에서, 사용자는, 미디어 신호들을 미디어 노드들(104, 106)로 송신하는 데 도움을 주기 위해, 가상 미디어 네트워크 드라이버(445)를 설치할 수 있다. 사용자가 미디어 신호를 미디어 노드(104, 106)로 송신하고자 할 때, 사용자는 OS(440)에 의해 제공된 인터페이스에서 미디어 노드를 간단히 선택한다. 이것은 가상 네트워크 미디어 드라이버(445)를 선택한다. 예를 들어, 미디어 신호가 미디어 라이브러리(450)로부터 가상 네트워크 미디어 드라이버(445)에 제공될 수 있다. 이전의 예에서와 같이, 미디어 소스 애플리케이션(430)은 미디어를 재생하는 데 사용되는 임의의 애플리케이션일 수 있다.
가상 네트워크 미디어 애플리케이션(420)은 이전에 기술된 것과 유사할 수 있다. 예를 들어, 가상 네트워크 미디어 애플리케이션(420)은 사용자가 가상 네트워크에 부가할 미디어 노드들(104, 106)을 선택하고 네트워크를 제어하는 인터페이스를 제공할 수 있다. 일부 실시예들에서, 가상 네트워크 미디어 애플리케이션(420)은 선택적인데, 그 이유는 그의 기능이 가상 네트워크 미디어 드라이버(445)에 포함되어 있을 수 있기 때문이다.
그에 부가하여, 명령들을 송신하기 위해 명령 채널이 사용될 수 있고, 동일한 프로토콜을 사용하여 네트워크 인터페이스(410)를 통해 미디어 신호를 송신하기 위해 데이터 채널이 사용될 수 있다. 예를 들어, 명령들 및 데이터 둘 다가 WiFi 프로토콜 또는 블루투스 프로토콜에 따라 전송될 수 있다. 앞서 살펴본 바와 같이, 명령들 및 데이터가, 다른 대안으로서, 상이한 프로토콜들에 따라 전송될 수 있다.
유의할 점은, OS(440)에 드라이버(445)를 포함시킴으로써, 임의의 미디어 소스 애플리케이션(430)으로부터의 미디어 신호들이 미디어 노드(104, 106)로 송신될 수 있다는 것이다. 사용자가 해야 할 일은 단지 미디어 노드들(104, 106) 중 하나를 선택하는 것이다. 그에 응답하여, 가상 네트워크 미디어 드라이버(445)가 사용된다. 따라서, 미디어 소스(400) 상에서 실행되는 임의의 미디어 소스 애플리케이션(430)에서 가상 미디어 네트워크가 사용될 수 있다.
일부 실시예들에서, 미디어 소스 애플리케이션(430)이 가상 네트워크 미디어 애플리케이션(420)에 내장되어 있다. 어떤 이러한 실시예들에서, 미디어 소스 애플리케이션(430)에 의해 재생되는 임의의 미디어가 미디어 노드(104, 106)로 송신된다.
다양한 실시예들에서, 미디어가 미디어 소스(400) 및 가상 미디어 네트워크에 속하는 미디어 노드들(104, 106)에 의해 동시에 렌더링된다. 예를 들어, 미디어 소스(400)는 미디어의 비디오 채널을 렌더링할 수 있는 반면, 미디어 노드들(104, 106)은 미디어의 오디오 채널들을 렌더링할 수 있다. 어떤 이러한 실시예들에서, 다양한 미디어 채널들이 동기된 채로 있다. 예를 들어, 미디어 소스(400)는 미디어 데이터가 미디어 노드들(104, 106)에 의해 렌더링되어야만 하는 때를 나타내기 위해 타임스탬프들을 미디어 데이터와 함께 송신할 수 있다. 이와 유사하게, 게이트웨이(104)는 또한 미디어 데이터를 다른 미디어 노드들(104, 106)로 포워딩할 때 미디어 데이터와 연관된 타임스탬프들을 포함시킬 수 있다. 타임스탬프들의 이러한 교환을 가능하게 하기 위해, 다양한 미디어 디바이스들(104, 106, 400)은 가상 벽시계와 같은 공통의 기준 클록, 또는 다양한 시간 영역들 간에 타임스탬프들을 변환하는 방법을 가질 수 있으며, 이에 대해서는 이하에서 보다 상세히 기술될 것이다.
도 5는 미디어 노드(500)의 한 예시적인 구성요소 다이어그램을 나타낸 것이다. 미디어 노드(500)는 예시적인 환경(100)의 미디어 노드들(104, 106) 중 하나 이상에 대응할 수 있다. 미디어 노드(500)는 네트워크 인터페이스(510)를 가질 수 있다. 네트워크 인터페이스(510)는 하나 이상의 무선 또는 유선 프로토콜들에 따른 통신을 가능하게 할 수 있다. 다양한 실시예들에서, 하나 이상의 안테나들이 네트워크 인터페이스(510)에 연결되어 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 WiFi 호환이기도 하고 블루투스 호환이기도 하다. 그에 부가하여 또는 다른 대안으로서, 네트워크 인터페이스(510)는 임의의 다른 프로토콜과 호환될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(510)는 하나 이상의 유선 네트워크 인터페이스들을 포함한다.
렌더러(520)는 스피커들(530), 디스플레이(540), 또는 기타 출력 디바이스(도시 생략)를 통해 제공하기 위한 미디어 신호를 처리하는 일을 맡고 있을 수 있다. 다양한 대안의 미디어 노드들이, 미디어 노드가 렌더링하도록 설계되어 있는 미디어의 유형에 따라, 스피커들(530) 또는 디스플레이(540)를 포함하지 않을 수 있다는 것을 잘 알 것이다. 게다가, 미디어 노드(500)가 렌더러(520)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 렌더링 디바이스가 아니라 게이트웨이 또는 기타 브로드캐스터로서만 기능하도록 설계되어 있다. 렌더링 모듈은 네트워크 인터페이스(510)로부터 미디어 신호를 수신할 수 있다.
브로드캐스터(550)는 미디어 신호를 네트워크 인터페이스(510)를 통해 다른 적절한 미디어 노드들(104, 106)로 포워딩할 수 있을 것이다. 미디어 신호를 홈 스테레오 시스템과 같은 디바이스에 제공하기 위해 보조 출력(560)이 사용될 수 있다. 일부 실시예들에서, 브로드캐스터(550)는 미디어 신호들을 보조 출력(560)으로 포워딩하는 것을 처리한다. 다양한 실시예들에서, 미디어 노드(500)는 보조 출력(560)을 포함하지 않는다. 게다가, 미디어 노드(500)가 브로드캐스터(550)를 포함하지 않을 수 있고, 이 경우 미디어 노드(500)는 게이트웨이 또는 기타 브로드캐스팅 디바이스가 아니라 렌더링 디바이스로서만 기능하도록 설계되어 있다.
명령 모듈(570)은 미디어 신호를 제어하는 명령들을 처리할 수 있을 것이다. 이 명령들은 볼륨, 재생, 일시정지 등을 포함할 수 있을 것이다. 동기화 모듈(580)은 네트워크 내의 다양한 미디어 노드들 상에서의 재생 동안 미디어 신호의 정확한 동기화를 책임지고 있을 수 있다. 이하에서 더 상세히 기술할 것인 바와 같이, 동기화 모듈(580)은 초기 클록 동기화를 확립하기 위해 사용하기 위한 비콘 메시지(beacon message)들을 전송 또는 수신할 수 있다. 그에 부가하여, 미디어 스트림이 시작된 후에, 동기화 모듈(580)은 미디어 재생 동안 클록 동기화를 개선시키거나 보정하는 데 사용하기 위해 미디어 패킷들에 타임스탬프들을 삽입하거나 그로부터 추출할 수 있다.
미디어 노드들(104, 106)은 각종의 메커니즘들을 통해 제어될 수 있다. 제어기들은 스마트폰 앱(SmartPhone App), 태블릿 앱(Tablet App), TV 또는 셋톱 박스 상의 UI, 노드 상의 디스플레이를 갖거나 갖지 않는 버튼들, 또는 PC 앱(PC app)을 포함할 수 있다. 일부 실시예들에서, 이 디바이스들은 렌더러(520)가 특정의 스트림 또는 그의 특정의 채널들을 렌더링하는지, 렌더러(520)의 볼륨 출력, 및 마스터 볼륨을 제어할 수 있다.
일부 실시예들에서, 미디어 노드(500)는 명령 프로토콜을 지원한다. 명령 프로토콜은 오디오 재생을 켜고/끄는 방법, 오디오 재생을 동기화된 구역들로 통합하는 방법, 재생, 빨리감기, 되감기 및 탐색과 같은 제어들을 전송하는 방법, 노드들로 메타데이터를 전송하는 방법, 네트워크 상태를 네트워크에 가입한 디바이스들로 통지하는 방법, 디바이스들이 네트워크를 떠날 때 상태를 업데이트하는 방법, 원격 사용자 인터페이스들을 통해 제어하는 방법, 및 방송 시간 네트워크(airtime network)를 유지하는 기타 메시지들 및 방법들을 포함할 수 있다.
유의할 점은, 미디어 노드(500)의 요소들이 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다는 것이다. 미디어 노드(500)는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들 상에서 실행될 때, 미디어 노드(500)의 다양한 요소들의 기능을 구현하는 명령어들을 갖는 컴퓨터 판독가능 저장 매체를 가질 수 있다.
도 6은 미디어 디바이스(600)의 한 예시적인 하드웨어 다이어그램을 나타낸 것이다. 예시적인 미디어 디바이스(600)는 예시적인 환경(100)의 미디어 디바이스들(102, 104, 106), 미디어 소스(400), 또는 미디어 노드(500) 중 임의의 것에 대응할 수 있다. 도시된 바와 같이, 하드웨어 디바이스(600)는 하나 이상의 시스템 버스들(660)을 통해 상호연결된 프로세서(610), 메모리(620), 사용자 인터페이스(630), 네트워크 인터페이스(640), 및 저장소(650)를 포함할 수 있다. 도 6이, 어떤 점들에서, 추상화를 구성한다는 것 및 미디어 디바이스(600)의 구성요소들의 실제 구성이 예시된 것보다 더 복잡할 수 있다는 것을 잘 알 것이다. 예를 들어, 프로세서(610) 및 메모리(620)는 로컬 마이크로프로세서 버스를 통해 연결될 수 있고, 사용자 인터페이스(630), 네트워크 인터페이스(640), 및 저장소(650)가 하나 이상의 입출력 버스들을 통해 연결될 수 있다.
프로세서(610)는 메모리(620) 또는 저장소(650)에 저장된 명령어들을 실행할 수 있는 임의의 하드웨어 디바이스일 수 있다. 그에 따라, 프로세서는 마이크로프로세서, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 기타 유사한 디바이스들을 포함할 수 있다.
메모리(620)는, 예를 들어, L1, L2 또는 L3 캐시 또는 시스템 메모리와 같은 다양한 메모리들을 포함할 수 있다. 그에 따라, 메모리(620)는 SRAM(static random access memory), DRAM(dynamic RAM), 플래시 메모리, ROM(read only memory), 또는 기타 유사한 메모리 디바이스들을 포함할 수 있다.
사용자 인터페이스(630)는 사용자와의 통신 또는 사용자를 위한 미디어의 렌더링을 가능하게 하는 하나 이상의 디바이스들을 포함할 수 있다. 예를 들어, 사용자 인터페이스(630)는 디스플레이, 스피커들, 프린터, 보조 출력, 마우스, 키보드, 영숫자 키패드, 트랙볼, 스타일러스, 또는 버튼들을 포함할 수 있다.
네트워크 인터페이스(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)에 대한 다양한 다른 기능들이 명백할 것이다.
미디어 디바이스(600)에 들어 있는 구성요소들은 본 명세서에 기술된 방법들 및 시스템들에서 사용하기에 적당한 컴퓨터 시스템들에서 전형적으로 발견되는 것들이고, 이러한 컴퓨터 구성요소들의 광의의 카테고리를 나타내기 위한 것이다. 이와 같이, 미디어 디바이스(600)는 셀룰러폰, 스마트폰, PDA, 태블릿 컴퓨터, 개인용 컴퓨터, 모바일 컴퓨팅 디바이스, 워크스테이션, 서버, 마이크로컴퓨터, 메인프레임 컴퓨터, 또는 임의의 다른 컴퓨팅 디바이스일 수 있다. 컴퓨터는 또한 상이한 버스 구성들, 네트워크로 연결된 플랫폼들, 멀티-프로세서 플랫폼들 등을 포함할 수 있다. 유닉스(Unix), 리눅스(Linux), 윈도즈(Windows), 매킨토시 OS(Macintosh OS), 팜 OS(Palm OS), 안드로이드 OS(Android OS), iOS 및 기타 적당한 운영 체제들을 비롯한 다양한 운영 체제들(660)이 사용될 수 있다.
도 7은 미디어 신호를 브로드캐스트하는 한 예시적인 방법(700)을 나타낸 것이다. 방법(700)은 방법(200)의 단계(210)에 대응할 수 있다. 단계(710)에서, 게이트웨이 미디어 노드(104) 및 다른 미디어 노드들(102, 104, 106)은 타이밍 파라미터들을 설정할 수 있다. 일부 실시예들에서, 미디어 노드들(104, 106)은 가상 벽시계에 동기화된다. 의도된 렌더링 시간으로 미디어 스트림을 타임스탬핑(timestamp)하기 위해 가상 벽시계가 브로드캐스터에 의해 사용될 수 있다. 주어진 시간에 미디어 샘플들을 정확히 렌더링하기 위해 가상 벽시계가 렌더러들에 의해 사용될 수 있다. 가상 벽시계는 미디어 노드들(104, 106)이 렌더링 시간에 대한 공통된 이해를 갖도록 보장하는 데 도움을 줄 수 있다. 일부 실시예들에서, 각각의 렌더링 디바이스는 미디어 스트림에 지정된 시간에 샘플들을 렌더링한다. 샘플링 주파수, 워드 크기(word size), 채널들의 수, 인코딩 포맷 등을 비롯한 스트림의 렌더링을 위한 기타 정보가 또한 스트림 포맷에 포함될 수 있다.
단계(710)에서, 가상 벽시계 또는 어떤 다른 공통된 타이밍 기준이 설정될 수 있다. 예를 들어, 게이트웨이 미디어 노드(104)는 각각의 비콘 메시지가 전송된 때를 나타내는 타임스탬프들을 포함하는 비콘 메시지들의 "플러딩(flood)"을 개시할 수 있다. 이어서, 수신측 미디어 노드(104, 106)는 송신기의 타임스탬프와 각각의 비콘 메시지가 전송된 때 사이의 차이를 결정함으로써 오프셋 값을 계산할 수 있다. 이 계산된 오프셋은 다음과 같은 3개의 독립적인 값들의 합을 반영할 수 있다: 송신측 디바이스와 수신측 디바이스의 클록들 사이의 실제 오프셋; 네트워크 전파 시간, 송신측 디바이스가 타임스탬프를 삽입하는 것과 비콘 메시지를 실제로 전송하는 것 사이의 소요 시간, 및 수신측 디바이스가 비콘 메시지를 수신하는 것과 수신 시간을 결정하는 것 사이의 소요 시간과 같은 시간들과 연관된 고정된 지연; 및 네트워크 변동들과 연관된 그리고 다양한 무선 네트워크 연결들에 공통인 가변 지연. 고정된 지연이 실질적으로 일정하기 때문에, 수신측 디바이스는 최소의 계산된 오프셋이, 그 계산된 오프셋들 중에서, 가장 작은 가변 네트워크 지연을 포함하는 오프셋이고 따라서 "실제 클록 오프셋 + 고정된 네트워크 지연"의 이용가능한 가장 근접한 추정이라고 확신할 수 있다. 수신측 디바이스는 이어서, 최소 오프셋에 기초하여, 그 자신의 클록을 조절할 수 있거나, 차후의 송신측 디바이스 타임스탬프들을 로컬 클록과 비교하는 데 사용하기 위해 오프셋을 존속시킬 수 있다. 적절한 동기화를 보장하기 위해 렌더링 프로세스 동안 고정된 네트워크 지연이 고려될 수 있다. 미디어 소스(102)와 미디어 게이트웨이(104) 사이의 동기화를 확립시키기 위해 유사한 방법들이 사용될 수 있다.
단계(720)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 미디어 소스(102)로부터 수신한다. 단계(730)에서, 게이트웨이 미디어 노드(104)가 미디어를 디코딩한다. 게이트웨이는 디코딩 이전에 미디어 신호를 역다중화(de-multiplex)할 수 있다.
단계(740)에서, 게이트웨이 미디어 노드(104)는 다른 미디어 노드들(104, 106)로 브로드캐스트하기 위해 미디어를 재인코딩한다. 유의할 점은, 게이트웨이가 사용되는 미디어 소스(102)와 상이한 인코딩을 사용할 수 있다는 것이다. 예를 들어, 미디어 신호가 블루투스와 호환되는 포맷으로 미디어 소스(102)에서 인코딩되었을 수 있다. 미디어 신호가 WiFi와 호환되는 포맷으로 재인코딩될 수 있다.
단계(750)에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 캡슐화한다. 다양한 실시예들에서, 게이트웨이 미디어 노드(104)는 미디어 신호를 압축한다. 오디오 미디어 신호를 압축하는 한 예로서, 고품질 네트워크들에서는, 최소 처리 오버헤드로 대역폭을 절반으로 삭감하기 위해 FLAC(Free Audio Lossless Codec)과 같은 경량 무손실 압축(light lossless compression) 기법이 사용될 수 있다. 저품질 네트워크들에서는, 사운드 품질 및 처리 오버헤드를 대가로 네트워크 대역폭을 최소화하기 위해 OGG 또는 AAC(Advance Audio Coding)과 같은 상위 압축 표준이 사용될 수 있다. 압축 알고리즘 자체 이외에, 신호가 보다 낮은 샘플링 레이트로 재샘플링되거나, 모노 스트림(mono stream)으로 다운믹싱(down-mix)되거나, 보다 낮은 샘플 해상도(sample resolution)로 다운샘플링(down-sample)될 수 있다. 미디어 스트림을 압축된 형태로 인코딩(encoding) 또는 트랜스코딩(transcoding)하는 것은 처리 오버헤드를 대가로 보다 적은 네트워크 대역폭을 사용함으로써 방송 시간 신뢰성(airtime reliability)을 개선시킬 수 있다. 지원되는 코덱들은 다양한 비트 레이트들, 샘플링 주파수들, 채널들, 및 샘플 크기들의 무손실 및 손실 압축 기법들을 포함할 수 있다.
일부 실시예들에서, 모든 미디어 노드들(104, 106)이 지원되는 인코딩 포맷들을 인식하고 있다. 일부 실시예들에서, 모든 브로드캐스터들은 지원되는 포맷들로 인코딩할 수 있다. 일부 실시예들에서, 모든 렌더러들은 지원되는 포맷들을 디코딩할 수 있다. 각각의 스트림에 대해 사용되는 인코딩 포맷은 네트워크 품질로부터의 피드백, 이용가능한 처리 자원들, 지원되는 렌더링 구역(rendering zone)들의 수, 지원되는 활성 스트림들의 수, 및 최대 허용 지연 시간에 의해 미디어 노드들(104, 106) 간에 결정될 수 있다.
선택적인 단계(760)에서, 중복 패킷(redundant packet)들이 부가된다. 미디어 신호가 압축되어 있는 경우, 부가의 패킷들이 부가될 수 있다. 일부 실시예들에서, 한 그룹의 패킷이 한 그룹의 중복 패킷과 인터리빙되어 있다. 예를 들어, 2:1 압축비의 경우, 2초 분량의 원본 미디어 신호가 1초 분량으로 압축될 수 있다. 하나의 예로서, 1초 분량의 데이터 패킷들이 1초 분량의 중복 패킷들과 인터리빙될 수 있다. 그룹 내의 패킷들의 수는 1 이상일 수 있다.
일부 실시예들에서, 브로드캐스팅은 2가지 옵션들을 가진다. 옵션 A에서, 예시된 바와 같이, 단계(770)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 다른 미디어 노드들(104)로 브로드캐스트할 수 있다. 옵션 B(도시 생략)에서, 게이트웨이 미디어 노드(104)가 미디어 신호를 무선 액세스 포인트로 송신할 수 있다. 무선 액세스 포인트가 미디어 신호를 다른 미디어 노드들로 브로드캐스트할 수 있다.
방송 미디어가 네트워크 대역폭의 최대 소비자일 수 있다. 전형적인 미압축된 오디오 스트림들은 1.5 mbps를 초과할 수 있다. 전송은 액세스 포인트(310)로의 상향에서 스트림당 1.5 mbps와 렌더러(306)로의 하향에서 스트림당 부가의 1.5 mbps, 총 3 mbps를 소비할 수 있다. 포인트-투-포인트 사이멀캐스팅(point-to-point simulcasting)의 경우, 전형적인 대역폭은 "3 mbps x 사이멀캐스팅된 스트림들의 수"일 수 있다. 이것은 네트워크를 포화시킬 가능성이 있다.
다양한 실시예들은 다수의 전송 프로토콜들을 지원한다. 일부 실시예들에서, UDP over IP가 사용된다. 유의할 점은, 일부 실시예들에서, 수신측 미디어 노드가 패킷들의 수신을 확인 응답할 필요가 없다는 것이다. 예를 들어, UDP over IP는 패킷들의 수신을 필요로 하지 않을 수 있다. 일부 실시예들에서, 수신측 미디어 노드는 게이트웨이에 수신되지 않은 데이터 패킷을 재송신하라고 요청할 수 있다. 유의할 점은, UDP over IP를 사용하는 일 실시예에서 이것이 일어날 수 있다는 것이다. 앞서 언급된 바와 같이, 일부 실시예들에서, 중복 데이터 패킷들이 송신된다.
네트워크 통계가 미디어 노드들(104, 106)에 의해 유지될 수 있다. 다양한 실시예들에서, 선출된 브로드캐스터 또는 게이트웨이는 서비스 품질, 지연 시간, 프로세서 이용률, 및 네트워크 이용률의 균형을 이루기 위해 최상의 전송 방법들을 결정하는 일을 맡고 있다. 예를 들어, 높은 이용가능한 대역폭 및 개개의 노드들(104, 106)에의 강력한 연결들에 의해, 네트워크가 양호한 품질을 가지는 경우, 보장형 전송 프로토콜(guaranteed transmission protocol)이 사용될 수 있다. 네트워크가 포화되거나 저품질을 가지는 경우, 멀티캐스팅 기법이 바람직할 수 있다. 부가의 방법들은 대역폭을 절감하는 데 그리고 전송 오류들을 검출, 정정 또는 은폐하는 데 도움을 줄 수 있다. 일반적으로, 스트림 구성 시에 결정된 가장 적합한 프로토콜에서 멀티캐스팅, 사이멀캐스팅 및 포인트-투-포인트 프로토콜들이 지원되고, 네트워크 품질, 이용가능한 처리 능력, 및 스트림들의 수가 결정 프로세스에서의 기여 인자들이다.
미디어 클록이 벽시계를 참조하여 미디어 스트림을 통해 복구될 수 있고, 미디어 프레임들 또는 샘플 그룹들에 동기화될 수 있다. 미디어 클록은 하드웨어 프레임 클록들, 워드 클록들 및 비트 클록들의 형성을 주도할 수 있다. 미디어 스트림을 통한 동기화는 논리적 관점에서 볼 때 미디어 노드들(104, 106)에서 정확한 클록들이 발생될 수 있도록 보장해줄 수 있다. 수정(crystal)과 같은 하드웨어에서의 약간의 변동들은 클록 드리프트(clock drift) 및 클록 타이밍에서의 기타 변동들을 야기할 수 있다. 미디어 클록 및 벽시계의 상시 측정 및 비교는 시스템이 드리프트를 검출할 수 있게 한다. 일부 실시예들에서, 소프트웨어-전용 미디어 클록 복구 메커니즘은 디바이스들에 걸쳐 미디어 클록들을 재동기시키기 위해 미디어 샘플들을 미디어 렌더링 버퍼들에 부가하거나 그로부터 제거하는 것을 수반한다. 일부 실시예들에서, 명백한 클릭(clicking) 또는 건너뜀(skipping)의 효과들을 야기하지 않는 방식으로 렌더링 버퍼 조작이 행해진다. VCXO(voltage controlled oscillator, 전압 제어 발진기)들을 사용하는 하드웨어 메커니즘이 드리프트 측정들에 기초하여 프로세서로부터 제어될 수 있고, 하드웨어 발진기들을 보다 엄격한 동기화로 푸시(push) 또는 풀(pull)할 수 있다.
앞서 살펴본 바와 같이, 본 명세서에 기술된 다양한 시스템들은 공통의 타이밍 기준을 설정함으로써 다수의 디바이스들 사이에서 미디어 재생을 동기화시킬 수 있다. 예를 들어, 미디어 소스 및 미디어 게이트웨이가 이러한 공통의 타이밍 기준을 설정하기 위해 협력할 수 있거나, 미디어 게이트웨이 및 미디어 노드가 이러한 공통의 타이밍 기준을 설정하기 위해 협력할 수 있다. 타이밍 파라미터들을 설정하는 것과 관련하여, 본 방법이 2대의 미디어 디바이스들(송신측 미디어 디바이스 및 수신측 미디어 디바이스) 간에 분할될 수 있다. 다양한 실시예들에서, 공통의 타이밍 기준은 송신측 미디어 디바이스에서의 클록 값의 수신측 미디어 디바이스에서의 추정이다.
도 8은 송신측 미디어 디바이스가 수신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법(800)을 나타낸 것이다. 예시적인 방법(800)은, 예를 들어, 예시적인 환경(100)의 미디어 소스(102) 또는 미디어 게이트웨이(104)와 같은 송신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(800)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.
방법(800)은 단계(805)에서 시작하고, 송신측 디바이스가 수신측 디바이스에서 타이밍 파라미터들을 설정하는 데 사용하기 위한 "비콘 메시지들"을 플러딩하기 시작해야만 하는 것으로 송신측 디바이스가 결정할 수 있는 단계(810)로 진행한다. 예를 들어, 송신측 디바이스는 수신측 디바이스의 전원이 켜진 것으로, 수신측 디바이스가 가상 미디어 네트워크에 부가된 것으로, 또는 송신측 디바이스가 미디어를 수신측 디바이스로 전송하기 시작해야 하는 것으로 결정할 수 있다. 단계(815)에서, 송신측 디바이스는 새로운 비콘 메시지를 발생시킨다. 비콘 메시지는 수신측 디바이스에 의해 인식될 임의의 유형의 패킷 또는 다른 데이터 메시지일 수 있다. 예를 들어, 비콘 메시지는 송신측 디바이스 및 수신측 디바이스 둘 다가 구현하는 독점 프로토콜에 따라 형성될 수 있다. 비콘 메시지가 수신측 디바이스로 가는 도중에 있는 라우터 또는 스위치와 같은 하나 이상의 중간 디바이스들을 통과할 수 있는 실시예들과 같은 다양한 실시예들에서, 송신측 디바이스는 비콘 메시지가 고우선순위 트래픽을 구성한다는 플래그 또는 기타 표시를 담고 있는 비콘 메시지를 구성한다. 네트워크 내에서 비콘 메시지에 우선순위를 부여하는 다양한 메커니즘들은 각종의 가능한 네트워킹 기술들에 의해 이용되는 개개의 우선순위 부여 방식들에 기초하여 달라질 것이다. 비콘 메시지들의 이러한 우선순위 부여는 혼합 토폴로지 네트워크들을 통한 라우팅 시간들을 최적화하고 그로써 가변적인 네트워크 지연 인자를 감소시키는 데 도움을 줄 수 있다.
그 다음에, 단계(820)에서, 송신측 디바이스는 송신측 디바이스의 클록에 의해 현재 표현되는 시간으로 비콘 메시지를 타임스탬핑한다. 이러한 타임스탬프는 "송신기 타임스탬프"라고 할 수 있다. 그 다음에, 단계(825)에서, 송신측 디바이스는 비콘 메시지를 하나 이상의 수신측 디바이스들로 전송한다. 단계(820)와 단계(825) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(800)의 다양한 구현례들은 단계(820)와 단계(825) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다. 다양한 실시예들에서, 송신측 디바이스가 다수의 다른 미디어 디바이스들에 대한 타이밍 파라미터들을 설정하는 역할을 한다. 예를 들어, 미디어 게이트웨이(104)는 비콘 메시지들을 다수의 다른 미디어 노드들(104, 106)로 전송할 수 있다. 어떤 이러한 실시예들에서, 송신측 디바이스는, 단계(825)에서, 예를 들어, 비콘 메시지의 복사본들을 각각의 미디어 디바이스로 개별적으로 어드레싱함으로써 또는 메시지를 다수의 미디어 디바이스들로 멀티캐스팅함으로써 비콘 메시지를 다수의 미디어 디바이스들로 전송한다. 다른 대안으로서 또는 그에 부가하여, 송신측 디바이스는 다수의 다른 미디어 디바이스들을 수용하기 위해 방법(800)을 여러번 실행한다.
단계(830)에서, 송신측 디바이스는 송신측 디바이스가 비콘 메시지들을 수신측 디바이스로 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 송신측 디바이스는, 사전 결정된 수의 비콘 메시지들이 전송될 때까지, 비콘 메시지들을 계속하여 플러딩할 수 있다. 다양한 실시예들에서, 송신측 디바이스는, 다른 대안으로서 또는 그에 부가하여, 단계(830)의 조건을 수신측 디바이스로부터의 피드백에 기초한다. 예를 들어, 수신측 디바이스는 충분한 동기화가 달성될 때의 메시지 또는 사전 결정된 수의 비콘 메시지들의 전송에도 불구하고 충분한 동기화가 달성되지 않았다는 것을 나타내는 메시지를 송신할 수 있다. 플러딩이 중단되어야만 하는지를 결정하는 또 다른 방법으로서, 송신측 디바이스는 플러딩 기간 동안 네트워크 성능을 모니터링하고, 네트워크 성능이 어떤 최소 허용 임계치를 충족시킬 때까지 플러딩을 계속한다. 예를 들어, 송신측 디바이스는, 비콘 메시지들에 부가하여, 왕복 진단 메시지(roundtrip diagnostic message)들을 수신측 디바이스로 전송할 수 있다. 다른 대안으로서, 수신측 디바이스는 그에 부가하여 네트워크 진단을 위해 비콘 메시지들을 다시 송신측 디바이스로 전송하도록 구성될 수 있다. 수신측 디바이스로부터 다시 메시지를 수신할 때, 송신측 디바이스는 네트워크 성능 척도의 하나 이상의 척도들을 발생시킨다. 예를 들어, 송신측 디바이스는 이전의 플러딩 창(flooding window)에 걸친 네트워크 지연 또는 지터의 척도들을 발생시킬 수 있고, 척도들이 어떤 최소 허용 네트워크 성능보다 더 낮은 경우, 사전 결정된 수의 비콘 메시지들이 전송되었더라도, 비콘 메시지들을 계속하여 플러딩할 수 있다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.
송신측 디바이스가, 단계(830)에서, 비콘 메시지 플러딩이 계속되어야 하는 것으로 결정하는 경우, 방법(800)은 부가의 비콘 메시지들을 전송하기 위해 단계(815)로 루프백한다. 플러딩 창이 사전 결정된 수의 비콘 메시지들의 전송을 포함하는 다양한 실시예들에서, 송신측 디바이스는, 네트워크 성능 또는 기타 인자들에 기초하여, 이전의 창이 불충분했던 것으로 결정하고, 단계(815)로 루프백하기 전에 비콘 메시지 카운터를 리셋시킬 수 있으며, 그로써 새로운 창에서 다른 비콘 메시지 세트의 전송을 개시한다. 다른 한편으로, 송신측 디바이스가, 단계(830)에서, 플러딩이 종료되어야 하는 것으로 결정하는 경우, 방법(800)은 단계(835)에서 종료한다. 그 후에, 송신측 디바이스는 새로 동기화된 수신측 디바이스로 미디어를 전송하기 시작한다.
유의할 점은, 다양한 실시예들에서, 송신측 디바이스가 비콘 메시지들에 기초하여 수신측 디바이스로부터 어떤 반환 메시지들도 수신할 수 없거나, 송신측 디바이스가 반환 메시지들을 수신하는 실시예들에서, 송신측 디바이스가 타이밍 파라미터들을 설정하기 위해 어떤 반환 메시지들도 이용하지 않는다는 것이다. 일부 실시예들에서, 반환 메시지들은 플러딩 기간의 충분성을 판단하는 데만 사용된다. 그에 따라, 그리고 다른 클록 동기화 방법들과 달리, 본 명세서에 기술된 방법들은 동기화 계산들의 대부분이 송신측 디바이스보다는 수신측 디바이스에 의해 수행되는 "단방향" 동기화 방법이라고 할 수 있다.
도 9는 수신측 미디어 디바이스가 송신측 미디어 디바이스와 재생을 동기화시키는 한 예시적인 방법(900)을 나타낸 것이다. 예시적인 방법(900)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(900)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.
방법(900)은 단계(905)에서 시작하고, 수신측 디바이스가 새로운 메시지들이 수신되거나 처리될 때 현재의 최소 오프셋 값(running minimum offset value)을 유지하는 데 사용하기 위한 최소 오프셋 변수 "MinO"를 초기화하는 단계(910)로 진행한다. 그 다음에, 단계(915)에서, 수신측 디바이스는 송신측 디바이스로부터 비콘 메시지를 수신한다. 이어서, 단계(920)에서, 수신측 디바이스는 수신측 디바이스의 클록에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 이러한 타임스탬프는 "수신기 타임스탬프" "R(x)"라고 할 수 있다. 단계(915)와 단계(920) 사이에 경과하는 시간은 수신측 디바이스에 의해 계산될 클록 오프셋 값들의 고정된 지연 성분의 일부를 형성한다. 그에 따라, 방법(900)의 다양한 구현례들은 단계(920)와 단계(925) 사이에 일어나는 동작들의 수를 감소시키거나 최소화시키려고 노력한다.
단계(925)에서, 수신측 디바이스는 비콘 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 앞서 논의한 바와 같이, 송신기 타임스탬프는, 예시적인 방법(800)의 단계(820)에서와 같이, 전송 직전에 송신기 디바이스에 의해 비콘 메시지에 삽입된다. 단계(930)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정한다. 이러한 경우에, 방법(900)은 단계(935)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(930, 935)이 존재하지 않는다.
단계(935)에서 송신기 타임스탬프를 가상 미디어 네트워크 영역으로 변환한 후에, 또는 단계(930)에서 송신기가 미디어 소스가 아닌 것으로 결정한 후에, 방법(900)은 수신측 디바이스가, 예를 들어, 2개의 타임스탬프들 간의 차이와 같은 송신기 타임스탬프 및 수신기 타임스탬프에 기초한 오프셋 값을 계산하는 단계(940)로 진행한다. 이 현재 오프셋 값 "CurO"는 "송신기 클록과 수신기 클록 사이의 실제 오프셋 + 2개의 타임스탬프들 S(x) 및 R(x)의 생성 사이에서 비콘 메시지가 겪는 임의의 지연"과 동등하다. 앞서 살펴본 바와 같이, 이 지연은 2가지 성분들을 포함한다. 지연의 제1 성분은, 예를 들어, OS가 메시지를 전송/수신하는 것과 연관된 타임스탬프를 발생하는 것 사이의 소요 시간과 함께 메시지들이 이동하는 회로들 및 데이터 경로들과 연관된 일정한 지연과 같은, 네트워크의 하드웨어 및 소프트웨어 구성요소들을 통과하는 데 소요된 시간과 연관된 고정된 지연이다. 이러한 고정된 지연은 렌더링 프로세스의 일부로서 이미 고려되어 있을 수 있다. 지연의 제2 성분은 시간에 따라 변하는 지연과 연관된 가변 네트워크 지연이다. 예를 들어, WiFi와 같은 공유 매체 네트워크들은 전송 이전에 매체가 이용가능(clear)하게 되기를 기다릴 수 있고, 그에 따라, 상이한 때에 상이한 지연을 유입시킬 수 있다.
가변 지연이 (지연을 제거하지 않고) 부가의 지연을 유입시키기만 하기 때문에, 최소로 지연된 메시지로부터 실제 클록 오프셋의 보다 나은 추정치가 획득된다. 그에 따라, 방법(900)은 실제 오프셋의 이용가능한 최상의 추정치로서 플러딩 동안 획득된 최소 오프셋 값을 탐색한다. 단계(945)에서, 수신측 디바이스는 현재 오프셋 CurO를 이전에 찾아낸 최소 오프셋과 비교하거나, 루프의 현재 반복이 단계(910)에서 초기화된 최소 오프셋 값에 대한 첫번째 반복인 경우, MinO와 비교한다. CurO가 MinO보다 작은 경우, CurO가 송신기 클록과 수신기 클록 사이의 실제 오프셋의 보다 가까운 추정치를 나타낸다는 것을 알게 된다. 단계(950)에서, 수신기 디바이스는 MinO의 값을 CurO의 값으로 덮어쓰기한다.
단계(955)에서, 수신기 디바이스는 송신기 디바이스가 비콘 메시지들을 플러딩하는 것을 완수했는지를 결정한다. 예를 들어, 수신기 디바이스는, 부가의 비콘 메시지를 기다릴 때, 타임아웃이 일어났는지를 결정할 수 있거나, 송신기 디바이스가 미디어 메시지들을 송신하기 시작한 것으로 결정할 수 있거나, 사전 결정된 수의 비콘 메시지가 수신된 것으로 결정할 수 있거나, 송신측 디바이스가 플러딩의 종료를 나타내는 특수 메시지를 전송한 것으로 결정할 수 있다. 다양한 실시예들에서, 수신기 디바이스는 플러딩이 오프셋의 원하는 정확도를 확립하는 데 충분했는지를 결정한다. 예를 들어, 수신기 디바이스는 비콘 메시지들이 수신되는 구간들을 추적할 수 있고, 측정된 구간들과 기지의 시간 구간의 비교에 기초하여, 네트워크가 원하는 정확도의 오프셋 값을 생성하기에 충분히 안정적이었는지 여부를 결정할 수 있다. 네트워크가 충분히 안정적이지 않은 경우, 수신측 디바이스는 부가의 플러딩이 수행되어야만 한다는 것을 나타내는 메시지를 송신측 디바이스로 전송한다. 다양한 수정들이 명백할 것이다. 본 명세서에서의 개시 내용을 바탕으로, 비콘 메시지 플러딩의 충분성을 결정하는 이들 및 기타 방법들의 다양한 조합들이 이용될 수 있다는 것이 명백할 것이다.
수신측 디바이스가 부가의 플러딩이 수행되고 있거나 수행될 것이라고 결정하는 경우, 방법(900)은 부가의 비콘 메시지들을 처리하기 위해 단계(955)로부터 단계(915)로 루프백한다. 그렇지 않은 경우, 방법(900)은 수신측 디바이스가 결정된 최소 오프셋에 기초하여 로컬 클록을 리셋시키는 단계(960)로 진행한다. 예를 들어, 수신측 디바이스는, 로컬 클록을 송신측 디바이스의 실제 클록 값에 보다 가까운 것으로 추정된 새로운 값으로 설정하기 위해, 현재의 클록 값으로부터 MinO를 차감할 수 있다. 네트워크의 고정된 지연이 알려지거나 추정되는 일부 실시예들에서, 수신측 디바이스는, 계산된 오프셋 값의 실제 클록 오프셋 값을 분리시키려고 시도하기 위해, 현재의 클록 값으로부터 MinO를 차감하고 고정된 지연 값에 다시 가산한다. 일부 실시예들에서, 수신측 디바이스는 로컬 클록을 전혀 변경하지 않고, 그 대신에, 송신기 디바이스로부터 수신된 타임스탬프들과 로컬 클록을 비교하는 데 사용하기 위해 최소 오프셋 값 MinO를 유지할 수 있다. 예를 들어, 수신측 디바이스는 임의의 이러한 비교 전에 MinO를 타임스탬프에 가산할 수 있다. 다양한 대안의 수정들이 명백할 것이다. 방법(900)은 이어서 단계(965)에서 종료한다.
다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 예를 들어, 플러딩 기간이 높은 가변 네트워크 지연의 기간으로 둘러싸여 있는 경우, 계산된 오프셋은 송신기 클록과 수신기 클록 사이의 오프셋의 실제 값보다 훨씬 더 클 수 있다. 어떤 이러한 실시예들에서, 수신기는 먼저 단계들(940 내지 950)에서 계산된 최소 오프셋을 이전에 설정된 하한 오프셋과 비교하여, 최소 오프셋이 하한 오프셋 초과인지를 결정한다. 그러한 경우, 수신기는 최소 오프셋에 기초하여 클록을 업데이트하지 않고, 이전에 설정된 하한을 계속하여 사용한다. 그렇지 않은 경우, 수신기는 단계(960)에 상세히 기술된 바와 같이 클록을 업데이트하는데, 그 이유는 최소 오프셋 값이 하한보다 작고 따라서 하한보다 더 나은 추정치이기 때문이다. 하한을 결정하는 한 예시적인 방법이 도 11과 관련하여 이하에서 보다 상세히 기술될 것이다.
다양한 실시예들에서, 수신측 디바이스는 동기화를 재확립시키기 위해 방법(900)을 주기적으로 수행한다. 어떤 이러한 실시예들에서, 수신측 디바이스는 클록을 그의 원래의 값으로 리셋시키거나, 저장된 오프셋 값을 삭제하거나, 그렇지 않으면 방법(900)의 이전의 실행들에 기초하여 행해진 임의의 변경들을 "롤백(roll back)"시켜 클록 오프셋을 결정하는 일을 "다시 시작"한다. 클록 오프셋을 주기적으로 재설정하는 것에 의해, 수신측 디바이스는 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 클록 드리프트를 더 잘 참작할 수 있다.
본 명세서에서의 개시 내용을 바탕으로, 방법(900)이 각각의 비콘 메시지가 수신될 때 이를 처리하는 실시간 방법으로서 기술되어 있지만, 다양한 대안의 실시예들이 비콘 메시지들을 일괄적으로 처리하는 방법들을 이용한다는 것이 명백할 것이다. 예를 들어, 어떤 이러한 실시예들에서, 수신측 디바이스는 다수의 비콘 메시지들을 수신하고, 수신 시에 메시지들을 타임스탬핑하며, 단계들(925 내지 960)과 관련하여 기술된 것과 유사한 방식으로 최소 오프셋을 찾아내기 위해 수신된 메시지들을 순차적으로 나중에 처리한다.
이상의 방법들이 2대의 디바이스들 사이의 클록 오프셋의 최상의 추정치를 발생시키려고 시도하고 있지만, 네트워크 상태들이 이 초기 플러딩 기간 후에 일시적으로 개선될 수 있고 나중에 보다 나은 추정치가 획득될 수 있는 것이 가능하다는 것을 잘 알 것이다. 그에 따라, 초기 타이밍 파라미터 설정 후에 클록 오프셋들을 더 잘 추정하려고 시도하기 위해 여러 방법들이 이용될 수 있다. 이러한 방법들은 또한 클록 드리프트의 가능성을 해결할 수 있고, 여기서 수정, 온도, 또는 기타 파라미터들의 차이가 송신측 디바이스 클록 및 수신측 디바이스 클록으로 하여금 약간 상이한 속도로 동작하게 할 수 있다.
도 10은 수신측 미디어 디바이스가 미디어 스트리밍 동안 보다 나은 재생 동기화를 달성하는 한 예시적인 방법(1000)을 나타낸 것이다. 예시적인 방법(1000)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(1000)은 예시적인 방법(700)의 단계(780)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.
방법(1000)은 단계(1005)에서 시작하고, 수신측 디바이스가 송신측 디바이스로부터 미디어 데이터 패킷을 수신하는 단계(1010)로 진행한다. 그 다음에, 단계(1015)에서, 수신측 디바이스는 수신측 디바이스의 클록 R(x)에 의해 현재 표현되는 시간에 기초하여 타임스탬프를 발생시킨다. 단계(1020)에서, 수신측 디바이스는 미디어 데이터 메시지로부터 송신기 타임스탬프 "S(x)"를 추출한다. 송신기 타임스탬프는 전송 직전에 송신기 디바이스에 의해 미디어 데이터 메시지에 삽입되었을 수 있다. 단계(1025)에서, 수신측 디바이스는 송신측 디바이스가 가상 미디어 네트워크의 미디어 소스인지를 결정한다. 예를 들어, 수신측 디바이스가 가상 미디어 네트워크에 대한 게이트웨이로서 동작하고 있는 경우, 수신측 디바이스는 송신측 디바이스가 미디어 소스인 것으로 결정할 수 있다. 이러한 경우에, 방법(1000)은 단계(1030)로 진행한다. 수신측 디바이스는 이어서 송신기 타임스탬프를 송신측 디바이스의 시간 영역으로부터 가상 미디어 네트워크의 시간 영역으로 변환한다. 이러한 변환은 2대의 디바이스들 사이에서 이전에 협상된 오프셋을 가산하거나 차감하는 것을 수반할 수 있다. 이러한 협상 및 시간 영역들 간의 변환은 통상의 기술자에게 공지된 임의의 방법들에 따라 수행될 수 있다. 어떤 대안의 실시예들에서, 소스 디바이스 및 미디어 노드들은 동일한 시간 영역에서 클록들을 유지한다. 어떤 이러한 실시예들에서, 단계들(1020, 1030)이 존재한다.
단계(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와 같도록 설정한다. 다양한 다른 수정들이 명백할 것이다.
다양한 대안의 실시예들에서, 수신측 디바이스는, 플러딩 기간 동안 계산된 터무니없이 큰 오프셋이 클록을 리셋시키는 데 사용되지 않도록 보장하는 데 도움을 주기 위해, 이전에 설정된 하한 오프셋을 이용한다. 어떤 이러한 실시예에서, 수신기는 먼저 단계(1035)에서 계산된 오프셋을 이전에 설정된 하한 오프셋과 비교하여, 그 오프셋이 하한 오프셋보다 실제 오프셋의 더 나은 추정치를 나타내는지를 결정한다. 그러한 경우, 수신기는 최소 오프셋에 기초하여 클록을 업데이트하지 않고, 이전에 설정된 하한을 계속하여 사용한다. 그렇지 않은 경우, 수신기는 단계(1045)에 상세히 기술된 바와 같이 클록을 업데이트하는데, 그 이유는 오프셋 값이 하한보다 더 나은 추정치이기 때문이다. 하한을 결정하는 한 예시적인 방법이 도 11과 관련하여 이하에서 보다 상세히 기술될 것이다.
단계(1050)에서, 수신측 디바이스는, 예를 들어, 미디어 출력을 적절한 때에 렌더링하기 위해, 수신된 미디어 패킷을 계속하여 처리한다. 예를 들어, 수신측 디바이스는 송신기 타임스탬프 및 수신기 타임스탬프와 별개인 제공 시간을 미디어 데이터 패킷으로부터 추출할 수 있다. 이러한 제공 시간은 메시지가 담고 있는 미디어 데이터가 렌더링되어야만 하는 시간을 나타낸다. 제공 시간을 추출한 후에, 수신측 디바이스는 제공 시간과 일치하는 때에 미디어 데이터를 렌더링시킨다. 예를 들어, 수신측 디바이스는 로컬 재생 디바이스에 의한 재생을 위해 미디어 데이터를 버퍼링할 수 있거나, 재생을 위해 메시지를 다른 미디어 노드로 포워딩할 수 있다. 제공 시간과 "일치"하는 현재 시간이 현재 시간과 제공 타임스탬프 간의 동등성을 포함할 수 있지만 다른 형태의 일치도 포함할 수 있다는 것을 잘 알 것이다. 예를 들어, 다양한 실시예들에서, "현재 시간 - 존속된 최소 오프셋 값"이 제공 타임스탬프와 일치할 때 현재 시간이 일치한다. 그에 부가하여 또는 다른 대안으로서, 일치하는지에 대한 비교는 고정된 지연 값을 가산하거나, 차감하거나, 다른 방식으로 고려한다. 로컬 클록, 제공 타임스탬프, 및 다른 어쩌면 이용가능한 값들에 기초하여 재생을 위한 적절한 때를 결정하는 다양한 다른 방법들이 명백할 것이다. 게다가, 최소 오프셋 값에 기초하여 현재 시간이 제공 시간과 일치한다는 개념은 최소 오프셋 값에 의해 이전에 수정되었지만 최소 오프셋 값을 명확하게 고려하지 않은 로컬 클록을 이용한 비교들을 포함한다는 것을 잘 알 것이다. 다양한 실시예들은 데이터가 적절한 때에 출력되도록 하기 위해 출력 직전에 이러한 비교를 수행한다. 다른 실시예들은 미디어가 제공 시간에 재생될 가능성이 있는 위치에서 미디어 데이터를 재생 버퍼에 삽입하기 위해 이러한 비교를 사용한다. 이러한 삽입은, 재생의 타이밍을 조절하기 위해, 미디어 데이터의 삽입 이전에 "더미" 데이터의 삽입을 수반할 수 있다. 버퍼에서 데이터의 재생 타이밍을 제어하는 다양한 부가의 방법들이 명백할 것이다.
도 11은 하한 오프셋을 결정하는 한 예시적인 방법(1100)을 나타낸 것이다. 앞서 살펴본 바와 같이, 다양한 대안의 실시예들은 그에 부가하여, 보다 나은 클록 오프셋 추정치들을 결정하기 위해, 비콘 플러딩 및 미디어 패킷들의 분석 이전에 하한 오프셋을 설정한다. 예시적인 방법(1100)은, 예를 들어, 예시적인 환경(100)의 미디어 게이트웨이(104) 또는 다른 미디어 노드(104, 106)와 같은 수신측 미디어 디바이스로서 기능하는 임의의 미디어 디바이스에 의해 수행될 수 있다. 방법(1100)은 예시적인 방법(700)의 단계(710)의 일부로서 또는 미디어 디바이스들 간의 타이밍 파라미터들의 동기화가 적절한 임의의 때에 수행될 수 있다.
방법(1100)은 단계(1105)에서 시작하고, 수신측 디바이스가, 송신측 디바이스로부터 핸드쉐이크 메시지를 수신함으로써 하한을 계산하기 위해, 수신측 디바이스와 송신측 디바이스 사이의 왕복 이동으로부터 타임스탬프들을 수집하기 시작하는 단계(1110)로 진행할 수 있다. 다양한 실시예들에서, 핸드쉐이크 메시지는 비콘 메시지들 또는 미디어 데이터 패킷들이 송신되는 채널과 상이한 채널을 통해 전송된다. 예를 들어, 핸드쉐이크 메시지는 블루투스 채널을 통해 전송될 수 있는 반면, 비콘 메시지들 및 미디어 데이터 패킷 메시지들은 WiFi 채널을 통해 전송될 수 있다. 이용되는 핸드쉐이크 프로토콜의 일부로서, 송신기는 송신기가 핸드쉐이크 메시지를 전송한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t1을 핸드쉐이크 메시지에 포함시킨다. 이어서, 단계(1115)에서, 단계(1110)에서의 핸드쉐이크 메시지의 수신에 가까운 때에, 수신기는 수신기 클록에 따른 수신 타임스탬프 t2를 기록한다.
그 다음에, 수신기 디바이스는, 단계(1120)에서, 수신기가 핸드쉐이크 메시지를 송신기로 재송신하는 시간을 나타내는, 수신기 클록에 따른 타임스탬프 t3를 발생시킴으로써, 핸드쉐이크 메시지를 다시 송신기 디바이스로 전송할 준비를 한다. 일부 실시예들에서, 수신기는 타임스탬프 t3를 송신기로부터 수신된 핸드쉐이크 메시지에 또는 새로 발생된 핸드쉐이크 메시지에 삽입시킬 수 있다. 이어서, 단계(1125)에서, 타임스탬프 t4의 발생에 가까운 때에, 수신기는 핸드쉐이크 메시지를 송신기로 전송한다. 그 다음에, 단계(1130)에서, 수신기는 핸드쉐이크 메시지를 다시 송신기로부터 수신할 수 있다. 송신기가 핸드쉐이크 메시지를 처리하는 것의 일부로서, 핸드쉐이크 메시지는 이제 송신기가 핸드쉐이크 메시지를 수신한 시간을 나타내는, 송신기 클록에 따른 타임스탬프 t4를 포함한다.
이하에서 설명할 것인 바와 같이, 4개의 타임스탬프들 t1 내지 t4는 하한 오프셋을 계산하는 데 사용될 수 있다. 그렇지만, 어떤 실시예들에서, 수신기 디바이스는 먼저, 핸드쉐이크 프로세스 동안의 네트워크 지연이 정확한 또는 그렇지 않으면 허용가능한 하한을 제공하기에 충분히 낮은지를 결정하기 위해, 핸드쉐이크 메시지가 경험한 네트워크 통과 시간을 계산하는 데 타임스탬프들 t1 내지 t4를 사용한다. 그에 따라, 수신기 디바이스는, 단계(1135)에서, 하기의 식을 사용하여 통과 시간을 계산한다: 통과 시간 = ((t2-t1)+(t4-t3))/2. 그 다음에, 수신기는, 예를 들어, 통과 시간이 사전 결정된 임계치 미만인지를 결정함으로써, 계산된 통과 시간이 허용가능한지를 결정한다. 계산된 통과 시간이 허용가능하지 않은 경우, 수신기 디바이스는, 단계(1145)에서, 핸드쉐이크 프로세스를 재시도하라고 송신기에 지시하고, 프로세스를 재시도하기 위해 단계(1110)로 루프백한다. 다른 한편으로, 네트워크 통과 시간이 허용가능한 경우, 수신기는, 단계(1150)에서, 타임스탬프들을 사용하여 이하의 식을 사용해 하한 오프셋을 계산한다: 하한 오프셋 = ((t2-t1)-(t4-t3))/2. 본 방법은 이어서 단계(1155)에서 종료한다.
일부 실시예들에서, 수신기 디바이스에 의해 생성된 타임스탬프들이 송신기 디바이스에 의해 생성된 타임스탬프들보다 작도록 송신기 클록이 수신기 클록보다 늦어질 수 있다는 것이 명백할 것이다. 상기 하한 클록 오프셋 식이 계산된 값의 부호에 기초하여 클록 조절의 방향을 나타낼 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 수신기 디바이스는, 상대 조절 방향이 아니라 크기만이 비교되도록, 어느 오프셋이 보다 나은 추정인지를 결정하기 위해 다양한 계산된 오프셋들을 비교할 때 절대값들을 이용할 수 있다.
다양한 실시예들에서, 수신측 디바이스는 동기화를 재확립시키기 위해 방법(1100)을 주기적으로 수행한다. 어떤 이러한 실시예들에서, 수신측 디바이스는 클록을 그의 원래의 값으로 리셋시키거나, 저장된 하한 오프셋 값을 삭제하거나, 그렇지 않으면 방법(1100)의 이전의 실행들에 기초하여 행해진 임의의 변경들을 "롤백"시켜 클록 오프셋을 결정하는 일을 "다시 시작"한다. 하한 오프셋을 주기적으로 재설정하는 것에 의해, 수신측 디바이스는 송신측 디바이스 클록과 수신측 디바이스 클록 사이의 클록 드리프트를 더 잘 참작할 수 있다.
이상의 내용을 바탕으로, 다양한 실시예들은 가변 지연들을 나타내는 네트워크들에 속하는 미디어 디바이스들 간의 미디어 재생의 동기화를 가능하게 한다. 예를 들어, 수신측 디바이스가 복수의 메시지들로부터 최소 클록 오프셋을 식별하는 단방향 동기화 방법을 구현하는 것에 의해, 클록 동기화에 대한 가변 지연의 효과들이 감소될 수 있다. 게다가, 미디어 스트림이 시작된 후에 보다 나은 동기화 파라미터들을 계속하여 탐색하는 것에 의해, 수신측 디바이스는 클록 드리프트를 참작하면서 동기화를 개선시킬 수 있다. 이상의 내용을 바탕으로, 다양한 부가의 장점들이 명백할 것이다.
본 발명의 다양한 예시적인 실시예들이 하드웨어로 구현될 수 있다는 것이 이상의 설명으로부터 명백할 것이다. 게다가, 다양한 예시적인 실시예들이 본 명세서에 상세히 기술된 동작들을 수행하기 위해 적어도 하나의 프로세서에 의해 판독되어 실행될 수 있는, 기계 판독가능 저장 매체에 저장된 명령어들로서 구현될 수 있다. 기계 판독가능 저장 매체는 개인용 또는 랩톱 컴퓨터, 서버, 또는 기타 컴퓨팅 디바이스와 같은 기계에 의해 판독가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 이와 같이, 유형적(tangible) 및 비일시적(non-transitory) 기계 판독가능 저장 매체는 ROM(read-only memory), RAM(random-access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들, 및 유사한 저장 매체를 포함할 수 있다. 게다가, 본 명세서에서 사용되는 바와 같이, "프로세서"라는 용어가 본 명세서에 기술된 기능들을 수행할 수 있는 마이크로프로세서, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 임의의 다른 디바이스를 포함한다는 것을 잘 알 것이다.
통상의 기술자라면 본 명세서에서의 임의의 블록도들이 본 발명의 원리들을 구현하는 예시적인 회로의 개념적 관점들을 나타내고 있다는 것을 잘 알 것이다. 마찬가지로, 임의의 플로우차트들, 흐름도들, 상태 천이도들, 의사 코드, 기타가 기계 판독가능 매체에 실질적으로 표현되어 있을 수 있고 따라서 컴퓨터 또는 프로세서에 의해(이러한 컴퓨터 또는 프로세서가 명확히 도시되어 있든 그렇지 않든 간에) 실행될 수 있는 다양한 프로세스들을 나타낸다는 것을 잘 알 것이다.
다양한 예시적인 실시예들이 그의 특정의 예시적인 측면들을 특히 참조하여 상세히 기술되어 있지만, 본 발명이 다른 방식들로 실시될 수 있고 그의 상세들이 다양한 명백한 점들에서 수정될 수 있다는 것을 잘 알 것이다. 통상의 기술자에게는 즉각 명백한 바와 같이, 본 발명의 사상 및 범주 내에 있으면서 변형들 및 수정들이 실시될 수 있다. 그에 따라, 상기 개시 내용, 설명, 및 도면들은 단지 예시를 위한 것이며, 청구범위에 의해서만 한정되는 본 발명을 결코 제한하지 않는다.
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: 렌더러 명령어들

Claims (15)

  1. 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법에 있어서,
    상기 수신측 미디어 디바이스에서, 복수의 메시지들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 - 을 상기 송신측 미디어 디바이스로부터 수신하는 단계;
    상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키는 단계;
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계;
    상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 클록 오프셋 값을 차감함으로써 상기 클록의 값을 수정하는 단계;
    재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간(presentation time)을 찾아내는 단계; 및
    상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간 - 상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값을 포함함 - 에서 상기 제1 미디어 데이터를 렌더링시키는 단계를
    포함하는, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
  2. 제1항에 있어서, 최소 클록 오프셋 값을 식별하는 단계는,
    상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키는 단계;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정하는 단계;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키는 단계;
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하는 단계; 및
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 클록 오프셋 값과 같도록 설정하는 단계를
    포함하는, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
  3. 삭제
  4. 제1항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 방법은,
    상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도(measure)를 발생시키는 단계;
    상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하는 단계;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하는 단계;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키는 단계;
    상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하는 단계를
    더 포함하고,
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하는 단계는 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하는 단계를 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
  5. 제1항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 방법은,
    상기 송신측 미디어 디바이스가 상기 제1 복수의 메시지들을 전송하는 단계;
    상기 송신측 미디어 디바이스가 상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키는 단계;
    상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하는 단계;
    상기 송신측 미디어 디바이스가, 상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하는 단계;
    상기 송신측 미디어 디바이스가 상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키는 단계; 및
    상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하는 단계를
    더 포함하는 것인, 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키는 방법.
  6. 송신측 미디어 디바이스와 미디어 재생을 동기화시키는 수신측 미디어 디바이스에 있어서,
    재생을 위한 미디어 데이터를 저장하도록 구성된 메모리;
    상기 송신측 미디어 디바이스와 통신하도록 구성된 네트워크 인터페이스; 및
    프로세서를
    포함하고,
    상기 프로세서는,
    상기 네트워크 인터페이스를 통해, 복수의 메시지들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 - 을 상기 송신측 미디어 디바이스로부터 수신하고;
    상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키고;
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하고;
    상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 클록 오프셋 값을 차감함으로써 상기 클록의 값을 수정하고;
    재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내며;
    상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간 - 상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값을 포함함 - 에서 상기 제1 미디어 데이터를 렌더링시키도록 구성되는 것인, 수신측 미디어 디바이스.
  7. 제6항에 있어서, 최소 클록 오프셋 값을 식별할 때, 상기 프로세서는,
    상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키고;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정하고;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키고;
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하며;
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 클록 오프셋 값과 같도록 설정하도록 구성되는 것인, 수신측 미디어 디바이스.
  8. 삭제
  9. 제6항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 프로세서는 또한,
    상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키고;
    상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하고;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하고;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키며;
    상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하도록 구성되고,
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별할 때, 상기 프로세서는 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하도록 구성되는 것인, 수신측 미디어 디바이스.
  10. 시스템에 있어서,
    제6항의 상기 수신측 미디어 디바이스 - 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함함 -; 및
    상기 송신측 미디어 디바이스를
    포함하고,
    상기 송신측 미디어 디바이스는,
    상기 수신측 미디어 디바이스와 통신하도록 구성된 송신측 미디어 디바이스 네트워크 인터페이스; 및
    송신측 미디어 디바이스 프로세서를
    포함하고,
    상기 송신측 미디어 디바이스 프로세서는,
    상기 제1 복수의 메시지들을 전송하고,
    상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키고,
    상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하고,
    상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하고,
    상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키며,
    상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하도록 구성되는 것인, 시스템.
  11. 송신측 미디어 디바이스와 수신측 미디어 디바이스 사이에서 미디어 재생을 동기화시키기 위해 수신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩된 비일시적 기계 판독가능 저장 매체에 있어서,
    상기 수신측 미디어 디바이스에서, 복수의 메시지들을 상기 송신측 미디어 디바이스로부터 수신하기 위한 명령어들 - 상기 복수의 메시지들은 복수의 송신기 타임스탬프들을 포함함 -;
    상기 복수의 송신기 타임스탬프들 및 상기 수신측 미디어 디바이스의 클록에 기초하여 복수의 클록 오프셋 값들을 발생시키기 위한 명령어들;
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하기 위한 명령어들;
    상기 수신측 미디어 디바이스의 클록의 값으로부터 상기 최소 클록 오프셋 값을 차감함으로써 상기 클록의 값을 수정하기 위한 명령어들;
    재생을 위한 제1 미디어 데이터 및 상기 제1 미디어 데이터와 연관된 제1 제공 시간을 찾아내기 위한 명령어들; 및
    상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 제1 시간에서 상기 제1 미디어 데이터를 렌더링시키기 위한 명령어들 - 상기 최소 클록 오프셋 값에 기초하여 상기 제1 제공 시간과 일치하는 상기 제1 시간은 상기 제1 제공 시간과 일치하는 상기 클록의 값을 포함함 - 을 포함하는, 비일시적 기계 판독가능 저장 매체.
  12. 제11항에 있어서, 최소 클록 오프셋 값을 식별하기 위한 상기 명령어들은,
    상기 복수의 클록 오프셋 값들 중 제1 클록 오프셋 값을 발생시키기 위한 명령어들;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정하기 위한 명령어들;
    상기 최소 클록 오프셋 값을 상기 제1 클록 오프셋 값과 같도록 설정한 후에 상기 복수의 클록 오프셋 값들 중 제2 클록 오프셋 값을 발생시키기 위한 명령어들;
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다고 결정하기 위한 명령어들; 및
    상기 제2 클록 오프셋 값이 상기 최소 클록 오프셋 값보다 작다는 결정에 기초하여 상기 최소 클록 오프셋 값을 상기 제2 클록 오프셋 값과 같도록 설정하기 위한 명령어들을 포함하는 것인, 비일시적 기계 판독가능 저장 매체.
  13. 삭제
  14. 제11항에 있어서, 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함하고, 상기 매체는 또한,
    상기 제1 복수의 메시지들이 도착하는 간격들의 제1 척도를 발생시키기 위한 명령어들;
    상기 제1 복수의 메시지들이 도착하는 간격들의 상기 제1 척도가 네트워크가 불안정함을 나타낸다고 결정하기 위한 명령어들;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시하기 위한 명령어들;
    부가의 메시지들을 전송하라고 상기 송신측 미디어 디바이스에게 지시한 후에 상기 제2 복수의 메시지들이 도착하는 간격들의 제2 척도를 발생시키기 위한 명령어들; 및
    상기 제2 복수의 메시지들이 도착하는 간격들의 상기 제2 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하기 위한 명령어들을 포함하고,
    상기 복수의 클록 오프셋 값들 중에서 최소 클록 오프셋 값을 식별하기 위한 상기 명령어들은 상기 제2 복수의 메시지들과 연관된 상기 복수의 클록 오프셋 값들 중 적어도 하나의 클록 오프셋 값을 이용하기 위한 명령어들을 포함하는 것인, 비일시적 기계 판독가능 저장 매체.
  15. 비일시적 기계 판독가능 매체 세트(set)에 있어서,
    제11항의 상기 비일시적 기계 판독가능 저장 매체 - 상기 복수의 메시지들은 제1 복수의 메시지들 및 제2 복수의 메시지들을 포함함 -; 및
    상기 송신측 미디어 디바이스가 실행하기 위한 명령어들로 인코딩된 부가의 비일시적 기계 판독가능 저장 매체를
    포함하고,
    상기 부가의 비일시적 기계 판독가능 저장 매체는,
    상기 제1 복수의 메시지들을 전송하기 위한 명령어들;
    상기 제1 복수의 메시지들의 전송과 연관된 제1 네트워크 성능 척도를 발생시키기 위한 명령어들;
    상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다고 결정하기 위한 명령어들;
    상기 제1 네트워크 성능 척도가 네트워크가 불안정함을 나타낸다는 결정에 기초하여, 상기 제2 복수의 메시지들을 전송하기 위한 명령어들;
    상기 제2 복수의 메시지들의 전송과 연관된 제2 네트워크 성능 척도를 발생시키기 위한 명령어들; 및
    상기 제2 네트워크 성능 척도가 상기 네트워크가 안정적임을 나타낸다고 결정하기 위한 명령어들을
    포함하는 것인, 비일시적 기계 판독가능 매체 세트.
KR1020157009458A 2012-09-14 2013-09-12 재생 동기화 KR102132309B1 (ko)

Applications Claiming Priority (5)

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

Publications (2)

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

Family

ID=50278689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157009458A KR102132309B1 (ko) 2012-09-14 2013-09-12 재생 동기화

Country Status (3)

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

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9866596B2 (en) 2015-05-04 2018-01-09 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US10015216B2 (en) * 2015-08-06 2018-07-03 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US9906572B2 (en) 2015-08-06 2018-02-27 Qualcomm Incorporated Methods and systems for virtual conference system using personal communication devices
US10158905B2 (en) * 2016-09-14 2018-12-18 Dts, Inc. Systems and methods for wirelessly transmitting audio synchronously with rendering of video
CN110383236A (zh) * 2017-02-15 2019-10-25 亚马逊技术股份有限公司 对主装置进行选择以实现同步音频
US10264358B2 (en) 2017-02-15 2019-04-16 Amazon Technologies, Inc. Selection of master device for synchronized audio
GB201703796D0 (en) 2017-03-09 2017-04-26 Decawave Ltd Remote signal synchronization
US11784839B2 (en) * 2019-12-31 2023-10-10 Dish Network Technologies India Private Limited Dynamic low latency mode for a digital video production system
KR102181005B1 (ko) * 2020-01-06 2020-11-19 쉐어잇 주식회사 시간 동기화 기능을 갖는 방송 시스템 및 방법
US11178202B2 (en) * 2020-03-16 2021-11-16 Apple Inc. Clock compensation for streaming media systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100034103A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Robust Jitter-Free Remote Clock Offset Measuring Method
US20110276648A1 (en) * 2010-05-07 2011-11-10 Microsoft Corporation Clock synchronization for shared media playback

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3201313B2 (ja) * 1997-08-01 2001-08-20 日本ビクター株式会社 データ伝送システム及び再生装置
JP3544963B2 (ja) * 2001-09-20 2004-07-21 株式会社東芝 同期再生のための方法および装置
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 (ru) * 2003-10-27 2005-06-20 Общество с ограниченной ответственностью "Алгоритм" Способ радиосвязи в беспроводной локальной сети
JP4467478B2 (ja) * 2005-07-13 2010-05-26 シャープ株式会社 伝送装置および時刻同期方法
WO2007036046A1 (en) * 2005-09-30 2007-04-05 Research In Motion Limited Methods and apparatus for dynamically adjusting a data packet window size for data packet transmission in a wireless communication network
EP1808993A3 (en) * 2005-12-08 2007-08-01 Electronics and Telecommunications Research Institute Transmission apparatus having a plurality of network interfaces and transmission method using the same
JP4777224B2 (ja) * 2006-12-01 2011-09-21 三菱電機株式会社 データ再生装置及びデータ再生方法
JP5167862B2 (ja) * 2008-02-27 2013-03-21 日本電気株式会社 クロック同期システム、クロック同期方法、プログラム、及び記録媒体
US8473638B2 (en) * 2008-05-02 2013-06-25 James Aweya Method and apparatus for time and frequency transfer in communication networks
JP2009272945A (ja) * 2008-05-08 2009-11-19 Victor Co Of Japan Ltd 同期再生装置
EP2630805A2 (en) * 2010-10-22 2013-08-28 Phorus LLC Media distribution architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100034103A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Robust Jitter-Free Remote Clock Offset Measuring Method
US20110276648A1 (en) * 2010-05-07 2011-11-10 Microsoft Corporation Clock synchronization for shared media playback

Also Published As

Publication number Publication date
JP2019024214A (ja) 2019-02-14
JP7391500B2 (ja) 2023-12-05
JP2015536064A (ja) 2015-12-17
KR20150055031A (ko) 2015-05-20
WO2014043405A1 (en) 2014-03-20

Similar Documents

Publication Publication Date Title
US9237324B2 (en) Playback synchronization
KR102132309B1 (ko) 재생 동기화
US10757466B2 (en) Multimode synchronous rendering of audio and video
JP6640359B2 (ja) ワイヤレスオーディオ同期
US20120099594A1 (en) Media distribution architecture
US9832507B2 (en) System and method for synchronizing media output devices connected on a network
CN101809906B (zh) 同步互连网络中的相关数据流
US20190089760A1 (en) Systems and methods for real-time content creation and sharing in a decentralized network
JP2020521410A (ja) リアルタイムオーディオおよびデータを提供するためのシステムおよび方法
US20200014969A1 (en) User interface for multimode synchronous rendering of headphone audio and video
CN104813303B (zh) 回放同步
EP3281317B1 (en) Multi-layer timing synchronization framework
US11876847B2 (en) System and method for synchronizing networked rendering devices
US10925014B2 (en) Method and apparatus for synchronization in a network
US10805664B2 (en) Wireless audio synchronization
JP2009077108A (ja) 受信装置、受信方法およびコンピュータプログラム

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