Re: [Hls-interest] HLS Content Steering v1.0b1 preliminary specification

Eryk Vershen <evershen@apple.com> Thu, 18 February 2021 19:45 UTC

Return-Path: <evershen@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 A335A3A1640; Thu, 18 Feb 2021 11:45:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.657
X-Spam-Level:
X-Spam-Status: No, score=-2.657 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.57, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=0.01, URIBL_BLOCKED=0.001] 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 oOIi6hhwvHaz; Thu, 18 Feb 2021 11:45:53 -0800 (PST)
Received: from ma1-aaemail-dr-lapp03.apple.com (ma1-aaemail-dr-lapp03.apple.com [17.171.2.72]) (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 E64793A163D; Thu, 18 Feb 2021 11:45:52 -0800 (PST)
Received: from pps.filterd (ma1-aaemail-dr-lapp03.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp03.apple.com (8.16.0.42/8.16.0.42) with SMTP id 11IJgNLu030865; Thu, 18 Feb 2021 11:45:51 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=UPEkJ9v0r5eufDtZ8lovkQhpRc0CbI0RlzQUZZO03j4=; b=cdrppi3W/ay+utEoWu6XTVP6gVG7O0kDtxO9WjuqQwsDPTaq2r1Ln2f6YK/ZKjPojt5O bjyRJKaKoXDtdtrfX+DLAJhy+kabPe69gRflTiQ4RPNkHMMTId92Ew3upaHhPx4G8Txe 6ZTOeQHmgZzW3iJU+7NVihXiSUlLEuCgEek7GfjlLvr19OOPCRU8dOHqPB5JWNrU5Cu4 +C1O6agmG1kQ0qUkCeNqezqhJ3cuSsZFwGX1vVfWPg5sdbAQQ+D8AZW3+JBvhLlVUqPj P+1hInglJ2UVZxjlcXAT0CZdwKcWRj7rUjqlAuhaGicbIksNvhLj0jiGFV/vQDOZPIKl cg==
Received: from rn-mailsvcp-mta-lapp03.rno.apple.com (rn-mailsvcp-mta-lapp03.rno.apple.com [10.225.203.151]) by ma1-aaemail-dr-lapp03.apple.com with ESMTP id 36pen1fatk-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Thu, 18 Feb 2021 11:45:51 -0800
Received: from rn-mailsvcp-mmp-lapp02.rno.apple.com (rn-mailsvcp-mmp-lapp02.rno.apple.com [17.179.253.15]) by rn-mailsvcp-mta-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) with ESMTPS id <0QOQ0057DPKEAC00@rn-mailsvcp-mta-lapp03.rno.apple.com>; Thu, 18 Feb 2021 11:45:50 -0800 (PST)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp02.rno.apple.com by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) id <0QOQ00S00PJGYW00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 18 Feb 2021 11:45:50 -0800 (PST)
X-Va-A:
X-Va-T-CD: 363ce4028796a5d0ac470b3a48c24dcf
X-Va-E-CD: 6c23791f899f273f12ca120dc248a5dc
X-Va-R-CD: d5edaada1cf8230882b37e08422b3d84
X-Va-CD: 0
X-Va-ID: fbce6e60-3df7-4221-9ae0-5b328e4c3f5f
X-V-A:
X-V-T-CD: 363ce4028796a5d0ac470b3a48c24dcf
X-V-E-CD: 6c23791f899f273f12ca120dc248a5dc
X-V-R-CD: d5edaada1cf8230882b37e08422b3d84
X-V-CD: 0
X-V-ID: ba1221b0-11e7-4bbb-8958-80526f7b29b5
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-02-18_09:2021-02-18, 2021-02-18 signatures=0
Received: from [17.234.95.182] (unknown [17.234.95.182]) by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) with ESMTPSA id <0QOQ003HQPKE0V00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 18 Feb 2021 11:45:50 -0800 (PST)
From: Eryk Vershen <evershen@apple.com>
Message-id: <4A462574-A4B3-4EC6-BFB1-9B734680F750@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_AC0A93D6-AF18-4EF5-B16F-6456A3844997"
MIME-version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Thu, 18 Feb 2021 11:45:50 -0800
In-reply-to: <CAAqSTpkKpPZa7U1m86+wPCu_wy9oxqSL_Gz8dtoZhMo-gr2TAQ@mail.gmail.com>
Cc: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org>, hls-interest@ietf.org, HLS HTTP Live Streaming Review <http-live-streaming-review@group.apple.com>
To: Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com>
References: <1F29DDD8-27B8-45B9-918F-6A45E906F4F4@apple.com> <CAAqSTpn7F3LsQCYf5CYLSfh-e-ig3HjVoYP6exxSqGTodYHqdw@mail.gmail.com> <FA770E4E-2F6B-4A4E-8D4C-FCB3CCB6F21C@apple.com> <CAAqSTpkKpPZa7U1m86+wPCu_wy9oxqSL_Gz8dtoZhMo-gr2TAQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-02-18_09:2021-02-18, 2021-02-18 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/_xXtRzpCoQJenZZt2ZKerQ8LCaU>
Subject: Re: [Hls-interest] HLS Content Steering v1.0b1 preliminary specification
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, 18 Feb 2021 19:45:56 -0000


> On Feb 18, 2021, at 11:28 AM, Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com> wrote:
> 
> Hi Erik
> 
> All valid arguments and great feedback. Thanks for that.
> 
> For the modification of other parameters, this is something which can be disallowed. I don't expect too much of an issue there. If I understand correctly, attributes such as CODECS could currently also be replaced through EXT-X-DEFINE.

The issue with string substitution in other attributes only applies when the variable comes from the steering manifest.

As a simple example, we could create variables, such that one pathway had English & German subtitles, while another pathway had French & Spanish subtitles.
More elaborate examples can be constructed.

> Similarly the combination of two options to replace variables can be managed. One could have priority over the other if needed. From a player perspective, I don't expect any issue grill the player side.
> 
> The increased size of the manifest I wouldn't expect too much of an issue from for practical scenarios if gzip is used. 
> 
> I did not consider the manifest would need to become a per asset manifest. That's indeed a big drawback.
> 
> For me the biggest concern remains backwards compatibility. For our player, we can handle it. 
> Platforms where our customers are forced to use native players, will restrain adoption significantly.
> 
> I hope there are some ideas here which could provide a path towards a backwards compatibility. There are some other alternatives I can think of, but all of them have drawbacks I fear.
> 
> Best regards,
> Pieter-Jan
> 
> 
> 
> On Thu, 18 Feb 2021, 20:04 Eryk Vershen, <evershen@apple.com <mailto:evershen@apple.com>> wrote:
> I see some issues with the approach you suggest.
> 
>> On Feb 17, 2021, at 1:46 PM, Pieter-Jan Speelmans <pieter-jan.speelmans@theoplayer.com <mailto:pieter-jan.speelmans@theoplayer.com>> wrote:
>> 
>> Hi all
>> 
>> I am pretty concerned about the backwards compatibility problems when attempting to use this in combination with older devices. It will force services to either provide two playlists, one with and one without EXT-X-DEFINE with client-side detection of the maximum version supported by the client. While this will not be an issue for up to date Apple devices, this will definitely be an issue for out of date devices but also most smart TVs, Chromecasts, Airplay implementations by those other than Apple (f.e. on LG), ...
>> 
>> One option which could avoid this would be the following approach:
>> - Leverage the STABLE-VARIANT-ID and STABLE-RENDITION-ID identifiers to modify an attribute of the Variant or Rendition.
> 
> This suggests being able to modify attributes other than the URI. We explicitly disallow that.
> Allowing non-URI attributes to be modified creates the possibility for the structure of the master playlist to be changed significantly.
> This creates major problems for the player.
> 
> 
>> - Allow a Variant or Rendition to be referenced in the Steering Manifest with an updated value for the relevant attribute.
> 
> This effectively means there are two mechanisms for substituting values: the existing variable substitution (EXT-X-DEFINE) and URI substitution via steering. Two mechanisms doing similar things is confusing. In addition, we would need to work out whether (and how) the two mechanisms could be used in the same playlist.
> 
> 
>> - Give the EXT-X-CONTENT-STEERING tag a MODIFIES attribute to list the Variants and Renditions which will be modified and VARIANT-ATTRIBUTES and RENDITION-ATTRIBUTES attributes to list the attributes which can be modified rather than the DEFINES attribute.
>> 
>> The language for a Pathway would be defined as:
>> {
>>     "ID": string, // REQUIRED
>>     "VARIANTS": { // REQUIRED
>>         "<STABLE-VARIANT-ID>": { // one for every variant listed to be modified
>>             Key-Value pairs for every attribute which you want to redefine
>>         }
>>     },
>>     "RENDITIONS": { // OPTIONAL 
>>         "<STABLE-RENDITION-ID>": {  // one for every rendition listed as to be modified
>>             Key-Value pairs for every attribute which you want to redefine
>>         } 
>>     } 
>> }
> 
> This is likely to increase the size of the manifests. A playlist can have several dozen stable iDs. That makes the notion of using a data URI as the SERVER-URI more problematic.
> 
> 
>> For example this could make the Master Playlist.
>> #EXTM3U
>> #EXT-X-VERSION:8
>> 
>> #EXT-X-CONTENT-STEERING:MODIFIED="VARIANT-1,VARIANT-2",VARIANT-ATTRIBUTES="URI",SERVER-URI="/steering?video=00001",PATHWAY-ID="My-Great-CDN"
>>  
>> #EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.640028",STABLE-VARIANT-ID="VARIANT-1"
>> https://cdn-a.example.com/low/main/audio-video.m3u8 <https://cdn-a.example.com/low/main/audio-video.m3u8>
>> #EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="avc1.640028",STABLE-VARIANT-ID="VARIANT-2"
>> https://cdn-a.example.com/hi/main/audio-video.m3u8 <https://cdn-a.example.com/hi/main/audio-video.m3u8>
>> 
>> Which results into a Steering Manifest like the one below.
>> {
>>     "TTL": 300,
>>     "RELOAD-URI": "https://example.com/steering?video=00001&session=123 <https://example.com/steering?video=00001&session=123>",
>>     "PATHWAYS": [
>>         {
>>             "ID": "My-Great-CDN",
>>             "VARIANTS": {
>>                 "VARIANT-1": {
>>                     "URI": "https://cdn-a.example.com/low/main/audio-video.m3u8 <https://cdn-a.example.com/low/main/audio-video.m3u8>"
>>                 } 
>>                 "VARIANT-2":{
>>                     "URI": "https://cdn-a.example.com/hi/main/audio-video.m3u8 <https://cdn-a.example.com/hi/main/audio-video.m3u8>"
>>                 } 
>>             }
>>         },
>>         {
>>             "ID": "My-Backup-CDN",
>>             "VARIANTS": {
>>                 "VARIANT-1":{
>>                     "URI": "https://cdn-b.example.com/low/main/audio-video.m3u8 <https://cdn-b.example.com/low/main/audio-video.m3u8>"
>>                 } 
>>                 "VARIANT-2":{
>>                     "URI": "https://cdn-b.example.com/hi/main/audio-video.m3u8 <https://cdn-b.example.com/hi/main/audio-video.m3u8>"
>>                 } 
>>             }
>>         }
>>     ]
>> }
> 
> With this design, the steering manifest is effectively required to be "per asset" rather than shareable across many assets.
> 
> Regards,
> -eryk
> 
> Eryk Vershen
> Apple Inc.
> 
> 
>> Benefits:
>> - Fully backwards compatible. Older clients will simply ignore the new EXT-X-CONTENT-STEERING tag, and use the primary source.
>> - No change needed to the Master Playlist other than the addition of the #EXT-X-CONTENT-STEERING tag.
>> - Also compatible with the AUTH-case for EXT-X-DEFINE by allowing the Variable Substitution on attributes after retrieval from the Steering Manifest 
>> - As an added bonus, for those who are modifying the master playlist anyway, the use of STABLE-VARIANT-ID and STABLE-RENDITION-ID allows clients to identify and identify the Variants and Renditions.
>> 
>> Drawback:
>> - More closely coupled with HLS, making reuse of the Steering Manifest for other failover cases less likely.
>> 
>> My personal opinion is that the value of backwards compatibility would warrant the drawbacks I currently see. 
>> 
>> Best regards,
>> Pieter-Jan
>> 
>> 
>> Pieter-Jan Speelmans
>> CTO
>> 
>> THEO Technologies NV
>> w | www.theoplayer.com <http://www.theoplayer.com/>
>> Philipssite 5, Bus 1. 3001 Leuven, Belgium
>>  <https://d2oj23ymxjbl3l.cloudfront.net/>
>> Leuven (Belgium) - New York (US) - Singapore (SG) - Barcelona (ES)
>> BTW: BE 0847.829.290, RPR: Leuven
>> 
>> 
>> On Wed, Feb 17, 2021 at 9:57 PM Roger Pantos <rpantos=40apple.com@dmarc.ietf.org <mailto:40apple.com@dmarc.ietf.org>> wrote:
>> Hello hls-interest,
>> 
>> As discussed on the call today, here is the preliminary specification for the new Content Steering feature. We are converging on the final design for 1.0, so please take a look at it when you can and tell us what you think. 
>> 
>> You can send feedback to this list, or to http-live-streaming-review@group.apple.com <mailto:http-live-streaming-review@group.apple.com> if you want it to go directly to us.
>> 
>> 
>> 
>> 
>> regards,
>> 
>> Roger Pantos
>> Apple Inc.-- 
>> Hls-interest mailing list
>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>> https://www.ietf.org/mailman/listinfo/hls-interest <https://www.ietf.org/mailman/listinfo/hls-interest>
>> 
>> Legal Notice 
>> You can find the latest terms and policies of THEO Technologies under www.theoplayer.com/terms <http://www.theoplayer.com/terms> including our "GENERAL TERMS AND CONDITIONS". In the absence of a signed agreement between you and THEO Technologies, by replying to this email these terms apply to the relevant transaction between us.   
>> The contents of this email message and any attachments are intended solely for the addressee(s) and contain CONFIDENTIAL and/or privileged information and are legally protected from disclosure. If you are not the intended recipient of this message, please immediately alert the sender by reply email and then delete this message including any attachments and you are hereby notified that any use, dissemination, copying, or storage of this message or its attachments is strictly prohibited. 
>> Full security of emails over the internet cannot be ensured. Despite our efforts it is your responsibility to provide for your protection.
>> Global HQ: THEO Technologies NV, Philipssite 5 bus 1, 3001 Heverlee, Belgium - BE 0847.829.290 - CEO: Steven Tielemans
> 
> 
> Legal Notice 
> You can find the latest terms and policies of THEO Technologies under www.theoplayer.com/terms <http://www.theoplayer.com/terms> including our "GENERAL TERMS AND CONDITIONS". In the absence of a signed agreement between you and THEO Technologies, by replying to this email these terms apply to the relevant transaction between us.   
> The contents of this email message and any attachments are intended solely for the addressee(s) and contain CONFIDENTIAL and/or privileged information and are legally protected from disclosure. If you are not the intended recipient of this message, please immediately alert the sender by reply email and then delete this message including any attachments and you are hereby notified that any use, dissemination, copying, or storage of this message or its attachments is strictly prohibited. 
> Full security of emails over the internet cannot be ensured. Despite our efforts it is your responsibility to provide for your protection.
> Global HQ: THEO Technologies NV, Philipssite 5 bus 1, 3001 Heverlee, Belgium - BE 0847.829.290 - CEO: Steven Tielemans