- From: Justin Uberti <juberti@google.com>
- Date: Thu, 6 Feb 2014 14:51:29 -0800
- To: Peter Thatcher <pthatcher@google.com>
- Cc: "public-orca@w3.org" <public-orca@w3.org>
- Message-ID: <CAOJ7v-2Vvnka_4KCz8X8Qgs6hONtMbdj544H7PH9BGF=2t4YgQ@mail.gmail.com>
I see; so instead of 'get DtmfSender from RtpSender', it becomes 'attach
DtmfSender to RtpSender'. That does seem more consistent.
Also agree on RTCDtmfSender.
On Thu, Feb 6, 2014 at 1:39 PM, Peter Thatcher <pthatcher@google.com> wrote:
> I like this idea, and I like the idea of changing the reference to track
> to being a reference to the RtpSender.
>
> But would
> it make sense t
> o pass the RtpSender into a constructor of the DtmfSender?
>
>
> [Constructor(RTCRtpSender)]
> interface RTCDTMFSender {
> readonly attribute boolean canInsertDTMF;
> void insertDTMF (DOMString tones, optional long duration,
> optional long interToneGap);
> readonly attribute
> RTCRtpSender sender
> ;
> attribute EventHandler ontonechange;
> readonly attribute DOMString toneBuffer;
> readonly attribute long duration;
> readonly attribute long interToneGap;
> };
>
> I think that's more consistent with the rest of our objects.
>
>
> And can we call it DtmfSender? We have RtpSender and IceTransport and
> SctpTransport, not RTPSender, ICETransport, and SCTPTransport. DTMFSender
> seems out of place, and "RTCDTMF" just looks crazy.
>
>
>
> On Thu, Feb 6, 2014 at 11:21 AM, Justin Uberti <juberti@google.com> wrote:
>
>> One thing absent from the current API is support for DTMF. Yes, it's a
>> relic from an earlier age, but unfortunately it's not something we can
>> ignore.
>>
>> Fortunately, the 1.0 spec did a nice job factoring DTMF functionality out
>> into the RTCDTMFSender <http://www.w3.org/TR/webrtc/#rtcdtmfsender>object. After calling PeerConnection.createDTMFSender(track), a
>> RTCDTMFSender is created and attached to |track|. This object then allows
>> DTMF to be injected into the audio stream for the specified track.
>> Visually, it looks like this (in 1.0):
>>
>>
>> |---------------------------|
>> | PeerConnection |
>> MediaStreamTrack --> |Doohickey | |
>> | ^ |
>> | | |
>> |RTCDTMFSender| |
>> | |
>> |---------------------------|
>>
>> So, we should be able to reuse this whole object in ORTC. All we need to
>> do is find a way to create a RTCDTMFSender for a given track, which we can
>> do just by adding a getDTMFSender() API to RTCRtpSender, and we end up with
>> a model like:
>>
>>
>> MediaStreamTrack --> RTCRtpSender ---> Transports
>> ^
>> |
>> RTCDTMFSender
>>
>> The API delta then becomes:
>>
>> partial interface RTCRtpSender {
>> // gets/creates the RTCDTMFSender object for the current RTCRtpSender
>> RTCDTMFSender getDTMFSender();
>> }
>>
>> and this taken from 1.0:
>>
>> [NoInterfaceObject]
>> interface RTCDTMFSender {
>> readonly attribute boolean canInsertDTMF;
>> void insertDTMF (DOMString tones, optional long duration,
>> optional long interToneGap);
>> readonly attribute MediaStreamTrack track;
>> attribute EventHandler ontonechange;
>> readonly attribute DOMString toneBuffer;
>> readonly attribute long duration;
>> readonly attribute long interToneGap;
>> };
>>
>> The only other edit we might want to make is to replace the |track|
>> reference with a reference to the RTCRtpSender the RTCDTMFSender is
>> attached to.
>>
>
>
>
Received on Thursday, 6 February 2014 22:52:17 UTC