New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for RED - missing fmtp #260

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

Comments

Projects
None yet
2 participants
@robin-raymond
Copy link
Contributor

robin-raymond commented Oct 29, 2015

related from issue:
#253

@robin-raymond

This comment has been minimized.

Copy link
Contributor

robin-raymond commented Oct 29, 2015

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

This comment has been minimized.

Copy link
Contributor

robin-raymond commented Oct 29, 2015

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 added a commit that referenced this issue Oct 29, 2015

@aboba aboba added the PR exists label Oct 29, 2015

@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