Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-17-13 specifies the RenderingControl service, which provides the interface for controlling the rendering characteristics of audio and video output on a UPnP MediaRenderer device. While AVTransport manages the playback state machine (play, pause, stop, seek), RenderingControl manages the output parameters — volume, mute, brightness, contrast, sharpness, color balance, and other rendering attributes that affect how the media is perceived by the end user. This separation of concerns allows control points to adjust rendering parameters independently of transport state, which is particularly valuable in scenarios like adjusting volume during active playback or configuring picture presets for different viewing environments.
The RenderingControl service uses an instance-based architecture. Each rendering instance (identified by a RenderingControlID) represents an independent rendering channel — for example, the main zone and zone 2 of a multi-zone audio amplifier, or the HDMI 1 and HDMI 2 inputs of a television. The ConnectionManager’s PrepareForConnection action associates a connection with a specific rendering instance, and control points target their rendering commands to the appropriate instance. This enables fine-grained control in complex AV systems where different sources feed different rendering paths.
The RenderingControl service organizes its controls around a channel concept. Each rendering instance has multiple channels — at minimum a Master channel that controls all outputs simultaneously, and optionally individual channels for specific outputs. In a stereo audio system, channels might include Master, LF (Left Front), RF (Right Front), and perhaps Subwoofer. In a video system, channels control picture parameters for the entire display output (Master) or for individual picture-in-picture windows.
Volume control is the most fundamental rendering operation. The service exposes the Volume state variable for each channel, with values typically ranging from 0 to 100 (though the standard allows implementation-defined ranges). The Mute state variable provides a boolean toggle that silences the channel without changing the volume setting — critical for preserving user-configured volume levels while temporarily silencing output. Additional audio controls include Balance (left-right stereo balance), Fade (front-rear fade), Loudness (loudness compensation at low volumes), and Bass/Treble (equalization controls).
Video rendering controls include Brightness, Contrast, Sharpness, Color (saturation), Hue (tint), and Horizontal/Vertical Extension (aspect ratio adjustment). Each of these is exposed as an independent state variable per channel with implementation-defined value ranges. The standard defines a generic GetStateVariable/SetStateVariable mechanism for implementation-specific controls not covered by the predefined set.
| Control Channel | State Variable | Typical Range | Description |
|---|---|---|---|
| Master (all channels) | Volume | 0 — 100 | Global audio volume level |
| Master | Mute | 0 / 1 | Global audio mute state |
| Master | Balance | -100 — 100 (0=center) | Left-right stereo balance |
| Master | Loudness | 0 / 1 | Loudness compensation on/off |
| Master | Brightness | 0 — 100 | Video brightness (black level) |
| Master | Contrast | 0 — 100 | Video contrast (white level) |
| Master | Sharpness | 0 — 100 | Video sharpness (edge enhancement) |
| Master | Color | 0 — 100 | Video color saturation |
| Master | Hue | -180 — 180 (0=neutral) | Video hue (tint adjustment) |
| LF (Left Front) | Volume | 0 — 100 | Individual left channel volume |
| RF (Right Front) | Volume | 0 — 100 | Individual right channel volume |
The RenderingControl service defines a comprehensive preset management system through the ListPresets, SelectPreset, and GetPreset actions. A preset is a named collection of rendering parameter values that can be applied as a group. Common presets include “Movie” (enhanced contrast, warm color temperature, surround sound), “Music” (flat EQ, stereo), “Game” (low latency mode, bright picture), and “Night” (reduced dynamic range, lowered volume). The device’s GetPresets action returns the list of available presets, and SelectPreset applies all parameters associated with the named preset in a single atomic operation.
From an engineering perspective, presets provide atomic transitions between rendering configurations. When SelectPreset is invoked, the device should transition all affected rendering parameters simultaneously to avoid intermediate visual artifacts. For example, transitioning from “Movie” to “Game” preset should not momentarily display a frame with the old brightness combined with the new contrast. Implementations should use double-buffering for preset parameters — accept new values into a shadow register set and atomically swap the active register set on completion of all parameter updates.
The LastChange event mechanism deserves particular engineering attention. RenderingControl uses eventing to notify control points of rendering parameter changes. The LastChange event variable carries an XML document encoding the channel and parameter that changed, along with the new value. To reduce event traffic during rapid parameter changes (such as volume slider drag), the standard recommends rate-limiting events to a maximum frequency of approximately 10 events per second. Control points should implement receiver-side coalescing to process only the most recent event in a burst.