- From: Martin Thomson <martin.thomson@gmail.com>
- Date: Fri, 7 Feb 2014 08:12:27 -0800
- To: Justin Uberti <juberti@google.com>
- Cc: Peter Thatcher <pthatcher@google.com>, public-orca <public-orca@w3.org>
- Message-ID: <CABkgnnXNMb5bak708P4QEz1NMyfptKvR7HgG3_XUzRNDHTCkoQ@mail.gmail.com>
Looks good. On Feb 6, 2014 2:52 PM, "Justin Uberti" <juberti@google.com> wrote: > 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 Friday, 7 February 2014 16:12:57 UTC