December 01, 2014 by Romain Bouqueau

Apple HLS: comparing versions

An introduction to Apple HLS is available as: Apple HLS: introduction. A technical analysis of the versions is available as: Apple HLS: technical in-depth.

Versions and revisions

HLS comes in different versions. As of when this article is written, version numbers range from 1 to 10. Version 3 and 7 are the most popular. You'll learn why by reading the table below.

Each of the version is covered by one or more revisions. The HLS draft revisions covered in this analysis range from 0 to 23 for RFC8216. Draft revision 23 is the IETF RFC8216 since August 31, 2017.

Then Apple started publishing updates in the IETF RFC8216-bis draft. Current revision numbers range from 0 (same as RFC8216) to 10.

Outdated note: if you look closely at the dates in the table, you'll notice that revisions are generally not separated by more than 6 months from the previous. That's because the HLS specification has been available as an IETF draft. IETF drafts automatically expire after 6 months. Thanks to Nicolas Weil for the reminder. Therefore Apple HLS has been available as a draft since May 1, 2009 i.e. for more than five years. We have no information of Apple planning to finalize it. PS: RFC finalized in 2017, see below.

You can find the correspondence between 'version' and 'revision' in the table below. You can find the correspondence between revisions and iOS versions in this Apple developer page (thanks to G. Du Pontavice from flashls):

revision version date new features
0 1 May 1, 2009 Initial release
1 1 June 8, 2009
2 1 October 5, 2009
3 2 April 2, 2010
    • Specifying the resolution for video variant streams.
    • Improving encryption (initialization vector).
  • Introducing version compatibility.
4 2 June 5, 2010
5 3 November 19, 2010 Introducing the playlist-type (VOD, Event)
6 3 March 31, 2011
7 4 September 30, 2011
    • Audio and Video can be specified separately (e.g. unmuxed together), introducing rendition groups.
    • Introducing byte-ranges to access the content from a single file.
  • Allowing special playlists containing only I-frames (i.e. access points).
8 4 March 23, 2012
9 5 September 22, 2012
    • Subtitles (WebVTT).
  • Adding a new per-sample encryption scheme.
10 5 October 15, 2012
11 5 April 16, 2013
12 6 October 14, 2013
    • Introduce Closed-Captions (in addition to subtitles).
  • Error resilience: discontinuity and independence of each segment can be signalled in the playlist.
13 6 April 16, 2014
14 7 October 14, 2014
    • Adding alternate renditions signalling.
    • Adding session data.
  • Closed-Captions: support for CEA-708.
15 7 April 15, 2015
    • AC-3 and eAC-3.
  • FRAME-RATE attribute in EXT-X-STREAM-INF.
16 7 April 15, 2015
    • Bitrate definition clarified: it doesn't include network (HTTP, TCP, IP) overhead.
    • Multiple EXT-X-VERSION are now rejected.
    • TYPE attribute of EXT-X-MEDIA is now mandatory.
  • Removed FRAME-RATE attribute introduced in revision 16 (the same day ;) ).
17 7 October 16, 2015
  • Use of MUST and SHOULD keywords as in RFC2119.
18 7 November 19, 2015
19 7 April 4, 2016
  • Adding EXT-X-DATERANGE (with SCTE35 specific attributes)
20 7 September 20, 2016
    • Adding MPEG-4 Fragmented as a container.
  • explicit use of MP3 and (Enhanced) AC-3 audio codecs.
21 7 March 27, 2017
22 7 April 24, 2017
23 7 May 22, 2017
  • Mentions to CMAF for MPEG-4 Fragmented.
RFC8216 7 August 31, 2017 Same as draft revision 23.
RFC8216bis 8 December 8, 2017 Version 8. No major new feature.
RFC8216bis 10 April 8, 2020 (last updated on 8 November 2022)
  • Note: there was no version 9.
  • LL-HLS: low latency.
  • Content Steering.
  • Explicit interstitial content.

The latest version of the Apple HLS IETF document can be found here.

Apple HLS: introduction

previous post

<

Apple HLS: technical in-depth

next post

>
  • Lionel - December 01, 2014
    Very helpful document, Romain! A little typo in the first table though, for the revision 14 of the HLS spec, the version of the protocol is set to 7.
  • Lionel - December 01, 2014
    And by the way, the captcha seems to be broken on Safari and Chrome :-(
  • Romain Bouqueau - December 01, 2014
    Thank you Lionel, it is fixed!
  • Romain Bouqueau - December 01, 2014
    Thanks for reporting, it is fixed too!
  • Olivier - December 03, 2014
    Indeed very good summary Romain. Would be great to have side comments to explain the benefits of additional fields or reason for removal when you have had the experience to use it. This would add some emphasis to the comparison between versions. @Lionel, I do not see any typo, revision 14 is defining HLSv7.
  • Romain Bouqueau - December 03, 2014
    Thanks for your feedback. I could indeed add a summary. Actually I planned to add it to the table at the beginning but I feared it would become too big. Maybe I would split the article into two. What do you think? I have not advertised the article yet, so we can modify it.
  • Lionel - December 04, 2014
    @Olivier You are now reading a version where the typo is fixed ;)
  • Lionel - December 04, 2014
    And yes, now the captcha is fixed too! Whoohoo.
  • […] Apple HLS: comparing versions […]
  • […] Apple HLS: comparing versions An introduction to Apple HLS is available as: Apple HLS: introduction. A technical analysis of the versions is available as: Apple HLS: technical in-depth. Versions and revisions HLS comes in different versions. As of when this … Continue reading → […]
  • Guillaume - December 12, 2014
    Hi Romain, a nice page from Apple to understand EXT-X-VERSION tag https://developer.apple.com/library/ios/qa/qa1752/_index.html
  • Romain Bouqueau - December 12, 2014
    Hi Guillaume, thanks for your comment. I have added the link so that people can see which revision links to each iOS version. On the other hand this Apple page is unfortunately both inconsistent with the IETF drafts and not up-to-date. I think it is generated afterwards by people unrelated to the spec writers. This is why I ignored it in first place. Cheers!
  • […] provided by Romain Bouqueau – all credits go to him and his commenters for providing us such a clear breakdown of HLS […]
  • - Comments are closed -