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

"Law, Will" <wilaw@akamai.com> Fri, 21 May 2021 20:48 UTC

Return-Path: <wilaw@akamai.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 ED44A3A200C; Fri, 21 May 2021 13:48:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.494
X-Spam-Level:
X-Spam-Status: No, score=-3.494 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 TtK6tmejrAuc; Fri, 21 May 2021 13:48:08 -0700 (PDT)
Received: from mx0b-00190b01.pphosted.com (mx0b-00190b01.pphosted.com [IPv6:2620:100:9005:57f::1]) (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 33A343A2009; Fri, 21 May 2021 13:48:07 -0700 (PDT)
Received: from pps.filterd (m0050102.ppops.net [127.0.0.1]) by m0050102.ppops.net-00190b01. (8.16.0.43/8.16.0.43) with SMTP id 14LKdtqw017970; Fri, 21 May 2021 21:48:06 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=jan2016.eng; bh=iO4maETPBZPELfj+kYmFGHZMkw35q+7hNvt0/KLk2yk=; b=G8DLDFr1jmE3h1naSBwbkm9noMDmz9jWcPG56Vsc9pubUgyIoZPN1naZKqDJNq+pP64q NXEorVsynjbcLx/Hjo8rAR3tnqEJzi+cpiW4W6ZTOnX9DpLPON4SWyJJvhZE5MrR2fq3 a7oSyJPnp/p1OwoZiwK9wBGeOPmMUJ37xmSpoE85V1e0P5dK42T3uno819WELylVn+tQ cA1qcptPEhgCu+bGOwEtglvfoJUu4GajLRz5fdqB+qhd7T1wWplCQtc+CPEnevbZNUNg GkhIlZPpRXDZwi1LedtuV8c/38V4UxaYD5qyHWlgeYtz+NLZd0UFcYnsjsvDqA7W7er/ lg==
Received: from prod-mail-ppoint8 (a72-247-45-34.deploy.static.akamaitechnologies.com [72.247.45.34] (may be forged)) by m0050102.ppops.net-00190b01. with ESMTP id 38nnv6yfd5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 May 2021 21:48:05 +0100
Received: from pps.filterd (prod-mail-ppoint8.akamai.com [127.0.0.1]) by prod-mail-ppoint8.akamai.com (8.16.1.2/8.16.1.2) with SMTP id 14LKYR8g018692; Fri, 21 May 2021 16:48:04 -0400
Received: from email.msg.corp.akamai.com ([172.27.165.117]) by prod-mail-ppoint8.akamai.com with ESMTP id 38mue9tnu6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 21 May 2021 16:48:04 -0400
Received: from ustx2ex-dag1mb6.msg.corp.akamai.com (172.27.165.124) by ustx2ex-dag1mb4.msg.corp.akamai.com (172.27.165.122) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 21 May 2021 15:48:04 -0500
Received: from ustx2ex-dag1mb6.msg.corp.akamai.com ([172.27.165.124]) by ustx2ex-dag1mb6.msg.corp.akamai.com ([172.27.165.124]) with mapi id 15.00.1497.018; Fri, 21 May 2021 15:48:04 -0500
From: "Law, Will" <wilaw@akamai.com>
To: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org>
CC: "hls-interest@ietf.org" <hls-interest@ietf.org>
Thread-Topic: [Hls-interest] Survey: signaling HLS client capability
Thread-Index: AQHXTZFKX0THrsIEb0Cklselq2/lgqruSIQA
Date: Fri, 21 May 2021 20:48:03 +0000
Message-ID: <F6795C0F-A95E-42A1-85AA-23C01C5213DA@akamai.com>
References: <8FE883FB-29BD-402B-BB50-E199036281EE@apple.com>
In-Reply-To: <8FE883FB-29BD-402B-BB50-E199036281EE@apple.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.49.21050901
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.27.118.139]
Content-Type: multipart/alternative; boundary="_000_F6795C0FA95E42A185AA23C01C5213DAakamaicom_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-05-21_09:2021-05-20, 2021-05-21 signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105210112
X-Proofpoint-ORIG-GUID: 8phE6xSmk8btQTosZ4zhutD4--Bdove_
X-Proofpoint-GUID: 8phE6xSmk8btQTosZ4zhutD4--Bdove_
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-05-21_09:2021-05-20, 2021-05-21 signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 priorityscore=1501 phishscore=0 clxscore=1011 mlxscore=0 malwarescore=0 adultscore=0 impostorscore=0 mlxlogscore=999 lowpriorityscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105210113
X-Agari-Authentication-Results: mx.akamai.com; spf=${SPFResult} (sender IP is 72.247.45.34) smtp.mailfrom=wilaw@akamai.com smtp.helo=prod-mail-ppoint8
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/Pp56QPTIt-tjnt9PuivpWE-cnC8>
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: Fri, 21 May 2021 20:48:13 -0000

Hi Roger



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.

2. Servers should respond unambiguously to client requests. A brittle system is one in which 3 clients ask for the same asset (a main playlist for example), but each is returned a different version of that asset based upon which codecs that server thinks the client supports. We now have three bit-different assets with the same file name, which causes cache consistency problems. QA becomes difficult, because you get a different answer depending upon who is asking. A deterministic system, in which each request has a single possible response, is far easier to debug and eventually far more robust when it comes to scaling up complex systems.



Two schools of thought then as to how clients can handle diversity of content & features:

  1.  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
  2.  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.



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?



The problem with approach [2] is legacy clients. If every feature implemented is backwards compatible, then perhaps you are OK and the client gets a degraded but still functional experience. Eventually Apple will want to introduce a breaking change for efficiency (next-gen interstitial ads for example) and at that point playlists would need to be hard-coded to specific client sets, which is exactly the situation we are in today if you examine most large content distribution solutions.



Neither approach is without issues. Overall, I think an implementation of [1] is a practical means of introducing new features to modern clients, as only modern clients will know how to ask for them. In parallel, I’d also like to see Apple moving the industry in the direction of making the players smarter. Player behavior specifications, updateable player logic (decoupled from device updates) , player conformance tests, and test suites would make for more manageable content & feature diversity in the decades ahead.



Cheers

Will





On 5/20/21, 9:00 AM, "Roger Pantos" <rpantos=40apple.com@dmarc.ietf.org> wrote:



    With the increasing number of optional features in HLS (such as low latency, content steering, interstitial support, different codecs, etc.), there is a desire in some quarters to present different streams to different devices, beyond the regular variant stream selection performed on the client.



    We're considering some kind of signal of client capability, such as a query parameter on the Master Playlist URL, to support this kind of server decision. But before we go too far I'd like to understand if it would actually be of practical benefit, and what universe of use cases it makes sense to support. So:



    - Do you think you would use this kind of thing? For what?



    - If you are already doing something along these lines, perhaps driven by the User-Agent string or something else, what requirement is driving that?



    (Alternately, if you think that this would only make things worse, let us know why!)



    Feel free to respond here, or to send your response privately to http-live-streaming-review@group.apple.com.





    thanks,



    Roger Pantos

    Apple Inc.

    --

    Hls-interest mailing list

    Hls-interest@ietf.org

    https://urldefense.com/v3/__https://www.ietf.org/mailman/listinfo/hls-interest__;!!GjvTz_vk!H1Hsba7y664WmwG3l-OQEw9A4O9jRoyGL0i2Y2-YPW42-Pz-zXuCdZq_qwwY$