Re: [rtcweb] HTA's review of JSEP-17

Harald Alvestrand <harald@alvestrand.no> Fri, 18 November 2016 08:02 UTC

Return-Path: <harald@alvestrand.no>
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 E303A1294C1 for <rtcweb@ietfa.amsl.com>; Fri, 18 Nov 2016 00:02:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.397
X-Spam-Level:
X-Spam-Status: No, score=-3.397 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-1.497] autolearn=ham autolearn_force=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 ySInjJaW53eE for <rtcweb@ietfa.amsl.com>; Fri, 18 Nov 2016 00:02:42 -0800 (PST)
Received: from mork.alvestrand.no (mork.alvestrand.no [IPv6:2001:700:1:2::117]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8A5221294AE for <rtcweb@ietf.org>; Fri, 18 Nov 2016 00:02:42 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by mork.alvestrand.no (Postfix) with ESMTP id 09C317C3C74 for <rtcweb@ietf.org>; Fri, 18 Nov 2016 09:02:40 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at alvestrand.no
Received: from mork.alvestrand.no ([127.0.0.1]) by localhost (mork.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N4SN3t6ppZ7a for <rtcweb@ietf.org>; Fri, 18 Nov 2016 09:02:38 +0100 (CET)
Received: from [10.35.133.196] (unknown [58.123.138.206]) by mork.alvestrand.no (Postfix) with ESMTPSA id ABA667C3C43 for <rtcweb@ietf.org>; Fri, 18 Nov 2016 09:02:37 +0100 (CET)
To: rtcweb@ietf.org
References: <3ec33eba-b130-e986-0fce-ab97f8d0e601@alvestrand.no>
From: Harald Alvestrand <harald@alvestrand.no>
Message-ID: <1fb6bb68-127b-c42b-ea89-d305ddc2e49e@alvestrand.no>
Date: Fri, 18 Nov 2016 09:02:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
MIME-Version: 1.0
In-Reply-To: <3ec33eba-b130-e986-0fce-ab97f8d0e601@alvestrand.no>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/CfQl6HZwSG4TLdBsAybjq1ckeqY>
Subject: Re: [rtcweb] HTA's review of JSEP-17
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.17
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: <https://mailarchive.ietf.org/arch/browse/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, 18 Nov 2016 08:02:46 -0000

Finally found the peace of mind to get these into the github buganizer.

On 11/13/2016 11:43 PM, Harald Alvestrand wrote:
> Long plane rides have advantages.
>
> These are my notes; I will file github issues in a few hours on the
> points where I think we need discussion.
>
> Overall, this draft looks almost ready to go. It seems comprehensive
> (sometimes mind-numbingly so), and I think we will learn little more by
> going over it in theory; now it's time to take the software we've
> written, match it up against the spec, and see if we can make them match.
>
> That said, there are issues. Some of which I have noted below.
>
> - Agree with Magnus on the need for a terminology section. It would be
> nice to choose just one out of "media section" vs "m= section", but if
> you really want both, please define the two terms as being equal.
Added to #387
>
> - Section 1.1: Leftover mention of modifying the offer before doing
> set-local-description. The text should instead say "inspect, and if you
> don't like it, change settings and iterate".
Filed as #412
>
> - Section 3.6: "all dimensions assume square pixels". Given the
> affordance for non-square pixels elsewhere, I think this should say "all
> dimensions are measured in pixels, whether square or not".
Filed as #413
>
> - Section 3.6.1 describes mandatory constraints applied to an incoming
> track resulting in a new offer-answer exchange. Since this is "action at
> a distance" (modify the track and the PeerConnection emits a
> negotiation-needed), I think this needs to be synced with the webrtc-1.0
> API spec, and possibly even media-capture.
>
> Also, what's the state of the track between the changing of constraints
> at the receiver and the renegotiation? It seems to me that the track
> should be scaled at the receiver to fit the agreed-upon constraints.
Filed as #414.
>
> - Section 3.6.1 "no resolutions .. SHOULD be represented by x=0 and y=0
> values". Is there any reason not t o make this a MUST?
Filed as #415
>
> - Section 3.6.1 gives an example with a minimum resolution of 16x16 -
> where did that come from? If we want to admit to the existence of
> macroblocks, we may want to say that the implementation can specify step
> sizes (typically 16) in its imageattr values.
Filed as #416
>
> - Section 3.7 Simulcast - I'm not sure it's true that the information
> about number of layers is not surfaced through any API - the number of
> elements in the encoding list, and their active/passive state, which is
> accessible through getSettings(), should surely give a hint about this.
Filed as #417, with suggestion to remove text.
>
> - Section 3.8.2 - "the media flow from these sessions can be managed by
> specifying SDP direction attributes in the descriptions". This seems out
> of place. Surely flipping track.muted is a much simpler way of managing
> them if the problem is what to play to the user?

Filed as #418
>
> - Section 4.1.1 - the description of "relay" - is it worth noting that
> the degre of obfuscation is under the control of the application based
> on its choice of turn servers? And that browser-configured turn servers
> also matter here?
Filed as #419
>
> - Section 4.1.2 addTrack: Worth noting that using addTransceiver in
> have-remote-offer will cause negotiaiton-needed to be fired when the
> track returns to stable?
Filed as #420
>
> - Section 4.1.5 createOffer: The statement about this being async is
> either a requirement or out of scope. I'd suggest out of scope (it is
> purely an API property); the alternative is saying "it is an async
> operation".
Filed as #421
>
> - Section 4.1.7.1 - the term "inactive" final answer is introduced
> without a defintion. Need to either define "inactive" or use another term.
>
> - Section 4.1.7.2 Rollback - "and possibly the answerer as well" is
> wishy-washy. Suggest "and the answerer if it has done
> set-remote-description".
>
> - Section 4.1.7.2 This is the first mention of "pending local / remote
> description". Suggest link to definition.
>
> - Section 4.1.7.2 "RTPTransceivers that were created by applying a
> remote offer that was subsequently rolled back MUST be removed". The
> term "removed" is undefined. Deleted, discarded, destroyed or detached
> from the PeerConnection? Suggestion: "stopped and removed from the
> PeerConnection". (if the JS app still has a reference to them, it may
> still inspect the object).
Filed as #422 (merged)
>
> - Section 4.1.8 setLocalDescription - "the PeerConnection must be able
> to simultaneously support... until a final answer is received". This is
> unclear for several reasons - suggest "while the connection is in the
> have-local-offer or have-remote-pranswer state". (There's a race
> condition here between media and signalling, of course.)
>
> - Section 4.1.10 currentLocalDescription - "a copy of the current
> negotiated local description" is ambiguous (see issue raised in
> webrtc-1.0 - https://github.com/w3c/webrtc-pc/issues/921). Suggest
> making language here less normative - "shows the current negotiated
> local description" would probably be weak enough.
>
> - Section 4.1.15 setConfiguration - "and may result in a change to media
> state". Not sure this belongs here - it can lead to a cascade of events
> that may end up changing media state, but it is not the call that
> directly causes the change. Suggest deleting.
>
> - Section 4.1.16 addIceCandidate - suggest deleting the
> "end-of-candidates" text here, and saying separately that there is a
> means of indicating end of candidates. There seems to be consensus that
> mixing the two was an API design mistake, discussions are about how to
> get out of it.
Filed as #423
>
> - Section 4.2.4 setCodecPreferences - "However, the codec preferences
> cannot change the order of the media formats after an answer containing
> the transceiver has been applied". I don't understand why we can't
> change the order in order to have the new order reflected on the next
> offer/answer exchange - there would be no immediate effect, but the
> current language locks in the order permanently, without a clear
> justification for why it has to be that way.
Filed as #424
>
> - Sction 5.1.1 R-16: TODOs should be deleted before Last Call :-)  Also
> sugggest renumbering the trailing sentence as R-16.
>
> - Section 5.1.2: Suggest using a different letter on the numbering. U-1
> and U-2?
Filed as #425
>
> - Section 5.2.1 "an m= section being recycled" - first use of term
> "recycled". Link?
>
> - Section 5.2.1 CreateOffer "given that no candidates have yet been
> gathered" - when people remember the pre-gathered candidate pool, this
> can be confusing. Suggest adding a note at the top of this section
> saying that CreateOffer doesn't cause candidate gathering and does not
> take candidates from the pre-gathered pool, and thus, no candidates are
> available at the initial call to CreateOffer. All subsequent references
> to "no candidates have yet been gathered" in this section should be
> replaced with "no candidates are available".
Broken out as #428 (above and below are #426)
>
> - Section 5.2.1 bullet 2 (first list) references use of the default
> candidate (which doesn't exist here). Suggest saying "UDP/TLS/RTP/SAVPF"
> and moving the default candidate language to subsequent offers.
>
> - Section 5.2.1 CreateOffer - bullet on imageattr - limits on images
> that can be decoded - suggest adding text that this is also included on
> recvonly lines because direction of lines can change.
>
> - Section 5.2.1 "The following attributes ... MUST appear only in "m="
> sections which either have a unique address or which are associated with
> the bundle-tag". This is different from BUNDLE 8.1 - they should either
> say the same thing or have a clear explanation of the difference.
>
> - Section 5.2.1 "a=fingerprint" - needs rewriting for the
> multiple-fingerprint-algorithm case (4572bis). Issue already filed?
>
> - Section 5.2.2 Subsequent offers - is there any reason to allow NOT
> incrementing the session-version?
>
> - Section 5.2.2 The example of rollback doesn't make sense - it works if
> "an offer is created with version N+1" is replaced with "an offer is
> created with version N+1 and installed with SetLocalDescription"
>
> - Section 5.2.2 recycling of zero-port m-lines - should it specify that
> the new m= section MUST have a different mid than the replaced m= section?
>
> - Section 5.2.2 "the following adjustments are made based on the content
> of the corresponding m= section in the current remote description" -
> needs to be contained by "if there is a current remote description".
Filed as #426. A couple of things in the list may be substantive enough
to be worth their own bugs.
>
> - Section 5.3.1 I'm unsure about the language on lipsync groups. I can't
> figure out without more careful analysis if it works for the case of
> 1A+1V replying to 1A+1V - in almost any other case, I think the result
> is that answer doesn't have LS groups.
Filed as #427
>
> - Section 5.3.1 needs the same kind of intro as the previous one about
> no candidates being available even if gathered.
Added to #428
>
> - Section 5.3.2 Subsequent answers - like SetCodecPreference, this also
> cements initial priority. Why?
Added to #424
>
> - Section 5.7.1 Session-level parsing, b= lines: This is the first time
> they're mentioned. Is there an affordance for adding them when
> generating offers/answers? I didn't catch any language like "add any
> other field you feel like", but I may have overlooked it.
Rethinking this subject, adding fields applies only to SDP sent to the
remote end, where rewriting is obviously allowed. Not filing bug.
>
> - Section 5.8 Applying a local description - on errrors, "processing
> MUST stop and an error MUST be returned" - should it also say that the
> state of the PC needs to be returned to the pre-apply-LD state?
Filed as #429
>
> - Section 5.8 - "begin gathering candidates for it" - or take them from
> the pool.
>
> - Section 5.8 - style: a bullet starting with "if" and a next bullet
> starting with "or" is awkward.
>
> - Section 5.9 - "AS must be ignored" - should also apply to TIAS?
>
> - Section 5.9 "If more accurate control of bandwidth is needed, TIAS
> should be used" - this is the wrong place for that statement, we're not
> choosing here. If this is wanted, just write "TIAS gives more accurate
> control of bandwidth than AS".
>
> - Section 5.10 "If the media section has been rejected ... discard any
> associated ICE components". Only if it's not a bundled section.
>
> - Section 5.10 in general - there are a lot of bullets that apply only
> to M-sections that designate a transport. Should those bullets be broken
> out in a separate list?
>
> - Section 5.10 - "If no outgoing Source RTP stream exists, choose a
> random one" - "one" should be "SSRC" for clarity.
Filed as #430
>
> - Section 6: "this is only a strawman" language needs deleting. We're in
> WG Last Call.
>
> - Section 6: For tables where many-to-one mappings are expected (such as
> SSRC to receiver when simulcast, RTX or FEC is active), it might be
> worth noting this. For tables where many-to-one is an error (such as MID
> to RTPReceiver), it might be worth noting that too.
>
> - Section 6: "If the packet's payload type is in the payload type table,
> update.." - this will have interesting consequences ("last one wins") if
> the sender sends two streams with the same PT and different SSRCs.
> Suggest discarding packets where a SSRC->Receiver mapping already exists
> for that PT. This gives issues when changing SSRC for a stream; tradeoff
> needs evaluating.
Filed as #431
>
> That's all - no comments on examples :-)
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> -
>
>
>


-- 
Surveillance is pervasive. Go Dark.