rfc-8130

RTP Payload Format for the Mixed Excitation Linear Prediction Enhanced (MELPe) Codec

V. Demjanenko, D. Satterlee
date2017-03 streamIETF areaart wgpayload statusPROPOSED STANDARD pages30 canonicalhttps://www.rfc-editor.org/rfc/rfc8130 doi10.17487/RFC8130
This document describes the RTP payload format for the Mixed Excitation Linear Prediction Enhanced (MELPe) speech coder. MELPe's three different speech encoding rates and sample frame sizes are supported. Comfort noise procedures and packet loss concealment are described in detail.

Extracted elements (27)

design-rationale §3.1

In the MELPe bitstream, the most significant bits are designated as priority bits intended for greater protection in the underlying communications channel. For IP networks, such additional protection is irrelevant, but bitstreams are presented identically in IP networks for the convenience of interoperable gateway devices.

rtp, realtime

design-rationale §4.1

The alternate encoding names MELP2400, MELP1200, and MELP600 are preserved from early implementations that used these names to indicate both coder type and bitrate before the unified MELP name with 'bitrate' parameter was defined.

rtp, realtime

design-rationale §4.2

The 'ptime' parameter cannot be used to specify the MELPe operating mode because for certain values it is impossible to distinguish the mode (e.g., ptime=68 could mean one 67.5 ms frame or three 22.5 ms frames), requiring the explicit 'bitrate' parameter instead.

rtp, realtime

interoperability-note §4.1

Early implementations used MELP2400, MELP1200, and MELP600 media type names to indicate both coder type and bitrate; these names are preserved in the registration. These names have been observed in systems that do not support dynamic frame-rate switching via the 'bitrate' parameter.

rtp, realtime

normative-requirement §3.3 MUST

All MELPe frames in a single RTP packet MUST be of the same coder bitrate. Dynamic switching between frame rates within an RTP stream is only permitted if supported by both ends and reserved bits are filled in as per Table 7.

rtp, realtime

normative-requirement §8 SHOULD

Applications SHOULD use one or more appropriate strong security mechanisms when using this RTP payload format, as security is the responsibility of the application using RTP rather than the payload format itself.

rtp, security, realtime

normative-requirement §3.4 SHOULD

Applications that use RTP over UDP SHOULD implement their own congestion control above the UDP layer (RFC 8085) and MAY also implement a transport circuit breaker (RFC 8083).

rtp, congestion, udp

normative-requirement §3.3 MUST NOT

Frames MUST NOT be split between RTP packets.

rtp, realtime

normative-requirement §4.1 MUST

If the encoding name 'MELP' is received without a 'bitrate' parameter, the fixed coder bitrate of 2400 MUST be used. The alternate encoding names MELP2400, MELP1200, and MELP600 MUST NOT specify a 'bitrate' parameter.

rtp, realtime

normative-requirement §4.4 MUST

In the Offer/Answer model, 'bitrate' is a bidirectional parameter and both sides MUST use a common 'bitrate' value or values. The initial bitrate used by both parties SHALL be the first bitrate specified in the answerer response.

rtp, realtime, sip

normative-requirement §3.3 RECOMMENDED

It is RECOMMENDED that the number of frames contained within an RTP packet be consistent with the application; for real-time telephony, fewer frames per packet reduces delay, while bandwidth-constrained links may use more frames per packet.

rtp, realtime, congestion

normative-requirement §3.3 SHOULD NOT

Senders SHOULD NOT include more MELPe frames in a single RTP packet than will fit in the MTU of the RTP transport protocol.

rtp, realtime, congestion

normative-requirement §4.1 REQUIRED

The 'ptime' and 'maxptime' parameters SHALL use the nearest rounded-up ms integer packet duration, corresponding to values 23, 45, 68, 90, 112, 135, 156, and 180 ms for MELPe.

rtp, realtime

normative-requirement §3 MUST

The RTP timestamp MUST be in units of 1/8000 of a second, matching the MELPe codec's 8 kHz sampling rate clock.

rtp, realtime

protocol-element §3.3

A MELPe RTP packet MAY consist of zero or more MELPe coder frames followed by zero or one MELPe comfort noise frame. The number of frames is determined by dividing total payload octets by expected octets per frame (7/11/7), noting the last frame may be a 2-octet comfort noise frame.

rtp, realtime

protocol-element §3.3

A MELPe RTP packet with no coder frame and no comfort noise frame MAY be sent periodically by an endpoint to indicate connectivity by an otherwise idle receiver.

rtp, realtime

protocol-element §3.2

MELPe comfort noise parameters use the MELPe 2400 bps frame structure: msvq[0] (LSF first stage) and gain[1] (second gain) carry actual noise descriptors (preferably averaged from previous frames), while all other parameters are set to 0 and the sync bit alternates.

rtp, realtime

protocol-element §4.1

MELPe media subtypes registered are: MELP (dynamic bitrate via 'bitrate' parameter), MELP2400, MELP1200, and MELP600. All are restricted to transfer via RTP framing only; transport within other framing protocols is not defined.

rtp, realtime, registry

protocol-element §6

Packet loss concealment (PLC) for MELPe uses the pitch/voicing parameter encoding: a code value of 3 (bits P0 and P1 set to 1, bits P2-P6 set to 0) signals an erasure. For 1200 or 600 bps frames, the 2400 bps decoder is called three or four times respectively to cover the loss.

rtp, realtime

registry §7

IANA has registered four audio media subtypes — MELP, MELP2400, MELP1200, and MELP600 — and added them to the 'RTP Payload Format media types' registry.

registry, rtp, realtime

security-consideration §8

The use of VAD (Voice Activity Detection) in MELPe affects bitrate variability; implementors should consult RFC 6562 for guidance on the security considerations of variable bit rate audio with Secure RTP.

security, rtp, realtime

security-consideration §8

This RTP payload format and the MELPe decoder do not exhibit significant non-uniformity in receiver-side computational complexity for packet processing, making denial-of-service attacks via pathological data unlikely. The payload format also contains no active content.

security, rtp, realtime

wire-format §3.3

Dynamic bitrate switching uses reserved bits RSVA, RSVB, RSVC in the last octet of each frame: 2400 bps = (0,0,N/A), 1200 bps = (1,0,0), 600 bps = (0,1,N/A), comfort noise = (1,0,1). If bitrate switching is not used, all reserved bits are encoded as 0 by the sender and ignored by the receiver.

rtp, realtime

wire-format §3.1.2

The 1200 bps MELPe frame is 81 bits packed into 11 octets (with 7 unused/reserved bits). Bit B_01 is in the LSB of the first byte; the eleventh octet has RSVA, RSVB, RSVC, four RSV0 bits, and B_81.

rtp, realtime

wire-format §3.1.1

The 2400 bps MELPe frame is 54 bits packed into 7 octets (with 2 unused/reserved bits RSVA, RSVB). Bit B_01 is placed in the LSB of the first byte with all other bits in sequence; the seventh octet holds bits B_49 to B_54 in its LSBs.

rtp, realtime

wire-format §3.1.3

The 600 bps MELPe frame is 54 bits packed into 7 octets (with 2 unused/reserved bits RSVA, RSVB), identical octet layout to the 2400 bps frame but with different bitstream parameter assignments across 6 modes.

rtp, realtime

wire-format §3.2

The MELPe comfort noise frame is 13 bits (LSF first stage 7 bits + gain second stage 5 bits + 1 SYNC bit) packed into 2 octets with 3 reserved bits (RSVA, RSVB, RSVC) in the MSBs of the second octet.

rtp, realtime