Support for RED - missing fmtp #260

Closed
robin-raymond opened this Issue Oct 29, 2015 · 2 comments

Projects

None yet

2 participants

@robin-raymond
Contributor

related from issue:
#253

@robin-raymond
Contributor

https://tools.ietf.org/html/rfc2198

   To receive a redundant stream, this is all that is required.  However
   to send a redundant stream, the sender needs to know which codecs are
   recommended for the primary and secondary (and tertiary, etc)
   encodings.  This information is specific to the redundancy format,
   and is specified using an additional attribute "fmtp" which conveys
   format-specific information.  A session directory does not parse the
   values specified in an fmtp attribute but merely hands it to the
   media tool unchanged.  For redundancy, we define the format
   parameters to be a slash "/" separated list of RTP payload types.

   Thus a complete example is:

       m=audio 12345 RTP/AVP 121 0 5
       a=rtpmap:121 red/8000/1
       a=fmtp:121 0/5

As such, we need RTCRtpCodecParameters.parameters to define the "fmtp", which is basically a list of packets encapsulated within the red codec.

For for the red, I propose a sender and receiver parameter inside RTCRtpCodecParameters.parameters that contains:
sequence<payloadtype> payloadTypes - the list of payload types encapsulated within the red packet [as defined within https://tools.ietf.org/html/rfc2198 Section 5 re fmtp]

So for example let's say red was payload 100 and contained a "0" payload type and a "5" payload type:

{
"name": "...",
"payloadType": 0,
...
},
{
"name": "...",
"payloadType": 5,
...
},
{
"name": "red",
"payloadType": 100,
...
"parameters" : {
 "payloadTypes": [
      0,
      5
    ]
  }
}

In the above example, each red packet would contain a payload of "0" type and a payload of "5" type.

@robin-raymond
Contributor
dictionary RTCRtpCodecParameters {
             DOMString                 name;
             payloadtype               payloadType;
             unsigned long             clockRate;
             unsigned long             maxptime;
             unsigned long             numChannels;
             sequence<RTCRtcpFeedback> rtcpFeedback;
             Dictionary                parameters;
};


dictionary "parameters" {
    // RED specific
    sequence<payloadtype> payloadTypes;
};
@aboba aboba added a commit that referenced this issue Oct 29, 2015
@aboba aboba Fix for Issue 260 1ca2769
@aboba aboba closed this Dec 20, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment