Re: [rtcweb] Rejecting MediaStreamTracks in JSEP

Justin Uberti <juberti@google.com> Mon, 03 February 2014 20:21 UTC

Return-Path: <juberti@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4D6461A0222 for <rtcweb@ietfa.amsl.com>; Mon, 3 Feb 2014 12:21:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.487
X-Spam-Level:
X-Spam-Status: No, score=0.487 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_14=0.6, J_CHICKENPOX_15=0.6, J_CHICKENPOX_18=0.6, J_CHICKENPOX_36=0.6, RP_MATCHES_RCVD=-0.535, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W9XtJiUC8GCW for <rtcweb@ietfa.amsl.com>; Mon, 3 Feb 2014 12:21:14 -0800 (PST)
Received: from mail-vc0-x22c.google.com (mail-vc0-x22c.google.com [IPv6:2607:f8b0:400c:c03::22c]) by ietfa.amsl.com (Postfix) with ESMTP id E2B1D1A0221 for <rtcweb@ietf.org>; Mon, 3 Feb 2014 12:21:13 -0800 (PST)
Received: by mail-vc0-f172.google.com with SMTP id lf12so5209924vcb.3 for <rtcweb@ietf.org>; Mon, 03 Feb 2014 12:21:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=HW5iTtjxIbLeEfVUgoFaPaxjtC4YyYn1mkSlJE/2iZk=; b=Ztx/uN2s/3Jz5DCPtCvl1isGxxHXCaxAhjYr69npKhJdjRx/8qQzUMJUfrQ/hgeGum Y9pgZhtmzcluqyPvUhcQfVxEOH4m+ndDK8+0Kj5Mm3DtWNGFd9K9LTqpXNZa5kqCIJtX /clRCT8k2fUFO0h0GEfhMZn9qs1XyBAFaOhL0E4p4YG7+EWd5+2/q2VksJQdXEKEs/te zqRl/vQL7fBr+U7TbWEE/oIeSEqmsic5uhqUrzZTRuCZLYlPmpMpOEROKftOJ3Gv557K jMAPvwkVPVgVMVJ7n8eqxwMWBilIK0UZ58ZC7BlY5QE+HQMfuYyfrGM3WqTkh2VCcjDk RkuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=HW5iTtjxIbLeEfVUgoFaPaxjtC4YyYn1mkSlJE/2iZk=; b=hiATLCoFnBvFbmzKnB/oHadPhquUVuFtkXOkI/Mu+tkIixXlF2HzM4axMBsAfD9Q1r 1FrG+rvttFw4LA6P0VWJ5+FJgUh9nf9eObbqzkh68aSHAHmyXwCTYs86diBRngRFSnIj H4ZuPr90uz3T0ye6kACiCZc3W5R9u6vl8wE1SUb9+J2icvuaL7neaOeK4KztaNDmEO8k 2oRXXx9SpXaX1JegaisVsqDek/6fierI+VUCs+of7pYUT68K3aqP4THfiPn803myTt7U ZYNY05JIPlcJAFui9mLhcxRqrYR4ZRe2DNoCpEX+ETBG4xipTrI+ZDknVe21z33uzWEG 3v+A==
X-Gm-Message-State: ALoCoQky2d5kDklKO1XKIsQiNhV2yiRVgXz5Gg7btEIiMSdLeUUuOHxYjRgzv3fTdQywMThV0ypo21lIJE47h4aIKxH6sEBjO0x7gv4wQjcoHxpvGPvkVxcxRT8cjU2xL4zLwVoZxxCiMDDoqirrw/JH/nCtrLnThNwn/WN6vY6CJ1c8/9kG8hZAywrdrJ20yLU52XMKGJ+5
X-Received: by 10.58.181.71 with SMTP id du7mr2626091vec.25.1391458873539; Mon, 03 Feb 2014 12:21:13 -0800 (PST)
MIME-Version: 1.0
Received: by 10.52.89.170 with HTTP; Mon, 3 Feb 2014 12:20:53 -0800 (PST)
In-Reply-To: <37s61e9ckw02929t4v3gflwo.1391458112947@email.android.com>
References: <CAOJ7v-22T7hLMdC2je0nLk34MXQ8L+JFWLtAz--6Ryt+DMaMvQ@mail.gmail.com> <37s61e9ckw02929t4v3gflwo.1391458112947@email.android.com>
From: Justin Uberti <juberti@google.com>
Date: Mon, 03 Feb 2014 12:20:53 -0800
Message-ID: <CAOJ7v-3j26EKVwXm_YPk5Qm3eC1r-w+xVYWJB52CEXrcvncv5A@mail.gmail.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Content-Type: multipart/alternative; boundary="047d7b873810e0cb5004f186434c"
Cc: Cullen Jennings <fluffy@cisco.com>, "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Rejecting MediaStreamTracks in JSEP
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
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: Mon, 03 Feb 2014 20:21:16 -0000

On Mon, Feb 3, 2014 at 12:08 PM, Christer Holmberg <
christer.holmberg@ericsson.com> wrote:

>  Hi,
>
> Would this be solved by using uni-directional m- lines?
>
> Yes, but at the cost of compatibility with legacy. There has been broad
support for bidirectional m= lines each time this has come up.

>
> Regards,
>
> Christer
>
> Sent from my Sony Ericsson Xperia arc S
>
> Justin Uberti <juberti@google.com> wrote:
>
>
>  While working on the latest JSEP update, I came across the following
> problem:
>
>  When a answerer wants to reject a "media stream" in 3264, it sets the m=
> line port in the answer to zero. However, when an endpoint wants to reject
> a remote MediaStreamTrack without rejecting the m= line entirely, because
> it is using the m= line for its own MediaStreamTrack, we don't have a clear
> way to express that. While setting a=sendonly in the answer will tell the
> other side to stop sending data, this won't kill the remote track. As far
> as the remote side is concerned, its track is just 'paused'/'held', and is
> still associated with the m= line.
>
>  Note that there is no such problem if an endpoint decides to kill its
> own local MediaStreamTrack; in the offer it sends to indicate this, in
> addition to setting the m= line to a=recvonly, it can also remove the MSID
> of the track from the m= line, indicating the track is gone. In other
> words, the a=msid attribute serves as the binding of MST to m= line, and
> its absence indicates the track is gone.
>
>  Therefore, I think we need some similar way for a receiver to do the
> same for a remote track. And fortunately, I think we have a surface that
> can be used for this, namely the "recv-appId" attribute that has been
> discussed in the context of unified-plan and explained in
> http://tools.ietf.org/id/draft-even-mmusic-application-token-02.txt and
> unified-plan. If an endpoint doesn't want to receive a particular track on
> a m= line, it sets the m= line to a=sendonly and also removes any
> a=recv-appId.
>
>  Below is an example of an audio call between A and B, with
> MediaStreamTracks MSTA and MSTB. A initially generates an offer, and then I
> show 4 different answer scenarios for various cases.
>
>  1) A generates offer with MSTA
> m=audio X
> a=msid:MSTA
> a=recv-appId:1 # use 1 in the header extension when sending MSTA
>
>  2a) Normal answer: B adds its own track MSTB, generates answer:
>  m=audio Y
> a=msid:MSTB
> a=recv-appId:1
>
>  2b) Add+reject answer: B adds its own track MSTB, stops MSTA, generates
> answer:
>  m=audio Y
> a=msid:MSB
> a=sendonly
>  # no appid; A can realize that MSA has been rejected
>
>  2c) Reject-only answer: B stops MSTA without adding a stream, generates
> answer:
> m=audio 0
> # entire m-line has been rejected
>
>  2d) Do-nothing answer: B does nothing, generates answer:
> m=audio Y
> a=recv-appId:1
>  a=recvonly
>
>  If this seems reasonable, I plan to use this mechanism for handling m=
> line allocation in JSEP.
>
>  Also, this essentially makes recv-appId the converse of MSID; for
> simplicity, I think we should consider unifying these concepts into a
> single document.
>