RTP Payload Format for the G.729.1 Audio Codec
updated by
- rfc-5459 — G.729.1 RTP Payload Format Update: Discontinuous Transmission (DTX) Support
Extracted elements (26)
Packing multiple audio frames per RTP packet reduces header overhead and the number of packets sent, but at the cost of increased end-to-end delay and reduced error robustness; the tradeoff is governed by the ptime and maxptime parameters.
The MBS (Maximum Bit rate Supported) in-band signalling field was introduced so that a receiver can request the remote sender to reduce its sending bit rate, enabling bidirectional bandwidth adjustment without external signalling. This is specifically useful for fixed-bandwidth links shared among multiple simultaneous calls.
The RTP clock rate is fixed at 16 kHz regardless of the actual encoder/decoder sampling configuration (8 or 16 kHz) because the bitstream itself is unaffected by the I/O sampling rate and the decoder needs no a priori knowledge about the encoder's input sample rate.
G.729.1 at 8 kbps produces a bitstream bitstream-compatible with G.729 and G.729A. Offerers SHOULD announce G.729 support alongside G.729.1 in SDP to allow interoperability with G.729-only peers. When operating at 8 kbps, the G.729.1 decoder also supports G.729 Annex B.
A 16 kHz RTP clock rate MUST always be used for G.729.1, regardless of whether the encoder input or decoder output is configured at 8 kHz.
Congestion control for RTP SHALL be used in accordance with RFC 3550 and an appropriate profile (e.g., RFC 3551).
For declarative SDP (SAP, RTSP), the mbs parameter MUST NOT be used, and the maxbitrate parameter is declarative and SHALL be used as provided.
For multicast sessions, the mbs SDP parameter MUST NOT be used, and the maxbitrate parameter becomes declarative and MUST NOT be negotiated; participants MUST use the provided configuration.
If a payload with a reserved FT value (12–14) is received, the whole payload MUST be ignored.
If a payload with a reserved MBS value (12–14) is received, the MBS field MUST be ignored.
In offer-answer, one party MUST NOT start sending frames at a bit rate higher than the mbs parameter of the other party. If a received mbs value is below 8000, the session MUST be rejected.
In offer-answer, the maxbitrate parameter is bidirectional: if the offerer sets a value, the answerer MUST reply with a smaller or equal value, and the session maximum is the minimum of the two. If a received value is outside 8000–32000, the session MUST be rejected.
The bit rates indicated by the FT and MBS fields in RTP packets MUST NOT exceed the negotiated maxbitrate session parameter.
The encoder MUST NOT exceed the sending bit rate indicated by the received MBS field. The MBS received is valid until a new MBS is received; a newly received value overrides the previous one.
The maxptime SDP parameter MUST be handled in the same way as ptime (as specified in RFC 3264). Any unknown parameter in an offer MUST be ignored by the receiver and MUST NOT be included in the answer.
The MBS field MUST be set to 15 (NO_MBS) for packets sent to a multicast group, and MUST be ignored on packets received from a multicast group.
The RTP clock rate in the SDP a=rtpmap attribute MUST be 16000 for G.729.1.
The RTP M bit MUST be set to zero in all G.729.1 RTP packets.
Audio data contains one or more consecutive frames at the same bit rate, packed oldest-first. The number of frames is inferred by dividing the audio data size by the per-frame size given by the FT table; any remainder bytes MUST be ignored.
The FT value 15 (NO_DATA) indicates no audio data in the payload; the payload is reduced to the 1-octet header alone. This mechanism allows updating the MBS value when there is no audio frame to transmit.
IANA registered the media subtype audio/G7291 for G.729.1 RTP payloads, with optional parameters maxbitrate, mbs, ptime, and maxptime. This registration is defined in Section 6.1 of RFC 4749.
G.729.1 decoding exhibits no significant non-uniformity in receiver-end computational load, making denial-of-service attacks via pathological datagrams unlikely.
The payload format has no built-in security mechanisms; confidentiality, integrity, and authentication of audio content must be provided by external means such as SRTP (RFC 3711). General RTP security considerations from RFC 3550 apply.
The FT field is 4 bits and encodes the frame type/encoding rate for all frames in the packet, with values 0–11 mapping to 8–32 kbps (20–80 octets per frame), values 12–14 reserved, and value 15 (NO_DATA) indicating an empty audio payload used only to update MBS.
The G.729.1 RTP payload consists of a 1-octet payload header followed by zero or more consecutive audio frames at the same bit rate. The header contains a 4-bit MBS field and a 4-bit FT field.
The MBS field is 4 bits and encodes the maximum bit rate supported by the receiver, with values 0–11 mapping to 8–32 kbps in 2 kbps steps, values 12–14 reserved, and value 15 meaning NO_MBS (no constraint signaled).