Re: [Bug 18485] Change DTMF API to be on PeerConnection

On 8/10/2012 11:49 AM, Martin Thomson wrote:
> On 10 August 2012 05:49, Adam Bergkvist <adam.bergkvist@ericsson.com> wrote:

>> I don't see any reason why the DtmfAudioStreamTrack needs to be a
>> MediaStreamTrack. We could simply have an object that's used as a remote to
>> insert and receive DTMF on associated MediaStreamTrack objects.
>>
>> [Constructor(MediaStreamTrack outgoingAudioTrack,
>>      optional MediaStreamTrack incomingAudioTrack)]
>> interface DtmfTransceiver : EventTarget {
>>      void playTones (DOMString tones,
>>              optional unsigned long duration = 100);
>>      void startTone (DOMString tone);
>>      void endTone ();
>>
>>      attribute Function? ontone;
>> };
>
> This also works.  The complication here is for the browser
> implementation: audio tracks will all need to know about DTMF so that
> they can carry it.  There would be browser-private interfaces for
> sending and receiving tones that are only exposed once the descriptor
> is added.  Sure, this would be hidden from users, but the core audio
> track implementation would carry the burden of DTMF support.  That
> negates the benefits of isolation for the browser implementation.
>
> I don't follow your reasoning for having two tracks attached to the
> tranceiver.  Can you explain how that would be useful?

The incoming track would be for local echo.  Using an audio element in 
the app for local echo invites the possibility of the local tone not 
being echo-cancelled and leaking into the outbound stream (especially if 
the developer guesses wrong at the length/start-time of the outgoing 
'tone'), causing possible double-detection in an IVR. Everyone I've seen 
who puts a number pad in a phone or softphone does something in audio 
when you hit one (generic beep or DTMF tone normally), so one would 
expect anyone building an app which expects to access PSTN gateways to 
include that.  This makes it easier for them to not shoot themselves in 
the foot.   It's not mandatory, but likely would be a source of 
frustration and odd hard-to-reproduce bugs and possibly 
works-in-one-browser but fails 1-in-20-times in another browser.


-- 
Randell Jesup
randell-ietf@jesup.org

Received on Friday, 10 August 2012 16:06:00 UTC