RE: An idea for specifying RTX, FEC, and RED payload types

Peter said:
Good point.  I suppose we could do this:

dictionary RTCRtpParameters {
   DOMString                       muxId = "";
   sequence<RTCRtpCodecParameters> codecs;
   RTCRtpPayloadTypes              red;
   RTCRtpPayloadTypes              fec;
   ...
};

dictionary RTCRtpPayloadTypes {
  payloadtype payloadType;
  payloadtype rtxPayloadType;
}

But maybe that's just as ugly as putting them in the codecs list.

[BA] There is still the potential need to configure rtx-time, so some dictionary additions are probably needed.

Note that if we don’t include RTX/RED as codecs, we need to modify RTCRtpCapabilities to allow them to be discovered some other way.  Strangely, FEC capabilities are advertised twice, once as a codec (presumably a codec for each FEC mechanism), and again via fecMechanisms.


dictionary RTCRtpCapabilities {
    sequence<RTCRtpCodecCapability> codecs<http://internaut.com:8080/~baboba/ortc/ortc-10-10-2014.html#widl-RTCRtpCapabilities-codecs>;
    sequence<RTCRtpHeaderExtension> headerExtensions;
    sequence<DOMString>             fecMechanisms;
};





On Fri, Oct 17, 2014 at 12:58 PM, Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com<mailto:sergio.garcia.murillo@gmail.com>> wrote:
Hi Peter,

While it is not very common to have RTX and FEC enabled simultaneously, in theory I think it could be possible to have an RTX stream for the RED/FEC payload. With your approach that would not be possible, as FEC would not be a codec. It is a restriction I could live with, but we should make it clear stated.

Best regards
Sergio

On 17/10/2014 19:54, Peter Thatcher wrote:
They aren't real codecs, so it's kind of ugly going in "codecs", and it isn't completely obvious that doing so is necessary.  It's also not obvious to use "APT" in an RTX "codec", not to mention that it's also kind of ugly.

So, perhaps we could do something like this:

dictionary RTCRtpParameters {
   DOMString                       muxId = "";
   sequence<RTCRtpCodecParameters> codecs;
   payloadtype                     redPayloadType;
   payloadtype                     fecPayloadType;
   ...
};
dictionary RTCRtpCodecParameters {
   DOMString   name;
   payloadtype payloadType;
   payloadtype rtxPayloadType;
   ...
};

​
Note that this does not tell the browser to send RTX, FEC, or RED.  To do so, one must put in the correct per-encoding control points under RtpEncodingParameters.  This merely specifies the payload types to send or receive
​ in a way that's a little cleaner and more obvious than putting them in the list of RtpCodecParameters.​


Thoughts? ​
​

Received on Wednesday, 22 October 2014 20:38:39 UTC