Issues: 252, 254, 258, 259, 260: Missing codec parameters and options

>From Robin Raymond:
https://github.com/openpeer/ortc/issues/260
https://github.com/openpeer/ortc/issues/259
https://github.com/openpeer/ortc/issues/258
https://github.com/openpeer/ortc/issues/254
https://github.com/openpeer/ortc/issues/252

Proposed resolution:

Add capability and parameter sections to the specification, as follows:

9.3.2 Codec capability options

The capability options of commonly implemented codecs are provided below.

If a defined codec option is unset when returned from RTCRtpReceiver/Sender.getCapabilities(), then the engine does not allow adjusting the option. If set when returned from RTCRtpReceiver/Sender.getCapabilities() then the default value for the engine is given.

9.3.2.1 Opus

The following capability options are defined for Opus:
Property Name

Values

Receiver/Sender

Notes

complexity

unsigned long

Sender

Indicates the default value for the encoder's computational complexity. The supported range is 0-10 with 10 representing the highest complexity.

signal

DOMString

Sender

Indicates the default value for the type of signal being encoded. Possible values are "auto", "music" and "voice".

application

DOMString

Sender

Indicates the default value for the encoder's intended application. Possible values are "voip", "audio" and "lowdelay".

packetLossPerc

unsigned long

Sender

Indicates the default value for the encoder's expected packet loss percentage. Possible values are 0-100.

predictionDisabled

boolean

Sender

Indicates the default value for whether prediction is disabled, making frames almost complete independent (if true) or not (if false).

9.3.3 Codec capability parameters

The capability parameters for commonly implemented codecs are provided below.

If a defined codec capability parameter is unset when returned from RTCRtpReceiver/Sender.getCapabilities(), then the engine does not allow adjusting the parameter. If set when returned from RTCRtpReceiver/Sender.getCapabilities() then the default value for the engine is given.

9.3.3.1 Opus

The following optional capability parameters are defined for Opus, as noted in [RFC7587] Section 6.1:
Property Name

Values

Receiver/Sender

Notes

maxPlaybackRate

unsigned long

Receiver

A hint about the maximum output sampling rate that the receiver is capable of rendering in Hz.

spropMaxCaptureRate

unsigned long

Sender

A hint about the maximum input sampling rate that the sender is likely to produce.

ptime

unsigned long

Receiver

The preferred duration of media represented by a packet that a decoder wants to receive in milliseconds.

maxAverageBitrate

unsigned long

Receiver

Specifies the maximum average receive bitrate of a session in bits per second (bits/s).

stereo

boolean

Receiver

Specifies whether the decoder prefers receiving stereo (if true) or mono signals (if false).

spropStereo

boolean

Sender

Specifies whether the sender is likely to produce stereo audio (if true) or mono signals (if false).

cbr

boolean

Receiver

Specifies if the decoder prefers the use of constant bitrate (if true) or variable bitrate (if false).

useInbandFec

boolean

Receiver

Specifies if the decoder has the capability to take advantage of Opus in-band fec (if true) or not (if false).

useDtx

boolean

Receiver

Specifies if the decoder prefers the use of DTX (if true) or not (if false).

9.3.3.2 VP8

The following receiver capability parameters are defined for VP8, as noted in [VP8-RTP] Section 6.1:
Property Name

Values

Receiver/Sender

Notes

maxFr

unsigned long

Receiver

This parameter indicates the maximum frame rate in frames per second that the decoder is capable of decoding.

maxFs

unsigned long long

Receiver

This parameter indicates the maximum frame size in macroblocks that the decoder is capable of decoding.

9.3.3.3 H.264

The following capabilities are defined for H.264, as noted in [RFC6184] Section 8.1, and [RTCWEB-VIDEO] Section 6.2.
Property Name

Values

Receiver/Sender

Notes

profileLevelId

unsigned long

Receiver

This parameter, which describes the maximum capability of the decoder,must be supported, as noted in [RTCWEB-VIDEO] Section 6.2.

packetizationMode

sequence<unsigned short>

Receiver/Sender

A sequence of unsigned shorts, each ranging from 0 to 2, indicating supported packetizationMode values. As noted in [RTCWEB-VIDEO] Section 6.2, support for packetization-mode 1 is mandatory.

maxMbps, maxSmbps, maxFs, maxCpb, maxDpb, maxBr

unsigned long long

Receiver

As noted in [RTCWEB-VIDEO] Section 6.2, these optional parameters allow the implementation to specify that the decoder can support certain features of H.264 at higher rates and values than those signalled with profile-level-id.

9.7.2 Codec parameters

The parameters of common codecs are described below.

9.7.2.1 Opus

The following settings are defined for Opus:
Property Name

Values

Receiver/Sender

Notes

maxPlaybackRate

unsigned long

Sender

A hint about the maximum output sampling rate that the receiver is capable of rendering in Hz.

spropMaxCaptureRate

unsigned long

Receiver

A hint about the maximum input sampling rate that the sender is likely to produce.

ptime

unsigned long

Sender

The preferred duration of media represented by a packet that a decoder wants to receive in milliseconds.

maxAverageBitrate

unsigned long

Sender

Specifies the maximum average receive bitrate of a session in bits per second (bits/s).

stereo

boolean

Sender

Specifies whether the decoder prefers receiving stereo (if true) or mono signals (if false).

spropStereo

boolean

Receiver

Specifies whether the sender is likely to produce stereo audio (if true) or mono signals (if false).

cbr

boolean

Sender

Specifies if the decoder prefers the use of constant bitrate (if true) or variable bitrate (if false).

useInbandFec

boolean

Sender

Specifies if the decoder has the capability to take advantage of Opus in-band fec (if true) or not (if false).

useDtx

boolean

Sender

Specifies if the decoder prefers the use of DTX (if true) or not (if false).

complexity

unsigned long

Sender

Configures the encoder's computational complexity. The supported range is 0-10 with 10 representing the highest complexity.

signal

DOMString

Sender

Configures the type of signal being encoded. Possible values are "auto", "music" and "voice".

application

DOMString

Sender

Configures the encoder's intended application. Possible values are "voip", "audio" and "lowdelay".

packetLossPerc

unsigned long

Sender

Configures the encoder's expected packet loss percentage. Possible values are 0-100.

predictionDisabled

boolean

Sender

Configures whether prediction is disabled, making frames almost complete independent (if true) or not (if false).

9.7.2.2 VP8

The following settings are defined for VP8:
Property Name

Values

Receiver/Sender

Notes

maxFr

unsigned long

Sender

This parameter indicates the maximum frame rate in frames per second that the decoder is capable of decoding.

maxFs

unsigned long long

Sender

This parameter indicates the maximum frame size in macroblocks that the decoder is capable of decoding.

9.7.2.3 H.264

The following settings are defined for H.264:
Property Name

Values

Receiver/Sender

Notes

profileLevelId

unsigned long

Sender

This parameter, which describes the maximum capability of the decoder, must be supported, as noted in [RTCWEB-VIDEO] Section 6.2.

packetizationMode

unsigned short

Sender

An unsigned short ranging from 0 to 2, indicating the packetizationMode value to be used by the sender. This setting must be supported, as noted in [RTCWEB-VIDEO] Section 6.2.

maxMbps, maxSmbps, maxFs, maxCpb, maxDpb, maxBr

unsigned long long

Sender

These optional parameters allow the implementation to specify that the decoder can support certain features of H.264 at higher rates and values than those signaled with profile-level-id.

9.7.2.4 RTX

The following settings are defined for RTX, as noted in [RFC4588] Section 8.6:
Property Name

Values

Notes

rtxTime

unsigned long

As defined in [RFC4588], the time in milliseconds (measured from the time a packet was first sent) that the sender keeps an RTP packet in its buffers available for retransmission.

9.7.2.5 RED

The following settings are defined for RED, as noted in [RFC2198] Section 5:
Property Name

Values

Notes

payloadTypes

sequence<payloadtype>

A sequence of payload types to be encapsulated in RED.

Received on Tuesday, 17 November 2015 21:30:41 UTC