Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(main): release 5.0.0 #1

Conversation

github-actions[bot]
Copy link

🤖 I have created a release beep boop

5.0.0 (2022-08-11)

⚠ BREAKING CHANGES

  • Remove small/large gap config, always jump gaps (feat!: Remove small/large gap config, always jump gaps shaka-project/shaka-player#4125)
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0)
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0)
  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0)
  • Remove deprecated features, update upgrade guides (feat!: Remove deprecated features, update upgrade guides shaka-project/shaka-player#4089)
  • Remove support for Safari 12 and iOS 12 (feat!: Remove support for Safari 12 and iOS 12 shaka-project/shaka-player#4112)
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (feat(hls)!: HLS disabled in old browsers/platforms due to incompatibilities shaka-project/shaka-player#3964)

Features

  • shaka.util.Uint8ArrayUtils.equal has been replaced by shaka.util.BufferUtils.equal, which can handle multiple types of buffers (deprecated in v3.0.0) (ac5acc8)
  • Add a config to dispatch all emsg boxes. (#3653) (ea3568d), closes #3348
  • add Amazon Fire TV platform support (#4375) (5102dac)
  • Add Common Media Client Data (CMCD) logging support (#3662) (221637a), closes #3619
  • Add Dockerfile and docker build instructions (925de19)
  • Add Id to chapters (#4184) (5ca3271)
  • Add keySystemsMapping to drm config (#4254) (5e107d5), closes #4243
  • add listenable events for playback stall detection and gap jumping (#4249) (5987458)
  • Add media quality change events (#3700) (bd7b384), closes #3431
  • add modern EME support for FairPlay (#3776) (6d76a13)
  • add new methods to FairPlayUtils (#4029) (f1eeac1)
  • add option for segment-relative VTT timings (#4083) (f382cc7)
  • Add randomUUID polyfill (#3669) (a72adca)
  • Add separate audio and video MIME types to Track API (#3892) (74c491d), closes #3888
  • Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) (5441f93)
  • Add support to text-shadow in VTT parser (#4257) (62bda2c)
  • Adds advanced ABR config options (#3706) (d667e50), closes #3422
  • ads: Integrate with non-linear IMA CS ads (#3639) (9c3bed3), closes #2596
  • Allow WebP and AVIF image streams (#3856) (9f3fb46), closes #3845
  • cast: Add Android receiver support (#4183) (dbba571)
  • config: manifest.dash.defaultPresentationDelay has been replaced by manifest.defaultPresentationDelay (deprecated in v3.0.0) (ac5acc8)
  • config: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with new (deprecated in v3.1.0) (ac5acc8)
  • dash: Construct ClearKey PSSH based on MPD ContentProtection (#4104) (b83b412)
  • dash: Parse ClearKey license URL in MPD (#4066) (19e24b1)
  • demo: Add Apple Advanced HLS Stream (TS) with raw AAC (#3933) (1becadf)
  • demo: Added demo asset with raw AAC. (014c7b3), closes #2337
  • DRM: add drmInfo to license requests (#4030) (abe846e)
  • DRM: add initData and initDataType to license requests (#4039) (bdc5ea7)
  • Export LanguageUtils (5783694), closes #3692
  • hls: Add support for EXT-X-GAP (#4208) (14e61a7), closes #1308
  • HLS: Containerless format support (36d0b54), closes #2337
  • hls: HLS disabled in old browsers/platforms due to incompatibilities (#3964) (0daa00f)
  • hls: make a head request if hls subtitles have no extension (#4140) (19e12b5)
  • hls: parse EXT-X-GAP (#4134) (42eecc8)
  • HLS: Re-add TS support to Safari (#4097) (8a3bed7)
  • hls: Read EXT-X-PROGRAM-DATE-TIME (#4034) (89409ce), closes #2337
  • Improve gap-detection robustness (#4399) (4293a14)
  • manifest: shaka.media.SegmentIndex.prototype.destroy() has been replaced by release(), which is synchronous (deprecated in v3.0.0) (ac5acc8)
  • manifest: shaka.media.SegmentIndex.prototype.merge() has become private; use mergeAndEvict() instead (deprecated in v3.2.0) (ac5acc8)
  • manifest: shaka.media.SegmentIterator.prototype.seek(), which mutates the iterator, has been replaced by shaka.media.SegmentIndex.getIteratorForTime() (deprecated in v3.1.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.getStoreInProgress() has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0) (ac5acc8)
  • offline: shaka.offline.Storage.prototype.store() returns AbortableOperation instead of Promise (deprecated in v3.0.0) (ac5acc8)
  • offline: improve the speed of offline downloads (#4168) (73f6de3)
  • only polyfill MCap for non Android-based Cast devices. (#4170) (11321d8)
  • player: shaka.Player.prototype.addTextTrack() has been replaced by addTextTrackAsync(), which returns a Promise (deprecated in v3.1.0) (ac5acc8)
  • plugin: AbrManager plugins must implement the playbackRateChanged() method (deprecated in v3.0.0) (ac5acc8)
  • plugin: IUIElement plugins must have a release() method (not destroy()) (deprecated in v3.0.0) (ac5acc8)
  • plugin: shaka.extern.Cue.prototype.spacer has been replaced by the more clearly-named lineBreak (deprecated in v3.1.0) (ac5acc8)
  • Public release of Sindarin (sjn) translation easter egg (#4033) (9029d06)
  • Remove deprecated features, update upgrade guides (#4089) (ac5acc8)
  • Remove small/large gap config, always jump gaps (#4125) (0fd1999)
  • Remove support for Safari 12 and iOS 12 (#4112) (8bb7044)
  • Temporarily disable the active variant from NETWORK HTTP_ERROR (#4189) (b57279d), closes #4121 #1542 #2541
  • ui: shaka.ui.FailReasonCode has been renamed to shaka.ui.Overlay.FailReasonCode (deprecated in v3.1.0) (ac5acc8)
  • ui: shaka.ui.TrackLabelFormat has been renamed to shaka.ui.Overlay.TrackLabelFormat (deprecated in v3.1.0) (ac5acc8)
  • ui: Add quality selection for audio-only content (#3649) (adc3502), closes #2071
  • UI: Add video fullscreen support for iOS (#3853) (8d1b5e6), closes #3832
  • UI: Added keyboardSeekDistance config to UI (#4246) (6084ca6)
  • ui: Added Loop and PIP to context menu, and Statistics to overflow menu (#3578) (34958c8)
  • UI: Adds singleClickForPlayAndPause config (8aacdcf), closes #3821
  • Upgrade eme-encryption-scheme-polyfill to support ChromeCast version of PlayReady (#4378) (e6b6d7c)
  • webvtt: add support for karaoke style text in WebVTT (#4274) (60af516)

Bug Fixes


This PR was generated with Release Please. See documentation.

cristian-atehortua pushed a commit that referenced this pull request Apr 26, 2024
…QUENCE (shaka-project#6378)

Fixes shaka-project#6377

When choosing to synchronize HLS streams using `EXT-X-MEDIA-SEQUENCE` instead of `EXT-X-PROGRAM-DATE-TIME` during LIVE playlist variant switches, Shaka unnecessarily drops 'old' segments and offsets the segment references of the new playlist so that the earliest reference represents media time `0`: https://github.com/shaka-project/shaka-player/blob/ea740ba2468f3b035d463ea9933aa7eeccf5c748/lib/hls/hls_parser.js#L610-L613

This is problematic, as the `StreamingEngine`'s media time used to download new segments is based off the latest segment references:
https://github.com/shaka-project/shaka-player/blob/ea740ba2468f3b035d463ea9933aa7eeccf5c748/lib/media/streaming_engine.js#L1248-L1250
https://github.com/shaka-project/shaka-player/blob/ea740ba2468f3b035d463ea9933aa7eeccf5c748/lib/media/streaming_engine.js#L1385

For example:

```
            Playlist download #1         
EXT-X-MEDIA-SEQUENCE       Media Time
           0                   0
           1                   6
           2                   12
           3                   18

           Playlist download #2 (what happens now)
EXT-X-MEDIA-SEQUENCE       Media Time
          6                   0
          7                   6
          8                   12
          9                   18

           Playlist download #2 (desired behavior)
EXT-X-MEDIA-SEQUENCE       Media Time
          6                   36
          7                   42
          8                   48
          9                   54

```

Without this fix, and given the above example, if Shaka tries to request the segment at `time=36`, it will fail because the media state only has segment references up to `time=18`. Until the manifests, 'catch up', the player freezes; this can be especially problematic when a large amount of time accumulates before a variant switch occurs.

This has been confirmed by Pluto TV to fix their freezing issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant