Professional Documents
Culture Documents
RVU - Protocol - Specification - V1 - 0 - Rev1 - 51 FINAL May 2014
RVU - Protocol - Specification - V1 - 0 - Rev1 - 51 FINAL May 2014
RVU - Protocol - Specification - V1 - 0 - Rev1 - 51 FINAL May 2014
Protocol Specification
RVU Alliance
CONFIDENTIAL
Revision History
Revision Description Date
V1.0 Rev 0.9 DIRECTV Contribution to the RVU Alliance. 2009-09-18
DRAFT
V1.0 Rev 1.0 1.1.8 – added client/server setup summary 2009-12-03
FINAL 4.2.1, 4.2.2 – added sequencing requirements on single and multiple channels
4.8.2.3.16-1 – add transparent and substitute actions
5.2.1.5, 5.2.1.8, 5.2.1.16, 5.2.1.24 – specify PAUSED_PLAYBACK state on
rewind to zero time position
5.6.5, 5.7, 5.8 – removed references to DIRECTV_HD_AC3,
DIRECTV_HD_AC3_T
9.2 – made mandatory the client implementation of the Connection Manager
actions PrepareForConnection and ConnectionComplete
11.3 Clean up device description XML
Misc clarifications, naming, parameter, reference errata
removed DIRECTV references where possible
V1.0 Rev 1.1 4.5, 4.5-7 – note that the background is always behind the video buffer in the z- 2010-03-31
DRAFT list, which is in turn always behind the display buffer
4.8.1.3, 4.8.2.3.9 – 4.8.2.3.15 – remove references to hardware acceleration
4.8.2.3.17, 4.8.2.3.19 – make SetZList command optional
4.8.2.5 – clarify that output units refer to the output canvas, not the video or
display buffer
4.8.2.5.10 – make BlindVideo transparent to background instead of black
5.2.1.5, 5.2.1.8, 5.2.1.16, 5.2.1.24 – specify STOPPED state on rewind to zero
time position, also reset absoluteTimePosition to 0, and event LastChange
Misc syntax errata, clarifications, references, and table captions throughout
Table of Contents
1 RVU – An Introduction ......................................................................................................................... 20
1.1 Document Organization ................................................................................................................. 21
1.1.1 Addressing, Discovery, and Description ............................................................................... 21
1.1.2 Session Management ............................................................................................................ 22
1.1.3 Remote User Interface .......................................................................................................... 22
1.1.4 Media Transfer ...................................................................................................................... 22
1.1.5 QoS and Diagnostics ............................................................................................................. 22
1.1.6 Client Image Acquisition ........................................................................................................ 23
1.1.7 UPnP Templates ................................................................................................................... 23
1.1.8 Client/server setup summary................................................................................................. 23
1.2 Acronyms ....................................................................................................................................... 24
2 Addressing, Discovery, and Description .............................................................................................. 26
2.1 Standards ....................................................................................................................................... 26
2.1.1 RVU-Specific Settings ........................................................................................................... 26
2.2 UPnP Devices and Services .......................................................................................................... 27
2.2.1 RVU Client ............................................................................................................................. 28
2.2.2 RVU Server ........................................................................................................................... 29
2.2.3 Versioning.............................................................................................................................. 29
3 Session Management .......................................................................................................................... 31
3.1 Standards ....................................................................................................................................... 31
3.2 Establishment of Sessions ............................................................................................................. 31
3.2.1 Client-Server Association ...................................................................................................... 31
3.2.2 User Interfaces/RUI ............................................................................................................... 33
3.2.3 Examples ............................................................................................................................... 34
4 Remote User Interface ......................................................................................................................... 36
4.1 Standards ....................................................................................................................................... 36
4.1.1 Conventions........................................................................................................................... 36
4.2 Connections (Channels)................................................................................................................. 36
4.2.1 Command Channels .............................................................................................................. 39
4.2.2 Data Channels ....................................................................................................................... 40
4.3 Session Startup and Teardown Sequences................................................................................... 42
4.3.1 Session Startup ..................................................................................................................... 42
4.3.2 Session Teardown ................................................................................................................. 44
4.4 Timing............................................................................................................................................. 45
4.5 Buffers ............................................................................................................................................ 46
4.6 Audio .............................................................................................................................................. 48
4.7 User Inputs ..................................................................................................................................... 49
4.7.1 Key Event Commands ........................................................................................................... 49
4.7.2 Security.................................................................................................................................. 50
4.8 Commands ..................................................................................................................................... 51
4.8.1 Summary ............................................................................................................................... 51
V1.0 Rev 1.5.1 7 of 262
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Table of Contents
List of Figures
Figure 1-1: RVU Sub-Protocol Sequence ................................................................................................... 20
Figure 2-1: RVU UPnP Devices and Services ............................................................................................ 28
Figure 3-1: Session Management Flow ...................................................................................................... 31
Figure 3-2: Server Selection Flow ............................................................................................................... 33
Figure 4-1: Session Startup Sequence ....................................................................................................... 44
Figure 4-2: MultiSourceBlendBlit Implementation ....................................................................................... 81
Figure 4-3: Half-Resolution Side-by-Side Output Canvas Display Using ReconfigureDisplayBuffer3DTV
command (4.8.2.5.18.1 example) ............................................................................................................. 118
Figure 4-4: Half and Full-Resolution Side-by-Side Viewer Display during Left Eye Mapping time Period
Using ReconfigureDisplayBuffer3DTV command (4.8.2.5.18.1 example) ................................................ 119
Figure 4-5: Half and Full-Resolution Side-by-Side Viewer Display during Right Eye Mapping time Period
Using ReconfigureDisplayBuffer3DTV command (4.8.2.5.18.1 example) ................................................ 120
Figure 4-6: Startup, No Video Sequence .................................................................................................. 138
Figure 4-7: Startup, One Video Sequence ................................................................................................ 139
Figure 4-8: Single Video, Aspect Change Sequence ............................................................................... 139
Figure 4-9: Single Video, Output Format Change Sequence ................................................................... 140
Figure 5-1: Media Transfer Components .................................................................................................. 143
Figure 5-2: States and State Transitions .................................................................................................. 149
Figure 5-3: RVU AVTransport with Virtual Playing States ........................................................................ 151
Figure 5-4: No Media to Stopped Sequence ............................................................................................. 155
Figure 5-5: Stopped to Stopped (Ready) Sequence ................................................................................. 156
Figure 5-6: Stopped to Normal-Speed Playing Sequence ........................................................................ 158
Figure 5-7: Stopped to Playing Slow Sequence ....................................................................................... 160
Figure 5-8: Stopped to Playing Fast Sequence ........................................................................................ 163
Figure 5-9: Stopped to Stopped (Seek) Sequence ................................................................................... 165
Figure 5-10: Playing Slow to Normal-Speed Playing Sequence............................................................... 166
Figure 5-11: Playing Slow to Playing Fast Sequence ............................................................................... 168
Figure 5-12: Playing Slow to Paused Sequence ...................................................................................... 169
Figure 5-13: Playing Slow to Playing Slow (Seek) Sequence .................................................................. 171
Figure 5-14: Playing Fast to Normal-Speed Playing Sequence ............................................................... 173
Figure 5-15: Playing Fast to Playing Slow Sequence ............................................................................... 175
Figure 5-16: Playing Fast to Paused Sequence ....................................................................................... 176
Figure 5-17: Playing Fast to Playing Fast (Seek) Sequence .................................................................... 178
Figure 5-18: Normal-Speed Playing to Playing Slow Sequence............................................................... 179
Figure 5-19: Normal-Speed Playing to Playing Fast Sequence ............................................................... 181
Figure 5-20: Normal-Speed Playing to Paused Sequence ....................................................................... 182
Figure 5-21: Normal-Speed Playing to Normal-Speed Playing Sequence ............................................... 184
Figure 5-22: Playing to Stopped Sequence .............................................................................................. 185
Figure 5-23: Paused to Paused (Absolute Time Seek) Sequence ........................................................... 187
Figure 5-24: Paused (not from Fast Forward or Reverse) to Paused (Relative Seek) Sequence ........... 189
Figure 5-25: Paused (from Fast Forward or Reverse) to Paused (Relative Seek) Sequence ................. 190
Figure 5-26: Paused to Normal-Speed Playing Sequence ....................................................................... 192
Figure 5-27: Paused to Playing Slow Sequence....................................................................................... 193
Figure 5-28: Paused to Playing Fast Sequence ....................................................................................... 195
Figure 5-29: Paused to Stopped Sequence .............................................................................................. 196
Figure 5-30: Stopped to No Media Present Sequence ............................................................................. 197
Figure 5-31: Steady State HTTP Streaming with Sender Pacing ............................................................. 200
Figure 5-32: HTTP Connection Stalling Based Pause .............................................................................. 200
Figure 5-33: Invalid Pacing Information .................................................................................................... 200
Figure 6-1: Local UI Control Process ........................................................................................................ 210
Figure 7-1: Closed Network ...................................................................................................................... 216
Figure 7-2: Open Network ......................................................................................................................... 216
Figure 7-3: Multiple Servers ...................................................................................................................... 217
Figure 7-4: Example of RVU Isolation ....................................................................................................... 218
Figure 8-1: Client Image Acquisition Flow ................................................................................................ 222
Figure 8-2: CIA Flow: Boot Image Found on Server ................................................................................. 224
Figure 8-3: CIA Flow: Boot Image is Not Found on Server ...................................................................... 225
Figure 8-4: Initial Client Image Acquisition ................................................................................................ 226
Figure 8-5: Client Image Maintenance Initialization .................................................................................. 226
Figure 8-6: Client Image Maintenance ...................................................................................................... 227
Figure 11-1: RVU Server Structure ........................................................................................................... 245
Figure 13-1: ITU-R BO.1516 SYSTEM B Transport Stream with TTS support ........................................ 255
List of Tables
Table 4-1: Command not implemented response attributes ....................................................................... 40
Table 4-2: Data Channel Syntax ................................................................................................................. 42
Table 4-3: Data Channel Field Definitions .................................................................................................. 42
Table 4-4: Setup, Teardown, and Info commands ...................................................................................... 52
Table 4-5: User Input commands ................................................................................................................ 52
Table 4-6: Graphics commands .................................................................................................................. 53
Table 4-7: Local UI commands ................................................................................................................... 53
Table 4-8: Display commands..................................................................................................................... 54
Table 4-9: Audio commands ....................................................................................................................... 55
Table 4-10: Hello command attributes ........................................................................................................ 55
Table 4-11: Hello response attributes ......................................................................................................... 56
Table 4-12: Hello response error codes ...................................................................................................... 56
Table 4-13: Shutdown command attributes ................................................................................................ 56
Table 4-14: Shutdown response attributes ................................................................................................. 57
Table 4-15: Shutdown response error codes .............................................................................................. 57
Table 4-16: GetMemInfo command attributes ............................................................................................ 57
Table 4-17: GetMemInfo response attributes ............................................................................................. 58
Table 4-18: GetMemInfo response error codes .......................................................................................... 58
Table 4-19: Key Assignments ..................................................................................................................... 60
Table 4-20: HDMIKeyEvent command attributes........................................................................................ 60
Table 4-21: HDMIKeyEvent response attributes......................................................................................... 61
Table 4-22: HDMIKeyEvent response error codes ..................................................................................... 61
Table 4-23: CDIKeyEvent command attributes........................................................................................... 61
Table 4-24: CDIKeyEvent response attributes............................................................................................ 62
Table 4-25: CDIKeyEvent response error codes ........................................................................................ 62
Table 4-26: GetKeyList command attributes............................................................................................... 62
Table 4-27: GetKeyList response attributes ................................................................................................ 63
Table 4-28: GetKeyList response error codes ............................................................................................ 63
Table 4-29: AllocateBuffer command attributes .......................................................................................... 64
Table 4-30: AllocateBuffer response attributes ........................................................................................... 64
Table 4-31: AllocateBuffer response error codes ....................................................................................... 64
Table 4-32: DeallocateBuffer command attributes ..................................................................................... 65
Table 4-33: DeallocateBuffer response attributes ...................................................................................... 65
Table 4-34: DeallocateBuffer response error codes ................................................................................... 65
Table 4-35: Write command attributes ........................................................................................................ 66
Table 4-36: Write response attributes ......................................................................................................... 66
Table 4-37: Write response error codes ..................................................................................................... 66
1 RVU – An Introduction
This document describes an open protocol called RVU (pronounced “ar-view”). RVU leverages
technologies such as Universal Plug and Play (UPnP) and Digital Living Network Alliance
(DLNA) to enable communication between a media server and one or more clients.
This document details the specifications for RVU, broken down into six sub-protocols:
Addressing, Discovery, and Description
Session Management
Remote User Interface (RUI)
Media Transfer
Quality of Service (QoS) and Diagnostics
Client Image Acquisition (CIA)
An overview of the sequence of the required RVU sub-protocols is shown in Figure 1-1 below.
Boot Process
Discovery
Advertisement of devices and/or services.
Description
Exchange of full device and service information
between server and client.
Session Management
Establishment of remote user interface connection
between client and server.
Media Transfer
Transmission of renderable data (such as video
and audio) from server to client.
This document also describes the functionality required by an RVU media server, but only to
fully illustrate its connectivity with a client.
Throughout this document, specific terminology is used to refer to systems that use the RVU
protocol. These terms are common industry terms defined by UPnP and DLNA, among others.
For example, a detailed explanation of terms such as device, service, and control point can be
found in the Understanding Universal Plug and Play white paper [Ref3]. Knowledge of these
terms is assumed in this document.
where "1.1" is the section in which the requirement is found, "-1" is the requirement number, and
"RefY" is a document listed in the References section (see section 10 of this document).
The general organization of the document is summarized in the sections that follow.
References and requirements specific to RVU’s use of addressing, discovery, and description
are detailed in section 2.
RVU’s session management is based on the UPnP standard. For further elaboration, see
section 3.
Unlike other sub-protocols, RUI is designed specifically for the demands of RVU and is
completely unique. The details for RUI appear in this specification in section 4.
RVU’s application of media transfer is based substantially on the DLNA media transfer
requirements, which in turn make use HTTP (HyperText Transfer Protocol). RVU employs the
DLNA Two-Box Push Controller System Usage, with the server acting as the Push Controller
and each RVU client acting as a Digital Media Renderer (DMR). See section 5 for
specifications on extending RVU to the DLNA 3-box system usage.
The Media Transfer sub-protocol defines a set of state transitions that can be combined to
provide basic content delivery, trick play, alternate audio selection, and handling of unauthorized
content (such as a movie that hasn’t been purchased).
Media Transfer uses Digital Transmission Content Protection (DTCP) to ensure secure
transmission of streamed data. Media Transfer also defines how to maintain clock
synchronization.
RVU uses prioritized QoS based on the DLNAQOS model. To monitor QoS throughout the
system, diagnostic tools must be available. Diagnostic tools are defined for both automated
system maintenance and user-initiated troubleshooting.
The CIA sub-protocol of RVU is optional for clients utilizing RVU, but is required for RVU
servers. For more information, see section 8.
References to the templates for the UPnP devices and services employed by the RVU server
and the RVU client can be found in section 9 of this document. The template for the RVUServer
device can be found in section 11. The template for the ClientImageManager service can be
found in section 12.
2. When a client discovers a server having both DHCP and AutoIP IP addresses, the client
should connect to the server for RVU communications using the AutoIP address. This
should isolate RVU communications from network disturbances caused by user
configuration of the router that supplied the DHCP address.
3. The client invokes GetCompatibleUIs on the server's RUI service, see 3.2.2.
4. The server's response includes a port to use for channel connections, see 3.2.2 and
3.2.3.2.
Note: Steps 3 and 4 are collectively referred to as establishing a RUI connection.
5. The client makes an initial RUI command-channel connection to that port and continues
with any other RUI startup, see chapter 4.
6. The server does a UPnP search for (or has already found/cached) the client's UPnP
MediaRenderer device (and its associated ConnectionManager and AVTransport
services). It can identify this by matching the incoming IP address from the client's RUI
channel with the IP address of the UPnP device.
8. The server invokes the RUI GetVideoBuffer command with the AVTransportID provided
by the PrepareForConnection response. The server can now position where the video is
V1.0 Rev 1.5.1 23 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol RVU – An Introduction
11. The client makes an HTTP request to the URI that was specified in the
SetAVTransportURI call, thereby starting video, see 5.2.1.3.
1.2 Acronyms
Term Stands for
3DTV Stereoscopic 3D TV (left and right eye video and graphics), i.e. not 3D
graphics (e.g. OpenGL)
AAC Advanced Audio Coding
ABNT Associação Brasileira de Normas Técnicas (English: Brazilian National
Standards Organization)
AKE Authentication and Key Exchance – a DTCP process
ARGB Alpha Red Green Blue - a color graphics composition scheme
ARIB Association of Radio Industries and Businesses – a standard org for digital
television broadcasting.
ATSC Advanced Television Systems Committee – a standards org for digital
television broadcasting
AV “Audio with Video" – media content that contains moving pictures and sound
AVC Advanced Video Coding – refers to the H.264 video codec
CC Closed Captioning
CIA Client Image Acquisition
CLUT Color Look-Up Table (in this document CLUT-8, i.e. 8 bit lookup or 256
ARGB-32 colors)
DIDL Digital Item Declaration Language
DLNA Digital Living Network Alliance
DMR Digital Media Renderer
DTCP Digital Transmission Content Protection
DVB Digital Video Broadcasting
ES Elementary Stream
V1.0 Rev 1.5.1 24 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol RVU – An Introduction
The Addressing, Discovery, and Description sub-protocol of RVU dictates how network
components acquire addresses and discover the presence and capabilities of other network
components.
Addressing refers to the assignment of network addresses to each node in the network.
Discovery involves the initial interaction between UPnP devices and control points for the
purpose of notifying control points of the availability of useful devices and services.
Description refers to the control points’ acquisition of detailed device- and service-related
information.
2.1 Standards
The RVU protocols for addressing, discovery, and description conform to those defined in UPnP
Device Architecture, v1.0, 20 July 2006 [Ref1] and DLNA Networked Device Interoperability
Guidelines, Volume 1: Architectures and Protocols, v1.5, October 2006 [Ref10]. The relevant
sections of these documents are listed below.
An RVU element shall comply with the following UPnP specifications [Ref1] to support
addressing, discovery, and description:
An RVU element shall comply with all requirements in the following DLNA guidelines sections
[Ref10] to support addressing, discovery, and description:
[2.1.1-2] M: RVU-C
An RVU client shall keep its make, model, and hardware revision values constant as these
numbers are used by the server to uniquely identify the client.
[2.1.1-3] M: RVU-C
DELETED
[2.1.1-4] M: RVU-C
DELETED
[2.1.1-5] M: RVU-S
DELETED
[2.1.1-6] M: RVU-S
DELETED
[2.1.1-7] M: RVU-C
An RVU client shall generate a UUID based on the Version 1 method described in section 4.1.6
of [Ref29]:
[2.1.1-8] M: RVU-C
An RVU client shall keep the MAC address used in the UUID constant, even if the UUID
changes, e.g. across reboots.
Client Server
MediaRenderer RVUServer
RenderingControl RemoteUiServerDevice
RemoteUIServer
ConnectionManager
AVTransport ClientImageManager
Key
Device
Subdevice Service
Service
[2.2.1-1] M: RVU-C
An RVU client shall include a DMR as defined by the DLNA standard.
[2.2.1-2] M: RVU-C
An RVU client shall contain a UPnP MediaRenderer device.
[2.2.1-3] M: RVU-C
An RVU client shall provide a standard UPnP RenderingControl service 1.0, extended as
defined in 9.1.
[2.2.1-4] M: RVU-C
DELETED
[2.2.1-5] M: RVU-C
DELETED
[2.2.1-6] M: RVU-C
An RVU client shall provide a standard UPnP ConnectionManager service 1.0, extended as
defined in 9.2.
[2.2.1-7] M: RVU-C
An RVU client shall provide a standard UPnP AVTransport service 1.0, supporting HTTP
transport, extended as defined in 5.1.3. Note: the standard UPnP template for the
MediaRenderer defines the AVTransport service as optional, but it is required for an RVU client.
[2.2.1-8] M: RVU-C
DELETED.
[2.2.1-9] M: RVU-C
An RVU client shall set the manufacturer name field of the MediaRenderer Device to the make
of the client hardware.
[2.2.1-10] M: RVU-C
An RVU client shall set the model name field of the MediaRenderer Device to the model of the
client hardware.
[2.2.1-11] M: RVU-C
An RVU client shall set the model number field of the MediaRenderer Device to the hardware
revision of the client hardware.
References to the templates for the UPnP devices and services employed by an RVU client can
be found in section 9 of this document.
[2.2.2-1] M: RVU-S
An RVU server shall contain an RVUServer device, as defined in section 11 of this document.
[2.2.2-2] M: RVU-S
An RVU server shall provide the ClientImageManager service, as defined in section 12 of this
document.
[2.2.2-3] M: RVU-S
An RVU server shall contain a standard UPnP RemoteUIServerDevice device.
[2.2.2-4] M: RVU-S
An RVU server shall provide a standard UPnP RemoteUIServer service.
[2.2.2-5] M: RVU-S
An RVU server shall provide an HTTP server.
[2.2.2-6] M: RVU-S
An RVU server shall provide a UPnP control point capable of interacting with the client's
AV Media Services.
Details about the templates for the UPnP devices and services employed by the RVU server
can be found in section 9 of this document.
2.2.3 Versioning
[2.2.3-3] M: RVU-S
DELETED.
[2.2.3-4] M: RVU-S
A server shall limit RVU protocol usage to no more than the version capability indicated by the
client.
3 Session Management
The Session Management sub-protocol of RVU defines the process for establishing
communication between the client and the server.
RVU session management is also used to establish a RUI connection from the client to the
server. It uses the device and service descriptions obtained via the discovery process to
determine which devices and services to contact. This section specifies how a client determines
which of its user interfaces are compatible with the server’s remote user interface, and how it
acquires the information needed to perform the RUI connection.
The diagram for session management flow is shown in Figure 3-1 below.
Client Server
GetCompatibleUIs() RemoteUIServer
Connect to RUI
Filtered UI list
Module
3.1 Standards
The actions and results used in session management are a subset of the UPnP definition of the
devices and services used. The GetCompatibleUIs action, found in the RemoteUIServerService
[Ref5], section 2.4.1, is used in session management.
[3.2.1-1] M: RVU-C
An RVU client shall pair with one and only one RVU server at any time.
[3.2.1-2] M: RVU-C
An RVU client shall attempt to reconnect to the cached server when entering an RVU session..
[3.2.1-3] M: RVU-C
If an RVU client is unable to connect to the cached server, the client shall present a means for
selection of an alternative server following discovering via UPnP .
[3.2.1-4] M: RVU-C
An RVU client shall cache the connected server information for an RVU session in non-volatile
memory
[3.2.1-5] M: RVU-C
If an RVU client is unable to connect to the cached server (for example, due to a reset, software
download or other local networking issue,) and a user does not actively select an alternative
server, that RVU client shall automatically reconnect to the cached server when it becomes
available.
[3.2.1-6] M: RVU-C
An RVU client shall provide a means to access an RVU server selection menu at user
convenience. For example, a client device’s input selection button could display the list
alternative RVU servers.
[3.2.1-7] S: RVU-S
An RVU server should provide suitable icons to represent the device through the use of the
UPnP device icon list.
[3.2.1-8] O: RVU-C
An RVU client may provide suitable icons to represent the device through the use of the UPnP
device icon list.
Cached Yes
Start
server?
No
Search for
servers
No servers Zero
found servers?
Yes
No
Display server
list
No
Cached No
server? &
User
available? selection?
Yes
Yes
RVU Change
session? Yes server? No
No Yes
[3.2.2-1] M: RVU-C
An RVU client shall send a list of UIs supported by the client per [Ref5], section 3.1.3. Note: the
protocol short name for the RVU RUI protocol used in the DeviceProfile is "RVU-RUI".
[3.2.2-2] M: RVU-S
An RVU server shall reply to a GetCompatibleUIs request by sending a UTF-8 XML-formatted
list of UIs the server supports, filtered by the list of UIs supported by the client per [Ref5],
section 3.1. Note: if the server and client both support the RVU RUI, the response would include
the protocol name "RVU Remote UI", the protocol short name "RVU-RUI", and the URI/Protocol
Identifier string "rvurui".
[3.2.2-3] M: RVU-S
An RVU server shall reply to a GetCompatibleUIs request with an empty UIListing string if the
server does not support the UI requested by the client.
[3.2.2-4] M: RVU-S
An RVU server shall reply to a GetCompatibleUIs request with error code 800 if the server
supports the UI requested by the client, but the maximum number of sessions is already active.
[3.2.2-5] M: RVU-C
An RVU client shall start a session if at least one compatible UI is returned by the RVU server.
[3.2.2-6] M: RVU-C
DELETED
[3.2.2-7] S: RVU-C
An RVU client should notify the user if no RUI connection can be established for any reason
(such as the case where no compatible UIs are returned by the RVU server).
[3.2.2-8] M: RVU-C
An RVU client shall have a method to select one UI if multiple UIs are available. The specific
selection process is beyond the scope of this document.
3.2.3 Examples
3.2.3.1 InputDeviceProfile
The following is a sample xml for InputDeviceProfile sent by the client in GetCompatibleUIs
requesting support for RVU_RUI protocol:
<deviceprofile xmlns=\"urn:schemas-upnp-org:remoteui:devprofile-1-0\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"urn:schemas-upnp-org:remoteui:devprofile-1-
0DeviceProfile.xsd\">
<maxHoldUI>0
</maxHoldUI>
<protocol shortName=\"RVU-RUI\">
</protocol>
</deviceprofile>
3.2.3.2 UIListing
The following is an example xml for UIListing returned by the RVU server in response to a
request for RVU-RUI protocol support.
<uilist xmlns="urn:schemas-upnp-org:remoteui:uilist-1-0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:schemas-upnp-org:remoteui:uilist-1-0
CompatibleUIs.xsd">
<ui>
<uiID>1</uiID>
<name>RVU Remote UI</name>
<protocol shortName="RVU-RUI">
<uri>rvurui://[ip]:[port]</uri>
</protocol>
</ui>
</uilist>
In this example, [ip] is the IP address of the server, and [port] is the listening port on the server.
The square brackets are not included in the actual xml; for example, if the IP address was
128.0.0.8, and the port was 80, the uri line would be <uri>rvurui://128.0.0.8:80</uri>
The Remote User Interface (RUI) sub-protocol of RVU allows clients of a media server to
communicate remote control commands and status to the server. It also allows the server to
send graphics and audio to provide a full-featured UI within the client. This allows clients to be
manufactured with little customized UI software and makes it possible for existing clients to be
integrated into an RVU network using the RVU server UI.
A RUI connection is initiated by a client (a server cannot initiate a RUI connection). Such a
connection is followed by creation of one or more Transmission Control Protocol (TCP) streams,
called channels. Two types of channel connections must be supported: command channels,
which provide an interface for the allowed RUI commands, and data channels, which provide
the data needed to employ the RUI commands.
4.1 Standards
RUI commands are unique to the RVU protocol and do not correspond to any other existing
protocol or standard.
4.1.1 Conventions
In this specification, the following command attribute types shall be defined as follows:
o int – optional ‘+’ or ‘-‘, optionally followed by 1 or more leading ‘0’ characters,
followed by decimal characters (‘0’-‘9’) representing a 32 bit signed integer value
[4.2-2] M: RVU-C
An RVU client shall create a channel by connecting to the RVU server via a TCP socket.
[4.2-3] M: RVU-S
An RVU server shall create a channel by connecting to the RVU client via a TCP socket.
[4.2-8] M: RVU-C
An RVU client shall use the server’s port number obtained when the RUI connection was
established as the destination port number.
[4.2-9] M: RVU-S
An RVU server shall use the port number sent by the client to the server in the Hello command
of the first channel opened in the session as the destination port number.
Note that this implies that the first channel opened in a session must be a command channel
opened by the client (so the client can tell the server what destination port number to use when
the server opens a channel).
[4.2-11] M: RVU-S
If an RVU server receives a new channel connection with a channel ID that is identical to the
channel ID in a Hello message that the server has just sent, the RVU server shall reject the
received Hello message, close the channel on which the Hello message was sent, and re-
initiate using the same channel ID.
[4.2-12] M: RVU-C
If an RVU client receives a new channel connection with a channel ID that is identical to the
channel ID in a Hello message that the client has just sent, the RVU client shall reject the
received Hello message, close the channel on which the Hello message was sent, and re-
initiate using a different channel ID.
Note: 4.2-11 and 4.2-12 resolve issues that might surface due to a race between two endpoints
initiating new channels with identical channel IDs. Both sides need to reject the received Hello
message, close the just-initiated channel and re-initiate. This applies equally to command and
data channels. An RVU element should be able to handle another RVU element closing the
channels, and should not assume which channels are persistent. An RVU element can close a
channel when it is no longer needed.
[4.2-21] M: RVU-S
An RVU server shall utilize the UPnP device description UDN element (which includes the
“uuid:” string and element value) received in a client originated Hello command to uniquely
associate a RUI channel with a specific UPnP media renderer device. For example, this may
occur when two different UPnP Media Renderer devices are using the same IP address.
<commandName commandToken=”commandTokenValue”
attributeName1=”attributeValue1” ... attributeNameN=”attributeValueN”/>
The XML string begins with the command name, which is a string.
The XML string must have a commandToken attribute.
commandTokenValue is a string representation of a non-negative, 31-bit integer (int32_t,
disallowing negative values), and is unique per RVU-element within the session for a
period of at least 10 seconds (i.e., the same commandToken is not used on any
command channel for at least 10 seconds).
The XML string may also have one or more additional attributes.
attributeNames are strings.
attributeValues are formatted depending on the command.
The XML string begins with the command name string “Response”.
The XML string must have an errCode attribute.
errorCodeValue is a string.
The XML string must have a commandToken attribute.
commandTokenValue must be the same string representation of the integer that
appears in the original command.
The XML string may have zero or more additional attributes.
attributeNames are strings.
attributeValues are formatted depending on the original command.
[4.2.1-12] M: RVU-S
An RVU server shall have the ability to send commands via a command channel to the client
(e.g., graphics commands)
[4.2.1-13] M: RVU-C
An RVU client shall have the ability to send commands via a command channel to the server
(e.g., key event commands)
[4.2.2-8] M: RVU-S
An RVU server shall have the ability to send data via a data channel to the client (e.g.,
graphics).
[4.2.2-9] M: RVU-C
An RVU client shall have the ability to send data via a data channel to the server.
Field Definition
frame-header-len This 4-byte field specifies the length of the entire frame header. The field is
encoded as an ASCII-encoded 4-digit number (with zero padding if necessary).
frame-type-id This field of characters specifies the type of data in this frame (e.g., “Hello”,
“PixelData”, “AudioData”, etc.).
command-token This field specifies an integer that matches the CommandToken attribute value
specified in a corresponding command frame. If this data is unassociated with any
command, the value of this field is 0. The field is encoded as an ASCII-encoded
number.
frame-data-len This field specifies the length of the frame-data field. The length does not include
the last CRLF bytes in the data frame. The field is encoded as an ASCII-encoded
number.
frame-data This variable-byte field contains the data associated with the appropriate RUI
command. The number of bytes in this field is specified by the frame-data-len field
defined in the data-frame header.
[4.3.1-1] M: RVU-C
The RVU client shall have the ability to initiate a session.
[4.3.1-2] M: RVU-C
Once a RUI connection between a server and client has been established (see Session
Management, section 3), an RVU client shall allocate resources needed to support a session.
[4.3.1-3] M: RVU-C
After allocating resources, an RVU client shall open a channel to the server (using the server's
destination port obtained from the RUI connection process), and tell the server the client port
number to use for additional channels. (Note: the server does not have the ability to initiate a
session, as it would require the client's port number to do so.) An example appears below:
[4.3.1-4] M: RVU-S
Upon receipt of the Hello command, an RVU server shall determine whether it can support
another session.
[4.3.1-5] M: RVU-S
If an RVU server determines that it cannot support another session, it shall return an
ERR_NO_SESSION error code response to the initiating client. Note: No session is established
in this case.
[4.3.1-6] M: RVU-S
If an RVU server determines that it can support another session, it shall allocate the resources
needed to support that session.
[4.3.1-7] M: RVU-S
If an RVU server determines that it can support another session, it shall return an
ERR_SUCCESS response to the initiating client. An example is:
Note: The following is an example of a Hello data frame (in hexadecimal notation):
303031362048656c6c6f203020310D0A360D0A
which is parsed as follows:
Client Server
Allocate RUI
resources
Can support
Send Hello with
Hello command another
client’s RUI port
session?
Yes
No
No session
established. Done.
4.4 Timing
When a command is sent on a command channel, its associated data is expected to arrive on a
data channel immediately after the command is sent on the command channel. Since this does
not always occur, limitations are placed upon the timing of command and data synchronization.
Although the server may send a data frame prior to sending the associated command, best
practices should cause commands to be sent before associated data frames. This obviates the
need for the client to store large data frames while waiting for a command to be received, or
delay consuming data off of a data channel, possibly triggering timeout conditions while waiting
for a command to be sent following the data frame. Also, independent content should be sent on
multiple data channels asynchronously, so that the transmission of data on one channel (which
may block because of TCP transmission rules) does not delay the transmission of data on other
channels.
[4.4-2] M: RVU-C
An RVU element that is expecting data from a data channel shall return a command response
with an error code of ERR_TIMEOUT_DATA if the complete data frame header has not been
received on the referenced data channel within one second of the element having received the
command.
4.5 Buffers
The following terms are used in this section:
Top-and-Bottom 3DTV Structure: provides half resolution for each eye/view where every
frame is composed of a left-eye image on the top half of the frame and right-eye image on
the bottom half of the frame. The spatially multiplexed images within the frame are time-
synchronous and are oriented without any inversion or mirroring.
The video buffer is subject to shared control between the client and server. RUI provides the
server with information about the video capabilities of the client, the aspect ratio of the client, the
output resolution of the client, and (in a full-screen video case) the resolution / position of the
video buffer in the display. This is necessary to deal with interactions between UI and video
when the client can control letterbox/pillarbox, stretch, crop, and so on. Only one video buffer is
required.
In addition to the display buffer and any video buffers, there are implicit buffers for Closed
Captioning data (logically in front of all entries in any Z-list), background color (logically, behind
all entries in any Z-list, and generally solid black), and any additional local UI for interacting with
the local hardware. Local UI is rendered on top of all other buffers; a client implementation may
stop displaying the RUI display buffer whenever local UI operations are being performed. The
RUI server has no explicit control over any of the buffers that are not in the Z-list. Instead, they
are completely controlled by the internal logic of the RVU client.
It is assumed there are two varieties of local UI operations: those that affect the operation of the
currently-running remote UI application (changing video settings, closed captioning, display
settings, etc), and those that run outside of the remote UI application (applications local to the
device, terminating the remote UI application). Those that affect the current operation may be
requested by the remote UI (for instance, while performing configuration); those that operate
outside the remote UI are always subject to the application logic of the client device.
[4.5-1] M: RVU-C
When a session begins between a server and client, an RVU client shall define one graphics
display buffer.
[4.5-2] M: RVU-C
An RVU client shall assign a buffer ID of 0x7fffffff for the graphics display buffer.
[4.5-3] M: RVU-C
An RVU client shall automatically add the graphics display buffer to the Z-List when a session
begins.
[4.5-4] M: RVU-C
An RVU client shall allow more graphics buffers to be allocated by using the AllocateBuffer
command, described in the Commands section below.
[4.5-5] M: RVU-C
An RVU client shall only use the graphics display buffer with a buffer ID of 0x7fffffff for screen
display of graphics (i.e., buffers created by the AllocateBuffer command are never displayed on
the screen).
[4.5-6] M: RVU-C
An RVU client shall prevent screen tearing and other display artifacts when displaying any data
written to the graphics display buffer.
[4.5-7] M: RVU-C
An RVU client shall display the display buffer and the video buffer(s) in the z-order defined in
the Z-list.
Note: The display order of the buffers may be obtained via the GetZList command and the
display buffer order may be changed via the SetZList command for clients that support the
SetZList command. Otherwise, the background is always behind the video buffer, which is in-
turn always behind the display buffer.
[4.5-8] M: RVU-C
An RVU client that transitions from displaying a client-native menu to a server-controlled menu
shall continue to display the last client-native menu until the display buffer is updated by the
server using RUI graphic commands..
4.6 Audio
[4.6-1] M: RVU-S
When an audio decoder is needed, an RVU server shall determine how many total audio
decoders exist on a client by sending the GetNumAudioDecoders command to the client.
Note 1: This command responds with the number of decoders available for use by the RUI, and
does not include additional decoders that may be used for program audio.
[4.6-2] M: RVU-C
An RVU client shall respond to the GetNumAudioDecoders command with a minimum of one (1)
audio decoder.
[4.6-3] M: RVU-C
An RVU client shall allocate a minimum of 1 MByte for the RUI audio buffer.
[4.6-4] M: RVU-S
Once an RVU server has determined the total number of audio decoders on the client, the
server shall query each of the client’s audio decoders one by one (from 0 through
num_decoders-1) via the GetAudioDecoderCaps command to determine which audio decoder
to use for playing an audio sample.
[4.6-5] M: RVU-S
Once an audio decoder has been identified, an RVU server shall send the OpenAudioDecoder
command to obtain a reference to that decoder.
[4.6-6] M: RVU-S
An RVU server requesting audio to be played shall send a command to play the audio (via a
Play or PlayBuffer command).
[4.6-7] M: RVU-C
After an RVU client receives a Play command, it shall wait for the entire audio sample to be
received. Note: a PlayBuffer command does not require a waiting period as the audio data is
already present in the referenced buffer.
[4.6-8] M: RVU-C
If an RVU client receives the Play command, the client shall retrieve content from the
associated data channel.
[4.6-9] M: RVU-C
If an RVU client receives the PlayBuffer command, the client shall retrieve content from the
referenced audio buffer.
[4.6-10] M: RVU-C
When data transfer is complete (or already exists in the case of the PlayBuffer command), the
RVU client shall return a PlayStatus command with a status attribute value of TransferComplete
to the requestor.
[4.6-11] M: RVU-C
After receiving a Play or PlayBuffer command and returning the PlayStatus command, a client
shall then proceed to play the audio sample.
[4.6-12] M: RVU-C
When the complete audio sample has been played, an RVU client shall return a PlayStatus
command with a status attribute value of SampleComplete to the requestor.
[4.6-13] M: RVU-S
After requesting one audio playback, an RVU server shall have the ability to send subsequent
Play or PlayBuffer commands to continue an audio stream.
[4.6-14] M: RVU-S
Subsequent audio commands sent by the requesting RVU server (meaning the audio data is
considered to be on the same audio stream) shall have the same configureId attribute value as
that returned via the response of the original Play or PlayBuffer command.
[4.6-15] M: RVU-S
The RVU server requesting audio shall have the ability to stop playback of audio at any time by
sending a Stop command.
[4.6-16] M: RVU-C
An RVU client shall have the ability to mix program and RUI audio content, as RUI audio plays
concurrently with program audio, minimally, PCM program audio and PCM RUI audio.
A key identifier, key code, or key value in the specification refers to value listed in Table 4-19
that a client sends to a server within an HDMIKeyEvent or CDI key event command and has
been translated to that value in response to client user input.
A key or user input is a labeled button on a remote control, front panel button or other means to
register client user input.
[4.7.1-1] M: RVU-S
An RVU server shall support HDMI key identifiers (for details, see the HDMI specification,
[Ref16]).
[4.7.1-2] O: RVU-S
An RVU server may support CDI key identifiers listed in Table 4-19.
[4.7.1-3] O: RVU-C
If CDI key identifiers are implemented, an RVU client shall implement all mandatory CDI key
identifiers listed in Table 4-19.
[4.7.1-4] M: RVU-C
An RVU client shall implement all mandatory HDMI key identifiers listed in Table 4-19.
[4.7.1-5] O: RVU-C
A client that supports CDI may send its first key event to the server via a CDIKeyEvent
command.
[4.7.1-6] M: RVU-S
Upon receipt of a CDIKeyEvent, an RVU server that does not support CDI shall return an
ERR_KEY_FAILED to the client in the CDIKeyEvent command response.
[4.7.1-7] M: RVU-C
An RVU client that receives an ERR_KEY_FAILED response to the first CDIKeyEvent that it
sends to an RVU server shall resend the key event using the HDMIKeyEvent command (which
is supported by all servers).
[4.7.1-8] M: RVU-C
Once a key event command is successful, an RVU client shall send all subsequent key events
using that same command (either HDMIKeyEvent or CDIKeyEvent).
[4.7.1-9] M: RVU-S
If a session has been using HDMI key events, and the client sends a CDI key event, the RVU
server shall return an ERR_KEY_FAILED to the client in the command response, even if the
server has the capability of processing that command.
[4.7.1-10] M: RVU-S
If a session has been using CDI key events, and the client sends an HDMI key event, the RVU
server shall return an ERR_KEY_FAILED to the client in the command response.
4.7.2 Security
RUI provides the optional capability of encrypting the channel used to send key events. This is
useful if a server application requires input of sensitive information such as passwords or credit
card numbers. An RVU element determines whether encryption is supported with the initial
Hello command and response of the session.
[4.7.2-2] M: RVU-C
An RVU client that supports TLS shall include a tlsPort attribute in the initial Hello command.
[4.7.2-3] M: RVU-S
If an RVU server receives a Hello command indicating the client supports TLS, the server also
supports TLS, and there are no other TLS channels open for the session, the server shall open
a command channel using the given tlsPort.
[4.7.2-4] M: RVU-S
If an RVU server receives a Hello command indicating the client supports TLS, but the server
either does not support TLS or already has another TLS channel open for the session, the
server shall open a command channel using the given callbackPort instead of the tlsPort.
[4.7.2-5] M: RVU-S
If an RVU server sets up a command channel using TLS, the server shall perform the TLS
handshake and setup on that channel.
[4.7.2-6] M: RVU-C
If a TLS channel has been successfully opened, an RVU client shall send key event commands
on that channel, which will be encrypted.
[4.7.2-7] M: RVU-C
If an RVU server sets up a command channel using TLS, but the handshake fails to
successfully open the channel, the RVU client shall make two additional attempts to establish a
TLS channel.
[4.7.2-8] M: RVU-C
If the TLS channel cannot be established after three attempts, the RVU client shall inform the
user that the TLS channel cannot be established.
4.8 Commands
4.8.1 Summary
This section provides summaries of all RUI commands, organized by category. Each summary
includes the data type, if any, that each command expects from the specified data channel.
The specifics of the sending, processing, and responses for each command are detailed in
section 4.8.2 Command Details.
4.8.1.3 Graphics
Graphics commands deal with the writing of new pixel data, allocation of buffers, and blit
operations between buffers, and the reporting of supported graphics and video formats.
4.8.1.4 Local UI
Local UI commands are used to transfer control of the UI on the client from the server to the
client, and from the client back to the server. See section 6 for a description of the use of these
commands and local UI requirements.
4.8.1.5 Display
Display commands manipulate one (or more) video buffers.
4.8.1.6 Audio
4.8.2.1.1 Hello
The Hello command is sent as the first command on a command channel, and is not sent again
on that channel. It is used to indicate the type of channel (command) and the channel ID of the
channel.
Error Codes
Error Code Description
ERR_SUCCESS No other commands have been received on this channel, and this
has properly been identified as a command channel.
ERR_INVALID_STATE This is not the first command on this channel or the channel has
been identified as a data channel.
ERR_NO_SESSION This is the first channel started between two devices, thus implying
that a session is to be started, but the responding device does not
have the resources to create a new session.
ERR_NO_CHANNEL The responding device does not have resources to create a new
channel.
ERR_BAD_ID The version numbers of the two devices are incompatible.
st
ERR_INVALID_PORTNUM The callback port number doesn’t match the port from the 1 hello
command in the session.
4.8.2.1.2 Shutdown
The Shutdown command is sent to indicate that the endpoint is terminating, that no additional
commands should be dispatched, and that no additional channels should be connected.
Reason Codes
Reason Code Description
SHUTDOWN_NORMAL Client terminating as part of normal processing,
e.g. application exit or entering standby.
SHUTDOWN_ERROR Client detected error requiring termination, e.g.
invalid data on a channel or channel ID conflict.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.1.3 GetMemInfo
The GetMemInfo command is used to retrieve information about the memory resources and
allocations in the system.
[4.8.2.1.3-1] M: RVU-S
An RVU server shall have the ability to send the GetMemInfo command as described in the
following table.
Error Codes
Error Code Description
ERR_SUCCESS No other commands have been received on this channel, and the
channel was identified as a command channel.
ERR_INVALID_STATE This was not the first command on this channel, or the channel was
identified as a data channel.
The following key values are defined for the Key Event commands.
4.8.2.2.1 HDMIKeyEvent
The HDMIKeyEvent command is used to transmit information about a key event (e.g., a key
press on a remote control) using HDMI key values.
The HDMI code listed in Table 4-19 is sent as a hex value in the keyVal attribute in the
HDMIKeyEvent command. The Up/Down key press is communicated in the separate “event”
attribute in the HDMIKeyEvent command.
[4.8.2.2.1-1] M: RVU-C
An RVU client shall have the ability to send the HDMIKeyEvent command as described in the
following table.
[4.8.2.2.1-2] M: RVU-C
The value contained in the keyVal attribute shall be one of those listed in the keyList attribute of
the GetKeyList command.
[4.8.2.2.1-3] M: RVU-C
The format of keyVal shall be 2 hex characters (0-9,A-F), where the alphabetic hex characters
(A-F) are uppercase, and the 0x prefix is not included in the keyVal.
[4.8.2.2.1-4] M: RVU-S
An RVU server shall process the keyVal sent in the HDMIKeyEvent command.
[4.8.2.2.1-5] M: RVU-S
An RVU server shall respond to the HDMIKeyEvent command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_KEY_FAILED The key could not be dispatched in a timely manner.
4.8.2.2.2 CDIKeyEvent
The CDIKeyEvent command is used to transmit information about a key event (e.g., a key press
on a remote control) using CDI key values.
The CDI code listed in Table 4-19 is sent as a hex value attribute in the CDIKeyEvent
command. The Up/Down event is communicated using values of 0/1 in bit 16 of the keyVal
attribute. For example,
[4.8.2.2.2-1] O: RVU-C
An RVU client may have the ability to send the CDIKeyEvent command as described in the
following table.
[4.8.2.2.2-2] M: RVU-C
The value contained in the keyVal attribute shall be one of those listed in the keyList attribute of
the GetKeyList command.
[4.8.2.2.2-3] M: RVU-C
The format of keyVal shall be 5 hex characters (0-9,A-F), where the alphabetic hex characters
(A-F) are uppercase, and the 0x prefix is not included in the keyVal.
[4.8.2.2.2-4] O: RVU-S
An RVU server may process the keyVal sent in the CDIKeyEvent command.
[4.8.2.2.2-5] M: RVU-S
An RVU server shall respond to the CDIKeyEvent command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_KEY_FAILED The key could not be dispatched in a timely manner.
4.8.2.2.3 GetKeyList
The GetKeyList command is used by the server to get the list of codes that the client is capable
of translating from user input and sending to the server.
[4.8.2.2.3-1] M: RVU-S
An RVU server shall have the ability to send the GetKeyList command as described in the
following table.
[4.8.2.2.3-2] M: RVU-C
An RVU client shall respond to the GetKeyList command by returning the commandToken, key
list, and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The server requested CDI and the client does not support the CDI
key format.
4.8.2.3 Graphics
Commands in this section are used to handle graphics display for the user interface. Graphics
commands are sent by the server to generate menus and OSDs on the client formatted by the
server. The client is required to allocate graphics buffers if it receives one or more
AllocateBuffer commands, and then use Write, Fill, Shade, Copy and Blend commands to load
display data into these buffers.
4.8.2.3.1 AllocateBuffer
The AllocateBuffer command is used to allocate a graphics buffer of specified dimensions and
pixel format. Graphics buffers can range from hundreds of bytes up to 16 Mbytes in size. These
graphics buffers are dynamically allocated and de-allocated within a session. Information about
the graphic memory capability and current allocations on the client is communicated to the
server via the GetMemInfo command.
[4.8.2.3.1-1] M: RVU-S
An RVU server shall have the ability to send the AllocateBuffer command as described in the
following table.
[4.8.2.3.1-2] M: RVU-C
An RVU client shall process the AllocateBuffer command by creating a buffer of the requested
size and format, and, if defined, color.
[4.8.2.3.1-3] M: RVU-C
The RVU client shall allocate a minimum 64 Mbytes of memory to support the worst-case
combination of graphic buffer allocation commands from the server.
[4.8.2.3.1-4] M: RVU-C
An RVU client shall respond to the AllocateBuffer command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The buffer could not be created.
ERR_BAD_CONFIG The format specified is unknown or not supported.
4.8.2.3.2 DeallocateBuffer
The DeallocateBuffer command is used to release a previously allocated buffer that was
allocated via the AllocateBuffer command.
[4.8.2.3.2-1] M: RVU-S
An RVU server shall have the ability to send the DeallocateBuffer command as described in the
following table.
[4.8.2.3.2-2] M: RVU-C
An RVU client shall process the DeallocateBuffer command by deallocating the specified buffer.
[4.8.2.3.2-3] M: RVU-C
An RVU client shall respond to the DeallocateBuffer command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been allocated yet by the
AllocateBuffer command or is the display buffer.
4.8.2.3.3 Write
The Write command is used to write pixel data into the display buffer or an allocated graphics
buffer. The Write command only defines information about what and how to write the data. The
data itself comes from content via an associated data channel.
[4.8.2.3.3-1] M: RVU-S
An RVU server shall have the ability to send the Write command as described in the following
table.
[4.8.2.3.3-2] M: RVU-C
An RVU client shall process the Write command by writing the graphics data on the specified
data channel to the specified buffer.
[4.8.2.3.3-3] M: RVU-C
An RVU client shall respond to the Write command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_BAD_CONFIG The specified data type is unknown or unsupported.
ERR_FAIL The CompressedPixelData, JPEGPixelData, or PNGPixelData data
frame could not be correctly decoded.
4.8.2.3.4 Read
The Read command is used to read pixel data from the display buffer or an allocated graphics
buffer. The Read command triggers a response of data on an associated data channel. This
command can be used during testing to verify what data a client has written to a graphics buffer
or an allocated graphics buffer.
[4.8.2.3.4-1] M: RVU-S
An RVU server shall have the ability to send the Read command as described in the following
table.
[4.8.2.3.4-2] M: RVU-C
An RVU client shall process the Read command by sending the requested buffer's graphics
data on the specified data channel.
[4.8.2.3.4-3] M: RVU-C
An RVU client shall respond to the Read command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
4.8.2.3.5 BlitQueue
The BlitQueue command is used to set up the queuing state on blit operations for the command
channel on which the BlitQueue command is sent. Queuing is either enabled (when the queuing
attribute in the command is set to non-zero), or disabled (when the queuing attribute in the
command is set to 0).
Use of queued blit commands with queued WaitVSync commands allows for a limited form of
client-side animation. Such animations may be canceled by sending an EmptyQueue command
during the processing of that queue.
[4.8.2.3.5-1] M: RVU-S
An RVU server shall have the ability to send the BlitQueue command as described in the
following table.
[4.8.2.3.5-2] M: RVU-C
An RVU client shall queue any CopyBlit, FillBlit, ResizeBlit, ShadeBlit, BlendBlit,
MultiSourceBlendBlit, ResizeAndBlendBlit, ColorKeyResizeBlit, or WaitVSync commands on
this channel if the BlitQueue command is received with the queuing attribute set to any value
other than zero.
[4.8.2.3.5-3] M: RVU-C
An RVU client shall have the ability to enqueue at least 256 commands, totaled across all
channels.
[4.8.2.3.5-4] M: RVU-C
If queuing is enabled, an RVU client shall delay processing of queued commands until either a
Dispatch command (defined in section 4.8.2.3.6) is received, or queuing is disabled. Note: this
includes delaying response values from each of the queued blit operations until the Dispatch
command is received.
[4.8.2.3.5-5] M: RVU-C
An RVU client shall stop queuing commands and immediately process all queued commands (if
any) when the BlitQueue command is received with the queuing attribute set to zero (changing
the queuing state from enabled to disabled).
Note the distinction between the Dispatch command and a BlitQueue command with queuing
disabled. The Dispatch command causes all queued commands to be processed without
changing the queue state, whereas a BlitQueue command with queuing disabled not only
causes all queued commands to be processed, but also changes the queue state to disabled.
[4.8.2.3.5-6] M: RVU-C
An RVU client shall respond to the BlitQueue command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.3.6 Dispatch
The Dispatch command is used to execute all queued blit commands, if any. Any collection of
blit operations (or \frame" when queued commands are separated by a WaitVSync) executed in
this fashion should be displayed/updated atomically. There should be no partial updates; either
none of the operations are displayed or all are displayed.
[4.8.2.3.6-1] M: RVU-S
An RVU server shall have the ability to send the Dispatch command as described in the
following table.
[4.8.2.3.6-2] M: RVU-C
An RVU client shall immediately process all queued commands (if any) when the Dispatch
command is received. Note: the queuing state remains unchanged by this command.
[4.8.2.3.6-3] M: RVU-C
An RVU client shall respond to the Dispatch command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet OR queuing has not been
enabled yet.
4.8.2.3.7 EmptyQueue
The EmptyQueue command is used to erase all queued blit commands, if any, on the specified
queue. If this queue is currently dispatching, the dispatch is terminated when the next
WaitVSync is encountered in the queue; if no WaitVSync is encountered, the dispatch is
processed as normal. Any operation that was cancelled due to the EmptyQueue command
triggers an error response of ERR_CANCELED (defined in the Error Codes for each queueable
command).
If EmptyQueue is used to empty a dispatching queue, this command must be sent on a different
command channel than the one used to send the active Dispatch command. Commands on the
same command channel are processed in the order sent, so EmptyQueue wouldn’t be
processed to empty the dispatching queue if it were sent on the same command channel as the
Dispatch command.
[4.8.2.3.7-1] M: RVU-S
An RVU server shall have the ability to send the EmptyQueue command as described in the
following table.
[4.8.2.3.7-2] M: RVU-C
An RVU client not currently dispatching the targeted queue shall immediately delete all queued
commands (if any) when the EmptyQueue command is received. Note: the queuing state
remains unchanged by this command.
[4.8.2.3.7-3] M: RVU-C
If the queue targeted by the EmptyQueue command is dispatching when the EmptyQueue
command is received, an RVU client shall continue processing the queue as normal until the
next WaitVSync command is encountered in the queue. Note: if no WaitVSync is found, the
entire queue is dispatched normally.
[4.8.2.3.7-4] M: RVU-C
If the queue targeted by the EmptyQueue command is dispatching when the EmptyQueue
command is received, an RVU client shall terminate dispatching the queue when handling the
next WaitVSync command encountered in the queue, and shall then delete all remaining
queued commands (if any).
[4.8.2.3.7-5] M: RVU-C
An RVU client shall respond to the EmptyQueue command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet or queuing has not been
enabled yet OR queuing isn't enabled yet.
4.8.2.3.8 WaitVSync
The WaitVSync command is used to wait for the client to enter a vertical resync period. It is not
expected that a server can send additional commands after receiving a WaitVSync response
and have them processed during the same sync period. However, this can be used to add an
integer number of delay frames, which can be especially useful in conjunction with BlitQueue
operations (note: WaitVSync is queue-able; see discussion in BlitQueue).
[4.8.2.3.8-1] M: RVU-S
An RVU server shall have the ability to send the WaitVSync command as described in the
following table.
[4.8.2.3.8-2] M: RVU-C
An RVU client shall respond to the WaitVSync command by returning the commandToken and
appropriate errCode, as described in the following tables.
V1.0 Rev 1.5.1 71 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet or queuing has not been
enabled yet OR queuing isn't enabled yet.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
4.8.2.3.9 CopyBlit
The CopyBlit command is used to perform a copy of a region from one graphics buffer to
another.
[4.8.2.3.9-1] M: RVU-S
An RVU server shall have the ability to send the CopyBlit command as described in the
following table.
[4.8.2.3.9-2] M: RVU-C
An RVU client shall process the CopyBlit command by copying the region indicated in the
specified source buffer to the region indicated in the specified destination buffer.
[4.8.2.3.9-3] M: RVU-C
An RVU client shall respond to the CopyBlit command by returning the commandToken and
appropriate errCode, as described in the following tables.
V1.0 Rev 1.5.1 72 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_BAD_CLUT The CLUT(s) for the listed buffers are incompatible for this
operation.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
4.8.2.3.10 FillBlit
The FillBlit command is used to perform a write of a constant color (of the determined pixel
format) to a region in a graphics buffer.
[4.8.2.3.10-1] M: RVU-S
An RVU server shall have the ability to send the FillBlit command as described in the following
table.
[4.8.2.3.10-2] M: RVU-C
An RVU client shall process the FillBlit command by writing the specified color to the region
indicated in the specified buffer.
[4.8.2.3.10-3] M: RVU-C
An RVU client shall respond to the FillBlit command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_BAD_CONFIG The specified color does not match the pixel format for this buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
4.8.2.3.11 ResizeBlit
The ResizeBlit command is used to perform a scaling copy of a region from one graphics buffer
to another.
[4.8.2.3.11-1] M: RVU-S
An RVU server shall have the ability to send the ResizeBlit command as described in the
following table.
[4.8.2.3.11-2] M: RVU-C
An RVU client shall process the ResizeBlit command by copying the region indicated in the
specified source buffer and resizing the copied image to fit the region indicated in the specified
destination buffer.
[4.8.2.3.11-3] M: RVU-C
An RVU client shall respond to the ResizeBlit command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_BAD_CLUT The CLUT(s) for the listed buffers are incompatible for this
operation.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
4.8.2.3.12 ShadeBlit
The ShadeBlit command is used to perform a Porter-Duff blending operation of a constant color
(of the chosen pixel format) to a region in a graphics buffer [Ref23].
[4.8.2.3.12-1] M: RVU-C
An RVU client shall support all Porter-Duff operations specified in the shadeRule attribute of the
ShadeBlit command. Note: support for Porter-Duff operations other than those listed is not
required [Ref23].
[4.8.2.3.12-2] M: RVU-S
An RVU server shall have the ability to send the ShadeBlit command as described in the
following table.
[4.8.2.3.12-3] M: RVU-C
An RVU client shall process the ShadeBlit command by writing the specified color to the region
indicated in the specified buffer.
[4.8.2.3.12-4] M: RVU-C
An RVU client shall respond to the ShadeBlit command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
V1.0 Rev 1.5.1 76 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
4.8.2.3.13 BlendBlit
The BlendBlit command is used to perform a Porter-Duff blending operation using a region of a
graphics buffer blended to a region of another graphics buffer[Ref23] .
Note that only the subset of Porter-Duff operations specified in the shadeRule attribute need to
be supported by clients (per [4.8.2.3.12-1]).
[4.8.2.3.13-1] M: RVU-S
An RVU server shall have the ability to send the BlendBlit command as described in the
following table.
[4.8.2.3.13-2] M: RVU-C
An RVU client shall process the BlendBlit command by performing a Porter-Duff blending
operation (as specified by the shadeRule attribute) of the specified region of the source buffer
with the specified region of the destination buffer.
[4.8.2.3.13-3] M: RVU-C
An RVU client shall respond to the BlendBlit command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_BAD_CLUT The CLUT(s) for the listed buffers are incompatible for this
operation.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
ERR_CLUT_DEST_BUFFER Cannot blend into a CLUT-configured buffer.
4.8.2.3.14 MultiSourceBlendBlit
The MultiSourceBlendBlit command is used to perform a Porter-Duff blending/shading operation
with two source buffers and a single destination buffer [Ref23].
Note that only the subset of Porter-Duff operations specified in the shadeRule attribute need to
be supported by clients (per [4.8.2.3.12-1]).
[4.8.2.3.14-1] M: RVU-S
An RVU server shall have the ability to send the MultiSourceBlendBlit command as described in
the following table.
[4.8.2.3.14-2] M: RVU-C
An RVU client shall process the MultiSourceBlendBlit command by performing a Porter-Duff
blending operation (as specified by the shadeRule attribute) of the specified region of each
source buffer into the specified region of the destination buffer [Ref23].
[4.8.2.3.14-3] M: RVU-C
An RVU client shall respond to the MultiSourceBlendBlit command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_BAD_CLUT The CLUT(s) for the listed buffers are incompatible for this
operation.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
ERR_CLUT_DEST_BUFFER Cannot blend into a CLUT-configured buffer.
4.8.2.3.14.1 Examples
Blend rectangular areas of two source buffers and a fixed color. Copy the result to a
destination buffer.
srcBuf1 will be resized to match the size of srcBuf2 before the blend occurs.
Neither srcBuf1 nor srcBuf2 are modified by this operation.
For the sake of the Porter-Duff shadeRule, srcBuf1 / color parameter is considered the
Source and srcBuf2 is the Destination (Dest).
The result of the blend is copied to the destination buffer, with the top-left corner of the
rectangle positioned at the destination position.
The source/destination rectangle fully lies within the bounds of the source/destination buffer.
colorSelect shadeRules
and
alphaSelect
Porter-Duff
Blending
srcBuf1 Source
Selector Source dstBuf
color (color/alpha)
Dest
srcBuf2
4.8.2.3.15 ResizeAndBlendBlit
The ResizeAndBlendBlit command is used to perform a scaled copy and Porter-Duff blending
operation using a region of a graphics buffer blended to a region of another graphics buffer
[Ref23].
Note that only the subset of Porter-Duff operations specified in the shadeRule attribute need to
be supported by clients (per [4.8.2.3.12-1]) [Ref23].
[4.8.2.3.15-1] M: RVU-S
An RVU server shall have the ability to send the ResizeAndBlendBlit command as described in
the following table.
[4.8.2.3.15-2] M: RVU-C
An RVU client shall process the ResizeAndBlendBlit command by copying the region indicated
in the specified source buffer, resizing the copied image to fit the region indicated in the
specified destination buffer, and performing a Porter-Duff blending operation (as specified by
the shadeRule attribute) of the resized region of the source buffer with the specified region of
the destination buffer [Ref23].
[4.8.2.3.15-3] M: RVU-C
An RVU client shall respond to the ResizeAndBlendBlit command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_BAD_CLUT The CLUT(s) for the listed buffers are incompatible for this
operation.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
ERR_CLUT_DEST_BUFFER Cannot blend into a CLUT-configured buffer.
4.8.2.3.16 ColorKeyResizeBlit
The ColorKeyResizeBlitcommand is used to copy or resize from a source bitmap into a
destination bitmap while executing a conditional operation on each pixel, based on a
comparison to a constant color.
[4.8.2.3.16-1] M: RVU-S
An RVU server shall have the ability to send the ColorKeyResizeBlit command as described in
the following table.
[4.8.2.3.16-2] M: RVU-C
An RVU client shall process the ColorKeyResizeBlit command by copying the region indicated
in the specified source buffer, performing a pixel-by-pixel color comparison of the copied region
to the keyColor attribute, performing the indicated action to replace, copy, or mask off the
resulting region, and resizing the copied image to fit the region indicated in the specified
destination buffer.
[4.8.2.3.16-3] M: RVU-C
An RVU client shall respond to the ColorKeyResizeBlit command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID One or more of the specified buffers has not been identified yet.
ERR_BOUNDING The specified region does not fit in the given buffer.
ERR_QUEUE_FULL Blit operations are currently being queued, and the queue is full.
ERR_CANCELED The operation was queued, and then cancelled due to the
EmptyQueue command.
4.8.2.3.17 GetGraphicsCaps
The GetGraphicsCaps command is used to get information about the supported blit operations
and buffer configuration parameters.
[4.8.2.3.17-1] M: RVU-S
An RVU server shall have the ability to send the GetGraphicsCaps command as described in
the following table.
[4.8.2.3.17-2] M: RVU-C
An RVU client shall respond to the GetGraphicsCaps command by returning the
commandToken, appropriate errCode, and client capabilities as described in the following
tables.
[4.8.2.3.17-3] M: RVU-C
The GetGraphicsCaps command allows the client to specify support for a subset of possible blit
operations. An RVU client shall support the Blend, Copy, Resize, Fill, Shade, MultiSourceBlend
and ColorKeyResize operations. The supportedBlitOps field in Table 4-78 would expand to
indicate future operations that could be optional.
[4.8.2.3.17-4] M: RVU-C
An RVU client shall support the Copy blit operation for the supportedClutClutBlits attributes of
the GetGraphicsCaps command.
[4.8.2.3.17-5] M: RVU-C
The GetGraphicsCaps command allows the client to specify support for a subset of video input
formats. An RVU client shall support 480i/30, 480p/60, 720p/60, 1080i/30 and 1080p/24.
Clients may support 2160p and 4320p resolutions.
[4.8.2.3.17-6] M: RVU-C
An RVU client shall have the ability to accept all video input formats defined in the
videoDisplayFormats attribute and convert these formats to a format matching its display
capabilities (e.g., if the display only supports 480p/60 and 720p/60, it should also accept
480i/30, 1080i/30 and 1080p/24 and convert to its supported display resolutions). To preserve
video quality, conversion between 25/50 and 30/60 frame rates is strongly discouraged.
[4.8.2.3.17-7] O: RVU-C
An RVU client may support a subset of the video display formats defined in the
videoDisplayFormats attribute, provided the client meets the requirement of 4.8.2.3.17-6.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.3.18 GetZList
The GetZList command is used to determine the order of the display buffers.
[4.8.2.3.18-1] M: RVU-S
An RVU server shall have the ability to send the GetZList command as described in the
following table.
[4.8.2.3.18-2] M: RVU-C
An RVU client shall respond to the GetZList command by returning the commandToken,
appropriate errCode, and ordered list of buffer IDs as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.3.19 SetZList
The SetZList command is used to specify the order of the display buffer and any video buffers.
[4.8.2.3.19-1] O: RVU-S
An RVU server may have the ability to send the SetZList command as described in the following
table.
[4.8.2.3.19-2] O: RVU-C
An RVU client may process the SetZList command by arranging its ordered list of buffer IDs as
specified in the zlist attribute of the command.
[4.8.2.3.19-3] M: RVU-C
An RVU client shall display buffers as per the zlist attribute if a client processes the SetZList
command and if the allowRemovals attribute of the SetZList command is set to zero (0).
[4.8.2.3.19-4] M: RVU-C
An RVU client shall display only those buffers listed in the zlist attribute if a client processes the
SetZList command and if the allowRemovals attribute of the SetZList command is non-zero.
[4.8.2.3.19-5] M: RVU-C
An RVU client shall respond to the SetZList command by returning the commandToken and
appropriate errCode as described in the following tables if a client process the SetZList
command.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_CONFIG The provided zlist string is not valid.
ERR_FAIL The server sent a SetZList command and the client does not
support the SetZList command.
4.8.2.3.20 SetCLUT
The SetCLUT command is used to set the color look-up table (CLUT) of a graphics buffer. This
applies only to buffers allocated with AllocateBuffer with a pixelFormat of CLUT-8.
The SetCLUT command only defines information about what and how to write the data. The
data itself comes from content via an associated data channel. The frame_type_id identifier in
the data on the data channel must be set to CLUT.
[4.8.2.3.20-1] M: RVU-S
An RVU server shall have the ability to send the SetCLUT command as described in the
following table.
[4.8.2.3.20-2] M: RVU-C
An RVU client shall process the SetCLUT command by writing the CLUT data on the specified
data channel to the specified buffer and index.
[4.8.2.3.20-3] M: RVU-C
An RVU client shall respond to the SetCLUT command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
V1.0 Rev 1.5.1 90 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
4.8.2.4 Local UI
Commands in this section are used to manage the display of buffers and local UI menus. Local
UI commands define the relationship between UI elements generated on the server and UI
elements generated on the client. If the UI elements on client and server have the same look-
and-feel, this allows for a seamless transition between remote-controlled functionality and
locally-controlled functionality. For client/server pairs with differing display themes/branding, this
still provides a mechanism for the client settings to be controlled from within the server-
generated UI.
See section 6 for a description of the use of these commands and for local UI requirements.
4.8.2.4.1 ListLocalUIElements
The ListLocalUIElements command is used to list the set of locally-generated UI elements that
are available on the client. This list should be drawn from Table 4-89, although it is legal to allow
vendor-specific elements as well.
Name Description
org.rvualliance.CC Closed captioning settings
org.rvualliance.Info Client information
org.rvualliance.Network Network settings
org.rvualliance.NetworkDiag Network diagnostics
org.rvualliance.HDTV HD Output Settings
org.rvualliance.Dolby Dolby Audio Settings
org.rvualliance.Restart Restart app/reboot client options
org.rvualliance.Reset Restore the client to default settings
org.rvualliance.UnhandledKey The server does not support this key
org.rvualliance.ClientRequest Client has requeted control of the UI
org.rvualliance.Subtitle DVB Subtitling or SBTVD captioning language setting
org.rvualliance.ServerSelection Alternative server selection
[4.8.2.4.1-1] M: RVU-S
An RVU server shall have the ability to send the ListLocalUIElements command as described in
the following table.
V1.0 Rev 1.5.1 91 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
[4.8.2.4.1-2] O: RVU-C
An RVU client may support some or all Local UI Elements listed in Table 4-89.
[4.8.2.4.1-3] M: RVU-C
An RVU client shall respond to the ListLocalUIElements command by returning the
commandToken, elements, and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.4.2 RequestLocalUI
The RequestLocalUI command is used to request a locally-generated UI element. This can be
used to perform local configuration, while still tying into the general menu system of the remote
UI.
When an RVU client is displaying local UI, the following apply to the client:
[4.8.2.4.2-0a] O: RVU-C
The client may stop displaying the RUI display buffer.
[4.8.2.4.2-0b] M: RVU-C
The client shall process commands sent by the server to update the display buffer.
[4.8.2.4.2-0c] M: RVU-C
If the RUI buffer is visible, the client shall process commands sent by the server to update the
display buffer and update the display as commands are received and processed.
[4.8.2.4.2-0d] M: RVU-C
The local UI buffer shall be at the front of the z-list.
As a result of the above requirements, if the local UI screen has full or partial transparency, then
either RUI or video will show through.
[4.8.2.4.2-1] M: RVU-S
An RVU server shall have the ability to send the RequestLocalUI command as described in the
following table.
[4.8.2.4.2-2] M: RVU-C
An RVU client shall respond to an enable request for all elements defined in Table 4-89.
[4.8.2.4.2-3] M: RVU-C
DELETED.
[4.8.2.4.2-4] M: RVU-C
DELETED
[4.8.2.4.2-5] M: RVU-C
An RVU client shall respond to the RequestLocalUI command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The local application is in a display state where it is inappropriate to
enable that element.
ERR_INVALID_PARAM The requested element is not supported.
4.8.2.4.3 LocalUIEvent
The LocalUIEvent command is sent by a client when entering or exiting a local UI operation.
[4.8.2.4.3-1] M: RVU-C
An RVU client shall send the LocalUIEvent command when entering or exiting a local UI
operation.
[4.8.2.4.3-2] M: RVU-C
An RVU client shall have the ability to send the LocalUIEvent command as described in the
following table.
[4.8.2.4.3-3] M: RVU-S
An RVU server shall respond to the LocalUIEvent command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
[4.8.2.4.3-4] M: RVU-S
The server shall produce RUI and A/V content based on the keyVal attribute in
LocalUIEvent(terminating) or other default display content if keyVal is not included in
LocalUIEvent(terminating) received by the server.
[4.8.2.4.3-5] M: RVU-S
Upon receiving a LocalUIEvent command from a client to terminate a local display operation
with attribute element org.rvualliance.ClientRequest, the Server shall return to producing RUI
graphics and AV content in effect when ClientRequestLocalUI was called.
4.8.2.4.4 ClientRequestLocalUI
The ClientRequestLocalUI command is sent by a client to request control of the UI from the
server.
[4.8.2.4.4-1] O: RVU-C
An RVU client may send the ClientRequestLocalUI command when the client requires control of
the UI by means other than invocation from a server menu.
[4.8.2.4.4-2] O: RVU-C
An RVU client may have the ability to send the ClientRequestLocalUI command as described in
the following table.
[4.8.2.4.4-3] M: RVU-S
An RVU server shall respond to the ClientRequestLocalUI by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
[4.8.2.4.4-4] M: RVU-S
An RVU server shall respond to the ClientRequestLocalUI command by sending the
RequestLocalUI command to the client with a element attribute of org.rvualiance.ClientRequest.
[4.8.2.4.4-5] M: RVU-C
An RVU client shall support the org.rvualliance.ClientRequest Element listed in Table 4-89 if the
ClientRequestLocalUI command is implemented.
[4.8.2.4.4-6] S: RVU-C
A client should return to its prior 3DTV setting (as set by ReconfigureDisplayBuffer or
ReconfigureDisplayBuffer3DTV) upon exiting local UI control.
4.8.2.5 Display
Display commands operate on the display buffer or the video buffers. Video buffers operate
under shared control with the client, and the client's implementation of AVTransport. RUI will
provide the server with information about the video capabilities of the client, the aspect ratio of
the client, the output resolution of the client, and (in a full-screen video case) the resolution /
position of the video buffer in the display (which is necessary to deal with interactions between
UI and video when the client can control letterbox/pillarbox, stretch, crop, etc.).
Attributes described with units as “output coordinates” or “with respect to the output” refer to the
virtual canvas coordinates. These attributes define the resolution and position of the
output/virtual canvas, which defines the coordinate space of the output. This is not the
resolution of the video content or the display buffer. These are also the values returned in
GetOutputSettings and OutputSettingsChanged.
Attributes described as “decoded video stream coordinate” refer to the resolution and
coordinates of the video content.
The term “resolution” refers to distance as measured in pixels, e.g. horizontal resolution is
interchangeable with horizontal width in pixels, and vertical resolution is interchangeable with
vertical height in pixels
4.8.2.5.1 GetVideoBuffer
The GetVideoBuffer command is used to tie an existing AV stream with a buffer on the client
display used to represent the output of that video stream. The buffer ID returned is assumed to
be a client-positioned full-screen state. This should immediately trigger an
OutputSettingsChanged command from the client followed by an VideoDisplaySettingsChanged
command from the client.
[4.8.2.5.1-1] M: RVU-S
An RVU server shall have the ability to send the GetVideoBuffer command as described in the
following table.
V1.0 Rev 1.5.1 96 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
[4.8.2.5.1-2] M: RVU-C
An RVU client shall respond to the GetVideoBuffer command by returning the commandToken,
bufId, and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID There is no matching AVTransportID.
[4.8.2.5.1-3] M: RVU-C
The video buffer shall be placed immediately behind the display buffer in the Z-List (in the
appropriate ordered position of the zlist attribute) upon association of an AVTransport instance
to the video buffer.
[4.8.2.5.1-4] M: RVU-C
DELETED
4.8.2.5.2 ReleaseVideoBuffer
The ReleaseVideoBuffer command is used to release control/interest in a video buffer that was
acquired with GetVideoBuffer.
[4.8.2.5.2-1] M: RVU-S
An RVU server shall have the ability to send the ReleaseVideoBuffer command as described in
the following table.
[4.8.2.5.2-2] M: RVU-C
An RVU client shall respond to the ReleaseVideoBuffer command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID There is no matching video buffer ID.
4.8.2.5.3 SetBackgroundColor
The SetBackgroundColor command is used to set the default color of the output for regions not
occluded by the display buffer or by a video buffer.
[4.8.2.5.3-1] M: RVU-S
An RVU server shall have the ability to send the SetBackgroundColor command as described in
the following table.
[4.8.2.5.3-2] M: RVU-C
An RVU client shall process the SetBackgroundColor command by using the background color
as specified in the SetBackgroundColor command.
[4.8.2.5.3-3] M: RVU-C
An RVU client shall respond to the SetBackgroundColor command by returning the
commandToken and appropriate errCode, as described in the following tables.
V1.0 Rev 1.5.1 98 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.4 ConfigureDisplayBuffer
The ConfigureDisplayBuffer command is used to configure the display buffer. This command
can be used to configure the output position of the display buffer.
[4.8.2.5.4-1] M: RVU-S
An RVU server shall have the ability to send the ConfigureDisplayBuffer command as described
in the following table.
[4.8.2.5.4-2] M: RVU-C
An RVU client shall process the ConfigureDisplayBuffer command by positioning the display
buffer as specified in the ConfigureDisplayBuffer command.
[4.8.2.5.4-3] M: RVU-C
An RVU client shall respond to the ConfigureDisplayBuffer command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BOUNDING The display buffer at the specified position does not fit in the
dimensions of the output.
4.8.2.5.5 ReconfigureDisplayBuffer
The ReconfigureDisplayBuffer command is used to configure the display buffer, and destroys
any data in the buffer before configuring. This command configures the logical dimensions,
resolution and pixel format of the display buffer, as well as disabling any 3DTV structure.
[4.8.2.5.5-1] M: RVU-S
An RVU server shall have the ability to send the ReconfigureDisplayBuffer command as
described in the following table.
[4.8.2.5.5-2] M: RVU-C
An RVU client shall process the ReconfigureDisplayBuffer command by configuring the display
buffer as specified in the ReconfigureDisplayBuffer command.
[4.8.2.5.5-3] M: RVU-C
An RVU client shall respond to the ReconfigureDisplayBuffer command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_CONFIG The given format is unknown or unsupported.
ERR_BOUNDING The display buffer with the specified dimensions and (optional)
position does not fit in the dimensions of the output.
4.8.2.5.6 ConfigureVideoFullscreen
The ConfigureVideoFullscreen command is used to give positional control of an AV stream's
video buffer display back to the client after a call to ConfigureVideoWindow or
ConfigureWindowedVideoWindow.
[4.8.2.5.6-1] M: RVU-S
An RVU server shall have the ability to send the ConfigureVideoFullscreen command as
described in the following table.
[4.8.2.5.6-2] M: RVU-C
An RVU client shall respond to the ConfigureVideoFullscreen command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer is not a valid video buffer.
4.8.2.5.7 ConfigureVideoWindow
The ConfigureVideoWindow command is used to configure the position and dimensions of an
AV stream's video buffer display.
[4.8.2.5.7-1] M: RVU-S
An RVU server shall have the ability to send the ConfigureVideoWindow command as described
in the following table.
[4.8.2.5.7-2] M: RVU-C
An RVU client shall support a minimum video display width of 98 pixels and minimum display
height of 54 pixels, when the full screen resolution is 720 x 480.
[4.8.2.5.7-3] M: RVU-C
An RVU client shall respond to the ConfigureVideoWindow command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BOUNDING The region specified by x, y, width, and height does not fit in the
output.
ERR_BAD_ID The specified buffer is not a valid video buffer.
4.8.2.5.8 ConfigureWindowedVideoWindow
The ConfigureWindowedVideoWindow command is used to configure the position and
dimensions of an AV stream's video buffer display, displaying only a portion of the full AV
stream. This allows for a region of the decoded stream to be resized and repositioned when
displaying (the resized and repositioned stream are the only portion of that AV stream that will
be displayed).
[4.8.2.5.8-1] M: RVU-S
An RVU server shall have the ability to send the ConfigureWindowedVideoWindow command
as described in the following table.
[4.8.2.5.8-2] M: RVU-C
An RVU client shall respond to the ConfigureWindowedVideoWindow command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BOUNDING The region specified by x, y, width, and height does not fit in the
output, or the region specified by srcX, srcY, srcWidth, or srcHeight
does not fit in the decoded AV stream.
ERR_BAD_ID The specified buffer is not a valid video buffer.
4.8.2.5.9 ConfigureVideoDecodeResolution
The ConfigureVideoDecodeResolution command is used to configure the maximum output
resolution decimation on a video buffer (for instance, only outputting an SD version of an HD
input).
[4.8.2.5.9-1] M: RVU-S
An RVU server shall have the ability to send the ConfigureVideoDecodeResolution command as
described in the following table.
[4.8.2.5.9-2] M: RVU-C
An RVU client shall respond to the ConfigureVideoDecodeResolution command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer is not a valid video buffer.
4.8.2.5.10 BlindVideo
The BlindVideo command is used to enable and disable blinding of an AV stream. When
blinded, the video should be displayed as a single rectangle transparent to the background color
buffer, instead of video.
[4.8.2.5.10-1] M: RVU-S
An RVU server shall have the ability to send the BlindVideo command as described in the
following table.
[4.8.2.5.10-2] M: RVU-C
An RVU client shall blind the video (display the video buffer as a single rectangle transparent to
the background color buffer) if the blind attribute of the BlindVideo command is set to a value
other than zero (0).
[4.8.2.5.10-3] M: RVU-C
An RVU client shall not blind the video (i.e., display video normally) if the blind attribute of the
BlindVideo command is set to a value of zero (0).
[4.8.2.5.10-4] M: RVU-C
An RVU client shall respond to the BlindVideo command by returning the commandToken and
appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer is not a valid video buffer.
4.8.2.5.11 GetOutputSettings
The GetOutputSettings command is used to determine the output resolution of the output
canvas.
[4.8.2.5.11-1] M: RVU-S
An RVU server shall have the ability to send the GetOutputSettings command as described in
the following table.
[4.8.2.5.11-2] M: RVU-C
An RVU client shall respond to the GetOutputSettings command by returning the
commandToken, appropriate errCode, and output settings as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.12 OutputSettingsChanged
The OutputSettingsChanged command is sent by a client at the beginning of an RVU session,
whenever the output canvas resolution changes, or when client capabilities as listed in the
GetGraphicsCaps attribute list have changed within a single session.
[4.8.2.5.12-1] M: RVU-C
An RVU client shall have the ability to send the OutputSettingsChanged command as described
in the following table.
[4.8.2.5.12-2] M: RVU-C
An RVU client shall send an OutputSettingsChanged command:
when client capabilities as listed in the GetGraphicsCaps attribute list have changed
within a single session
[4.8.2.5.12-3] M: RVU-S
An RVU server shall send a GetGraphicsCaps command to a client after receiving an
OutputSettingsChanged command with the capabilitiesChanged flag set to a non-zero value.
[4.8.2.5.12-4] M: RVU-S
An RVU server shall respond to the OutputSettingsChanged command by returning the
commandToken and appropriate errCode as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.13 GetVideoDisplaySettings
The GetVideoDisplaySettings command is used to determine the position and dimensions of the
video buffer. This defines the current aspect ratio, display position, native decoded resolution,
and decimated resolution of a video buffer.
[4.8.2.5.13-1] M: RVU-S
An RVU server shall have the ability to send the GetVideoDisplaySettings command as
described in the following table.
[4.8.2.5.13-2] M: RVU-C
An RVU client shall respond to the GetVideoDisplaySettings command by returning the
commandToken, appropriate errCode, and buffer settings as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified ID is not a valid video buffer.
V1.0 Rev 1.5.1 109 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
4.8.2.5.14 VideoDisplaySettingsChanged
The VideoDisplaySettingsChanged command is sent by a client whenever there is a change in
the display information for a video buffer.
[4.8.2.5.14-1] M: RVU-C
An RVU client shall have the ability to send the VideoDisplaySettingsChanged command as
described in the following table.
[4.8.2.5.14-2] M: RVU-S
An RVU server shall respond to the VideoDisplaySettingsChanged command by returning the
commandToken and appropriate errCode as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.15 AllowClosedCaptioning
The AllowClosedCaptioning command is used to control whether closed captioning (CC) is
allowed. Allowing closed captioning on a device where closed captioning has not been enabled
(either by the user on the local display or with the EnableClosedCaptioning command) does
nothing; only when the closed-captioning has been activated locally does this flag have any
effect. This command also applies to DVB subtitling and SBTVD captioning.
[4.8.2.5.15-1] M: RVU-S
An RVU server shall have the ability to send the AllowClosedCaptioning command as described
in the following table.
[4.8.2.5.15-2] M: RVU-C
An RVU client shall display closed captioning if the allow attribute of the AllowClosedCaptioning
command is set to a value other than zero (0), and the last action was either the receipt of an
EnableClosedCaptioning (enable) command or local CC control was set on.
[4.8.2.5.15-3] M: RVU-C
An RVU client shall not display closed captioning if the allow attribute of the
AllowClosedCaptioning command is set to a value of zero (0), regardless of whether closed
captioning is enabled locally or EnableClosedCaptioning is enabled.
[4.8.2.5.15-4] M: RVU-C
An RVU client shall respond to the AllowClosedCaptioning command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.16 EnableClosedCaptioning
The EnableClosedCaptioning command is used to enable/disable closed captioning on the local
device. This command also applies to DVB subtitling and SBTVD captioning.
[4.8.2.5.16-1] M: RVU-S
An RVU server shall have the ability to send the EnableClosedCaptioning command as
described in the following table.
[4.8.2.5.16-2] M: RVU-C
An RVU client shall respond to the EnableClosedCaptioning command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.17 GetClosedCaptioningState
The GetClosedCaptioningState command is used to query the state of closed captioning on the
local device. This command also applies to DVB subtitling and SBTVD captioning.
[4.8.2.5.17-1] M: RVU-S
An RVU server shall have the ability to send the GetClosedCaptioningState command as
described in the following table.
[4.8.2.5.17-2] M: RVU-C
An RVU client shall respond to the GetClosedCaptioningState command by returning the
commandToken, allowed and enabled states, and appropriate errCode, as described in the
following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.5.18 ReconfigureDisplayBuffer3DTV
The ReconfigureDisplayBuffer3DTV command is used to configure the display buffer with a left
eye region and a right eye region for 3DTV and destroys any data in the buffer before
configuring. This command configures the logical dimensions, resolution and pixel format of the
display buffer, as well as setting the 3DTV structure (full frame, side-by-side, or top-and-
bottom). The rvu3DTVstructure attribute of this command also indicates how the video buffer is
manipulated to create stereoscopic video pictures.
[4.8.2.5.18-1] M: RVU-S
An RVU server shall have the ability to send the ReconfigureDisplayBuffer3DTV command as
described in the following table and diagram.
[4.8.2.5.18-2] M: RVU-S
An RVU server shall ensure that the left and right eye regions within the display buffer do not
overlap, i.e. (rightX >= leftX + leftRightWidth) or (rightY >= leftY+leftRightHeight),
[4.8.2.5.18-3] M: RVU-S
An RVU server shall ensure that rvu3DTVStructure of Side-by-Side or Top-and-Bottom matches
the orientation of the Left and Right Eye regions, i.e. for Side-by-Side rightX >= leftX +
leftRightWidth, and for Top-and-Bottom, rightY >= leftY+leftRightHeight. For Frame Packing,
the orientation of the eye regions is not restricted beyond not overlapping.
[4.8.2.5.18-4] M: RVU-C
An RVU client shall process the ReconfigureDisplayBuffer3DTV command by configuring the
display buffer as specified in the ReconfigureDisplayBuffer3DTV command.
[4.8.2.5.18-5] M: RVU-C
An RVU client shall respond to the ReconfigureDisplayBuffer3DTV command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_CONFIG The given pixelFormat is unknown or unsupported.
ERR_OVERLAP The left eye and right eye graphics regions overlap.
ERR_BOUNDING The display buffer with the specified dimensions and
(optional) position does not fit in the dimensions of the
output canvas.
ERR_MISMATCH The orientation of the left and right graphics regions do not
match the rvu3DTVStructure, e.g. rvu3DTVStructure is
Side-by-Side but the Left and Right Eye Regions are
oriented top and bottom.
ERR_FAIL Failure not attributable to listed error causes
4.8.2.5.18.1 Example
The desired 3DTV structure is obtained by the following attribute values sent in the
ReconfigureDisplayBuffer3DTV command:
Display Buffer
xRes
(0,0)
(leftX, leftY) (rightX, rightY)
leftRightHeight
yRes
Left Right
Eye Eye
Region Region
leftRightWidth leftRightWidth
width width
(0,0)
(x,y)
Output Canvas
Half Resolution
Side by Side
Display Buffer
xRes
(0,0)
(leftX, leftY) (rightX, rightY)
leftRightHeight
yRes
Left Right
Eye Eye
Region Region
leftRightWidth leftRightWidth
width
(0,0)
(x,y)
Display Buffer
xRes
(0,0)
(leftX, leftY) (rightX, rightY)
leftRightHeight
yRes
Left Right
Eye Eye
Region Region
leftRightWidth leftRightWidth
width
(0,0)
(x,y)
4.8.2.5.19 Set3DTVFlattenStructure
The Set3DTVFlattenStructure command indicates whether and how to replicate one of two
stereoscopic video pictures to create 2D video effect. To flatten or remove 3DTV display buffer
effects, the server will separately manipulate left and right display buffer pixels.
[4.8.2.5.19-1] M: RVU-S
An RVU Server shall have the ability to send the Set3DTVFlattenStructure command as
described in the following table.
[4.8.2.5.19-2] M: RVU-C
An RVU client shall respond to the Set3DTVFlattenStructure command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_FAIL The operation failed.
4.8.2.6.1 OpenAudioDecoder
The OpenAudioDecoder command is used to get a new audio decoder ID suitable for later use
in playing audio.
[4.8.2.6.1-1] M: RVU-S
An RVU server shall have the ability to send the OpenAudioDecoder command as described in
the following table.
[4.8.2.6.1-2] M: RVU-C
An RVU client shall process the OpenAudioDecoder command by opening the specified audio
decoder.
[4.8.2.6.1-3] M: RVU-C
An RVU client shall respond to the OpenAudioDecoder command by returning the
commandToken, appropriate errCode, and audio decoder ID as described in the following
tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The audio decoder could not be allocated.
4.8.2.6.2 CloseAudioDecoder
The CloseAudioDecoder command is used to close a previously-opened audio decoder (as
returned by OpenAudioDecoder).
[4.8.2.6.2-1] M: RVU-S
An RVU server shall have the ability to send the CloseAudioDecoder command as described in
the following table.
[4.8.2.6.2-2] M: RVU-C
An RVU client shall process the CloseAudioDecoder command by closing the specified audio
decoder.
[4.8.2.6.2-3] M: RVU-C
An RVU client shall respond to the CloseAudioDecoder command by returning the
commandToken and appropriate errCode as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The audio decoder could not be closed.
4.8.2.6.3 GetNumAudioDecoders
The GetNumAudioDecoders command is used to get the number of audio decoders. Not all
audio decoders are guaranteed to support the same audio formats; determining supported
formats should be done by calling GetAudioDecoderCaps.
[4.8.2.6.3-1] M: RVU-S
An RVU server shall have the ability to send the GetNumAudioDecoders command as
described in the following table.
[4.8.2.6.3-2] M: RVU-C
An RVU client shall respond to the GetNumAudioDecoders command by returning the
commandToken, appropriate errCode, and number of audio decoders, as described in the
following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
4.8.2.6.4 GetAudioDecoderCaps
The GetAudioDecoderCaps command is used to get information about the capabilities of an
audio decoder.
[4.8.2.6.4-1] M: RVU-S
An RVU server shall have the ability to send the GetAudioDecoderCaps command as described
in the following table.
[4.8.2.6.4-2] M: RVU-C
At a minimum, an RVU client shall decode these RUI audio encoded formats and containers:
[4.8.2.6.4-3] M: RVU-C
For PCM RUI audio, the RVU client shall minimally support 16 bit uncompressed stereo PCM at
44.1 kHz and 48 kHz sample rates.
[4.8.2.6.4-4] M: RVU-C
An RVU client shall respond to the GetAudioDecoderCaps command by returning the
commandToken, appropriate errCode, and audio decoder capabilities, as described in the
following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified audio decoder ID is invalid.
4.8.2.6.5 AllocateAudioBuffer
The AllocateAudioBuffer command is used to allocate an audio buffer in order to store an audio
sample for playback.
[4.8.2.6.5-1] M: RVU-S
An RVU server shall have the ability to send the AllocateAudioBuffer command as described in
the following table.
[4.8.2.6.5-2] M: RVU-C
An RVU client shall process the AllocateAudioBuffer command by creating an audio buffer of
the requested size.
[4.8.2.6.5-3] M: RVU-C
An RVU client shall respond to the AllocateAudioBuffer command by returning the
commandToken, appropriate errCode, and ID of the newly-created buffer, as described in the
following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The buffer could not be created.
4.8.2.6.6 DeallocateAudioBuffer
The DeallocateAudioBuffer command is used to release a previously allocated audio buffer that
was allocated via the AllocateAudioBuffer command.
[4.8.2.6.6-1] M: RVU-S
An RVU server shall have the ability to send the DeallocateAudioBuffer command as described
in the following table.
[4.8.2.6.6-2] M: RVU-C
An RVU client shall process the DeallocateAudioBuffer command by deallocating the specified
buffer.
[4.8.2.6.6-3] M: RVU-C
An RVU client shall respond to the DeallocateAudioBuffer command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been allocated yet by the
AllocateAudioBuffer command.
4.8.2.6.7 WriteAudioData
The WriteAudioData command is used to write audio data into an audio buffer. The
WriteAudioData command only defines information about what and how to write the data. The
data itself comes from content via an associated data channel.
[4.8.2.6.7-1] M: RVU-S
An RVU server shall have the ability to send the WriteAudioData command as described in the
following table.
[4.8.2.6.7-2] M: RVU-C
An RVU client shall process the WriteAudioData command by writing the audio data on the
specified data channel to the specified buffer.
[4.8.2.6.7-3] M: RVU-C
An RVU client shall respond to the WriteAudioData command by returning the commandToken
and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The specified buffer has not been identified yet.
ERR_BOUNDING The audio data could not be written due to bounds checking.
4.8.2.6.8 Play
The Play command is used to play audio that is obtained from an associated data channel
containing AudioData content.
[4.8.2.6.8-1] M: RVU-S
An RVU server shall have the ability to send the Play command as described in the following
table.
[4.8.2.6.8-2] M: RVU-C
An RVU client shall process the Play command by playing the audio data on the specified data
channel using the specified decoder.
[4.8.2.6.8-3] M: RVU-C
An RVU client shall respond to the Play command by returning the commandToken, appropriate
errCode, and configId, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The audio decoder has not been opened yet.
ERR_BAD_CONFIG The decoder does not support the specified configuration.
4.8.2.6.9 PlayBuffer
The PlayBuffer command is used to start the playback of audio located in the specified audio
buffer.
[4.8.2.6.9-1] M: RVU-S
An RVU server shall have the ability to send the PlayBuffer command as described in the
following table.
[4.8.2.6.9-2] M: RVU-C
An RVU client shall process the PlayBuffer command by playing the audio data (either all or a
portion, as defined by the optional length and offset attributes) from the specified buffer using
the specified decoder.
[4.8.2.6.9-3] M: RVU-C
An RVU client shall respond to the PlayBuffer command by returning the commandToken,
appropriate errCode, and configId, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The audio decoder has not been opened yet.
ERR_BAD_CONFIG The decoder does not support the specified configuration.
4.8.2.6.10 PlayStatus
The PlayStatus command is used to communicate the progress of an audio playback from an
audio player back to its controller.
[4.8.2.6.10-1] M: RVU-C
An RVU client shall have the ability to send the PlayStatus command as described in the
following tables.
Status Values
Status Value Description
TransferComplete Sent when the data for the audio sample has been received.
V1.0 Rev 1.5.1 134 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
[4.8.2.6.10-2] M: RVU-S
An RVU server shall respond to the PlayStatus command by returning the commandToken and
appropriate errCode as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_BAD_ID No Play or PlayBuffer command is associated with the given
playCommandToken attribute value.
4.8.2.6.11 Stop
The Stop command is used to halt an in-progress Play or PlayBuffer command.
[4.8.2.6.11-1] M: RVU-S
An RVU server shall have the ability to send the Stop command as described in the following
table.
[4.8.2.6.11-2] M: RVU-C
An RVU client shall respond to the Stop command by returning the commandToken and
appropriate errCode as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded or there was nothing playing on the
specified decoder.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_BAD_ID The audio decoder has not been opened yet.
4.8.2.7.1 MuteProgramAudio
The MuteProgramAudio command enables or disables the audio of a program (but does not
affect the RUI audio). A program audio mute invoked by this command shall not be overridden
by any client or UPnP control point unmute action. In addition, a program audio unmute invoked
by this command shall not override any client or UPnP control point mute action. This means
the following:
[4.8.2.7.1-1] M: RVU-S
An RVU server shall have the ability to send the MuteProgramtAudio command as described in
the following table.
[4.8.2.7.1-2] M: RVU-C
An RVU client shall mute the program audio if the mute attribute of the MuteProgramAudio
command is set to a value other than zero (0).
[4.8.2.7.1-3] M: RVU-C
An RVU client shall unmute the program audio if the mute attribute of the MuteProgramAudio
command is set to a value of zero (0).
[4.8.2.7.1-4] M: RVU-C
An RVU client shall respond to the MuteProgramAudio command by returning the
commandToken and appropriate errCode, as described in the following tables.
Error Codes
Error Code Description
ERR_SUCCESS The operation succeeded.
ERR_INVALID_STATE The channel has not been identified yet.
ERR_FAIL The audio decoder returned an error.
4.8.4 Examples
This section contains examples of the commands that would be used for common scenarios.
Responses (indicated with dotted lines) are only shown in the sequence diagrams when
parameters are passed; all other responses are implied.
Synopsis
No. Description Command from Client Command from Server
1 Startup Hello —
2 Discover capabilities — GetGraphicsCaps
V1.0 Rev 1.5.1 137 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Remote User Interface
Sequence Diagram
Client Server
Hello
GetGraphicsCaps
ReconfigureDisplayBuffer
Synopsis
No. Description Command from Client Command from Server
1 Startup Hello —
2 Discover capabilities — GetGraphicsCaps
3 Set up video display — GetVideoBuffer
4 Discover full-screen video OutputSettingsChanged —
geometry
5 Resolution, aspect ratio, and VideoDisplaySettingsChanged —
position of the displayed
video stream
6 Configure display — ReconfigureDisplayBuffer
Sequence Diagram
Client Server
Hello
GetGraphicsCaps
<graphics capablilites>
GetVideoBuffer
<buffer ID>
OutputSettingsChanged
VideoDisplaySettingsChanged
ReconfigureDisplayBuffer
Synopsis
No. Description Command from Client Command from Server
1 Format change OutputSettingsChanged —
2 Match display buffer to video — ReconfigureDisplayBuffer
display
Sequence Diagram
Client Server
OutputSettingsChanged
ReconfigureDisplayBuffer
Synopsis
No. Description Command from Client Command from Server
1 Format change OutputSettingsChanged —
2 Disallow HD output — ConfigureVideoDecodeResolution
3 Match display buffer to — ReconfigureDisplayBuffer
video display
Sequence Diagram
Client Server
OutputSettingsChanged
ConfigureVideoDecodeResolution
ReconfigureDisplayBuffer
An RVU element shall support the sending and processing of the data types as indicated in the
"Req" column in the following table.
5 Media Transfer
The Media Transfer sub-protocol of RVU describes the delivery of audio and visual media from
the server to the client. This includes both live and recorded content. For example, when a user
selects something to watch, the server receives the user’s remote key presses (via RUI), tunes
to the selected content, and begins streaming renderable data (e.g., video and audio) to the
client. The client is then responsible for rendering the data for presentation to the user.
Media Transfer also defines how to handle trick play functionality. Trick play commands are
processed by the server, which responds by invoking AVTransport actions on the client. The
client responds to these actions by initiating one or more HTTP message exchanges, ultimately
resulting in a state transition. If the final state is PLAYING or PAUSED_PLAYBACK, the server
sends the client a modified data stream to reflect the requested trick play function.
RVU’s Media Transfer sub-protocol defines state transitions (e.g., “Stopped to Normal
Playback”) that form the building blocks of all actions that can be taken through this protocol.
These state transitions are described in detail in the section which follows.
Media Transfer makes use of DLNA, UPnP AV Media, and HTTP technologies. Encrypted
streaming data is sent from server to client using DTCP copy link protection to ensure that the
content remains secure throughout the RVU system.
The RVU media transfer protocol employs DLNA media transfer using UPnP, with some
restrictions and exceptions. Media management is handled via HTTP.
The protocol is designed to support the following logical media operations:
Normal playback
Stop
Fast forward scan
Fast Rewind scan
Slow forward scan
Frame step forward
Pause and resume/release
Time-based position seeking
RVU employs the DLNA v1.5 [Ref10] Two-Box Push Controller System Usage. In this model, an
RVU server acts as the Push Controller (+PU+) while an RVU client acts as a Digital Media
Renderer (DMR).
RVU elements may also employ a DLNA 3-Box System Usage. For example an RVU server
may act as a Digital Media Controller, select content from a Media Server and set up a
connection for the selected content between the RVU client DMR and the Media Server.
The DLNA requirements used by the RVU media transfer protocol are listed in section 5.1. The
media transfer protocol’s state transitions are detailed in section 5.2. The use of DTCP to
encrypt content streamed to the client is described in section 5.3. Clock Synchronization is
described in section 5.4.
V1.0 Rev 1.5.1 142 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
5.1 Standards
The DLNA features upon which RVU's media transfer protocol is based are summarized in this
section. In addition, the AVTransport actions invoked on the client, as well as the HTTP
messages exchanged between client and server, are also summarized in this section.
Components involved in RVU's media transfer protocol are shown in Figure 5-1. The HTTP
components are highlighted in green; the UPnP components are shaded yellow.
AV Transport UPnP
[5.1.1-1] M: RVU-S
An RVU server shall use an embedded UPnP Media Renderer Control Point and Push
Controller per DLNA v1.5 [Ref10].
[5.1.1-2] M: RVU-C
An RVU client shall implement a DMR as defined by DLNA [Ref10].
Req Feature
[5.1.1-3] M: RVU-S, RVU-C DELETED
[5.1.1-4] M: RVU-S, RVU-C Sender Pacing of data
[5.1.1-5] M: RVU-S, RVU-C Streaming Transfer Mode
[5.1.1-6] M: RVU-S, RVU-C Time-Based Seek Mode
[5.1.1-7] M: RVU-S, RVU-C DTCP Link Protection
[5.1.1-8] M: RVU-S, RVU-C Full Random Access Data Availability Model
[5.1.1-9] M: RVU-S, RVU-C Limited Random Access Data Availability Model
Req Feature
[5.1.1-10] M: RVU-S, RVU-C Play Media Operation
[5.1.1-11] M: RVU-S, RVU-C Stop Media Operation
[5.1.1-12] M: RVU-S, RVU-C Pause Media Operation
[5.1.1-13] M: RVU-S, RVU-C Pause Release Media Operation
[5.1.1-14] M: RVU-S, RVU-C Seek Media Operation
[5.1.1-15] M: RVU-S, RVU-C Fast Forward Scan Media Operation
[5.1.1-16] M: RVU-S, RVU-C Slow Forward Scan Operation
[5.1.1-17] M: RVU-S, RVU-C Fast Backward Scan Media Operation
[5.1.1-18] M: RVU-C
An RVU client shall implement support for generic HTTP URLs as required in draft DLNA
Guidelines for extended DMRs.
Note: this protocol is used to transfer media from the server to the client.
[5.1.2.1-6] M: RVU-S
The RVU server shall respond using the contentFeatures.dlna.org HTTP header in accordance
with requirement [7.4.26.1] of ref. [10] if the RVU server receives an HTTP GET request with
getcontentFeatures.dlna.org HTTP header.
Instead of repeatedly seeking single frame play positions within a single HTTP GET request, the
multi-frame scan mechanism allows the client to request N frames within a single HTTP GET
and the server to deliver between zero and N frames spaced over a specified time interval.
[5.1.3.1.1-1] S: RVU-C
An RVU client should check bit 30 of the RVUalliance.org_flags prior to initiating multi-frame
scan requests.
[5.1.3.1.1-2] M: RVU-C
To initiate a multi-frame scan operation, an RVU client shall include the following headers within
the HTTP GET request:
frameCount.rvualliance.org: This header indicates the number of frames the client wishes to
receive for the TimeSeekRange.dlna.org time interval.
TimeSeekRange.dlna.org: This header indicates the time interval from which the server
must extract the frames returned in the response.
[5.1.3.1.1-3] M: RVU-S
An RVU server shall indicate support for the multi-frame scan mechanism by the value of the
multi-frame flag in the RVUALLIANCE.ORG_FLAGS parameter of the 4th res@protocolInfo field
for a given media stream. See section 5.6.3.
[5.1.3.1.1-4] M: RVU-S
An RVU server shall indicate the maximum number of frames that may be requested by the
client for a Multi-Frame request in accordance with the requirements of section 5.6.4.
[5.1.3.1.2-1] M: RVU-S
An RVU server shall respond to a multi-frame scan operation request by including the following
headers within the HTTP GET response:
frameCount.rvualliance.org: This header indicates the actual number of frames the server
was able to provide within the response content.
TimeSeekRange.dlna.org: This header indicates the time interval from which the provided
frames were extracted.
frameMap.rvualliance.org: This header provides the absolute time position for individual
frames within the stream.
[5.1.3.1.2-2] M: RVU-S
An RVU server shall conditionally include the frameMap.rvualliance.org header in the HTTP
response to indicate a mapping between each frame returned and its absolute time position in
the content stream.
[5.1.3.1.2-3] M: RVU-S
If the value of frameCount.rvualliance.org is zero then an RVU server shall not include the
frameMap.rvualliance.org header.
[5.1.3.1.2-4] M: RVU-S
If the value of frameCount.rvualliance.org is non-zero then an RVU server shall include the
frameMap.rvualliance.org header.
[5.1.3.1.2-5] M: RVU-S
At the end of each frame entry an RVU server shall indicate the byte-offset of a frame within the
frameMap.rvualliance.org response content.
[5.1.3.1.2-6] M: RVU-S
An RVU server shall send frames in display order.
[5.1.3.1.3-1] M: RVU-S
The response data shall be a sequence of frames that comply with the definition of a random
access point for that coding type.
For example, in the case of H.262/MPEG2 video, response content will consist of a sequence of
I-Frames. In the case of H.264/MPEG4 AVC and H.265 HEVC video, the response content
could consist of a sequence of IDR-Frames or I-Frames coded without P-Slice references to
previous frames.
Note: The I-Frame sequence is delivered in the same transport container as the content stream,
e.g. PES or ES.
5.1.3.1.4 Restrictions
[5.1.3.1.4-1] M: RVU-S
The TimeSeekRange.dlna.org value returned in the response to a multi-frame request shall
return a time range that starts at or before the requested start point and ends at or after the
requested endpoint.
The value of frameCount.rvualliance.org in the response header is not required to match the
value specified in the originating request.
[5.1.3.1.4-2] O: RVU-S
The RVU server may, based on its internal implementation, return a frameCount.rvualliance.org
value greater than or less than the value specified in the request.
[5.1.3.1.4-3] S: RVU-S
The RVU server should not return a frame count greater than the number of frames requested,
[5.1.3.1.4-4] S: RVU-S
The RVU Server should attempt to return as many frames as possible up to the number of
frames requested.
[5.1.3.1.4-5] O: RVU-S
An RVU server may return a frameCount.rvualliance.org value equal to zero if it cannot locate
any frames within the requested time range.
[5.1.3.1.4-6] M: RVU-S
The RVU server shall return a value of frameCount.rvualliance.org that matches the actual
number of frames returned in the content of the response.
Frames returned in the response content are not required to be equally distributed over the
requested range.
[5.1.3.1.4-7] S: RVU-S
An RVU server should return frames as uniformly distributed over the requested time range as
practical.
[5.1.3.1.4-8] S: RVU-C
If the RVU server returns a frame count less than the number of frames requested, the client
should use those frames over the timeframe originally requested
[5.1.3.1.4-9] S: RVU-C
An RVU client HTTP Get request which is subsequent to a previous Get request should use a
start time coincident with the end time of the last Get request.
frameCount.rvualliance.org: count
frame-list = # ( frame-entry )
V1.0 Rev 1.5.1 147 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
frame-time = npt-time
Note: multiple frame entries are separated by LWS (linear white space, e.g. space, tab, etc).
Example
frameMap.rvualliance.org: Frame:1 00:00:00.079 0 Frame:2 00:00:00.519 161492 Frame:3
00:00:01.039 399124 Frame:4 00:00:01.519 615136 Frame:5 00:00:02.039 828328
[5.1.4-1] M: RVU-C
An RVU client shall support UPnP’s AVTransport profile.
The RVU protocol limits its usage of AVTransport to those states and transitions depicted in
Figure 5-2.
NO_MEDIA_PRESENT
SetAVTransportURI
Stop
Each state transition begins in a given state, accepts some input that triggers the transition, and
then transitions to the same or a different state. Any errors that occur are handled as defined by
AVTransport for HTTP.
RVU decomposes the AVTransport PLAYING state into the following virtual substates (see
Figure 5-3):
PLAYING_NORMAL
PLAYING_SLOW
PLAYING_FAST
Correspondingly, RVU defines the following playback speed classes:
NOTE: virtual substates are so noted to signify they all represent states for playing, but are in
every way full states with inbound and outbound transitions.
Play [Fast]
NO_MEDIA_PRESENT
SetAVTransportURI SetAVTransportURI
Stop Stop
STOPPED
Stop
Play [Fast]
PLAYING_FAST Play [Normal] Play[Normal] PLAYING_SLOW
Play [Slow]
Play [Normal] PLAYING_NORMAL
Seek Seek
[Absolute Time] [Absolute Time]
Pause
Seek [Absolute Time] PLAYING
Pause Play [Normal]
Pause
Play [Fast]
Stop Play [Slow]
PAUSED_PLAYBACK
AVTransport: PAUSED_PLAYBACK
Seek [Absolute Time],
AVTransport: PLAYING
Seek [Forward Frame]
AVTransport: STOPPED
AVTransport: NO_MEDIA_PRESENT
Play [Slow]
An RVU element shall support all state transitions summarized in the following table. The
sections following the table provide detailed descriptions of the RVU-specified states, state
transitions, and allowed operations per state.
Each of these state transitions is described in detail in this section. Each state transition makes
use of the AVTransport service plus HTTP messaging. The AVTransport service includes
actions that are invoked; once invoked, each action responds (“events”) appropriately. HTTP
communication between server and client is handled through requests and responses.
Transition Notes
Items italicized within brackets represent data to be filled in. For example,
"CSeq: <number>" translates to actual data such as "CSeq: 123".
Items in bold represent actions. For example, SetAVTransportURI().
TimeSeekRange.dlna.org entries in the description table and diagrams for Media State
Transitions define the content of the "range specifier" and do not represent the exact
syntax of this header.
o TimeSeekRange.dlna.org: npt=3.5-5.0
o TimeSeekRange.dlna.org: npt=45.2-
o TimeSeekRange.dlna.org: npt=3.4-5.1/*
o TimeSeekRange.dlna.org: npt=45.2-999/2400
Server responses always specify "instance duration" and client requests never specify
instance duration (see [Ref10], section 7.4.40.3).
Synopsys
This transition describes a state change from the NO_MEDIA_PRESENT state to the
STOPPED state.
Starting condition is a state such that no media URI has been selected for playback.
Triggering input is an invocation of SetAVTransportURI.
Resulting state is a state such that a media URI has been selected for playback but
playback has not yet begun.
No. Description
1 The server invokes the client’s AVTransport::SetAVTransportURI action with the following
arguments:
InstanceID = <avtransport-instance-id>
CurrentURI = <uri-of-content>
CurrentURIMetaData = <uri-metadata>
2 The client sets its internal URI pointer to the URI specified by the CurrentURI parameter.
3 The client issues an AVTransport::LastChange event with the following parameters:
TransportState: STOPPED
AVTransportURI: <uri-of-content>
AVTransportURIMetaData: <meta-data>
Sequence Diagram
Client Server
AVT::SetAVTransportURI
InstanceId = <avtransport-instance-id>
CurrentURI = <uri-of-content>
CurrentURIMetaData = <content-meta-data>
AVT::LastChange
TransportState = STOPPED
AVTransportURI = <uri-of-content>
AVTransportURIMetaData = <uri-meta-data>
Synopsis
This transition describes a state change from the STOPPED state to the STOPPED state for the
purpose of changing the selected playback media.
Starting condition is a state in which a valid URI has been selected for playback but
playback has not begun: STOPPED.
Triggering input is an invocation of SetAVTransportURI.
Resulting state is a state in which a valid URI has been selected for playback but playback
has not begun: STOPPED.
No. Description
1 The server invokes the client’s AVTransport::SetAVTransportURI action with the following
arguments:
InstanceID = <avtransport-instance-id>
CurrentURI = <uri-of-content>
CurrentURIMetaData = <content-meta-data>
2 The client sets its internal URI pointer to the URI specified by the CurrentURI argument.
3 The client issues an AVTransport::LastChange event with the following parameters:
AVTransportURI: <uri-of-content>
AVTransportURIMetaData: <meta-data>
Sequence Diagram
Client Server
AVT::SetAVTransportURI
InstanceId = <avtransport-instance-id>
CurrentURI = <uri-of-content>
CurrentURIMetaData = <content-meta-data>
AVT:LastChange
AVTransportURI = <uri-of-content>
AVTransportURIMetaData = <uri-meta-data>
Synopsis
This transition describes a state change from the STOPPED state to the PLAYING_NORMAL
substate (PLAYING state) for the purpose of changing the selected playback media.
Starting condition is a state in which a valid URI has been selected for playback but
playback has not begun: STOPPED.
Triggering input is an invocation of Play with a speed of 1.
Resulting state is a state in which playback at normal playback speed is in progress:
PLAYING
No. Description
1 The server invokes the client’s AVTransport::Play action with the following arguments:
InstanceID = <avtransport-instance-id>
Speed = 1
2 The client issues an AVTransport::LastChange event with parameters:
TransportState: PLAYING
TransportPlaySpeed: 1
3 The client issues an HTTP GET request to the server with the following headers:
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<internal-start-time>
4 The client sets its local decoding rate to normal playback speed (1X) and configures other
decoder specific parameters.
Note: The client must examine the Sender Pacing bit of the DLNA.ORG_FLAGS field to
determine if clock synchronization must be utilized. If clock synchronization is required then the
client must take steps to ensure clock sync.
5 The server responds to the GET request by issuing a response containing the following response
headers:
HTTP Response Code 200 OK
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<media-start-time> - <media-end-time>
Transfer-Coding: chunked
Content-Type: <mime-type>
The content contains the streaming media for the requested URI.
6 The client begins pulling data from the HTTP GET and feeding it to the decoder.
7 If/when the server reaches the end of stream and has sent the last byte of stream data to the
client, the server sends a zero-size chunk to indicate the end of data
8 The client detects the end of data condition in the ongoing streaming HTTP transaction upon
receiving the 0-sized chunk and so, upon draining the content buffer it:
a. Sets its absolute playback position to "END_OF_MEDIA"
b. Changes TransportState from PLAYING to STOPPED
c. Issues an AVTransport::LastChange event with the following parameters:
TransportState: STOPPED
Note: “a” and ”b” should be done concurrently and must be done prior to “c”
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = 1
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
Configure
Configure decoder speed
Configure no pacing
Configure no clock synch
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
Repeat
HTTP/1.1 200 OK
transferMode.dlna.org: Streaming
Data
TimeSeekRange.dlna.org: ntp=<time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
AVT::LastChange
TransportState = STOPPED
AVT::GetPositionInfo
The content contains the streaming media for the requested URI.
6 The client begins reading the HTTP stream and feeding data into the decoder.
7 If/when the server reaches the end of stream and has sent the last byte of stream data to the
client, the server sends a zero-size chunk to indicate the end of data
8 The client detects the end of data condition in the ongoing streaming HTTP transaction upon
receiving the 0-sized chunk and so, upon draining the content buffer it:
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 <= speed < 0 || 0 < speed < 1 )
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed> ( -1 <= speed < 0 ||
0 < speed < 1 )
Configure
Configure decoder speed
Configure no pacing
Configure no clock synch
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
Repeat
HTTP/1.1 200 OK
transferMode.dlna.org: Streaming
Data
TimeSeekRange.dlna.org: ntp=<time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
AVT::LastChange
TransportState = STOPPED
AVT::GetPositionInfo
Synopsis
This transition describes a state change from the STOPPED state to the PLAYING_FAST
substate (PLAYING state) for the purpose of scanning content in fast forward or fast reverse.
Starting condition is a state in which a valid URI has been selected for playback but
playback has not begun: STOPPED.
Triggering input is an invocation of Play with PlaySpeed value less than -1 or greater than 1.
Resulting state is a state in which playback in fast reverse or fast forward scanning is in
progress: PLAYING.
No. Description
1 The server embedded control point invokes the client’s AVTransport::Play action with the
following arguments:
InstanceID = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
2 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PLAYING
TransportPlaySpeed = <speed>
3 The client configures its decoder to play at N frames per seconds.
No. Description
4 The client loops over the following sequence:
1. The client issues an HTTP GET with the following headers:
frameCount.rvualliance.org: <requested-frame-count>
TimeSeekRange.dlna.org: npt=<internal-start-time> - <trick-play-end-range>
2. The server issues an HTTP GET response with the following response headers:
transferMode.dlna.org: Streaming
frameCount.rvualliance.org: <available-frame-Count>
frameMap.rvualliance.org: <frame-map>
TimeSeekRange.dlna.org: npt=<internal-start-time> - <seek-range-end>
3. For each frame, the client plays it out with 1/N second spacing between each frame.
4. When the client is Playing Fast reverse, and reaches the zero time position, then upon
draining the content buffer, the client shall:
a. Set the absoluteTimePosition to 00:00:00.
b. Transition the TransportState to STOPPED.
c. Event a single LastChange event for the TransportState variable.
Note: “a” and” b” should be done concurrently and must be done prior to “c”.
5. If <trick-play-end-range> is at or past the end of media, the server will include in the
HTTP GET response, a response header as follows:
eom-indicator.rvualliance.org: 1
At which point, upon draining the content buffer, the client shall:
a. Set its absolute playback position to "END_OF_MEDIA".
b. Change TransportState from PLAYING to STOPPED.
c. Issue an AVTransport::LastChange event with the following parameters:
TransportState: STOPPED
Note: “a” and ”b” should be done concurrently and must be done prior to “c”
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
AVT:LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed> ( -1>speed OR 1<speed )
Configure
Configure decoders
Configure no pacing
Configure no clock synch
HTTP:GET
frameCount.rvu.org: <frame-count-requested>
TimeSeekRange.dlna.org: npt=<time-range-requested>
Repeat
HTTP:GET response
HTTP:GET response
eom-indicator.rvualliance.org: 1
AVT::LastChange
TransportState = STOPPED
AVT::GetPositionInfo
Synopsis
This transition describes a state change from the STOPPED state to the STOPPED state for the
purpose of setting the absolute playback position of media.
Starting condition is a state in which a valid URI has been selected for playback but
playback has not begun: STOPPED.
Triggering input is an invocation of Seek.
Resulting state is a state in which a valid URI has been selected for playback, the absolute
time position to start playback at has been updated to a new value but playback has not
begun.
No. Description
1 The server control point invokes the client’s AVTransport::Seek action with the following
parameters:
InstanceID = <avtransport-instance-id>
Unit = ABS_TIME
Target = <absolute-time-target>
Note: From the Stopped state, the only supported Unit for seeking is absolute time.
2 Client updates its internal start time to the value represented by Target.
Note: The client is currently not displaying video in this state. The Seek action is used to instruct
the client to start at a time other than S0 when it initiates a Play action.
Sequence Diagram
Client Server
AVT:Seek
InstanceId = <avtransport-instance-id>
Unit = ABS_TIME
Target = <npt absolute-time-target>
Update saved
position
Synopsis
This transition describes a state change from the PLAYING_SLOW substate (PLAYING state)
to the PLAYING_NORMAL substate (PLAYING state) for the purpose of resuming normal
playback from slow motion.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = 1
AVT:LastChange
TransportPlaySpeed = 1
Configure
Configure decoders
Configure pacing
Configure no clock synch
Repeat
Synopsis
This transition describes a state change from the PLAYING_SLOW substate (PLAYING state)
to the PLAYING_FAST substate (PLAYING state) for the purpose of fast forward or fast reverse
scanning.
No. Description
InstanceID = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
2 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PLAYING
TransportPlaySpeed = <speed>
3 The client configures its decoder to play at N frames per seconds.
4 The client loops over the following sequence:
1. The client issues an HTTP GET with the following headers
frameCount.rvualliance.org: <requested-frame-count>
TimeSeekRange.dlna.org: npt=<internal-start-time> - <end-seek-range>
2. The server issues an HTTP GET response for the requested content with the following
headers:
transferMode.dlna.org: Streaming
frameCount.rvualliance.org: <available-frame-Count>
frameMap.rvualliance.org: <frame-map>
TimeSeekRange.dlna.org: npt=<internal-start-time> - <end-seek-range>
3. For each frame, the client plays it out with 1/N second spacing between each frame.
4. When the client is Playing Fast reverse, and reaches the zero time position, then upon
draining the content buffer, the client shall:
a. Set the absoluteTimePosition to 00:00:00.
b. Transition the TransportState to STOPPED.
c. Event a single LastChange event for the TransportState variable.
Note: “a” and” b” should be done concurrently and must be done prior to “c”.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed> ( -1>speed OR 1<speed )
Configure
Configure decoders
Configure no pacing
Configure no clock synch
HTTP:GET
frameCount.rvualliance.org: <frame-count-requested>
TimeSeekRange.dlna.org: npt=< time-range-requested>
Repeat
HTTP:GET response
Synopsis
This transition describes a state change from the PLAYING_SLOW substate (PLAYING state)
to the PAUSED_PLAYBACK state for the purpose of pausing.
No. Description
1 The server control point invokes the client’s AVTransport::Pause action with the following
arguments:
InstanceID = <avtransport-instance-id>
2 The client pauses its local video decoder and stops reading the HTTP response stream. The
client shall keep the HTTP connection alive (e.g. Pause-Release via HTTP connection stalling).
3 The server detects that its TCP buffer has filled on the HTTP response socket and blocks until
there is space available or the HTTP connection is terminated.
4 The client issues an AVTransport::LastChange event with the following parameters:
TransportState: PAUSED_PLAYBACK
Sequence Diagram
Client Server
AVT::Pause
InstanceId = <avtransport-instance-id>
Configure
Pause decoders
Stall TCP
AVT::LastChange
TransportState = PAUSED_PLAYBACK
Synopsis
This transition describes a state change from the PLAYING_SLOW substate (PLAYING state)
to the PLAYING_SLOW substate (PLAYING state) for the purpose of jumping to new positions
while in slow motion.
Sequence Diagram
Client Server
AVT:Seek
InstanceId = <avtransport-instance-id>
Unit = ABS_TIME
Target = <npt absolute-time-target>
Flush TCP
Pause/Flush
decoders
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
HTTP/1.1 200 OK
Configure transferMode.dlna.org: Streaming
Configure decoders TimeSeekRange.dlna.org: npt=<time>
Configure no pacing Transfer-Coding: chunked
Configure no clock synch Content-Type: <mime-type-of-media>
Data
Synopsis
This transition describes a state change from the PLAYING_FAST substate (PLAYING state) to
the PLAYING_NORMAL substate (PLAYING state) for the purpose of resuming normal
playback from the fast forward or fast rewind scanning mode.
Starting condition is a state in which fast forward or fast rewind scan are in progress:
PLAYING.
Triggering input is an invocation of Play with PlaySpeed equal to 1.
Resulting state is a state in which normal playback is in progress: PLAYING.
No. Description
1 The server control point invokes the client’s AVTransport::Play action with the following
arguments:
InstanceID = <avtransport-instance-id>
Speed = 1
2 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PLAYING
TransportPlaySpeed = 1
3 The client stops fast forward / rewind playback. This operation depends on the mechanism used
for Fast Forward / Rewind.
If the client implements fast forward / rewind by repeated time based seeking, the client
stops its internal seek / play loop. The client records the internal start time position of the
last frame it displayed.
If the client implements fast forward / rewind using the RVU multi-frame scan
mechanism, the client stops feeding frames to the decoder and halts its internal seek /
play loop. The client records the internal start time position of the last frame displayed by
the decoder. This value can be obtained using the frameMap.rvualliance.org parameter
returned with multi-frame scan responses.
4 The client sets its internal start time to the last absolute time position of the previously displayed
frame. The client issues an HTTP GET with the following parameters:
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<internal-start-time> -
5 The server responds to the HTTP GET request with the following parameters:
HTTP Response Code 200 OK
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<actual-start-time> - <actual-end-time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
6 Client begins pulling data from the HTTP GET. The client sets its local decoding rate to 1 and
plays out the content.
Note: The client must examine the Sender Pacing bit of the DLNA.ORG_FLAGS field to
determine if clock synchronization must be utilized.
7 For END_OF_MEDIA sequence, see Table 5-7.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = 1
AVT:LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
Configure
Configure decoder speed
Configure pacing
Configure clock synch
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
Repeat
HTTP/1.1 200 OK
transferMode.dlna.org: Streaming
Data
TimeSeekRange.dlna.org: npt=<time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
Synopsis
This transition describes a state change from the PLAYING_FAST substate (PLAYING state) to
the PLAYING_SLOW substate (PLAYING state) for the purpose of playing in slow motion from
the fast forward or fast rewind scanning mode.
Starting condition is a state in which fast forward or fast rewind scan are in progress:
PLAYING.
Triggering input is an invocation of Play with PlaySpeed between -1 and 1 (ex 0).
Resulting state is a state in which slow motion playback is in progress: PLAYING.
No. Description
1 The server control point invokes the client’s AVTransport::Play action with the following
parameters:
InstanceID = <avtransport-instance-id>
Speed = <speed> (-1 <= speed < 0 || 0 < speed < 1)
2 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PLAYING
TransportPlaySpeed = <speed>
3 The client stops fast forward playback. This operation depends on the mechanism used for Fast
Forward / Rewind.
If the client implements fast forward / rewind by repeated time based seeking, the client stops its
internal seek / play loop. The client records the internal start time position of the last frame it
displayed.
If the client implements fast forward / rewind using the RVU multi-frame scan mechanism, the
client stops feeding frames to the decoder and halts its internal seek / play loop. The client
records the internal start time position of the last frame displayed by the decoder. This value can
be obtained using the frameMap.rvualliance.org parameter returned with multi-frame scan
responses.
4 The client updates its internal start time position to the value of the absolute time position of the
previously displayed frame. The client issues an HTTP GET with the following parameters:
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<internal-start-time> -
5 The server responds to the HTTP GET request with the following parameters:
HTTP Response Code 200 OK
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<actual-start-time> - <actual-end-time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
6 The client begins pulling data from the HTTP GET. The client sets its local decoding rate to
<speed> and plays out the content.
7 For END_OF_MEDIA sequence, see Table 5-8.
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 <= speed < 0 || 0 < speed < 1 )
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed>
Configure
Configure decoder speed
Configure no pacing
Configure no clock synch
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
Repeat
HTTP/1.1 200 OK
Data transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
Synopsis
This transition describes a state change from the PLAYING_FAST substate (PLAYING state) to
the PAUSED_PLAYBACK state for the purpose of pausing from fast forward or fast rewind.
Starting condition is a state in which fast forward or fast rewind scan are in progress:
PLAYING.
Triggering input is an invocation of PAUSE.
Resulting state is a state in which playback is paused: PAUSED_PLAYBACK.
V1.0 Rev 1.5.1 175 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
No. Description
1 The server control point invokes the client’s AVTransport Pause action with the following
arguments:
InstanceID = <avtransport-instance-id>
2 The client pauses its local video decoder and drains any outstanding data on the HTTP
connection. The client updates its internal start time to the absolute time position of the last frame
displayed from the multi-frame scan operation.
3 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PAUSED_PLAYBACK
Sequence Diagram
Client Server
AVT::Pause
InstanceId = <avtransport-instance-id>
Configure
Pause decoders
Flush TCP
AVT::LastChange
TransportState = PAUSED_PLAYBACK
Synopsis
This transition describes a state change from the PLAYING_FAST substate (PLAYING state) to
the PLAYING_FAST substate (PLAYING state) for the purpose of playing changing fast forward
or fast reverse playback speeds.
Starting condition is a state in which fast forward or fast rewind scan are in progress:
PLAYING.
Triggering input is an invocation of Seek with PlaySpeed less than -1 or greater than 1.
Resulting state is a state in which fast forward or fast rewind scan are in progress:
PLAYING.
No. Description
1 The server control point invokes the client’s AVTransport Seek action with the following
arguments:
InstanceID = <avtransport-instance-id>
Unit = ABS_TIME
Target = <absolute-position>
2 The client finishes playing out any frames left over from the last multi-scan request. The client
sets its internal start time to the value specified by the absolute position.
3 The client restarts looping over multi-scan requests at the same speed it was issuing requests at
prior to the Seek operation.
Sequence Diagram
Client Server
AVT:Seek
InstanceId = <avtransport-instance-id>
Unit = ABS_TIME
Target = <absolute-seek-time>
HTTP:GET
frameCount.rvualliance.org: <frame-count-requested>
TimeSeekRange.dlna.org: npt=<time-range-requested>
Repeat
HTTP:GET response
HTTP/1.1 200 OK
Data
transferMode.dlna.org: Streaming
frameCount.rvualliance.org: <frame-count-delivered>
TimeSeekRange.dlna.org: npt=<time-range-requested>
frameMap.rvualliance.org: <frame-map-delivered>
Content-Length: <byte-length>
Synopsis
This transition describes a state change from the PLAYING_NORMAL substate (PLAYING
state) to the PLAYING_SLOW substate (PLAYING state) for the purpose of playing in slow
motion.
No. Description
2 Client issues an AVTransport::LastChange event with a value with the following parameters:
TransportState = PLAYING
TransportPlaySpeed: <speed>
3 The client sets its local decoding rate to the value specified by speed.
4 The client reads content from the stream and feeds it to the decoder.
5 For END_OF_MEDIA sequence, see Table 5-8.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 <= speed < 0 || 0 < speed < 1 )
AVT:LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed>
Configure
Configure decoder speed
Configure no pacing
Configure no clock synch
HTTP Stream
Repeat
Data
Synopsis
This transition describes a state change from the PLAYING_NORMAL substate (PLAYING
state) to the PLAYING_FAST substate (PLAYING state) for the purpose of playing in fast
forward or fast reverse.
2. The server issues an HTTP GET response for the requested content with the following
headers:
transferMode.dlna.org: Streaming
frameCount.rvualliance.org: <available-frame-Count>
frameMap.rvualliance.org: <frame-map>
TimeSeekRange.dlna.org: npt=<internal-start-time> - <end-seek-range>
3. For each frame, the client plays it out with 1/N second spacing between each frame.
4. When the client is Playing Fast reverse, and reaches the zero time position, then upon
draining the content buffer, the client shall:
a. Set the absoluteTimePosition to 00:00:00.
b. Transition the TransportState to STOPPED.
c. Event a single LastChange event for the TransportState variable.
Note: “a” and” b” should be done concurrently and must be done prior to “c”.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed> ( -1 > speed OR 1 < speed
)
Configure
Configure decoders
Configure no pacing
Configure no clock synch
HTTP:GET
frameCount.rvualliance.org: <frame-count-requested>
TimeSeekRange.dlna.org: npt=<time-range-requested>
Repeat
HTTP:GET response
Synopsis
This transition describes a state change from the PLAYING_NORMAL substate (PLAYING
state) to the PAUSED_PLAYBACK state for the purpose of pausing.
No. Description
1 The server control point invokes the client’s AVTransport::Pause action with the following
arguments:
InstanceID = <avtransport-instance-id>
2 The client pauses its local video decoder and stops reading the HTTP response stream. The
client shall keep the HTTP connection alive (e.g. Pause-Release via HTTP connection stalling).
3 The server detects that its TCP buffer has filled on the HTTP response socket and blocks until
there is space available or the HTTP connection is terminated.
4 Client issues an AVTransport::LastChange event with the following parameters:
TransportState: PAUSED_PLAYBACK
Sequence Diagram
Client Server
AVT::Pause
InstanceId = <avtransport-instance-id>
Configure
Pause decoders
Stall TCP
AVT::LastChange
TransportState = PAUSED_PLAYBACK
Synopsis
This transition describes a state change from the PLAYING_NORMAL substate (PLAYING
state) to the PLAYING_NORMAL substate (PLAYING state) for the purpose of jumping to a new
position in the media.
Sequence Diagram
Client Server
AVT:Seek
InstanceId = <avtransport-instance-id>
Unit = ABS_TIME
Target = <npt absolute-time-target>
Flush TCP
Pause/Flush
decoders
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<absolute-time-range>
HTTP:GET response
Data
Synopsis
This transition describes a state change from any of the playing modes to the STOPPED state.
Sequence Diagram
Client Server
AVT::Stop
InstanceId = <avtransport-instance-id>
Close HTTP
Flush decoders
AVT::LastChange
TransportState = STOPPED
Synopsis
This transition describes a state change from the PAUSED_PLAYBACK state to the
PAUSED_PLAYBACK state for the purpose of jumping to a new position while paused.
V1.0 Rev 1.5.1 185 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
4 The server issues an HTTP response with the following response headers:
HTTP Status Code 200 OK
TimeSeekRange.dlna.org: npt=<actual-start-time> - <actual-end-time>
transferMode.dlna.org: Streaming
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
5 The client reads the HTTP response stream, decodes and displays the first decodable frame
presented in the stream. The client then pauses its decoder and pauses the stream via HTTP
connection stalling.
6 The client issues an AVTransport::LastChange event with the following parameters:
TransportState = PAUSED_PLAYBACK
Sequence Diagram
Client Server
AVT::Seek
InstanceId = <avtransport-instance-id>
Unit = ABS_TIME
Target = <npt absolute-time-target>
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
Flush TCP
Flush decoders
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
HTTP:GET response
HTTP/1.1 200 OK
Configure transferMode.dlna.org: Streaming
Configure decoders TimeSeekRange.dlna.org: npt=<time>
Configure pacing Transfer-Coding: chunked
Configure clock synch Content-Type: <mime-type-of-media>
Stall TCP
AVT::LastChange
TransportState = PAUSED_PLAYBACK
Synopsis
This transition describes a state change from the PAUSED_PLAYBACK state to
PAUSED_PLAYBACK state for the purpose of frame forward stepping.
a. The client sets its internal start time to the last absolute time position from the frame scan
operation. The client issues an HTTP GET with the following parameters:
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<internal-start-time>
b. The server responds to the HTTP GET request with the following parameters:
HTTP Response Code 200 OK
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<actual-start-time> - <actual-end-time>
Transfer-Coding: chunked
Content-Type: <mime-type-of-media>
4 The client reads a frame from the HTTP response stream, decodes the frame, and displays it.
The client continues to pause the stream using HTTP connection stalling (see Figure 5-24).
Note: If the client maintains some type of intermediary buffer between the HTTP/TCP buffer and
the video decoders, it may source frames in order from that buffer instead of the HTTP/TCP
frame and refill that buffer when no more frames are available. This implementation is preferred
as it will result in fewer Block-Resume-Block sequences between the client and servers TCP
buffers.
5 The client issues an AVTransport::LastChange event with the following parameters:
TransportState: PAUSED_PLAYBACK
Sequence Diagram
Client Server
AVT::Seek
InstanceId = <avtransport-instance-id>
Unit = FRAME
Target = STEP_FORWARD
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
Stall TCP
AVT:LastChanged
TransportState = PAUSED_PLAYBACK
Figure 5-24: Paused (not from Fast Forward or Reverse) to Paused (Relative Seek) Sequence
Client Server
AVT::Seek
InstanceId = <avtransport-instance-id>
Unit = FRAME
Target = STEP_FORWARD
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
HTTP:GET
transferMode.dlna.org: Streaming
TimeSeekRange.dlna.org: npt=<client-internal-start-time>
AVT::LastChange
TransportState = PAUSED_PLAYBACK
Figure 5-25: Paused (from Fast Forward or Reverse) to Paused (Relative Seek) Sequence
Synopsis
This transition describes a state change from the PAUSED_PLAYBACK state to the
PLAYING_NORMAL substate (PLAYING state) for the purpose of resuming playback from
pause.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = 1
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = 1
Configure
Data
Synopsis
This transition describes a state change from the PAUSED_PLAYBACK state to the
PLAYING_SLOW substate (PLAYING state) for the purpose of playing in slow motion.
No. Description
1 The server control point invokes the client’s AVTransport::Play action with the following
arguments:
InstanceID = <avtransport-instance-id>
Speed = speed (-1 <= speed < 0 || 0 < speed < 1)
2 The client issues an AVTransport::LastChange event with the following parameters:
TransportState: PLAYING
TransportPlaySpeed: speed
3 The client configures its decoder rate to the speed specified by the speed parameter.
4 The client resumes reading the stalled HTTP response stream and begins playing the stream.
5 For END_OF_MEDIA sequence, see Table 5-8.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = speed (-1 <= speed < 0 || 0 < speed < 1)
AVT::LastChanged
TransportState = PLAYING
TransportPlaySpeed = speed (-1 <= speed < 0 ||
0 < speed < 1)
Configure
Data
2. The server issues an HTTP GET response for the requested content with the following
headers:
transferMode.dlna.org: Streaming
frameCount.rvualliance.org: <available-frame-Count>
frameMap.rvualliance.org: <frame-map>
TimeSeekRange.dlna.org: npt=<response-range-start> <response-range-end>
Content-Length: <content-length>
3. For each frame, the client plays it out with 1/N second spacing between each frame. The
internal-start-time is advanced 1/N seconds.
4. When the client is Playing Fast reverse, and reaches the zero time position, then upon
draining the content buffer, the client shall:
a. Set the absoluteTimePosition to 00:00:00.
b. Transition the TransportState to STOPPED.
c. Event a single LastChange event for the TransportState variable.
Note: “a” and” b” should be done concurrently and must be done prior to “c”.
Sequence Diagram
Client Server
AVT::Play
InstanceId = <avtransport-instance-id>
Speed = <speed> ( -1 > speed OR 1 < speed )
AVT::LastChange
TransportState = PLAYING
TransportPlaySpeed = <speed>
Configure
Configure decoders
Configure no pacing
Configure no clock synch
HTTP:GET
frameCount.rvu.org: <frame-count-requested>
TimeSeekRange.dlna.org: npt=<time-range-requested>
Repeat
HTTP:GET response
Synopsis
This transition describes a state change from the PAUSED_PLAYBACK state to the STOPPED
state for the purpose of stopping media playback while paused.
V1.0 Rev 1.5.1 195 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
Sequence Diagram
Client Server
AVT::Stop
InstanceId = <avtransport-instance-id>
Close HTTP
Flush decoders
AVT::LastChange
TransportState = STOPPED
Synopsis
This transition describes a state change from the STOPPED state to the
NO_MEDIA_PRESENT state.
Sequence Diagram
Client Server
AVT::SetTransportURI
InstanceId = <avtransport-instance-id>
CurrentURI = <null>
CurrentURIMetaData = <null>
AVT::LastChange
AVTransportURI = <null>
AVTransportURIMetaData = <null>
TransportState = NO_MEDIA_PRESENT
5.3 DTCP
[5.3-1] M: RVU-S
When encrypting content to send to the client, an RVU server shall use DTCP copy protection.
[5.3-2] M: RVU-S
An RVU server shall follow the recommendations of the DLNA Networked Device
Interoperability Guidelines, Volume 3: Link Protection, October 2006 [Ref11].
[5.3-3] M: RVU-C
An RVU client shall be “format cognizant” and process the DTCP descriptor embedded within
the content stream.
[5.3-4] M: RVU-S
An RVU server shall be capable of.asserting the DTCP DOT field defined in [Ref20] Table 17.,
[5.3-5] M: RVU-C
An RVU client shall support rendering of DTCP DOT content.
Transport Time Stamps (TTS) are defined in accordance with [Ref18], [Ref24] and Appendix C
of this document.
For example, clients utilizing a jitter smoothing mechanism as described by [Ref18] Annex J
Figure J.2 may utilize TTS headers as network-layer timestamps. A fixed delay is added to
packets entering the de-jitter buffer and packets are removed from the buffer when a local clock
derived from the TTS is greater than or equal to the TTS+delay value stored in a buffered
packets.
Alternatively some implementations may choose to integrate the de-jitter buffer with the video
decoding buffer. ISO 13818-1 [Ref18] Annex J describes how clients with sufficient decoder
capability may integrate de-jittering and decoding functions in a single system using the jittered
PCR values. Client implementers are free to implement whatever mechanism they see fit to
achieve clock synchronization but should tolerate at least 100 ms of server and home network
induced clock jitter.
RVU servers are not required to lock the TTS clock to partial transport streams embedded
PCRs. However, TTS headers meet MPEG2 [ISO13818-1, [Ref18] PCR clock precision
requirements.
[5.4.1-1] M: RVU-S
The server shall pace data out to the network according to the TTS clock and the TTS values in
the stream.
[5.4.1-2] M: RVU-S
The server shall maintain TTS accuracy in compliance with MPEG2 [ISO13818-1] [Ref18] clock
precision requirements.
[5.4.1-3] M: RVU-C
The client shall tolerate at least 100 ms of server and home network induced clock jitter.
[5.4.1-4] M: RVU-C
The client decoder clock shall not be derived from server generated TTS values..
[5.4.2-1] M: RVU-S
An RVU server shall guarantee total OS jitter for packet transmission does not exceed 50ms.
[5.4.2-2] M: RVU-S
An RVU server shall guarantee average OS jitter for packet transmission does not exceed
25ms.
[5.4.2-3] M: RVU-S
An RVU server shall guarantee one standard deviation of the OS jitter for packet transmission
does not exceed 10 ms.
OS jitter refers to variation generally attributable to the operating system, e.g. context switching,
kernel buffer copying and interrupt scheduling
Figure 5-31 demonstrates the theoretical model when the system is in steady state. While in
steady state, the Paced Server Data queue rate limits data into the system.
Server
Paced Server Data TCP TX Buffer
Rate Limiting
Client
Video Decoder Jitter Buffer TCP RX Buffer
Figure 5-32 demonstrates the theoretical model when the system has been paused using the
Connection Stalling mechanism. When the TCP TX Buffer is full, this signals to the server that
the client intends to pause.
Server
Paced Server Data TCP TX Buffer
Rate Limiting
Client
Video Decoder Jitter Buffer TCP RX Buffer
Data in the TCP RX Buffer and TCP TX buffer will not be paced correctly after a client resumes
to the play speed of 1 from the paused state. Data in these buffers were queued after the pacing
rate limiting stage (see Figure 5-33, red striped elements). This data cannot be utilized for TTS
synchronization calculations.
Server
Paced Server Data TCP TX Buffer
Rate Limiting
Client
Video Decoder Jitter Buffer TCP RX Buffer
Note that this is only a theoretical model and the Video Decoder and Jitter Buffer may be
integrated into a single unit in actual implementation.
When resuming from a connection stalling based pause, data in the servers TCP output buffer
and data in the clients TCP input buffer do not have accurate timing information. It is important
that the client ignore this data for TTS synchronization. However, there is no signaling
mechanism present that allows the client to know when this data has been received in entirety.
For this reason, it is recommended that the client wait 30 seconds after resuming from a pause
before restarting its TTS synchronization mechanism. 30 seconds provides more than enough
time to fully drain the TCP buffer while not being so long as to introduce perceivable clock drift.
If the conditions for mandatory clock synchronization are satisfied, the following requirements
apply to the RVU elements:
[5.4.4-1] M: RVU-C
The client shall receive and decode the TTS (timestamped transport stream) stream
continuously without noise and blanking by using the method described in 5.4.4-2 or 5.4.4-3.
[5.4.4-2] O: RVU-C
The client may recover the clock present in the TTS stream and base its decoding clock on the
recovered frequency.
[5.4.4-3] O: RVU-C
The client may keep pace of audio and video decoding speed with the TTS stream by skipping
or repeating the picture frame, and control the audio decoding speed.
[5.4.4-4] M: RVU-S
The server shall pace data out to the network according to the clock within the TTS stream.
If the conditions for mandatory clock synchronization are not satisfied, the following
requirements apply to the RVU elements:
[5.4.4-5] M: RVU-C
The client shall base its decoding clock off of a local free running clock.
[5.4.4-6] M: RVU-S
The server shall not pace data and shall implement HTTP GET as a normal pull operation.
[5.5-2] M: RVU-C
An RVU client shall complete processing of any UPnP Connection manager action and
transition to the appropriate state within 300ms of reception of the action.
[5.5-3] M: RVU-C
Upon reception of a video stream, an RVU client / DLNA DMR shall display video within
1 (one) second of the reception of the first packet of video from the network.
5.6.1 RVUALLIANCE.ORG_APID
Syntax
rvu-apid-param = [rvu-apid-delim] “RVUALLIANCE.ORG_APID=” rvu-apid-value
rvu-apid-delim = “;”
rvu-apid-value = 1 or more digits (0-9), formatted as specified in [Ref8],
excluding leading 0s
Description
This parameter indicates the audio PID/SCID the client must choose as its default audio
playback PID/SCID for content contained in transport stream formats. The range of the rvu-apid-
value must be a legal PID value for MPEG2 transport streams and a legal SCID value for ITU-R
BO.1516 SYSTEM B transport streams.
5.6.2 RVUALLIANCE.ORG_VPID
Syntax
rvu-vpid-param = [rvu-vpid-delim] “RVUALLIANCE.ORG_VPID=” rvu-vpid-value
rvu-vpid-delim = “;”
rvu-vpid-value = 1 or more digits (0-9), formatted as specified in [Ref8],
excluding leading 0s
Description
This parameter indicates the video PID/SCID the client must choose as its default video
playback PID/SCID for content contained in transport stream formats. The range of the rvu-vpid-
value must be a legal PID value for MPEG2 transport streams and a legal SCID value for ITU-R
BO.1516 SYSTEM B transport streams, [Ref22].
5.6.3 RVUALLIANCE.ORG_FLAGS
Syntax
rvu-flags-param = [rvu-flags-delim] “RVUALLIANCE.ORG_FLAGS=” rvu-flags-value
rvu-flags-delim = “;”
rvu-flags-value = 8 HEX characters (0-9,A-F,a-f), formatted as specified in
[Ref8]
Description
Each bit in the binary representation of the hex string represents a single flag value in the bit
field. The bit field is ordered such that bit 31 is the most significant bit while bit 0 is the least
significant bit. Flag descriptions are defined below.
V1.0 Rev 1.5.1 202 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Media Transfer
Bit 31: Reserved. This bit shall not be used for any purpose and must be set to zero.
Bit 30: Multi-frame scan support. This bit indicates that a server supports the multi-frame
scan mechanism defined previously.
Bit 29-0: Reserved. These bits shall not be used for any purpose and must be set to zero.
5.6.4 RVUALLIANCE.ORG_MAX_REQUEST_FRAME_COUNT
Syntax
rvu-max_request_frame_count-param = [rvu-max_request_frame_count-delim]
“RVUALLIANCE.ORG_MAX_REQUEST_FRAME_COUNT=” rvu-max_frequest_frame_count-value
rvu-max_request_frame_count-delim = “;”
rvu-max_request_frame_count-value = 1 or more digits (0-9), formatted as
specified in [Ref8], excluding leading 0s
Description
This parameter indicates the maximum number of frames that should be requested by the client
for a Multi-Frame request.
5.6.5 RVUALLIANCE.ORG_SUB_INFO
Syntax
rvu-sub_info-param = [rvu-sub_info-delim] “RVUALLIANCE.ORG_SUB_INFO=” rvu-
sub_info-section [rvu-sub_info-group-separator rvu-sub_info-section]…
rvu-sub_info-delim = “;”
rvu-sub_info-section = “rvu-sub_info-lang-value rvu-sub_info-separator rvu-
sub_info-format-value rvu-sub_info-separator rvu-sub_info-pid-value”
rvu-sub_info-lang-value = “none” | standard ISO-639 (see [Ref43]) 3 character
language code defined for subtitles
rvu-sub_info-format-value = “DVB” | “SBTVD”
rvu-sub_info-pid-value = 1 or more digits (0-9), formatted as specified in
[Ref8], excluding leading 0s
rvu-sub_info-separator = “-“
rvu-sub_info-group-separator = “/”
Description
This parameter indicates the subtitling languages, formats, and PIDs for the client to display
subtitles.
Example
RVUALLIANCE.ORG_SUB_INFO=eng-SBTVD-3000/RVUALLIANCE.ORG_SUBINFO=spa-SBTVD-3001
A complete example would show the above text appended to sample fourth res@protocolInfo
fields listed in section 5.7.
[5.6.6-1] M: RVU-C
An RVU client shall support all DLNA compliant media format profiles listed in Table 5-31.
3D frame compatible (3DFC) video is indicated by AVC profile names from Table 5-31 that
contain the text string “3DFC” or by the other two AVC profile names that do not contain the
“3DFC” text string. If a server does not specifically identify an AVC profile name that contains
the text “3DFC” in the ProtocolInfo string, a client identifies the presence of 3DFC video using
the rvu3DTVStructure attribute within the ReconfigureDisplayBuffer3DTV command.
[5.6.6-2] M: RVU-C
An RVU client shall support the closed caption transport within the AVC profiles of Table 5-31 in
accordance with the requirements in Appendix C.
[5.6.6-3] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-32 in accordance with the
bitstream requirements Appendix C.
[5.6.6-4] M: RVU-C
Clients capable of decoding HEVC shall support the media format profiles listed in Table 5-33 in
accordance with the bitstream requirements in Appendix C.
[5.6.6-5] S: RVU-C
Clients capable of decoding HEVC should implement RVU 2.0 graphics in compliance with
[Ref45].
<media_mime_type>
Table 5-34: Latin America Specific Media Format Profile MIME Types
Note: where noted in the below examples, integer means non-negative integer.
Playback Video Program (MPEG TS, h.264 video, AC3 audio, TTS)
Playback Video Program (MPEG TS, h.262 video, MPEG1 - L2 audio, TTS)
Playback Video Program (MPEG TS, h.262 video, AC3 audio, TTS)
Playback Video Program (ITU-R BO.1516 Sys B TS, SD, MPEG1 - L2 audio, TTS)
Playback Video Program (ITU-R BO.1516 Sys B TS, SD, AC3 audio, TTS)
Internet Video Program (MPEG TS, h.264 video, AC3 audio, No TTS)
Internet Video Program (MPEG TS, h.262 video, MPEG1 - L2 audio, No TTS)
Internet Video Program (MPEG TS, h.262 video, AC3 audio, No TTS)
Internet Video Program (ITU-R BO.1516 Sys B TS, SD, MPEG1 - L2 audio, No TTS)
Internet Video Program (ITU-R BO.1516 Sys B TS, SD, AC3 audio, No TTS)
Recording Video Program (MPEG TS, h.264 video, AC3 audio, TTS)
Recording Video Program (MPEG TS, h.262 video, MPEG1 - L2 audio, TTS)
Recording Video Program (MPEG TS, h.262 video, AC3 audio, TTS
Recording Video Program (ITU-R BO.1516 Sys B TS, SD, MPEG1 - L2 audio, TTS)
Recording Video Program (ITU-R BO.1516 Sys B TS, SD, AC3 audio, TTS)
Pause Live Video Program (MPEG TS, h.264 video, AC3 audio, TTS)
Pause Live Video Program (MPEG TS, h.262 video, MPEG1 - L2 audio, TTS)
Pause Live Video Program (MPEG TS, h.262 video, AC3 audio, TTS
Pause Live Video Program (ITU-R BO.1516 Sys B TS, SD, MPEG1 - L2 audio, TTS)
Pause Live Video Program (ITU-R BO.1516 Sys B TS, SD, AC3 audio, TTS)
Some of the user-selectable parameters for the RVU client are stored on the client itself. Setting
these parameters requires the client to generate local menus and OSDs to provide an interface
for the user. Since the server is in control of the client display, the server requests that the client
assume control of the client UI to display the client’s local menus and OSDs using the
RequestLocalUI command. The client returns control of the UI to the server by sending the
LocalUIEvent command to the server.
The server requests the client to assume control of the UI when the user selects setting or
changing the following parameters. An RVU client shall support transfer of control from the
server for all UI elements defined in Table 4-89. If the client does not support setting local
parameters for some of these menus, or supports setting these parameters by other means, the
client is still required to process the request. The client may return control to server without
generating a local menu, or may display an OSD indicating these parameters are not supported
or are processed by other means.
A general outline of the process by which control is passed between the server and client is
shown in Figure 6-1.
Client Server
RequestLocalUI
(enable,
Begin local UI control org.rvualliance.<UI Element>,
keyVal)
LocalUIEvent
Resume control of
Exit local UI (starting=0, element,
keyVal) client UI
[6.1-1] M: RVU-S
An RVU server shall pass control to the client to set CC parameters by sending the
RequestLocalUI command with an element attribute of org.rvualliance.CC.
V1.0 Rev 1.5.1 210 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Client Local Menus
[6.1-2] M: RVU-C
An RVU client shall pass control back to the server after setting CC parameters by sending the
LocalUIEvent command with a “starting” attribute of “terminating”.
[6.2-1] M: RVU-S
An RVU server shall pass control to the client to set screen format parameters by sending the
RequestLocalUI command with an element attribute of org.rvualiance.HDTV.
[6.2-2] M: RVU-C
An RVU client shall pass control back to the server after setting screen format parameters by
sending the LocalUIEvent command with a “starting” attribute of “terminating”.
[6.3-1] M: RVU-S
An RVU server shall pass control to the client to Restart by sending the RequestLocalUI
command with an element attribute of org.rvualiance.Restart.
[6.3-2] M: RVU-C
If the client restart action allows the current session with the server to continue after the restart
action, an RVU client shall pass control back to the server after Restart by sending the
LocalUIEvent command with a “starting” attribute of “terminating”.
[6.3-3] M: RVU-C
If the client restart action does not allow the current session to the server to continue, the client
shall send the RUI “shutdown” command (0) to the server before executing its Restart action.
[6.4-1] M: RVU-S
The server shall reset all client parameters that are set and stored on the server to factory
defaults.
[6.4-2] M: RVU-S
The server shall pass control of the UI to the client, using the RequestLocalUI RUI command
with the element attribute set to “org.rvualliance.Reset.
[6.4-3] M: RVU-C
The client shall invoke its reset action to set its parameters to factory default values
[6.4-4] M: RVU-C
The client shall return control to the server by sending the LocalUIEvent command to the server
with a “starting” attribute set to “terminating”.
[6.5-1] M: RVU-S
When a user selects Dolby Digital On/Off, the server shall pass control of the UI to the client by
sending the RequestLocalUI RUI command with an “element” attribute of
“org.rvualliance.Dolby”.
[6.5-2] M: RVU-C
After setting the Dolby Digital parameter, the client shall return control to the server by sending
the LocalUIEvent command to the server with a “starting” attribute set to “terminating”.
[6.6-1] M: RVU-S
When the user selects setting Network parameters, the server shall transfer control of the UI to
the client using the RequestLocalUI RUI command with an “element” attribute of
“org.rvualliance.Network”.
The client may use its local “Network” menu to select network parameters such as IP address
acquisition mode and Manual IP address selection.
[6.6-2] M: RVU-C
The client shall return control to the server by sending the LocalUIEvent command to the server
with a “starting” attribute set to “terminating”.
[6.7-1] M: RVU-S
When the server receives this UnhandledKey, it shall pass control to the client by sending
RequestLocalUI to the client with a UIElement of org.rvualliance.UnhandledKey.
[6.7-2] M: RVU-C
The client shall return control to the server by sending the LocalUIEvent command to the server
with a “starting” attribute set to “terminating”.
No. Description
1 Server sends RequestLocalUI command (4.8.2.4.2) with a local UI element not supported by the
client
2 Client returns ERR_INVALID_PARAM error code to server (Table 4-95)
Optional further sequence of commands illustrated below
3 Server may generate a remote UI indication that the local UI element is not supported then waits
for user input acknowledgement and/or client may send ClientRequestLocalUI command
(4.8.2.4.4)
4 If the client sends ClientRequestLocalUI, the server responds with RequestLocalUI command
(4.8.2.4.2) with the element attribute of org.rvualiance.ClientRequest (Table 4-89)
5 Client sends LocalUIEvent with the following attributes:
- Starting = 1 (Non-zero)
- Element = org.rvualliance.ClientRequest (4.8.2.4.3)
6 Client displays its local UI indicating that the local UI element is not supported, for example,
“operation not supported” then waits for user input acknowledgement
7 Client sends LocalUIEvent with the following attributes:
- Starting = 0
- Element = org.rvualliance.ClientRequest (4.8.2.4.3)
8 Server produces RUI graphics and AV content in effect when ClientRequestLocalUI was called
(4.8.2.4.3-5)
Alternatively clients may implement to the following scenario for displaying an alternate server
selection menu:
Server provides a RUI soft button for access to alternate server selection based on
information stored in the server to indicate the particular client in session needs RUI
prompting for alternative server selection
When a user selects this RUI button, the server calls RequestLocalUI with element
org.rvualliance.ServerSelection
After client displays local UI and user makes a selection, the connected server is
released via a Shutdown command and the client begins session with the new server
If an error case where a server calls RequestLocalUI with element
org.rvualliance.ServerSelection, the TV client can respond in the informative scenario
described in section 6.8
The Quality of Service (QoS) and Diagnostics section of the RVU protocol describes the QoS
model and diagnostic tools for use in network environments where RVU servers and clients
reside.
Home network connections are typically designed for connectivity, potentially sacrificing link
quality to provide interoperability. A lack of centralized control over these devices leads to
difficulty in creating a high-quality, robust environment. High-quality services such as digital
video are particularly susceptible to noticeable quality degradation.
Although QoS is managed on the server side, both the server and the client are responsible for
tagging packets with the appropriate priority level as defined by DLNAQOS.
7.1 Standards
The RVU protocol employs DLNAQOS as defined in the DLNA standard [Ref10]. Diagnostics
can be based on standard protocol tools as discussed in the Diagnostics section below.
In particular, the following documents outline the basis for RVU QoS:
DLNA Networked Device Interoperability Guidelines, Volume 1: Architectures and
Protocols, Oct 2006 [Ref10]
DLNA Networked Device Interoperability Guidelines, Volume 3: Link Protection,
Oct 2006 [Ref11]
UPnP QoS Architecture:2, 16 Oct 2006 [Ref2]
Specific network architecture is beyond the scope of DLNA specifications. However, the
appendices to the specifications contain recommendations that may clarify the potential network
topologies and their related diagnostic needs.
The network environment of a typical usage of RVU in an open network is shown in Figure 7-2
below. The number of clients and home network elements may vary.
The external content source in both figures can be any kind of feed that the server is designed
to process (e.g., ATSC feed, satellite feed, or cable).
The home network elements in Figure 7-2 can be any kind of network-enabled PC, router,
mobile device, internet gateway device, etc., and may also use other types of network
connections (e.g., 802.11g). The elements may or may not be DLNA-compliant.
Because the RVU protocol does not preclude the use of more than one RVU server, it is also
possible that two servers may be deployed in the same network, as in Figure 7-3. QoS and
diagnostic tools should be designed such that they can support such a deployment.
For open networks where a high degree of quality is not expected (e.g., a typical home
computer network), a best-effort approach to network quality is acceptable. However, in open
network installations where a user would expect a high degree of quality, such as for streaming
video, a balance must be struck between controlling network traffic quality and allowing devices
to operate.
One option for managing QoS in an open network is to isolate the RVU traffic on its own
network segment, with all traffic destined for the RVU clients passing through the RVU server
(which may be desired if non-RVU network components such as the router do not provide the
notion of UPnP-based prioritized QoS).
7.3.1 Recommendations
[7.3.1-2] S: RVU-S
An RVU server should include a network controller.
[7.3.1-3] S: RVU-S
An RVU server should provide a user interface to allow validation of clients discovered on the
network. The specific validation process is beyond the scope of this document. In general, the
server should refuse/disconnect a RUI connection/session if a client fails validation.
7.3.2 Requirements
7.4 Diagnostics
7.4.1 Recommendations
To monitor QoS throughout the system, diagnostic tools must be available on both the server
and the client software. The goal of diagnostics in RVU is to provide ongoing non-invasive
monitoring of network performance. In addition, diagnostic tools help to remediate issues with
new installations.
System/throughput tests
Feedback analysis
Bidirectional analysis
Remote customer support discovery of existing traffic streams
Connectivity tests
[7.4.1-2] S: RVU-C
The RVU client should utilize a local user interface to manage the setup, connectivity, status,
and diagnostics for the network technology selected.
7.4.2 Requirements
[7.4.2.1-4] M: RVU-S
An RVU server shall collect the number of packets delivered and number of errored packets for
each node, logging the time at which the collection took place.
[7.4.2.1-5] S: RVU-S
An RVU server's collection of packet delivery and error information should be infrequent (e.g.,
once every 24 hours).
[7.4.2.1-6] M: RVU-S
An RVU server shall use the number of packets delivered and number of errored packets to
calculate the actual packet error rate. Note: A low packet error rate is expected (e.g., 1 error in
100,000 packets); excessive measured packet error rate over time indicates unexpected
impulse noise sources in the network.
For example, for each network (MoCA, 802.11n, HomePlug, etc.), the packet/byte count and
packet error count must be available. In addition, PHY rates for each node-to-node link must be
accessible, as shown in Table 7-1.
Field Definition
bytes_sent This shall be the total number of bytes sent from the specified node.
bytes_recv This shall be the total number of bytes received from the specified node.
err_pkts This shall be the total number erroneously-received packets.
node_cnt This shall be the total number of nodes in the network.
mac This shall be the standard MAC address of the node.
list_cnt This shall be the number of node-to-node links, defined as the number of nodes
multiplied by one less than the number of nodes. For example, if there are 5 nodes in
the network, the list_cnt would be 5*4=20.
src_mac The MAC table index of the source node.
dst_mac The MAC table index of the destination node.
phy_rate The node-to-node transfer rate in kbps
The Client Image Acquisition (CIA) sub-protocol of RVU defines the optional process to enable
clients to acquire an executable boot image from the server. The section defines how a client
requests and acquires its boot image
checks for a new boot image and is notified when one exists
RVU clients are not required to use the CIA sub-protocol. Throughout this section,
requirements that are marked as mandatory for an RVU client are mandatory only for those
clients that choose to use the CIA sub-protocol. Clients that choose to implement the CIA sub-
protocol must meet all the mandatory requirements in this section (i.e. all required features must
be implemented). RVU clients that do not use the CIA sub-protocol must not use any CIA
actions or call any CIA functions.
RVU servers should use the CIA sub-protocol. Throughout this section, requirements that
are marked as mandatory for an RVU server are mandatory only for those servers that choose
to use the CIA sub-protocol. Servers that choose to implement the CIA sub-protocol must meet
all the mandatory requirements in this section (i.e. all required features must be implemented).
Servers that choose to not implement the CIA sub-protocol do not implement the Client Image
Manager service, see Section 12. An RVU server is expected to work with all configurations of
validated RVU clients (see 7.3.1), whether or not they employ the CIA sub-protocol.
The overall flow for the optional client image acquisition process is shown in Figure 8-1 below.
Acquisition
Client obtains boot image from server.
Image available
Yes No
to server?
Management
Client and server coordinate to manage client boot image.
8.1 Standards
RVU’s CIA section uses TFTP and SHA-1 [Ref17] hash functions, as well as UPnP actions and
eventing.
Figure 8-2 shows the suggested initialization process if a boot image for the client is available to
the server.
Client Server
Should client
Yes
upgrade?
Send response:
Download and
UpgradeRequired = Yes
verify image
True, Availability = 0
Use current image
No
Yes
Select RVU
Server
Continue Session
Management process
Figure 8-3 is an example of initial client contact with a server where a boot image for the client is
not available to the server. Note that in this case the client may wait indefinitely for a boot
image. While the client should have a process for handling this case, defining this process is
outside the scope of this document.
Client Server
Yes
Select Envoy
No
Server
See other diagram
Have
Wait for Send response:
No resident
image? Availability = 1
image?
Yes
Server acquires
Update NewImageID
software for any new
State Variable
client
Send notification to
subscribed clients
Sample sequence diagrams for CIA are shown in the following figures.
Figure 8-4 shows the initial image acquisition process. The steps in the shaded area only occur
if the server does not have the client image when the client first calls the server. The last four
steps always happen when the client is trying to acquire new software from the server
(regardless of whether the server already has an image for the client).
Client Server
Subscribe to NewImageID
Update NewImageID
Send NewImageID Event to Subscribed Clients
Client Image
Figure 8-5 shows an example of image maintenance initialization where the server does not
have a new image for the client during initialization.
Client Server
Figure 8-6 shows the maintenance of the client image, starting at the point where the server
gets a new boot image for the client.
Client Server
Update NewImageID
Send NewImageID Event to Subscribed Clients
Return values indicating TFTP location of Client Image and that Upgrade is Necessary
Client Image
[8.3-1] M: RVU-C
An RVU client shall avoid using a value of 0 (zero) for the major software version number if the
minor software version number is also zero.
[8.3-2] M: RVU-S
An RVU server shall only distribute RVU-related client software. RVU CIA is not a mechanism
for updating client software that is not related to the RVU protocol.
[8.4.1-1] M: RVU-C
Following the selection of an RVU server (described in section 3.2.1), an RVU client shall invoke
the CheckImage UPnP action.
[8.4.1-2] M: RVU-C
An RVU client shall set both the MajorSoftwareVersion and MinorSoftwareVersion numbers in
the CheckImage UPnP action to zeroes (0) if the client has no boot image.
[8.4.1-3] M: RVU-S
An RVU server shall respond to a CheckImage action with a message that an image is not
available as soon as the server determines that it is unable to locate a software image for the
client (i.e., the server will not delay its response while attempting to obtain an image for the
client).
[8.4.1-4] M: RVU-S
If the major version number of the client image on the server is greater than the major version
number on client's image, the RVU server shall consider its image to be an upgrade to the
client's image.
[8.4.1-5] M: RVU-S
If the client image on the server and on the client have the same major version number, and the
minor version number on the server's image is greater than the minor version number on the
client's image, the RVU server shall consider its image to be an upgrade to the client's image.
[8.4.1-6] M: RVU-S
An RVU server shall provide the fully qualified pathname specifying where on the server the
boot image resides in the TftpFilepath argument of the CheckImage response if the server is
distributing a boot image for the client.
[8.4.1-7] M: RVU-S
An RVU server shall set the UpgradeRequired argument of the CheckImage response to true if
the server determines that the requesting client must obtain a new boot image.
[8.4.1-8] M: RVU-S
An RVU server shall set the UpgradeRequired argument of the CheckImage response to true if
the client provided zeroes in both its MajorSoftwareVersion and MinorSoftwareVersion
(indicating that a client does not have a boot image, per [8.4.1-2]), even if the server is not
distributing a boot image for the client.
[8.4.1-9] M: RVU-S
An RVU server shall set the UpgradeRequired argument of the CheckImage response to false if
the client provided values other than zeroes in both its MajorSoftwareVersion and
MinorSoftwareVersion (indicating that the client has a boot image) if the server is not distributing
a boot image for the client.
[8.4.1-10] M: RVU-S
If an RVU server sets the UpgradeRequired argument of the CheckImage response to false, it
shall also set the Urgent argument of the response to false.
[8.4.1-11] S: RVU-S
If an RVU server sets the UpgradeRequired argument of the CheckImage response to true, it
should also set the Urgent argument of the response to true if the server determines the client
must upgrade immediately.
[8.4.1-12] S: RVU-S
If an RVU server sets the UpgradeRequired argument of the CheckImage response to true, it
should set the Urgent argument of the response to false if the server determines that the client
need not upgrade immediately.
[8.4.1-13] M: RVU-S
An RVU server shall provide the fully qualified pathname per [8.4.1-6] if the Availability
argument of the CheckImage response is set to 0 (zero).
[8.4.1-14] O: RVU-S
If an RVU server does not intend to acquire a boot image for a client, the server may set the
Availability argument of the CheckImage response to 2.
[8.4.1-15] M: RVU-S
If an RVU server is unable to locate a boot image for a client, and the server chooses not to
notify the client that it does not intend to acquire the image per [8.4.1-14], the server shall set
the Availability argument of the CheckImage response to 1 (one).
[8.4.1-16] S: RVU-C
If an RVU client receives notification that software is not currently available on the server but the
server will attempt to acquire a boot image, and the client chooses to wait for the server to
obtain its boot image, the client should subscribe to eventing on the NewImageID state variable
on the RVU server.
[8.4.1-17] S: RVU-C
If an RVU client receives notification that software is not currently available on the server, and
the client subscribes to eventing on the NewImageID state variable on the RVU server, and has
no stored image, the client should have a fallback mechanism so that the client does not wait
indefinitely for a change to this state variable. For example, the client should call CheckImage
another time or select a different RVU server.
[8.4.1-18] O: RVU-C
If an RVU client receives notification that software is not currently available on the server, and
no other RVU servers are found, the client may attempt to boot any software image that it
currently has.
[8.4.1-19] M: RVU-C
If an RVU client receives notification that a software upgrade is not required, it shall continue
using its current boot image, per section 8.4.4.
[8.4.1-20] M: RVU-S
An RVU server shall have the ability to process and send a response to each requesting client
within 2 seconds of the receipt of a request. Note: an RVU server will likely receive multiple
requests since multiple clients may exist on the network.
[8.4.1-21] O: RVU-C
An RVU client may provide a URL in the DownloadLocation argument of the CheckImage UPnP
action, indicating where the client software image will be available.
The requirements in this section (8.4.2) are optional for RVU servers that have alternate
methods of obtaining client images. However, RVU servers that do not have alternate image
acquisition methods, and those that have alternate methods but choose to implement this
functionality, are required to meet all mandatory requirements in this section.
V1.0 Rev 1.5.1 229 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Client Image Acquisition
[8.4.2-1] M: RVU-S
An RVU server that has internet connectivity shall be capable of searching for a client’s boot
image given its URL.
[8.4.2-2] M: RVU-C
DELETED
[8.4.2-3] M: RVU-S
If an RVU client specifies a URL in the CheckImage action, and the RVU server is unable to find
a boot image locally for that client or begin obtaining the image by other means, the RVU server
shall search for a client image at that URL.
[8.4.2-4] M: RVU-S
If an RVU server is able to locate a client image at the URL specified by the client in the
CheckImage action, the RVU server shall download that image.
[8.4.2-5] M: RVU-S
If an RVU server successfully uses a client-provided URL to find a client image, the server shall
use the version information for that client image found at that URL concatenated with ".version".
[8.4.2-6] M: RVU-S
An RVU server shall interpret the ASCII-formatted client image version number found at the
client-provided URL as "majorNumber.minorNumber", where majorNumber is the major version
number of the image, and minorNumber is the minor version number of the image.
[8.4.2-7] M: RVU-S
An RVU server shall associate the version numbers found at the client-provided URL with the
software image found at that URL.
[8.4.2-8] M: RVU-S
If no version numbers are available at the client-provided URL, an RVU server shall not
distribute the associated image.
[8.4.2-9] M: RVU-S
If an RVU server uses a client-provided URL to find and download a client image, the server
perform a shall a SHA-1 hash [Ref17] of the downloaded software image.
[8.4.2-10] M: RVU-S
An RVU server shall copy the checksum information found at the URL of the software
concatenated with ".checksum".
[8.4.2-11] M: RVU-S
An RVU server shall interpret the checksum found at the client-provided URL as a standard
hexadecimal ASCII string. Example: 2eb722f340d4e57aa79bb5422b94d556888cbf38.
[8.4.2-12] M: RVU-S
If the SHA-1 hash of the software image downloaded in [8.4.2-4] does not match the checksum
from [8.4.2-10], an RVU server shall not distribute the downloaded image.
[8.4.3-1] M: RVU-C
If an RVU client has obtained the fully qualified pathname specifying where on the server the
boot image resides and UpgradeRequired is true, the client shall establish a TFTP session to
the specified location on its associated RVU server and pull the file at the filepath provided in
the response to the CheckImage action.
[8.4.3-2] O: RVU-C
If an RVU client that is currently running a client image receives a response to the CheckImage
action with UpgradeRequired set to true but with Urgent set to false, the client may postpone the
use of the new image.
[8.4.3-3] M: RVU-C
If an RVU client that is currently running a client image receives a response to the CheckImage
action with UpgradeRequired set to true and Urgent set to true, the client shall immediately
perform the TFTP transfer and use the new image as soon as the transfer is complete.
[8.4.3-4] O: RVU-C
If an RVU client has obtained the fully qualified pathname specifying where on the server the
boot image resides, the Availability argument is 0 (zero), and UpgradeRequired is false, the
client may perform the TFTP transfer from the specified location on its associated RVU server.
[8.4.3-5] M: RVU-C
Once the entire boot image has been downloaded, the client shall verify the validity of the boot
image. Note: CIA does not provide any authenticity or integrity checking of the boot image itself.
It is strongly suggested that clients internally verify that the acquired boot image is an authorized
boot image intended for the client.
[8.4.3-6] M: RVU-S
An RVU server shall transfer the boot image as-is to the requesting client (i.e., the server does
not alter the client image in any way).
[8.4.3-7] O: RVU-C
An RVU client may ignore an image if it recognizes the given AvailableMajorSoftwareVersion
and AvailableMinorSoftwareVersion as an image that has failed previously.
[8.4.4-1] M: RVU-C
After acquiring and validating a boot image, or verifying that the existing boot image is current,
an RVU client shall execute its boot image.
[8.4.4-2] M: RVU-C
Once its boot image is functional, an RVU client shall either re-perform UPnP discovery or
access stored UPnP metadata from the initial discovery process.
[8.4.4-3] M: RVU-C
Once an RVU server is discovered, an RVU client shall select an RVU server as described in
section 3.2.1.
[8.4.4-4] O: RVU-C
Once an RVU server is discovered, an RVU client may automatically re-select the RVU server
selected during the initial startup process (described in section 3.2.1).
[8.4.4-5] M: RVU-C
After pairing with an RVU server per section 3.2.1, an RVU client shall subscribe to the
NewImageID state variable on the associated server.
[8.4.4-6] M: RVU-C
After subscribing to the NewImageID state variable on the associated server, an RVU client
shall invoke the CheckImage action on the associated server and proceed as described in
section 8.4.3.
[8.5-1] S: RVU-S
An RVU server should maintain boot images for its clients.
[8.5-2] M: RVU-S
An RVU server shall have methods by which the server can acquire updated boot images for
clients.
[8.5-3] M: RVU-S
When an RVU server acquires an updated boot image for any RVU client, the server shall
update the NewImageID state variable.
[8.5-4] M: RVU-C
When an RVU client receives notification that the NewImageID state variable has changed, the
client shall invoke the CheckImage action and proceed as described in section 8.4.3.
9 UPnP Templates
Templates for the UPnP devices and services employed by the RVU protocol are described in
this section. Pointers to the UPnP templates for standard devices and services used in RVU are
provided in this section. In addition, templates for one new device (RVUServer, chapter 11) and
one new service (ClientImageManager, chapter 12) created for the RVU protocol are
referenced.
Table 9-1 describes all devices and services required for an RVU server.
Device/Service Detailed In
RVUServer Section 11, Appendix A: RVUServer Device Template
ClientImageManager Section 12, Appendix B: ClientImageManager Service Template
RemoteUIServerDevice UPnP RemoteUIServerDevice:1, Device Template [Ref4]
RemoteUIServer UPnP RemoteUIServer:1, Service Template [Ref5]
Table 9-2 summarizes the devices and services on the RVU client. (Details about the columns
in these tables can be found in Ref1.)
Req Req
DeviceType Root or ServiceType or Service ID
Opt1 Opt1
MediaRenderer:1 Yes R RenderingControl:1.0 R urn:upnp-org:serviceId:RenderingControl
— — — ConnectionManager:1.0 R urn:upnp-
org:serviceId:ConnectionManager
— — — AVTransport:1.0 R* urn:upnp-org:serviceId:AVTransport
Table 9-3 provides references to the templates for the devices and services required for an RVU
client.
Device/Service Detailed In
MediaRenderer UPnP MediaRenderer:1, Device Template [Ref6]
Note: The AVTransport service, while optional in the MediaRenderer device template,
is required for RVU.
RenderingControl UPnP RenderingControl:1, Service Template [Ref7], extended as per section
9.1 of this document.
ConnectionManager UPnP ConnectionManager:1, Service Template [Ref8], extended as per
section 9.2 of this document.
AVTransport UPnP AVTransport Service:1 Template [Ref9], extended as per section 9.3 of
this document.
A server may change the active audio stream of a program containing multiple audio tracks in a
transport stream. A server may also change the active video stream of a program containing
multiple video tracks in a transport stream. The extensions defined in this section allow for these
stream changes.
[9.1-1] M: RVU-C
An RVU client shall implement all extensions to the UPnP RCS 1.0 as described in this section
9.
9.1.1.1 X_AudioPID
For MPEG2 transport streams, the X_AudioPID state variable shall represent the PID value of
the currently decoded audio stream. For ITU-R BO.1516 SYSTEM B Transport Streams, the
X_AudioPID state variable shall represent the SCID value of the currently decoded audio
stream.
The X_AudioPID state variable should only be accessed via the X_UpdateAudioSelection and
X_GetAudioSelection actions.
9.1.1.2 X_AudioEncoding
The X_AudioEncoding state variable represents the audio encoding type of the currently
decoded audio stream. The value specified by this state variable shall match the stream_id
indicated in the transport stream PES header for the selected audio stream. The allowed values
are ”mp3”, “mpeg1layer2”, “aac”, “ac3”, “eac3”, “pcm”.
This state variable should only be accessed through the X_UpdateAudioSelection and
X_GetAudioSelection actions.
9.1.1.3 X_VideoPID
The X_VideoPID state variable, accessed via the X_UpdateVideoSelection and
X_GetVideoSelection represents PID value of the currently decoded video stream for MPEG2
Transport Streams and the SCID value of the currently decoded video stream for ITU-R
BO.1516 SYSTEM B Transport Streams.
This state variable should only be accessed through the X_UpdateVideoSelection and
X_GetVideoSelection actions.
9.1.1.4 X_VideoEncoding
The X_VideoEncoding state variable, accessed via the X_UpdateVideoSelection and
X_GetVideoSelection represents the video encoding type of the currently decoded video
stream. The value specified by this state variable shall match the stream_id indicated in the
transport stream PES header for the selected video stream. The allowed values are “h264”,
“h265” and “mpeg2”.
This state variable should only be accessed through the X_UpdateVideoSelection and
X_GetVideoSelection actions.
2
Variable Name Evented Moderated Max Event Logical Min Delta per Event
1
Event Rate Combination
X_AudioPID no no n/a n/a n/a
X_AudioEncoding no no n/a n/a n/a
X_VideoPID no no n/a n/a n/a
X_VideoEncoding no no n/a n/a n/a
1
Determined by N, where Rate = (Event)/(N seconds).
2
(N) * (allowedValueRange Step).
9.1.3 Actions
Extensions to the RCS 1.0 are listed in Table 9-6 and defined in this section 9.1.3.
Except where noted, calling the action will have no effect on state.
Name
X_UpdateAudioSelection
X_GetAudioSelection
X_UpdateVideoSelection
X_GetVideoSelection
9.1.3.1 X_UpdateAudioSelection
The RVU server uses the X_UpdateAudioSelection action to update the actively decoded audio
stream PID and encoding type.
The initial main audio PID and encoding type selections are provided in the 4th field of the
ProtocolInfo contained in the URIMetaData field of an AVTransport SetAVTransportURI action
invocation. When invoked during an active UPnP A/V session, this action shall result in the
client immediately updating the audio PID and coding type. Otherwise, this action shall be
ignored.
9.1.3.1.1 Arguments
9.1.3.1.3 Errors
Standard errors from [Ref1] apply. Additional errors are:
9.1.3.2 X_GetAudioSelection
The RVU server uses the X_GetAudioSelection to query the client for the currently decoded
audio stream PID and encoding type.
This action returns the currently active audio PID and audio coding type for currently selected
audio stream. The initial main audio PID and encoding type selections are provided in the 4th
field of the ProtocolInfo contained in the URIMetaData field of an AVTransport
SetAVTransportURI action invocation.
9.1.3.2.1 Arguments
9.1.3.2.3 Errors
Standard errors from [Ref1] apply. Additional errors are:
9.1.3.3 X_UpdateVideoSelection
The RVU server uses the X_UpdateVideoSelection action to update the actively decoded video
stream PID and encoding type.
This action changes the current active video PID and video coding type for the main video
stream. The initial main video PID and encoding type selections are provided in the 4th field of
the ProtocolInfo contained in the URIMetaData field of an AVTransport SetAVTransportURI
action invocation. When invoked during an active UPnP A/V session, this action shall result in
the client immediately updating the video PID and coding type. Otherwise, this action shall be
ignored.
9.1.3.3.1 Arguments
9.1.3.3.3 Errors
Standard errors from [Ref1] apply. Additional errors are:
9.1.3.4 X_GetVideoSelection
The RVU server uses the X_GetVideoSelection to query the client for the currently decoded
video stream PID and encoding type.
This action returns the currently active video PID and video coding type for currently selected
video stream. The initial main video PID and encoding type selections are provided in the 4th
field of the ProtocolInfo contained in the URIMetaData field of an AVTransport
SetAVTransportURI action invocation.
9.1.3.4.1 Arguments
9.1.3.4.3 Errors
Standard errors from [Ref1] apply. Additional errors are:
</argument>
<argument>
<name>AudioPID</name>
<direction>in</direction>
<relatedStateVariable>
X_AudioPID
</relatedStateVariable>
</argument>
<argument>
<name>AudioEncoding</name>
<direction>in</direction>
<relatedStateVariable>
X_AudioEncoding
</relatedStateVariable>
</argument>
</argumentList>
</action>
</relatedStateVariable>
</argument>
<argument>
<name>VideoPID</name>
<direction>in</direction>
<relatedStateVariable>
X_VideoPID
</relatedStateVariable>
</argument>
<argument>
<name>VideoEncoding</name>
<direction>in</direction>
<relatedStateVariable>
X_VideoEncoding
</relatedStateVariable>
</argument>
</argumentList>
</action>
9.1.4.5 ServiceStateTable
<stateVariable sendEvents="no">
<name>X_AudioPID</name>
<dataType>ui2</dataType>
</stateVariable>
<stateVariable sendEvents=”no”>
<name>X_AudioEncoding</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_VideoPID</name>
<dataType>ui2</dataType>
</stateVariable>
<stateVariable sendEvents=”no”>
<name>X_VideoEncoding</name>
<dataType>string</dataType>
</stateVariable>
PrepareForConnection
ConnectionComplete
If the PrepareForConnection and ConnectionComplete are implemented on the client, the
server will utilize these actions to set up and tear down a UPnP A/V session. The server will not
utilize these actions, and therefore be unable to setup a UPnP A/V session, if they are not
implemented on the client.
Seek while in the PAUSED_PLAYBACK state must not fail if the Seek range is valid.
Seek while in the PLAYING state must not fail if the Seek range is valid.
Seek while in the STOPPED state must not fail if the Seek range is valid.
10 References
(http://Tools.ietf.org/html/rfc2616)
Ref29 IETF Network Working Group RFC4122, A Universally Unique IDentifier July 2005
(UUID) URN Namespace
Ref30 MPEG_DIRECTV_SD Video Profile Constraints Relative to ISO 13818-2 Nov 2010
http://www.rvualliance.org/, member log in, technical WG, reference
documents
Ref31 MPEG_DIRECTV_SD Audio Profile Constraints Relative to ISO 11172-1 & Nov 2010
3
http://www.rvualliance.org/, member log in, technical WG, reference
documents
Ref32 ISO 11172-1 Information technology -- Coding of moving pictures and 1993 – 1999
associated audio for digital storage media at up to about 1,5 Mbit/s -- Part 1:
Systems
Ref33 ISO 13818-7 Information technology — Generic coding 2006 – 2010
of moving pictures and associated audio information — Part 7: Advanced
Audio Coding (AAC)
Ref34 ISO 14496-3:2001/Amd 1:2003 Information technology — Coding of 2001, 2003
audio-visual objects — Part 3: Audio
Ref35 ISO 14496-14:2003 Information technology — Coding of 2003 – 2010
audio-visual objects — Part 14: MP4 file format
Ref36 ISO 11172-3 Information technology -- Coding of moving pictures and 1993-1996
associated audio for digital storage media at up to about 1,5 Mbit/s -- Part 3:
Audio
Ref37 ABNT* NBR 15604:2008 Digital Terrestrial Television – Receivers
* ABNT = Brazilian National Standards Organization, in Portuguese
as Associação Brasileira de Normas Técnicas (ABNT)
Ref38 ABNT NBR 15602:2007 - Digital terrestrial television - Video coding,
audio coding and multiplexing
Ref39 ABNT NBR 15603:2007 - Digital terrestrial television - Multiplexing
and service information (SI)
Ref40 ARIB STD-B24 Data Coding and Transmission Specification
for Digital Broadcasting (Closed Captioning)
Ref41 ETSI EN 300 743, Digital Video Broadcasting (DVB) Subtitling 1.3.1 Nov 2006
systems
Ref42 MPEG_DIRECTV_SD Video Profile Subtitling and Client Decoding 0.1 Dec 2012
Requirements for Latin American Services
https://causeway.rvualliance.org/wg/TWG/document/532
Ref43 ISO-639-3:2007 Codes for the representation of names of 2007
languages — Part 3: Alpha-3 code for comprehensive
coverage of languages
Ref44 ISO/IEC 23008-2 MPEG-H Part 2 and ITU-T H.265, Information technology
-- High efficiency coding and media delivery in heterogeneous environments
-- Part 2: High efficiency video coding
Ref45 RVU Version 2.0 Protocol Specification Rev 1.0 Dec 2012
FINAL
urn:rvualliance-org:device:RVUServer:1
This device can be a UPnP root device, or it can be embedded within a different device.
urn:rvualliance-org:device:RVUServer:1
Specifications for the ClientImageManager service can be found in section 12 of this document.
This UPnP service must be employed exactly as specified in this document.
The following table summarizes the devices and services on the RVU server.
Req Req
DeviceType Root or ServiceType or Service ID
Opt1 Opt1
RVUServer:1 Yes R ClientImageManager: O urn:rvualliance-
1 org:serviceId:ClientImageManager
RemoteUIServerDevice:1 No R RemoteUIServer:1 R urn:upnp-
org:serviceId:RemoteUIServer
Figure 11-1 shows the logical structure of the RVUServer Device and its sub-device and
services.
RVUServer
RemoteUiServerDevice
RemoteUIServer
ClientImageManager
11.2.3.1 RVUServer
The ClientImageManager service defines a UPnP service on the RVUServer UPnP device. This
service contains a CheckImage action, which is invoked by a client to determine whether the
client needs to download a new boot image, whether an upgrade is required, whether an
immediate upgrade is needed, and where that new software is available.
This action is invoked at initial client startup, and also when clients that are subscribed to the
service's state variable, NewImageID, are notified that the variable has changed.
11.2.3.2 RemoteUIServerDevice
The RemoteUIServerDevice is used to obtain information necessary to set up a session, such
as supported protocols and location of the remote UI server.
urn:schemas-rvualliance-org:service:ClientImageManager:1
urn:schemas-rvualliance-org:service:ClientImageManager:1
The shorthand ClientImageManager is used herein to refer to this service type.
12.2.2.1 A_ARG_TYPE_Int
A simple integer type (Unsigned, Two Bytes).
12.2.2.2 A_ARG_TYPE_String
A simple string type.
12.2.2.3 A_ARG_TYPE_Bool
A simple boolean type.
V1.0 Rev 1.5.1 247 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Appendix B: ClientImageManager Service Template
12.2.2.4 NewImageID
NewImageID is a two-byte variable with an allowed range of 0 through 65535. The default value
is 0. The actual value of this variable has no meaning.
The NewImageID state variable is used for notifying clients that a new software image has been
acquired for distribution by the server implementing this service. A server may also update this
state variable to force all subscribed clients to verify they still meet the server's client image
requirements.
A client may subscribe to this variable when trying to acquire an image for use when the server
does not have a software image for the client. When the server acquires a software image for a
new client, this value changes and the server notifies the client. When notification is received,
the client calls the CheckImage action to find whether the boot image that was acquired is
targeted for that client. This allows clients to find out when their image is available without
having to constantly poll the server.
A client that is running an image that it acquired from the server also subscribes to this variable
for notifications when an upgrade is available. When this variable is updated, the client calls the
CheckImage action to find out whether the new image is for the client. If the client has a new
image available at the server, the client will upgrade immediately if the upgrade is urgent, or
may delay the upgrade if it is not urgent.
2
Variable Name Evented Moderated Max Event Logical Min Delta per Event
1
Event Rate Combination
NewImageID yes no n/a n/a n/a
1
Determined by N, where Rate = (Event)/(N seconds).
2
(N) * (allowedValueRange Step).
12.2.4 Actions
The ClientImageManager service defines a CheckImage action, which is triggered by events.
This action is required, and is summarized in the table below.
Except where noted, calling the action will have no effect on state.
1
Name Req. or Opt.
CheckImage R
1
R = Required, O = Optional, X = Non-standard.
12.2.4.1 CheckImage
A client invokes this action to determine whether new software is available from the server for
that client. The returned parameters specify where to get the image if it exists on the server
(TftpFilepath), whether a client is required to get the new image in order to connect to the server
(UpgradeRequired), whether the server plans to get the software image for the client
(Availability), and whether the new image must be used immediately (Urgent).
12.2.4.1.1 Arguments
Make is the manufacturer of the client device. The client must keep this number
constant as the server uses this value together with model and hardware revision to
uniquely identify the client.
Model is the model of the client device. The client must keep this number constant as
the server uses this value together with make and hardware revision to uniquely
identify the client.
HardwareRevision is the revision of the hardware of the client device. The client
must keep this number constant as the server uses this value together with make
and model to uniquely identify the client.
MajorSoftwareVersion is the major version number of the software currently running
on the client device.
Urgent is true if the client must immediately use the image available at the server;
otherwise, the client may delay using the new image. Urgent will only be true if
UpgradeRequired is also true.
AvailableMajorSoftwareVersion is the major version number of the update image.
Set to zero (0) if there is no available update image.
AvailableMinorSoftwareVersion is the minor version number of the update image.
Set to zero (0) if there is no available update image.
12.2.4.1.3 Errors
Errors
Standard errors from [Ref1] apply.
This service also allows eventing on its NewImageID state variable, enabling all registered
clients to be notified when the value of that variable changes.
Client software manufacturers must avoid using the combination of a major software version
number of zero (0) with a minor software version that is also zero (0).
In summary:
In summary:
Subscribe to eventing for ClientImageManager:1
Receive event when server gets new client image for distribution
Client invokes CheckImage
Client reacts to response from action
<name>UpgradeRequired</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Bool</relatedStateVariable>
</argument>
<argument>
<name>Availability</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Int</relatedStateVariable>
</argument>
<argument>
<name>Urgent</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Bool</relatedStateVariable>
</argument>
<argument>
<name>AvailableMajorSoftwareVersion</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Int</relatedStateVariable>
</argument>
<argument>
<name>AvailableMinorSoftwareVersion</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Int</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>NewImageID</name>
<dataType>ui2</dataType>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Int</name>
<dataType>ui2</dataType>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_String</name>
<dataType>string</dataType>
<defaultValue/>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Bool</name>
<dataType>boolean</dataType>
<defaultValue>false</defaultValue>
</stateVariable>
</serviceStateTable>
</scpd>
AVC_TS_HP_HD_AC3_T
AVC_TS_HP_HD_AC3_ISO
A bitstream conformant with these profiles may include Closed Caption Streams with syntax,
semantics, and usage rules defined in [Ref27], A/72 Part 1: Video System Characteristics of
AVC in the ATSC Digital Television System, July 2008, and as shown below in Table 13-1.
user_data_registered_itu_t_t35 ( ) {
itu_t_t35_country_code 0xB5 8 bslbf
itu_t_t35_provider_code 0x0031 16 bslbf
user identifier 32 bslbf
user structure()
}
MPEG_DIRECTV_SD_AC3
MPEG_DIRECTV_SD_AC3_T
MPEG_DIRECTV_SD_MPEG1_L2
MPEG_DIRECTV_SD_MPEG1_L2_T
The system characteristics of this MPEG_DIRECTV_SD System Portion Profile are defined in
[Ref22].
Streams with MPEG_DIRECTV SD System Profiles that have a "T" (denoting TTS for
timestamped transport stream) appended as part of their Profile Identifier must be preceded by
a 32-bit timestamp to form 134-byte packets as illustrated in Figure Figure 13-1. The Timestamp
format is uimsbf (unsigned integer most significant bit first) as defined in [Ref18]. Streams of
this profile type that do not have a “T” appended are 130 byte packets, and are not
preceded by a zero value 4 byte timestamp.
Figure 13-1: ITU-R BO.1516 SYSTEM B Transport Stream with TTS support
The 4 byte timestamp field shall represent the 27 MHz clock binary counter value to control the
relative input timing to the decoder of the transport stream. The 27 MHz clock shall have the
same accuracy and precision requirements of a standard MPEG2 decoding clock as defined in
[Ref18].
All ITU-R BO. 1516 SYSTEM B TTS compliant packets shall have a timestamp present at the
beginning of the transport packet. This includes video/audio/data packets as well as AUX and
NULL packets.
Timestamped Transport Streams (TTS) are defined for MPEG2 Transport Streams by [Ref24]
and [Ref25] and are identically appended to ITU-R BO. 1516 SYSTEM B transport packets.
Profiles:
MPEG_DIRECTV_SD_AC3
MPEG_DIRECTV_SD_AC3_T
MPEG_DIRECTV_SD_MPEG1_L2
MPEG_DIRECTV_SD_MPEG1_L2_T
Profile: MP@ML
Chroma: 4:2:0
Profiles:
MPEG_DIRECTV_SD_MPEG1_L2
MPEG_DIRECTV_SD_MPEG1_L2_T
A bitstream conformant with this profile must conform to all aspects of the audio portion profile
of the MPEG-2 AV Format as specified in Section 9.2.83 of [Ref25], with the exception of 32
kHz and 44.1 kHz sampling rates.
Profiles:
MPEG_DIRECTV_SD_AC3
MPEG_DIRECTV_SD_AC3_T
A bitstream conformant with this profile must conform to all aspects of the audio portion profile
of the MPEG-2 AV Format as specified in Section 9.2.32 of [Ref25].
AVC_TS_HP_HD_HEAAC_L4_ISO
AVC_TS_HP_HD_HEAAC_L4_T
This HEAAC profile is a superset of the LC-AAC audio object. Clients that render any of the
multichannel AAC profiles are also capable of rendering corresponding profiles with fewer
channels, including stereo pair, monaural signal, and/or joint stereo mode.
The SBTVD audio formats and levels defined in [ref37] and [ref38] include low complexity AAC:
level 2 (LC-AAC@L2) for two channels, low complexity AAC: level 4 (LCAAC@ L4) for
V1.0 Rev 1.5.1 258 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Appendix C: Extended Media Format Profiling Requirements
multichannel, High-Efficiency (HE): level 2 (HE-AAC v1@L2) for two channels and High-
Efficiency (HE): level 4 (HE-AAC v1@L4) for multichannel.
HEVC_TS_M10P_MT_EAC3_ISO
HEVC_TS_M10P_MT_EAC3_T
TS denotes MPEG transport stream format
M10P denotes the H.265 the main 10 profile
MT denotes main tier
EAC3 denotes audio support
ISO versus _T denotes whether or not the transport stream appends 4 bytes of TTS (for
timestamped transport stream) or is simply an ISO defined 188 byte transport stream
The AC-3 or Enhanced AC-3 packetized elementary stream shall conform to the requirements
of a user stream type 1, as described in [ref18].
The AC-3 or Enhanced AC-3 elementary stream shall be byte-aligned within the MPEG-2
transport stream. This means the initial 8 bits of an AC-3 or Enhanced AC-3 syncframe shall
reside in a single byte which is carried in the MPEG-2 transport stream.
Any luminance resolution or any sample and picture aspect ratio allowed by the applied Profile,
Level and Tier may be used. Resolution and frame rates may change in a video stream.
HEVC allows optional signaling of color space. As of the writing of this revision, no major
worldwide standards group is specified color space encoding for H.265 distribution, although
DVB is leaning towards supporting both BT.709 and BT.2020. This specification will reference
available specfications (when available) for signalling color space within H.265, or will insert
requirements here in a future revision in the absence of other standards organizations
requirements
V1.0 Rev 1.5.1 259 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Appendix C: Extended Media Format Profiling Requirements
AVC_TS_HP_HD_MPEG1_L2_T
AVC_TS_HP_HD_MPEG1_L2_ISO
Clients for any or all of the following Latin American regions shall implement the additional
requirements of this section in addition to all mandatory requirements of this specification.
14.1 Brazil
[14.1-1] M: RVU-C
An RVU client shall be capable of decoding and displaying DVB subtitles [Ref41] that
accompany any of the media format profiles listed in Table 5-31.
[14.1-2] O: RVU-C
An RVU client may support the media format profiles listed in Table 5-32.
[14.1-3] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-34 that include HEAAC
audio, and in accordance with the requirements in section 13.3.
[14.1-4] M: RVU-C
An RVU client shall be capable of Dolby® MS10 Multistream Decoder requirements, and shall
decode any of MS10 audio streams in combination with any of the video codecs included in
Table 5-31.
[14.1-5] O: RVU-C
An RVU client may implement the language attribute of the GetClosedCaptioningState
command.
[14.1-6] M: RVU-C
An RVU client shall support the ORG_SUB_INFO flag described in section 5.6.5.
[14.1-7] S: RVU-C
An RVU client should implement the org.rvualliance.subtitle local UI element listed in
Table 4-89.
14.2 Mexico
[14.2-1] M: RVU-C
An RVU client shall support the requirements of section 14.1 with the exception of [14.1-3].
[14.2-2] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-34 that include MPEG1-
L2 audio and in accordance with the requirements of 13.5.
[14.3-1] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-31, including the
requirements of section 13.1.
V1.0 Rev 1.5.1 261 of 262 28 May 2014
Copyright 2014 © RVU Alliance. RVU Alliance Confidential.
Any form of reproduction and/or distribution of this document is prohibited.
RVU Specification
Protocol Appendix D: Latin American Client Requirements
[14.3-2] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-32, including all
requirements of section 13.2.
[14.3-3] M: RVU-C
An RVU client shall support the media format profiles listed in Table 5-34 that include HEAAC
audio, and in accordance with the requirements in section 13.3. Optional frame rates and
resolutions in section 13.3.2 shall be mandatory for Panamericana operating regions
[14.3-4] O: RVU-C
An RVU client may implement the language attribute of the GetClosedCaptioningState
command.
[14.3-5] M: RVU-C
An RVU client shall support the ORG_SUB_INFO flag described in section 5.6.5.
[14.3-6] S: RVU-C
An RVU client should implement the org.rvualliance.subtitle local UI element listed in
Table 4-89.