Re: [Hls-interest] Survey: signaling HLS client capability

Roger Pantos <rpantos@apple.com> Thu, 27 May 2021 18:52 UTC

Return-Path: <rpantos@apple.com>
X-Original-To: hls-interest@ietfa.amsl.com
Delivered-To: hls-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5764D3A00D3 for <hls-interest@ietfa.amsl.com>; Thu, 27 May 2021 11:52:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.193
X-Spam-Level:
X-Spam-Status: No, score=-2.193 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.698, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_SBL=0.5, URIBL_SBL_A=0.1] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
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 Zkw5kjYp4wqT for <hls-interest@ietfa.amsl.com>; Thu, 27 May 2021 11:52:40 -0700 (PDT)
Received: from rn-mailsvcp-ppex-lapp14.apple.com (rn-mailsvcp-ppex-lapp14.rno.apple.com [17.179.253.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 64AAD3A00C4 for <hls-interest@ietf.org>; Thu, 27 May 2021 11:52:39 -0700 (PDT)
Received: from pps.filterd (rn-mailsvcp-ppex-lapp14.rno.apple.com [127.0.0.1]) by rn-mailsvcp-ppex-lapp14.rno.apple.com (8.16.1.2/8.16.1.2) with SMTP id 14RIXJMp028002 for <hls-interest@ietf.org>; Thu, 27 May 2021 11:52:39 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : date : subject : in-reply-to : to : references; s=20180706; bh=pTGRJzPYrnhzCTbRGFYkeiEioIB+jeDct11I+uWiKnY=; b=Sl+iR4fBnp4fUta2RoIkxgG2KQ+BgwPlqkElozlIKOZglujyTTytMwQnlggFAL5YO5pk WxCuJQBamsgMeqBlUnICU5kXK4D5refLjmItfc9rMEuTv3LG/G0qhTh67pZDByywC0Jz loM4z3vy7XJiOp/BtjE/AxHKdyrp40X+LsCU70fcp0HZlvTywtRmCGF2na6eX76bn7QQ tIPzMx2qIZwWwZ/lYOmFQFhUmjveyuz2/JY15pRBylYMId7YYYyeu6eKMm5SUH5hTGFA wD8fyDpd753M8rGpZT4UIFbHewiPA+xo5mfoR31DWiTodQjNTleAhSvidojXbg5VbXpm 6w==
Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by rn-mailsvcp-ppex-lapp14.rno.apple.com with ESMTP id 38qhv9uccn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for <hls-interest@ietf.org>; Thu, 27 May 2021 11:52:39 -0700
Received: from rn-mailsvcp-mmp-lapp01.rno.apple.com (rn-mailsvcp-mmp-lapp01.rno.apple.com [17.179.253.14]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPS id <0QTS00Q014FRH110@rn-mailsvcp-mta-lapp01.rno.apple.com> for hls-interest@ietf.org; Thu, 27 May 2021 11:52:39 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp01.rno.apple.com by rn-mailsvcp-mmp-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) id <0QTS0060049T9B00@rn-mailsvcp-mmp-lapp01.rno.apple.com>; Thu, 27 May 2021 11:52:39 -0700 (PDT)
X-Va-A:
X-Va-T-CD: 5d843af0366bb2427274d1181edabdda
X-Va-E-CD: 85756b5bb8b8ccfda2882e35c8476052
X-Va-R-CD: ddb900f41151b21b0acb4b506fe5f6a8
X-Va-CD: 0
X-Va-ID: 6e556cba-5070-4e9e-8f33-01d60957dce2
X-V-A:
X-V-T-CD: 5d843af0366bb2427274d1181edabdda
X-V-E-CD: 85756b5bb8b8ccfda2882e35c8476052
X-V-R-CD: ddb900f41151b21b0acb4b506fe5f6a8
X-V-CD: 0
X-V-ID: dbb05319-05a9-4da5-a6f0-954ba7ef394c
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-05-27_10:2021-05-27, 2021-05-27 signatures=0
Received: from smtpclient.apple (unknown [17.11.43.45]) by rn-mailsvcp-mmp-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPSA id <0QTS00G1Q4FQ4600@rn-mailsvcp-mmp-lapp01.rno.apple.com>; Thu, 27 May 2021 11:52:38 -0700 (PDT)
From: Roger Pantos <rpantos@apple.com>
Message-id: <4FCBAFE1-0157-4933-8D15-FD504458FE0D@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_088BF238-7CD5-4C68-9646-1B46F4CC739A"
MIME-version: 1.0 (Mac OS X Mail 14.0 \(3654.100.0.2.22\))
Date: Thu, 27 May 2021 11:52:38 -0700
In-reply-to: <CAKwBfzEh7Wj+k2LBjqsym18UUwUcEQtGOu1AnMcXe=3Z0omjfA@mail.gmail.com>
To: "hls-interest@ietf.org" <hls-interest@ietf.org>
References: <8FE883FB-29BD-402B-BB50-E199036281EE@apple.com> <F6795C0F-A95E-42A1-85AA-23C01C5213DA@akamai.com> <369959B7-EACA-4127-834A-8300BA57D660@networked.media> <CAANhuA_UHZ4eXP14XO2U7=9MduFCRzBMfGas7FS4f0NpCEmL7g@mail.gmail.com> <CAF-MBS+tbGYg+SzjHGBU453ML_3H=Fi+s-w7cvYxSXL65pdSFg@mail.gmail.com> <CAEyqsc1QCftKsZz_ScvrHSQXFLYCxSK=q8M9G7s4ASNa6t-Dgw@mail.gmail.com> <CAKwBfzEh7Wj+k2LBjqsym18UUwUcEQtGOu1AnMcXe=3Z0omjfA@mail.gmail.com>
X-Mailer: Apple Mail (2.3654.100.0.2.22)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-05-27_10:2021-05-27, 2021-05-27 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/12tmy-3nI0HyyYBbPA0TFVDvvXM>
Subject: Re: [Hls-interest] Survey: signaling HLS client capability
X-BeenThere: hls-interest@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussions about HTTP Live Streaming \(HLS\)." <hls-interest.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/hls-interest/>
List-Post: <mailto:hls-interest@ietf.org>
List-Help: <mailto:hls-interest-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 27 May 2021 18:52:45 -0000

Great discussion, thank you to everyone for contributing insights. This is a single reply with responses to several of the major points; please let me know if it gets too hard to follow:

> On May 21, 2021, at 1:48 PM, Law, Will <wilaw=40akamai.com@dmarc.ietf.org <mailto:wilaw=40akamai.com@dmarc.ietf.org>> wrote:
> Architecturally, I see concerns in having servers making decisions for clients. The reasons for this are two-fold:
> 1. There is a clear and strong movement towards client privacy. This includes the deprecation and freezing of User-Agent and other client identifiers, which is well under way. If not already, it will become increasingly harder for servers to make any sort of reliable inference about a client's capabilities based purely upon the request.

Agreed that privacy is a concern. I expect that this kind of a signal would typically follow in lockstep with either the OS release (Apple native clients) or app generation (HLS.js et al), so the anonymity set (per https://w3c.github.io/fingerprinting-guidance/ <https://w3c.github.io/fingerprinting-guidance/>) would remain fairly large.

To give everyone a sense of where we're leaning at the moment, I'm thinking of a single _HLS_capabilities query parameter of the form _HLS_capabilities="CS-1,INT,LL,V-9" (alpha-ordered).
  CS-1 : client supports Content Steering protocol version 1
  INT : support Interstitials
  LL : supports low-latency
  V-9 : understands HLS protocol version 9

Haven't decided on the exact set yet; I'm interested in hearing about requirements.

> Two schools of thought then as to how clients can handle diversity of content & features:
> Clients should ask explicitly for what they want in a way that is consistent and the response cacheable . You have already established a convention of reserved _HLS_ query args  on which the newer features of HLS are quite dependent. It would make sense to extend this to allow players to add additional filters as they request content. Examples of filters:
> _HLS_codec=hevc, avc
> _HLS_bitrate=500000-4000000
> _HLS_lang=fr
> _HLS_admode=interstitial
> Another approach is that the main playlist is a menu of all content available, and that the client is capable of extracting the pieces from it that it wants. Real-time feature-based detection, rather than brittle device categorization, is the sustainable way forward. We already require smart clients to play back HLS. Those same clients are aware of which features (low latency, steering, interstitial support) they support as well as are capable of discovering the capabilities (codec, HDCP, HDR etc) of the host device. This approach gives the same main playlist to all clients, simplifying distribution.

Right. [2] is what we have today, and in general I still prefer having the server vend everything and having the client be smart enough to choose what to use. 

We're considering [1] for cases in which providing everything in a single master playlist places too much of a burden on the server. Gaetan gave an example where offering both (new) interstitials and (backward-compatible) segment stitching ad mode would be a big lift.

>  
> One problem with approach [1] is that you would want to use it when the client requests the main playlist, however it doesn’t know if the origin supports such filtering. It could therefore request AVC as the only codec, but receive a static playlist back from an origin that did not support filtering. There could be a playlist attribute added to indicate that the origin acknowledges the requests and has implemented the filters. If the client does not see such an acknowledgement echoed back, then it would know that it can’t trust the origin and would have to implement some decisions of its own. One could then argue that if it can make those decisions on its own, then why entertain the complexity of the filters? If a client is modern enough to add these filters to its requests, then couldn’t it simply apply them itself? 

My advice to clients would be not to rely on any kind of playlist filtering in response to the capabilities offered, and to be prepared to deal with anything the server throws its way. 

Related, _HLS_capabilities is clearly optional, on both sides.

> On May 21, 2021, at 2:24 PM, Alex Giladi <alex.giladi@gmail.com <mailto:alex.giladi@gmail.com>> wrote:
> 
> Regardng [1] in Will's e-mail, I'm concerned about nuclear
> proliferation of query parameters and special snowflake server-side
> logic.

Agreed. I think that if we restrict it to a single query parameter, it becomes manageable for CDNs to include it or exclude it from their cache keys as appropriate.

Regarding a proliferation of special snowflake server behavior, I agree that this feature is somewhat prone to what I'd consider misuse (or at least overuse). I don't have an immediate solution for that.

> On May 25, 2021, at 12:30 PM, Gaëtan Hervouet <gaetanhervouet=40google.com@dmarc.ietf.org <mailto:gaetanhervouet=40google.com@dmarc.ietf.org>> wrote:
> I do agree with Will’s response. Relying on user-agent [1] is indeed becoming harder and we have to move away from that. Cacheability and debuggability are of course valid points [2] which is why the query parameters do seem like a good solution (as long as there is no explosion of combinations). I do see the problem with having the query parameter sent on master manifest request impact the content of the variant playlists; it would break cacheability. However, if that parameter were to be set for all requests of the playback session (including variants) then the problem goes away and the response is now deterministic and cacheable.

I'm not sure if I agree with this last bit. If a client indicates that it does (or doesn't) support interstitials, the server can hand it a master playlist with either interstitial-laden URLs or stitched URLs. There is no reason that I can see for them to be the same URLs, so they ought to be independently cacheable. 

> We may also want to consider an approach where the filters are not "features" but rather an HLS spec/draft version that the player is compatible with. 


My thinking is to provide both. Note that solely providing a spec/draft version is insufficient because a client might implement aspect of the spec (interstitials) but not another (low-latency).


Roger.