- From: Peter Thatcher <pthatcher@google.com>
- Date: Wed, 12 Feb 2014 17:53:11 -0800
- To: "public-orca@w3.org" <public-orca@w3.org>
- Message-ID: <CAJrXDUFTFo=-2-RfPOO3PnPu_f-q2XV0xNwwuXuBCSccYzdW_Q@mail.gmail.com>
In various email threads, we've referred to RTCRtpParameters, specifically for RTCRtpSender.send(RTCRtpParameters) and RTCRtpReceiver.receive(RTCRtpParameters). But we've never fully proposed what it should look like. Meanwhile, there's been discussion of the RTCCodec in RTCRtpCapabilities and RTCRtpParameters, which aren't quite the same. So, I propose we make an RTCRtpParameters like so, which is combining various other emails threads, and adding a few things: It covers I think all of what we need except for specifying quality, resolution, framerate, and inter-layer depenencies, which is a big topic that requires a separate email. dictionary RTCRtpParameters { // The value that goes in the "APPID header extension". DOMString? receiverId; // The codecs to send or receive. // We need more than one send codec because of RTX, CN, etc sequence<RTCRtpCodecParameters> codecs; // The header extensions to send or receive. sequence<RTCRtpHeaderExtensionParameters> headerExtensions; // The various "encodings" or "layers" // ( rtx, fec, simulcast, etc). sequence<RTCRtpEncodingParameters> encodings; } dictionary RTCRtpCodecParameters { // The value that goes in the RTP Payload Type field. unsigned byte payloadType; // The same value that goes in the RTCRtpCapabilities. RTCRtpCodec codec; // Format parameters that are only used for controlling // what is sent, and shouldn't be signalled. // For example, with opus, stereo=1 sequence<KeyValueParam> formatParameters; // Because they are so different, // RTCP feedback params are separated out. sequence<RTCRtcpFeedbackParam> rtcpFeedbackParameters; }; dictionary RTCRtcpFeedbackParam { DOMString type; // e.g. "nack", "ccm", "tmmbr", "goog-remb" , etc DOMString parameters; // e.g. "rpsi", "fir" , etc } dictionary RTCRtpHeaderExtensionParameters { DOMString uri; unsigned short id; bool encrypt; } dictionary RTCRtpEncodingParameters { // The "main" ssrc for this layer/encoding. unsigned int ssrc; // F or per-enconding codec specfications, give the codec name here. // If null, the browser will choose. DOMString ? codec Name ; // If you want FEC or RTX, assign one of these. RTCRtpFecParameters? fec; RTCRtpRtxParameters? rtx; // TODO: Control resolution, quality, framerate, and // Inter-layer depenencies. // It's a topic all on its own :). } dictionary RTCRtpFecParameters { // The ssrc to use for FEC. unsigned int ssrc; DOMString mechanism; } dictionary RTCRtpRtxParameters { // The ssrc to use for RTX. unsigned int ssrc; }
Received on Thursday, 13 February 2014 01:54:20 UTC