- From: Peter Thatcher <pthatcher@google.com>
- Date: Tue, 8 Sep 2015 23:36:21 -0700
- To: "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <CAJrXDUEZTudtb=o7one6UTEAG-yWQ7V81XW5MYoef9SVH3-92w@mail.gmail.com>
Working through many use cases for createRtpSender and createRtpReceiver
has made me realize that what would be much cleaner is to have a method
that creates both like so:
// Replaces createRtpSender
var media = pc.addMedia("video", {send: true, receive: true});
// Replaces createRtpReceiver
var media = pc.addMedia("audio", {send: false, receive: true});
// Replaces addTrack + "offerToReceive: 0"
pc.addMedia("video", {send: true, receive: false});
The return time is a pair of an RtpSender and RtpReceiver:
interface RTCRtpTransceiver {
readonly attribute mid; // Chosen when addMedia is called.
// These are non-nullable. You get one, even if it isn't actively
sending/receiving.
readonly attribute RtpSender sender;
readonly attribute RtpReceiver receiver;
}
Rather than call it "RTCRtpPair", I called it "RTCRtpTransceiver", but
that's just a placeholder (much like "doohikies" was). We can get creative
with the names later. For now, the point is that this is cleaner than
having separate createRtpSender and createRtpReceiver methods. Similarly,
I could have called it "createRtpTransceiver", but "addMedia" sounded a lot
nicer, and we can get creative with names later.
This also provides a nice place to put a "set m-line to port 0" method,
which could solve https://github.com/w3c/webrtc-pc/issues/187. So I added
a "stop" method also:
partial interface RTCRtpTranceiver {
readonly attribute bool stopped;
void stop();
}
You can see the entire PR for it here:
https://github.com/w3c/webrtc-pc/pull/293/
And I made some slides with more examples and use cases about it here:
https://docs.google.com/presentation/d/1BN2GBoJvys6PbswQink4CAgrGl_ofZYEHepbExfAsF0/edit#slide=id.g663e22e54_1_133
I hope to present on it at the upcoming f2f.
Received on Wednesday, 9 September 2015 06:37:30 UTC