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

"Jim Barnett" <Jim.Barnett@genesyslab.com> Sun, 17 June 2012 14:18 UTC

Return-Path: <Jim.Barnett@genesyslab.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 CDA4A21F85A8 for <rtcweb@ietfa.amsl.com>; Sun, 17 Jun 2012 07:18:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=-0.001, BAYES_00=-2.599, HTML_MESSAGE=0.001]
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 madKeR027eKX for <rtcweb@ietfa.amsl.com>; Sun, 17 Jun 2012 07:18:00 -0700 (PDT)
Received: from relay-out2.dc.genesyslab.com (relay-out2.dc.genesyslab.com [198.49.180.221]) by ietfa.amsl.com (Postfix) with ESMTP id CB77821F85A5 for <rtcweb@ietf.org>; Sun, 17 Jun 2012 07:18:00 -0700 (PDT)
Received: from g2.genesyslab.com (g2.genesyslab.com [192.168.20.138]) by relay-out2.dc.genesyslab.com (8.13.8+Sun/8.13.8) with ESMTP id q5HEHuIo024424; Sun, 17 Jun 2012 07:17:56 -0700 (PDT)
Received: from NAHALD.us.int.genesyslab.com ([192.168.20.92]) by g2.genesyslab.com with Microsoft SMTPSVC(6.0.3790.4675); Sun, 17 Jun 2012 07:17:56 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CD4C93.FD7B2DEA"
Date: Sun, 17 Jun 2012 07:17:36 -0700
Message-ID: <E17CAD772E76C742B645BD4DC602CD8106581BF2@NAHALD.us.int.genesyslab.com>
In-Reply-To: <4FDD8EBA.2040601@alvestrand.no>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [rtcweb] Mute implementations (Re: More Comments ondraft-ietf-rtcweb-use-cases-and-requirements-07)
Thread-Index: Ac1MX1f3UbIiFxLmRmyYlI//9ZxN1AAMysww
References: <5A2F246E-9D77-4B72-B3F1-681B00FA99FD@cisco.com><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><4FDB9E20.8070408@jesup.org><CABkgnnVqeyuayFsiA7YD+OFnyCi8tqode6VdypeaHKT+Z73KWw@mail.gmail.com><4FDBA6AC.2080107@jesup.org> <4FDCE4D4.7070909@alvestrand.no> <E17CAD772E76C742B645BD4DC602CD8106581BE5@NAHALD.us.int.genesyslab.com> <4FDCEDC2.2040903@alvestrand.no> <E17CAD772E76C742B645BD4DC602CD8106581BEA@NAHALD.us.int.genesyslab.com> <4FDD8EBA.2040601@alvestrand.no>
From: Jim Barnett <Jim.Barnett@genesyslab.com>
To: Harald Alvestrand <harald@alvestrand.no>
X-OriginalArrivalTime: 17 Jun 2012 14:17:56.0315 (UTC) FILETIME=[FDA7D2B0:01CD4C93]
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] Mute implementations (Re: More Comments ondraft-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: Sun, 17 Jun 2012 14:18:05 -0000

I still think that there is a significant difference between
files/images and live sources.  A live source provides a lot of
information about my environment - what's going on, whether I have
shaved, etc.  The file or image source that we use for hold is designed
to provide _no_ information about my environment.  In a user's mind,
showing "please wait" or a  images of a waterfall is very different from
showing anything _live_ from his environment, and we may want to reflect
that difference in the requirements.  For example, does the user have to
give explicit permission to show the "Please wait" source when the call
is put on hold, or is that configured as a default in the browser?  (The
latter, I'd  think, which makes it different from the front and rear
cameras.)

 

-          Jim

P.S. I agree that the system can switch from front to rear cameras once
it has permission for both, though it should make it clear that it is
doing so.   

 

From: Harald Alvestrand [mailto:harald@alvestrand.no] 
Sent: Sunday, June 17, 2012 4:01 AM
To: Jim Barnett
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] Mute implementations (Re: More Comments
ondraft-ietf-rtcweb-use-cases-and-requirements-07)

 

On 06/16/2012 11:58 PM, Jim Barnett wrote: 

It's capturing the requirement accurately that I'm concerned with.  I
think "To be able to change the source of a video stream after its
creation" is too broad, in the sense that someone might interpret it to
mean that the system could shift from the front to the rear camera
without asking permission.

People certainly want to shift from the front to the rear camera, and
people want to have the ability to get all that asking-for-permissions
stuff out of the way before that.

I recommend the Media Task Force's "additional scenarios" for more
usages of "local media".
Jjim, I know you know where this is, but for others:
http://dvcs.w3.org/hg/dap/raw-file/tip/media-stream-capture/scenarios.ht
ml




  For mute and hold, we want something like
"switch to a dummy source and back".  The source that we switch to in
cases like this is not a 'first-class' video source, but rather a
place-holder.  That's very different from switching to another live
source.

ObLangDisagreement: Files, images and the output of video processors are
very real sources, and should not be "second class".

Switching between live streams (that we have permission to access) is
going to be required, but I think this belongs on the Media TF mailing
list.




 
 
- Jim
 
-----Original Message-----
From: Harald Alvestrand [mailto:harald@alvestrand.no] 
Sent: Saturday, June 16, 2012 4:34 PM
To: Jim Barnett
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] Mute implementations (Re: More Comments
ondraft-ietf-rtcweb-use-cases-and-requirements-07)
 
On 06/16/2012 10:07 PM, Jim Barnett wrote:

	Harald,
	   Your description below makes me nervous:  with getUserMedia,
the 
	user grants permission to _specific_ media streams (for example
audio,

 

	or front camera, but not rear).

Yes, he grants permission to use of the camera. That permission persists
until <we have to define this point in time>. There's some interesting
language there now about "strong" and "weak" references to video
streams.
 

	   If the system wants " to change the source of a video stream
after 
	its creation", shouldn't it be required to ask permission again?
In 
	this case,  common sense says that it's not necessary, but
that's 
	because we're not changing to an arbitrary alternative the
source 
	(e.g., suddenly switching on the rear camera) but rather
substituting 
	some sort of 'null' or 'dummy' source.  Can we think of a
different 
	way to phrase it?

There are multiple ways to implement a requirement, as always.
 
One possibility is the simple one:
 
getUserMedia(..., function(strream) {
       outgoingstream = stream;
})
getStreamFromPicture(image, function(stream) {
       
outgoingstream.videoStreams(0).replaceContent(stream.videoStreams(0));
}..)
 
whatever the "replace" call does.
There may be a requirement that we keep a reference around that keeps
the video stream, so that we can restore it, in order that the camera
not close and can be used later:
 
getUserMedia(..., function(strream) {
       copyOfCameraStream = stream;
       outgoingstream = MediaStream(stream.audioTracks,
stream.videoTracks);
 
})
 
getStreamFromPicture(image, function(stream) {
       
outgoingstream.videoStreams(0).replaceContent(stream.videoStreams(0));
}..)
 
restorePicture = function() {
      
outgoingtstream.videoStreams(0).replaceContent(copyOfCameraStream.video.
Streams(0));
}
 
But there are surely multiple other ways to define it. What I want to
make sure we have done first is to capture the requirement accurately.
 

	 
	- Jim
	 
	-----Original Message-----
	From: rtcweb-bounces@ietf.org [mailto:rtcweb-bounces@ietf.org]
On 
	Behalf Of Harald Alvestrand
	Sent: Saturday, June 16, 2012 3:56 PM
	To: rtcweb@ietf.org
	Subject: Re: [rtcweb] Mute implementations (Re: More Comments
	ondraft-ietf-rtcweb-use-cases-and-requirements-07)
	 
	On 06/15/2012 11:18 PM, Randell Jesup wrote:

		On 6/15/2012 4:49 PM, Martin Thomson wrote:

			On 15 June 2012 13:42, Randell
Jesup<randell-ietf@jesup.org> <mailto:randell-ietf@jesup.org> 

wrote:

				I would also suggest that for video-mute
that instead of stopping 
				video or sending black, the application
should send a "mute image".

			The question I have is whether there is: a) a
fixed image/video that

 

			is serialized to RTP b) video "comfort noise",
or c) local mute 
			image/video playback.  If it can't be c, then
you might need to 
			explain yourself.

		Either we build it into the system (which I dislike -
SetMuteImage() 
		or whathaveyou, though we could), or we put it in the
application 
		domain and suggest or assist implementation.
		 
		The simple way to handle Mute is to revector the input
to a "mute" or

 

		"hold" source, and they may not be the same (hold would
have "Please 
		Hold" and music, perhaps; mute would have silence and
"Muted" or a 
		camera with a circle/slash, etc).  You can also signal
that out of 
		band to let the other end take smart action (remove
muted video 
		image, display "muted" next to a name, etc).  This can
be done via 
		DataChannels, for example.  You may then reinvite for
Hold to make it

 

		one-way, but that's mostly optional.

	The resulting requirements seem to me to be:
	 
	1) To be able to use a still image as source for a video stream
	2) To be able to change the source of a video stream after its 
	creation
	 
	Both are requirements on the GetUserMedia API. Can we link these
to a 
	specific use case, or do we need to modify the use case document
so 
	that the requirements are clear?
	 
	               Harald
	 
	 
	 
	 
	_______________________________________________
	rtcweb mailing list
	rtcweb@ietf.org
	https://www.ietf.org/mailman/listinfo/rtcweb