W3C home > Mailing lists > Public > public-webrtc@w3.org > June 2012

Re: Spec question: Using settings dictionaries instead of MediaConstraints ([ACTION-50])

From: Adam Bergkvist <adam.bergkvist@ericsson.com>
Date: Tue, 19 Jun 2012 17:29:42 +0200
Message-ID: <4FE09AE6.2080505@ericsson.com>
To: Justin Uberti <juberti@google.com>
CC: Eric Rescorla <ekr@rtfm.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
On 2012-06-19 03:48, Justin Uberti wrote:
>
>
> On Mon, Jun 18, 2012 at 7:53 PM, Eric Rescorla <ekr@rtfm.com
> <mailto:ekr@rtfm.com>> wrote:
>
>     On Mon, Jun 18, 2012 at 5:13 AM, Adam Bergkvist
>     <adam.bergkvist@ericsson.com <mailto:adam.bergkvist@ericsson.com>>
>     wrote:
>      > On 2012-06-15 21:28, Justin Uberti wrote:
>      >>
>      >> At the interim, it was indicated that using MediaConstraints for
>      >> non-media PeerConnection methods was probably not the right fit, one
>      >> reason being that most options were only relevant for a specific
>     method,
>      >> and it would be good to make it clear which options should be
>     passed to
>      >> which methods.
>      >>
>      >> Therefore I propose that we define other settings dictionaries,
>     similar
>      >> to MediaConstraints, but named specifically for the methods in which
>      >> they will be used.
>
>     Generally, I like this approach. Some (hopefully easy) nits below.
>
>      >> This results in new dictionaries IceOptions and
>      >> SessionDescriptionOptions, with values as shown below:
>      >>
>      >> IceOptions.AllowedCandidates = ("none", "relay", "all) // "all",
>     if not
>      >> specified
>      >>
>      >> SessionDescriptionOptions.IncludeAudio = true/false // forces
>     m=audio
>      >> line to be included
>      >> SessionDescriptionOptions.IncludeVideo = true/false // forces
>     m=video
>      >> line to be included
>
>     By "forces" you mean "even if I don't include a video stream"?
>     That's what I'm taking from Adam's comment.
>
>
> Correct.
>
>     What happens if I AddStream() a video stream  but set this to
>     false?
>
>
> One of the following:
> 1. The setting is ignored.
> 2. The stream is ignored.
> 3. An exception is thrown.
>
>
>     Maybe it would make more sense to have this *only* control
>     generating a recv-type media stream and have addstream
>     control only a send-type.
>
>
> This controls adding a m= line in the offer or answer, which is needed
> if we want to send or receive. The original intent was to make the
> meaning of this setting to be "include a m=video line if one doesn't
> already exist", which would be essentially #1 above.
>
> Or we could be strict and do #3.
>

With Ekr's comment above about letting "includeVideo" control the 
recv-type and addStream() control send-type, then addStream(videoStream) 
+ "includeVideo":false could mean that I want to send video, but not 
receive video. The nice thing with only having addStream() control the 
send-type is that if the app can't generate a video stream, then there's 
no way for the JS app to hard-code that video should be sent anyhow 
which needs to fail in some way.

If I get the current approach, then addStream(videoStream) obviously 
means that I want to send video, but also implies that I'm willing to 
receive video (regardless if I set "includeVideo":true or not). A bit 
less control than the scenario above.

>
>
>      >> SessionDescriptionOptions.UseVoiceActivityDetection = true/false //
>      >> includes CN codecs if true
>
>
>      >> SessionDescriptionOptions.RestartIce = true/false // generates offer
>      >> with new ufrag/pwd
>      >> SessionDescriptionOptions.GetCapabilities = true/false // generates
>      >> "capabilities" offer
>      >>
>      >> These fit into the existing API on the createOffer/Answer and
>     updateIce
>      >> methods:
>      >>
>
>     Hmm... So I can't update my iceOptions when I do createAnswer?
>     If I want to convert from relay only I have to do updateIce?
>
>
> Yes - because IceOptions affect more than the SDP - they also affect the
> candidates used by the ICEAgent for checks.
>
>
>
>      >> [Constructor (IceServers configuration, optional IceOptions
>     iceOptions)]
>      >> interface PeerConnection {
>      >>    void createOffer(SessionDescriptionCallback
>      >> successCallback, optional PeerConnectionErrorCallback
>     failureCallback,
>      >> optional SessionDescriptionOptions options);
>      >>    void createAnswer(SessionDescriptionCallback
>      >> successCallback, optional PeerConnectionErrorCallback
>     failureCallback,
>      >> optional SessionDescriptionOptions options);
>      >>   ...
>      >>
>      >>    void updateIce(optionalIceServersconfiguration,
>      >> optional IceOptions options);
>      >>
>      >>
>      >> Does this look reasonable?
>
>     -Ekr
>
>
Received on Tuesday, 19 June 2012 15:30:10 UTC

This archive was generated by hypermail 2.3.1 : Monday, 23 October 2017 15:19:28 UTC