Re: synchronized music playback across multiple renderers
- From: Jonathon Conte <anotherjonathon gmail com>
- To: Rygel Mailing List <rygel-list gnome org>
- Subject: Re: synchronized music playback across multiple renderers
- Date: Tue, 29 Jan 2013 11:39:09 -0800
On Tue, Jan 29, 2013 at 4:39 AM, Jens Georg <mail jensge org> wrote:
> I have not seen this feature in the UPnP spec. Can you point me to that,
> please?
>
> (This also means: No, we don't implement that)
>
In a documented titled UPnP AV Architecture:1 for UPnP Version 1.0
(published June 25, 2002), one of the explicitly stated non-goals is
"Synchronized playback to multiple rendering devices" (page 3). This
position was reiterated in a revision of the same document published
September 30, 2008 (page 5).
http://upnp.org/specs/av/UPnP-av-AVArchitecture-v1-20020625.pdf
http://upnp.org/specs/av/UPnP-av-AVArchitecture-v1-20080930.pdf
However, in a later document titled UPnP AV Architecture:2 for UPnP
Version 1.0 (published December 31, 2010), "Synchronized playback to
multiple rendering devices." has been moved to the list of goals (page
4). In the section titled "Advanced Playback Scenarios," the document
goes into detail about its implementation (page 29):
http://upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf
"5.1. Synchronized playback
It is possible to instruct one or more MediaRenderers to start playing
back of a Content Item at a specific time. The same can be done for
operations such as pausing and stopping. These operations are possible
using the AVTransport::SyncPlay(), AVTransport::SyncPause() and
AVTransport::SyncStop() actions. The pre-condition is that the
different MediaServers and MediaRenderers in the home are synchronized
to the same master clock and support the appropriate clock
synchronization protocol (such as NTP, IEEE 802.1AS). Information
about the clock synchronization of the different devices can be
obtained by the control point using the
ContentDirectory::GetFeatureList() action and the
ConnectionManager::GetFeatureList() action for MediaServers and the
ConnectionManager::GetFeatureList() action for MediaRenderers.
In order to determine if the MediaServer is capable of streaming
synchronized content, the control point uses the content’s
upnp:resExt::clockSync@deviceClockInfoID and upnp:resExt::clockSync
@supportedTimestampsID properties to locate the specific details about
the synchronization protocol that will be used. The control point does
this via the MediaServer’s ConnectionManager service <Feature> element
containing the CLOCKSYNC feature within the MediaServer’s feature
list. Specifically, the control point finds the <DeviceClockInfo> and
<supportedTimestamps> elements whose @id values match the content’s
upnp:resExt::clockSync@deviceClockInfoID and upnp:resExt::clockSync
@supportedTimestampsID property values, respectively. Consequently,
the control point identifies the clock sync protocol (e.g. 802.1AS),
timestamp mechanism (e.g. ‘RTP-1733’) and the ID of the master clock
to whom the MediaServer’s internal clock is synchronized.
Then, by examining the MediaRenderer’s <DeviceClockInfo> element
within the <Feature> element containing the CLOCKSYNC feature from the
MediaRenderer’s ConnectionManager service feature list, the control
point determines that the MediaRenderer supports CLOCKSYNC feature,
and identifies the clock sync protocol (802.1AS), timestamp mechanism
(e.g.‘RTP-1733’) and the ID of the master clock to whom the
MediaRenderer’s internal clock is synchronized.
Based on the comparison of information from the MediaRenderer and the
MediaServer, the control point derives the conclusion whether the
selected content can be played on the specified MediaRenderer in a
precision time-synchronized manner.
As described above, the control point can invoke the
ConnectionManager::GetFeatureList() action in order to determine the
specific details of the synchronized playback supported by the device
hosting the ConnectionManager service. The <syncProtocolID> element of
the <Feature> element containing the CLOCKSYNC feature enumerates the
clock synchronization protocol that was used to synchronize the
implementation’s local time-of-day clock. The possible clock
synchronization protocols include 802.1AS, NTP (Network Timing
Protocol) and SNTP (Simple Network Timing Protocol) protocols. 802.1AS
clock synchronization protocol enables precision synchronization
(accuracy exceeding 1 micro-second), thus enabling usages such as
synchronized audio and video playback. For other usages such as party
music being piped to multiple rooms, NTP and SNTP protocols may
provide sufficient clock synchronization accuracy.
Similarly, the <masterClockID> element of the <Feature> element
containing the CLOCKSYNC feature identifies the master clock to which
this implementation has synchronized its local time-of-day clock.
Depending on the clock synchronization protocol, the <masterClockID>
element specifies either the 8-byte binary sequence (<High 24-bits
MAC> 0xFF 0xFE <Low 24-bits MAC>) in case of 802.1AS, or the URL of
the time server in case of NTP or SNTP."
Jonathon
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]