Re: [rtcweb] Mute implementations (Re: More Comments on draft-ietf-rtcweb-use-cases-and-requirements-07)

Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com> Fri, 15 June 2012 10:34 UTC

Return-Path: <stefan.lk.hakansson@ericsson.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DFEB121F85B8 for <rtcweb@ietfa.amsl.com>; Fri, 15 Jun 2012 03:34:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.799
X-Spam-Level:
X-Spam-Status: No, score=-5.799 tagged_above=-999 required=5 tests=[AWL=-0.150, BAYES_00=-2.599, HELO_EQ_SE=0.35, J_CHICKENPOX_41=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Hjj-+fZXVusM for <rtcweb@ietfa.amsl.com>; Fri, 15 Jun 2012 03:34:36 -0700 (PDT)
Received: from mailgw7.ericsson.se (mailgw7.ericsson.se [193.180.251.48]) by ietfa.amsl.com (Postfix) with ESMTP id 651CF21F85A1 for <rtcweb@ietf.org>; Fri, 15 Jun 2012 03:34:35 -0700 (PDT)
X-AuditID: c1b4fb30-b7f606d0000002be-57-4fdb0fb9633f
Received: from esessmw0184.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw7.ericsson.se (Symantec Mail Security) with SMTP id C5.A2.00702.9BF0BDF4; Fri, 15 Jun 2012 12:34:34 +0200 (CEST)
Received: from [150.132.142.244] (153.88.115.8) by esessmw0184.eemea.ericsson.se (153.88.115.82) with Microsoft SMTP Server id 8.3.264.0; Fri, 15 Jun 2012 12:34:33 +0200
Message-ID: <4FDB0FB7.7000809@ericsson.com>
Date: Fri, 15 Jun 2012 12:34:31 +0200
From: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1
MIME-Version: 1.0
To: "Hutton, Andrew" <andrew.hutton@siemens-enterprise.com>
References: <5A2F246E-9D77-4B72-B3F1-681B00FA99FD@cisco.com> <F3D4ABD6AB47084B84337CF4F3446A464B2F11B52E@ESESSCMS0362.eemea.ericsson.se> <AAB6A6B6-BEC7-436C-B1EB-2C117596C7C6@cisco.com> <F3D4ABD6AB47084B84337CF4F3446A464B2F2631AC@ESESSCMS0362.eemea.ericsson.se> <9F33F40F6F2CD847824537F3C4E37DDF021B53@MCHP04MSX.global-ad.net> <CA+9kkMCL1k3x2hYi632nDU2g6CtOq3O7risDi38+7FTeWkxcGA@mail.gmail.com> <9F33F40F6F2CD847824537F3C4E37DDF0223ED@MCHP04MSX.global-ad.net> <4FD89773.3090506@ericsson.com> <9F33F40F6F2CD847824537F3C4E37DDF02594D@MCHP04MSX.global-ad.net> <4FD9AD1E.6060504@alvestrand.no> <4FD9E2BE.2080907@ericsson.com>, <CAOJ7v-18EynuscX3tLRryzqKxyXwYzES9K4zroE-5=FL4o8WzA@mail.gmail.com> <8A7A43A8-90B0-46E0-83C4-E950BC4A3B2C@siemens-enterprise.com>
In-Reply-To: <8A7A43A8-90B0-46E0-83C4-E950BC4A3B2C@siemens-enterprise.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprBLMWRmVeSWpSXmKPExsUyM+Jvre4u/tv+Btt2sVqc7etit9g6Vchi 7b92dgdmjwWbSj2WLPnJ5HHj9nvmAOYoLpuU1JzMstQifbsEroyv+06zF+y3qXjR84O1gXGd ZhcjJ4eEgInEgsWH2SFsMYkL99azdTFycQgJnGKUuHDrLguEs5ZRYm5TFwtIFa+AtsT2Nc/Y QGwWAVWJx59fMYHYbAI2Emu7pwDZHByiAmESqx9oQJQLSpyc+QSsVUTAWuLD/BZmEJtZwE/i 7rcfYLawQKHE/UkHWSF2fWSV+NB6kx1kDqeAl8TWRmuIeluJC3Ous0DY8hLb384B6xUS0JV4 9/oe6wRGwVlI1s1C0jILScsCRuZVjMK5iZk56eXmeqlFmcnFxfl5esWpmxiBoXtwy2+DHYyb 7osdYpTmYFES59VT3e8vJJCeWJKanZpakFoUX1Sak1p8iJGJg1OqgVFT7L+iWV9qrK38tM6Y ZW6VYh81/r1duu3MTPlv72zbN9uzay/4eP7Jz701DqFnr4T+K9md/kzDZe7id0sUHR0vPPS6 uXrSw1pHXtWKzzbaUm9Y2m7lOujU7tt3r0DgQHV6s2BP8mRnF/9o+2MXPvUoS5xd/7dwlpuV 3W2egxX2Cy+t6FheJKDEUpyRaKjFXFScCABaCvjvKwIAAA==
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Mute implementations (Re: More Comments on draft-ietf-rtcweb-use-cases-and-requirements-07)
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 15 Jun 2012 10:34:37 -0000

On 06/14/2012 10:01 PM, Hutton, Andrew wrote:
> I agree with Justin that mute is a local action and should not stop the
> RTP or change the state of the remote track.
>
> Regards
> Andy

First, a short explanation of (my understanding of) what is in the API now:

* each track has a muted/unmuted and a enabled/disabled state
* enable state can be controlled by the application
* muted state can only be controlled by the browser
* muted overrides enabled (so a track that is enabled will still not 
play if it is muted)

The idea is that "mute" state is out of the control of the app (so the 
browser can override - and the user if the browser chrome allows). There 
has been some discussion indicating that the above is not sufficient and 
that we need to add more.

I think we're talking about different "mutes" in this thread.

One that is that you mute using e.g. a button on your headset. This 
would lead to audio samples with amplitude of zero being generated. This 
should not change any state on the track (locally or remotely) IMO, and 
silence/cn should be sent in the RTP.

Another is that the app has a "mute" button. Clicking this would 
(depending of the app) lead to the corresponding track being "disabled" 
in the local MediaStream. For the remote MediaStream, this is basically 
the same as "mute in the browser chrome" in the local case (since the 
source stops producing data), and I think the state there should change 
to "muted".

A third is that you mute the device via the browser chrome (I assume 
this possibility will exist). In this case the track state changes to 
muted, and I really think this should propagate to the other end of a 
PeerConnection.

Stefan


>
>
>
> On 14 Jun 2012, at 20:37, "Justin Uberti" <juberti@google.com
> <mailto:juberti@google.com>> wrote:
>
>> For "mute", stopping sending of RTP may trigger concealment on the
>> remote side. We currently send silent audio when muted to prevent this.
>> For "hold", you are notifying the remote side (e.g. a=inactive), so it
>> makes sense to stop sending RTP.
>>
>> On Thu, Jun 14, 2012 at 9:10 AM, Stefan Hakansson LK
>> <stefan.lk.hakansson@ericsson.com
>> <mailto:stefan.lk.hakansson@ericsson.com>> wrote:
>>
>>     On 06/14/2012 11:21 AM, Harald Alvestrand wrote:
>>
>>         Changing the subject line again, since we're discussing how to do
>>         mute, not whether to do it.....
>>
>>         On 06/14/2012 11:15 AM, Hutton, Andrew wrote:
>>
>>             On 13 June 2012 15:37 Stefan Hakansson wrote:
>>
>>                 This is my personal understanding:
>>
>>                 - the API (and this part has been there for a long
>>                 time) allows
>>                 the application to disable/enable individual tracks of
>>                 MediaStreams - So say you have a MediaStream (one
>>                 audio track,
>>                 one video track in this example) that is rendered
>>                 using a video
>>                 element; disabling audio would lead to silence,
>>                 disabling video
>>                 to that the video stops - The question is: what should
>>                 happen if
>>                 the MediaStream is connected to a PeerConnection and
>>                 sent to a
>>                 peer? - using recvonly does not seem appropriate as
>>                 that would
>>                 stop all ssrc:s belonging to the same m-line - and the
>>                 app only
>>                 disabled one - one option could be to simply stop
>>                 sending the RTP
>>                 packets for this track. I don't know how reliable that
>>                 would be.
>>
>>             In the case of outgoing media then I think mute should simply
>>             disconnect the source (e.g. microphone) and there is no
>>             impact on
>>             RTP other than depending on the codec silence will be
>>             transmitted
>>             or SID frame etc. There is also no impact on RTCP which
>>             continues.
>>
>>             This is different to setting the direction to be recvonly
>>             which
>>             would completely stop the outgoing RTP packets and would
>>             normally
>>             be signaled to the remote party. This should of course be
>>             achieved
>>             using setLocalDescription.
>>
>>
>>         Just to add to the complexity of the "mute" case:
>>
>>         When an audio stream is muted, should there be comfort noise
>>         sent? If
>>         yes, what should determine the noise level?
>>
>>
>>     To me it feels as that ideally we should stop sending RTP (and
>>     make the other end know that the track is disabled). If we go to
>>     comfort noise state, the track in the MediaStream at the other end
>>     would still be active (even though what is played could be very
>>     low level comfort noise), but to reflect the local state the
>>     remote track should go to "muted", shouldn't it?
>>
>>
>>
>>
>>         (people who've never had to deal with comfort noise can safely
>>         tune
>>         out at this point)
>>
>>
>>
>>                 - I think there has been proposals signaling this in
>>                 SDP or in
>>                 RTCP, but I don't think there was ever any conclusion
>>
>>             If we are talking about a local mute then I don't see any
>>             need to
>>             signal this but again this is different to changing the
>>             direction
>>             attribute in SDP.
>>
>>                 For the other part, muting incoming media, this is
>>                 simple: the
>>                 app (at receiving browser) could just disable the
>>                 tracks it wants
>>                 in the incoming MediaStreams. A related question is if
>>                 this
>>                 should be signaled back to the sender (so it could
>>                 stop sending).
>>                 This is essentially a question of
>>                 efficiency/optimization, and
>>                 nothing stops the app from signaling that now using an app
>>                 specific protocol (perhaps carried over the data
>>                 channel), but
>>                 perhaps this should be brought into SDP or RTCP.
>>
>>             If the application wants to ask the remote party to pause
>>             sending
>>             of RTP then it should surely do this in SDP by setting the
>>             direction attribute appropriately (i.e. sendonly or inactive).
>>
>>             Regards Andy
>>
>>             _________________________________________________ rtcweb
>>             mailing
>>             list rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>             https://www.ietf.org/mailman/__listinfo/rtcweb
>>             <https://www.ietf.org/mailman/listinfo/rtcweb>
>>
>>
>>         _________________________________________________ rtcweb
>>         mailing list
>>         rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>         https://www.ietf.org/mailman/__listinfo/rtcweb
>>         <https://www.ietf.org/mailman/listinfo/rtcweb>
>>
>>
>>     _________________________________________________
>>     rtcweb mailing list
>>     rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>     https://www.ietf.org/mailman/__listinfo/rtcweb
>>     <https://www.ietf.org/mailman/listinfo/rtcweb>
>>
>>
>> _______________________________________________
>> rtcweb mailing list
>> rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>> https://www.ietf.org/mailman/listinfo/rtcweb