- From: Adam Bergkvist <adam.bergkvist@ericsson.com>
- Date: Mon, 13 Aug 2012 12:25:02 +0200
- To: Harald Alvestrand <harald@alvestrand.no>
- CC: "public-webrtc@w3.org" <public-webrtc@w3.org>
On 2012-08-13 11:51, Harald Alvestrand wrote:
> On 08/13/2012 11:45 AM, Stefan Hakansson LK wrote:
>> On 08/10/2012 05:49 PM, 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.
>>
>> It would be interesting to know how severe this issue is. The
>> DtmfTransceiver seems to me like an OK API, but if it makes the
>> implementation difficult that is not a good thing.
>>
>>
>>
> The immediate trigger for the current proposal to move the interface to
> the PeerConnection was Tommy's realization that it significantly messed
> up the MediaStream implementation.
I would say that the approach with "static" methods on PeerConnection
and the DtmfTransceiver-version will look pretty much the same under the
hood in this regard. They both reference a regular MediaStreamTrack that
will be used to send DTMF.
peerConn.sendDTMF(referencedTrack, ...);
var dtmf = new DtmfTransceiver(referencedTrack, ...);
dtmf.playTones(...);
Martin wants to have a special track for DTMF so regular tracks don't
have to care about it. But I'm not if it's possible to keep it that way
all the time.
/Adam
Received on Monday, 13 August 2012 10:25:26 UTC