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 from 1 to 7.

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

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.

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

13 comments on “Apple HLS: comparing versions”

  1. Lionel Reply

    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.

    • Olivier Reply

      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 Reply

        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.

  2. Pingback: simpleNewz - GPAC Licensing RSS Feed for 2014-12-07

  3. Pingback: Apple HLS: comparing versions - GPAC Licensing ...

    • Romain Bouqueau Reply

      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!

  4. Pingback: Streaming: The HLS Version 4 hype, and the whole truth about it #9 - Francesco Altomare – Cloud Architect

Leave a Reply

Your email address will not be published. Required fields are marked *

css.php