W3C home > Mailing lists > Public > public-orca@w3.org > February 2014

DTMF support

From: Justin Uberti <juberti@google.com>
Date: Thu, 6 Feb 2014 11:21:21 -0800
Message-ID: <CAOJ7v-2rOzp3uFaw=Pg6V6X-uNzNB=ybK6=eW5YR+GHk+Kh87w@mail.gmail.com>
To: "public-orca@w3.org" <public-orca@w3.org>
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 19:22:11 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:39:24 UTC