Re: [Hls-interest] Streaming Video Alliance Comments on HLS Content Steering Proposals

Roger Pantos <rpantos@apple.com> Fri, 16 April 2021 16:23 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 2F8B43A2B7E for <hls-interest@ietfa.amsl.com>; Fri, 16 Apr 2021 09:23:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.118
X-Spam-Level:
X-Spam-Status: No, score=-2.118 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-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=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 gj358doKFucV for <hls-interest@ietfa.amsl.com>; Fri, 16 Apr 2021 09:22:55 -0700 (PDT)
Received: from rn-mailsvcp-ppex-lapp34.apple.com (rn-mailsvcp-ppex-lapp34.rno.apple.com [17.179.253.43]) (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 166D83A2B7C for <hls-interest@ietf.org>; Fri, 16 Apr 2021 09:22:54 -0700 (PDT)
Received: from pps.filterd (rn-mailsvcp-ppex-lapp34.rno.apple.com [127.0.0.1]) by rn-mailsvcp-ppex-lapp34.rno.apple.com (8.16.1.2/8.16.1.2) with SMTP id 13GGHfij007516; Fri, 16 Apr 2021 09:22:51 -0700
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=0RMcPEMqWfcQ3/VXr78U4PsYiGeHm/H2cK89+XpF+Hs=; b=X04KW5dPuJr1+y3w0P0ol9PxAD+HGTfmFakPj82gb8ZyAOmrxm0+OicPS176WnDZ/jbZ cL2eWQff5yChLAxAO4rwb+InFKwM9lzO7pqatGBK0tTLjZDM50TT5dPVF2APfkYT8tUc cI3weHtWOQLOfiEXEbV+G9hZMnrq3at/TzeaY+VOHkkcBi3qpM6vBlfmXy7CByKxEy+Q wN7WZ9lWDO76mvKquF6EbIMMp6Z+mjZHpo17k6mEUrpbAhmBFD2l8ZjadK/wblRutrW3 ZeW5+Aa4OMJvV5Se5wXi4DNQxOaDTPR91lGo4Sgub7kqAYJTGf6GBWo0XtUPVQGcub5P nA==
Received: from rn-mailsvcp-mta-lapp04.rno.apple.com (rn-mailsvcp-mta-lapp04.rno.apple.com [10.225.203.152]) by rn-mailsvcp-ppex-lapp34.rno.apple.com with ESMTP id 37u7v3qr0s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Fri, 16 Apr 2021 09:22:51 -0700
Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) with ESMTPS id <0QRO00L0U063BLA0@rn-mailsvcp-mta-lapp04.rno.apple.com>; Fri, 16 Apr 2021 09:22:51 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) id <0QRO0050004LEY00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Fri, 16 Apr 2021 09:22:51 -0700 (PDT)
X-Va-A:
X-Va-T-CD: bebbe4eeb3430388eb2ecc6b268df0d7
X-Va-E-CD: 6bb1d5d9e78ec6586cbfd17e1381fd73
X-Va-R-CD: e27214eaec83786dac4edc48de2c1854
X-Va-CD: 0
X-Va-ID: 4882d17c-5dab-4f93-bb94-3a91a5e0ac2b
X-V-A:
X-V-T-CD: bebbe4eeb3430388eb2ecc6b268df0d7
X-V-E-CD: 6bb1d5d9e78ec6586cbfd17e1381fd73
X-V-R-CD: e27214eaec83786dac4edc48de2c1854
X-V-CD: 0
X-V-ID: 093ef49c-4800-44dd-af20-8a7ea607b793
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-04-16_08:2021-04-16, 2021-04-16 signatures=0
Received: from smtpclient.apple (unknown [17.150.208.50]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.7.20201203 64bit (built Dec 3 2020)) with ESMTPSA id <0QRO00051062PE00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Fri, 16 Apr 2021 09:22:51 -0700 (PDT)
From: Roger Pantos <rpantos@apple.com>
Message-id: <EC866EE4-196A-4EE4-B5F7-BEDE6C4C583F@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_08294C64-25E8-4E08-A535-CFB97C4CE937"
MIME-version: 1.0 (Mac OS X Mail 14.0 \(3654.80.0.2.43\))
Date: Fri, 16 Apr 2021 09:22:50 -0700
In-reply-to: <CAHuKqSD6gQc8N9yJixDGThMutPoTELuz=pkubEMcs1JfM-OpoQ@mail.gmail.com>
Cc: "hls-interest@ietf.org" <hls-interest@ietf.org>, "Law, Will" <wilaw@akamai.com>
To: Phil Cluff <phil@mux.com>
References: <CAA__M0h+cq9ZrBjid33hL-JFVQ8L40cG=tB3DOrXRPPwvCKpVg@mail.gmail.com> <840F37F8-D3EA-44F2-93C9-1D20682BBA0E@apple.com> <9659752D-8C78-4050-BDF5-22736F0F642D@akamai.com> <DA56AC1A-6B14-4774-B13E-7B3B37376A75@apple.com> <30557D2D-4669-4CD6-9D42-391453D5FB8A@akamai.com> <CAHuKqSD6gQc8N9yJixDGThMutPoTELuz=pkubEMcs1JfM-OpoQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3654.80.0.2.43)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-04-16_08:2021-04-16, 2021-04-16 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/PUzjBpbIrjfEW3MfaiqreLvSA14>
Subject: Re: [Hls-interest] Streaming Video Alliance Comments on HLS Content Steering Proposals
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, 16 Apr 2021 16:23:00 -0000

Hello Phil. Audio and text tracks can be steered to particular pathways the same way they are today: by defining per-pathway Rendition Groups and making sure each Variant Stream on a particular pathway specifies the Rendition Group for that pathway:

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0-A",NAME="en (Main)",DEFAULT=YES,LANGUAGE="en",URI="audio-0.m3u8 <https://primary-cdn.com/audio-0.m3u8>"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0-B",NAME="en (Main)",DEFAULT=YES,LANGUAGE="en",URI="https:// <https://backup-cdn.com/audio-0.m3u8>backup.example.com/content/videos/video12/audio-0.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.640028”,AUDIO="audio-0-A”,PATHWAY-ID="CDN-A"
low/audio-video.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="avc1.640028",AUDIO="audio-0-B",PATHWAY-ID="CDN-B"
https://backup.example.com/content/videos/video12/low/audio-video.m3u8

I’d be willing to add some advice along those lines to the spec, perhaps as a SHOULD. But at the moment I’m not inclined to require it, in order to give content providers maximum flexibility.


Roger.

> On Apr 16, 2021, at 2:14 AM, Phil Cluff <phil@mux.com> wrote:
> 
> Thanks Roger and the Apple team for looking at this approach, it's really appreciated! I also really appreciate that this finally formalises the expected player behaviour for redundant streams.
> 
> I think there is something missing though, specifically, in the current implementation I don't think it works for un-muxed audio and video, and text tracks, since PATHWAY-ID can only be defined on #EXT-X-STREAM-INF, #EXT-X-I-FRAME-STREAM-INF.
> 
> I think we also need to be able to define PATHWAY-ID on #EXT-X-MEDIA so that we do things like this for redundant alternate audio or text tracks:
> 
> #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="en (Main)",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://primary-cdn.com/audio-0.m3u8 <https://primary-cdn.com/audio-0.m3u8>",PATHWAY-ID="1"
> #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="en (Main)",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en",URI="https://backup-cdn.com/audio-0.m3u8 <https://backup-cdn.com/audio-0.m3u8>",PATHWAY-ID="2"
> 
> And the same for text tracks:
> 
> #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs-1",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog",NAME="English",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,LANGUAGE="en",URI="https://primary-cdn.com/subs-1.m3u8 <https://primary-cdn.com/subs-1.m3u8>",PATHWAY-ID="1"
> #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs-1",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog",NAME="English",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,LANGUAGE="en",URI="https://backup-cdn.com/subs-1.m3u8 <https://backup-cdn.com/subs-1.m3u8>",PATHWAY-ID="2"
> 
> I think this might require some minor changes under 4.3.4.1.1. Rendition Groups in the HLS spec to clarify that entries in a group are not duplicates when their PATHWAY-ID does not match. 
> 
> Let me know if I've missed something as always! 
> 
> Thanks again!
> 
> 
> On Fri, Apr 16, 2021 at 12:23 AM Law, Will <wilaw=40akamai.com@dmarc.ietf.org <mailto:40akamai.com@dmarc.ietf.org>> wrote:
> Well a big public thank you to Roger and the team at Apple for their open mindedness and willingness to take feedback around this, even to the degree that it represented a large rewrite of the feature. I think you have a genuinely simpler and thus more robust product as a result. We look forward to supporting you in taking it to production. It’s also encouraging for list members who put time & effort in to preparing feedback, to know that it is given due consideration. So thanks all around.
> 
>  
> 
> In speaking with Kirk this afternoon, it would be really useful to have an additional optional reserved parameter of
> 
>  
> 
> _HLS_lastSteerTime=<timestamp>
> 
>  
> 
> in which the player passes to the steering server the last wall-clock time at which it executed a steering action.
> 
>  
> 
> Why would this be useful? Primarily, it allows the decoupling of the check frequency from the steering execution frequency. Delivery problems can happen quickly  - within 30s in some cases. Having a 5 minute check-in interval means that a player can be banging its head against a poorly performing server for many minutes before it moves away. Users have proven inability to absorb such failures for more than 20s or so. We could address this problem by having the player call the steering server every 20s. However we don’t want the QoE churn that might come if the player switches at 20s intervals. It would be nice solution then if the player has the option of checking in frequently but the steering server could then intelligently steer some players who had been stable for a while, immediately, while for others it could wait for some churn-avoiding threshold before steering them. This new timestamp query arg would enable this optimized behavior and it would allow the steering server to remain stateless in its operation.
> 
>  
> 
> Cheers
> 
> Will
> 
>  
> 
>  
> 
> From: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org <mailto:40apple.com@dmarc.ietf.org>>
> Date: Thursday, April 15, 2021 at 3:29 PM
> To: "hls-interest@ietf.org <mailto:hls-interest@ietf.org>" <hls-interest@ietf.org <mailto:hls-interest@ietf.org>>
> Subject: Re: [Hls-interest] Streaming Video Alliance Comments on HLS Content Steering Proposals
> 
>  
> 
> Okay folks, we’ve done a number of audits and we think that simple annotation of redundant streams will work well enough for content steering. I’ve updated the spec to reflect that, and bumped the spec version to 1.2b1. 
> 
>  
> 
> We left an opening in 1.2 that will allow us to introduce new Pathways through the steering manifest if there’s a demand for that in the future.
> 
>  
> 
> As always, thanks to everyone for their thoughtful contributions!
> 
>  
> 
> -- 
> 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>
> 
> 
> -- 
> Phil Cluff | Product Lead | +44 7983 406 937 | phil@mux.com <mailto:phil@mux.com>