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