Re: [MMUSIC] [rtcweb] Translating Plan A into No Plan (Was: No Plan)

Emil Ivov <> Tue, 04 June 2013 09:35 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3F74321F9948 for <>; Tue, 4 Jun 2013 02:35:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.349
X-Spam-Status: No, score=-2.349 tagged_above=-999 required=5 tests=[AWL=0.250, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YtTUyGvp3th9 for <>; Tue, 4 Jun 2013 02:35:34 -0700 (PDT)
Received: from ( [IPv6:2a00:1450:4013:c00::235]) by (Postfix) with ESMTP id 4D16E21F854D for <>; Tue, 4 Jun 2013 01:28:49 -0700 (PDT)
Received: by with SMTP id c41so319017eek.12 for <>; Tue, 04 Jun 2013 01:28:48 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=message-id:date:from:organization:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type :content-transfer-encoding:x-gm-message-state; bh=ufoThziTFTKErx1Tx2+m4Gc7ygyoJoCY95p4NVdVPzQ=; b=YCllKQsWj7XcV2jtr6hxaBEPMoj8e/wZaNHK55leTIEbJFxuegDuSCmb+77RgoL+RF /Cb3JzXrYzajtmlQbhfidA4UgYajDeL+CU68vRhf9z25rg69RSVe1Lsjwoxgnsxwkqd1 MiCkkYtbyZJJTwiVlGgyEEgP7DRp6x+eME+h2z3D3k2excXhfzhHcEyID5JRenny46C8 MVvbmm/nsUEDrpbJVLyNdCcvasnFco363ymToxIecumC/Kq+kNx6O54nIgoYDow5QqDD Vxp8ZyImoSjT7I61JV9WLl3uEOlcU0oGWkjwYJaP03sU/qy7z9P7dYXx0ZvHwCbFBPYz oBIg==
X-Received: by with SMTP id bk42mr25653843eeb.60.1370334528337; Tue, 04 Jun 2013 01:28:48 -0700 (PDT)
Received: from [] ( []) by with ESMTPSA id z52sm90078982eea.1.2013. for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 04 Jun 2013 01:28:47 -0700 (PDT)
Message-ID: <>
Date: Tue, 04 Jun 2013 11:28:41 +0300
From: Emil Ivov <>
Organization: Jitsi
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130509 Thunderbird/17.0.6
MIME-Version: 1.0
To: Eric Rescorla <>
References: <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Gm-Message-State: ALoCoQnpbj+wJyq2d/FEX/Ef7/LA66Uhy2H7IKNj5W1mvyXG7dZ3am7eDQGuy7HZuFmBEx2W/yAX
Cc: "Cullen Jennings (fluffy)" <>, MMUSIC IETF WG <>
Subject: Re: [MMUSIC] [rtcweb] Translating Plan A into No Plan (Was: No Plan)
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 04 Jun 2013 09:35:48 -0000

Hey Eric,

On 04.06.13, 03:47, Eric Rescorla wrote:
> On Mon, Jun 3, 2013 at 2:29 PM, Emil Ivov <> wrote:
>         So, just for clarity: you mean that A advertises one m-lin, B
>         accepts,
>         and then A sends some arbitrary number of media flows,
>     Yes.
>         identified
>         by SSRC?
>     What does "identified" mean?
> I mean demultiplexed by SSRC.

Demuxing by SSRC, as in being able to distinguish one RTP stream from 
another is totally OK and there's no issue with this in No Plan. SSRCs 
will be different and packets will be assigned to different media 
streams. What isn't OK is the need to know specific SSRC values in order 
to perform the demuxing. This is not necessary for demuxing with No 
Plan. Do you agree?

>         If so, I've got some questions:
>         - If B can only display one video stream, how does it say so?
>     This is something that one app needs to tell another app. They can
>     do so however they wish. As far as browsers are concerned: the
>     transmitter just sends whatever the application instructs. The
>     receiver just handles whatever it can.
> But there needs to be a complete set of API surfaces that allow
> both sides to do the right thing.

Yes, hence section 7 in No Plan:

>         - How does B tell A not to send various streams?
>     What does "various" streams mean? If what you have in mind is: How
>     does B tell A: "don't send me SSRCs 1, 2, 3 and 5" but keep 4 going,
>     then B would send the list of SSRCs in app-specific signalling and A
>     would stop sending them.
> Uh, how does that work? Is there some API that I'm unaware of that
> allows JS to get the SSRCs?

I don't think there is. I believe you can get part of the information 
through the stats API but I don't think this is enough. Hence Section 7.

> And another one that allows the JS
> to say "don't send SSRC A"?

As long as the JS knows the SSRC of a specific track it can just disable 
that specific track. There's no need to tell the browser "don't send 

> It would be really helpful if you could provide a complete example of
> exactly what each side does. I'm find if you just invent some
> application-specific
> signaling for this purpose, but what I'd like to see is exactly what API
> calls each side makes.

Does the above answer your question, or would you like me to come up 
with an example of how these new APIs could look?

> -Ekr