- 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