G.729.1 RTP Payload Format Update: Discontinuous Transmission (DTX) Support
updates
- rfc-4749 — RTP Payload Format for the G.729.1 Audio Codec
Extracted elements (17)
The 'dtx' SDP parameter is used even though the DTX payload format is backward-compatible at the binary level. Without the parameter, a legacy RFC 4749 receiver would silently use packet loss concealment rather than comfort noise during silence periods, causing poor audio quality. The parameter ensures both endpoints explicitly agree on DTX behavior.
An RTP receiver compliant with only RFC 4749 (not this specification) will ignore the 'dtx' parameter and omit it from its answer, preventing DTX activation. Such receivers would use packet loss concealment during silence periods instead of comfort noise generation, resulting in degraded audio quality.
This document overrides RFC 4749 Section 5.4's mandate to ignore remaining bytes after complete frames; receivers MUST now treat those remaining bytes as a SID frame (if the size is a valid SID size).
Both sides of a bi-directional session MUST have the same DTX setting. DTX is activated if and only if 'dtx=1' appears in both the SDP offer and the answer.
For multicast sessions, the 'dtx' parameter is declarative and MUST NOT be negotiated; a participant MUST use the configuration provided for the session.
If DTX is not used, the M bit MUST be set to 0 in all packets.
If the remaining bytes after complete audio frames do not constitute a valid SID frame size (2, 3, or 6 octets), the receiver MUST ignore those bytes.
When DTX is turned off, the RTP payload MUST NOT contain a SID, and the FT value 14 MUST NOT be used.
When DTX is used, the first packet of a talkspurt (first packet after a silence period) MUST have the RTP Marker (M) bit set to 1. All other packets MUST have the M bit set to 0.
When using FT=14 (SID-only payload), only a single SID frame SHALL be included in the payload.
A new optional 'dtx' parameter is added to the audio/G7291 media subtype. Permissible values are 0 (no DTX) and 1 (DTX support per G.729.1 Annex C). The parameter is omitted or 0 by default.
FT value 14 is assigned to the SID (Silence Insertion Descriptor) frame type to allow transporting a SID without any accompanying audio frames. The actual SID size (2, 3, or 6 octets) is inferred from the remaining payload size after the 1-octet header.
The G.729.1 SID has an embedded structure: the core SID is identical to the legacy G.729 SID (G.729 Annex B), the first enhancement layer adds narrowband comfort noise parameters, and the second adds wideband information. The SID can be 2, 3, or 6 octets long.
IANA has assigned a new optional parameter 'dtx' to the audio/G7291 media subtype. The parameter accepts values 0 (DTX off) or 1 (DTX on per G.729.1 Annex C), with 0 as the default when the parameter is absent.
By observing an RTP flow that uses DTX, an attacker can determine when and for how long participants are speaking. This is a general property of DTX schemes; G.729.1 DTX introduces no new specific issue beyond what applies to DTX in general.
The complete RTP payload consists of: a 1-octet header (MBS and FT fields), followed by zero or more consecutive audio frames at the same bit rate, followed by zero or one SID frame. FT values 0-11 map to encoding rates 8-32 kbps with frame sizes 20-80 octets; FT=14 indicates a SID (2, 3, or 6 octets); FT=15 indicates NO_DATA (0 octets).
When a SID is appended to actual audio frames, the FT value in the payload header reflects the audio encoding rate, not the SID. The SID is identified as the remaining bytes after all complete audio frames, and its size (2, 3, or 6 octets) is inferred from payload length.