Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 29341-18-4 defines the MediaRenderer device as a key component in UPnP Audio/Video (AV) architectures. A MediaRenderer is a logical device that renders or plays back AV content received from a MediaServer or other control points on the home network. Typical implementations include smart TVs, network media players, wireless speakers, and digital set-top boxes. The standard specifies the mandatory and optional services that a MediaRenderer must expose: AVTransport (for playback control), RenderingControl (for volume and picture adjustments), and ConnectionManager (for managing data connections). These services expose actions via SOAP calls, and their state variables are published through GENA eventing, allowing control points to stay synchronised with the renderer’s current status at all times.
The AVTransport service is the heart of the MediaRenderer, providing actions such as Play, Pause, Stop, Seek, Next, Previous, and SetAVTransportURI. Each instance of AVTransport corresponds to a single logical “transport” — essentially a playback channel. A device with multiple rendering endpoints (e.g., Picture-in-Picture) would expose multiple AVTransport instances, each with its own instance ID. The service maintains an AVTransportURI state variable and a TransportState machine that transitions among STOPPED, PLAYING, PAUSED_PLAYBACK, TRANSITIONING, and NO_MEDIA_PRESENT.
| Action | Description | Key Arguments |
|---|---|---|
| SetAVTransportURI | Sets the URI of the media to be played | InstanceID, CurrentURI, CurrentURIMetaData |
| Play | Begins or resumes playback | InstanceID, Speed (typically 1) |
| Pause | Temporarily suspends playback | InstanceID |
| Stop | Stops playback and resets position | InstanceID |
| Seek | Jumps to a specific time position | InstanceID, Unit (REL_TIME/ABS_TIME), Target |
| GetPositionInfo | Returns current track position | InstanceID |
Seek action requires the target media to support seeking. Some streaming protocols (e.g., live HLS) do not expose seek capability and will return PLAY_SEEK_MODE_NOT_SUPPORTED. Always query GetMediaInfo first to check whether seeking is available.The RenderingControl service manages output parameters such as volume, mute, brightness, contrast, and equaliser settings. Its primary actions include SetVolume, GetVolume, SetMute, and GetMute, each operating on a named channel (Master, LF, RF, CF, LFE, etc.). The ConnectionManager service handles the logistics of establishing data flows between a MediaServer and the MediaRenderer. It provides GetProtocolInfo (to advertise supported transport protocols and content formats), PrepareForConnection (to reserve resources for a new connection), and ConnectionComplete (to release resources when the connection ends).
GetCurrentConnectionIDs action allows control points to enumerate all active connections. This is invaluable for diagnostic dashboards that monitor home network AV sessions in real time.SetAVTransportURI should never be accessible from the external network, as this would allow an attacker to force a device to stream arbitrary content or launch a buffer-exhaustion attack.When implementing a MediaRenderer, pay careful attention to the TransportState machine. State transitions must be atomic and must trigger immediate event notifications; a delayed LastChange event can cause a control point UI to display stale playback status. For embedded devices with limited memory, consider pre-validating the AVTransportURI format and protocol scheme before passing it to the decoding pipeline. This reduces the risk of denial-of-service through maliciously crafted URIs that could exhaust heap space during parsing.
http-get:*:audio/mpeg:*, http-get:*:video/mp4:*, and rtsp-rtp-udp:*:video/H264:*. The exact set is advertised through ConnectionManager’s GetProtocolInfo action.