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 #2

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 buffer fullness method (#3392) (0f00d1c), closes #3389
  • Add a config to dispatch all emsg boxes. (#3653) (ea3568d), closes #3348
  • Add a way to listen to all events on a specific target (dc5d033)
  • Add align and vertical settings to WebVttGenerator (#3413) (9ffc111)
  • add Amazon Fire TV platform support (#4375) (5102dac)
  • Add blob-url support (#3583) (6a03207), closes #1481
  • Add callback for apps to pre-process DASH manifests (#3480) (9afa4eb), closes #3339
  • Add chapters support (#2972) (160e36b)
  • Add Common Media Client Data (CMCD) logging support (#3662) (221637a), closes #3619
  • Add Dockerfile and docker build instructions (925de19)
  • Add goToLive method (#3527) (84b9a89)
  • 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 public access to more drm members. (1125184)
  • Add randomUUID polyfill (#3669) (a72adca)
  • Add separate audio and video MIME types to Track API (#3892) (74c491d), closes #3888
  • add serverCertificateUri in DRM advanced config (#3358) (9b4502c), closes #1906
  • Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) (5441f93)
  • Add support to HLS Image Media Playlists (#3365) (2a4083b), closes #2429
  • 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
  • ARIA: Add polyfill for ARIAMixin. (cf2fb90), closes #3378
  • cast: Add Android receiver support (#4183) (dbba571)
  • CodecPreference: Add preferred codecs config (9a706ef), closes #2179
  • CodecPreference: Improve preferredVideoCodecs & preferredAudioCodecs (#3424) (0579ee7)
  • 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: Create segment index only when used (b16d30c)
  • dash: Parse ClearKey license URL in MPD (#4066) (19e24b1)
  • demo: Add Apple Advanced HLS Stream (TS) with raw AAC (#3933) (1becadf)
  • demo: Add MIME type and extra config to custom assets (24d10ed)
  • demo: Added demo asset with raw AAC. (014c7b3), closes #2337
  • demo: DASH and HLS demo content from MetaCDN (#3350) (ec9a38f)
  • drm: add 'com.microsoft.playready.recommendation' to probeSupport (#3308) (d4ea27a)
  • DRM: add drmInfo to license requests (#4030) (abe846e)
  • DRM: add initData and initDataType to license requests (#4039) (bdc5ea7)
  • DRM: Add preferred key systems config (6449b30), closes #3002
  • 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: Make default HLS audio/video codecs configurable (#3651) (52d68a2)
  • 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)
  • ll-hls: only request delta updates when server supports it (4c97562), closes #1525
  • make drm sessionType configurable in advanced DRM config (#3301) (4574a5d)
  • 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)
  • MediaCap: Add preferredDecodingAttributes config (79d5fd8), closes #1391
  • MediaCap: Always polyfill MediaCap for Chromecast (e592d48), closes #1391
  • MediaCap: Default "useMediaCapablities" to true (bd7e07b)
  • MediaCap: get mediaKeySystemAccess via decodingInfo (aca343b), closes #1391
  • MediaCap: Guess the codecs of multiplexd stream for MediaCap (198a6d4), closes #1391
  • MediaCap: Patch VP9 codec (bf0644a)
  • MediaCap: Skip filtering by DrmEngine with MediaCap enabled (0f0c940), closes #1391 #3334
  • MediaCap: Use MediaCapabilities for offline storage (2f65b97), closes #1391
  • MediaCap: Use mediaKeySystemAccess from decodingInfo in DrmEngine (b63a64e), closes #1391
  • net: Add response HTTP status to Networking engine responses (#3641) (2701527), closes #3640
  • Network stall detection (#3227) (863e345), closes #1582
  • 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: Changed store order of operations. (5215f53), closes #879
  • offline: improve the speed of offline downloads (#4168) (73f6de3)
  • offline: Load init segments first for keys (db8ad31), closes #879
  • offline: Make segment storage stateless. (aded252), closes #879
  • 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)
  • player: Add updateStartTime method to play (#3491) (16c1810)
  • player: Added events for download lifecycle. (7893b77), closes #3533
  • 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)
  • Progress toward FairPlay DRM w/ MSE (#3347) (46b1cfa)
  • 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)
  • Support frequent updates during streaming (#3483) (6e69bed), closes #3332
  • Temporarily disable the active variant from NETWORK HTTP_ERROR (#4189) (b57279d), closes #4121 #1542 #2541
  • text: Creates style tags for underline/italics/bold in WebVttGenerator (#3266) (658790a)
  • text: Partially support tts:textOutline (911ce6d), closes #3612
  • thumbnails: Allow download thumbnails (for offline usage) (#3280) (06982de)
  • 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 configurable rates (#3579) (f65b093), closes #3443
  • ui: Add Loop, PIP, Cast, AirPlay buttons to control panel (#3255) (4f0ded7), closes #2676
  • ui: Add quality selection for audio-only content (#3649) (adc3502), closes #2071
  • ui: Add Quality, Language, Playback, Captions buttons to control panel (#3465) (481b378)
  • ui: Add right-click context menu, statistics button (#3548) (afb9310), closes #2607
  • ui: Add tooltips to control panel buttons (#3572) (d5769ee), closes #3269
  • 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
  • UI: Exit PiP when destroying UI (38cfc23), closes #3553
  • 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

  • 3783 captions not working after a period transition on live DASH streams (#3801) (6e0737e), closes #3783
  • abr: use Network Info API in ABR getBandwidthEstimate (#4263) (4fc7a48)
  • Account for server-side ad cue points in external text tracks. (#3617) (a7f4db7)
  • Add DASH MIME type mapping for src= playback (#3805) (3a9139e)
  • Add explicit release() for FakeEventTarget (#3950) (f1c1585)
  • Add fallback to TextDecoder and TextEncoder #4324 (5b18069)
  • Add missing module export in generated typescript defs (feefd7b)
  • add strictMissingProperties suppressions to unblock strict missing properties on union types. (#4371) (b361948)
  • Add support to file type in mediaCapabilities implementation (#3570) (233c2bf), closes #3530
  • Add support to file type in MediaCapabilities polyfill (#3569) (c07d1a3), closes #3530
  • Add Support to iOS 12 in MediaCapabilities polyfill (#3573) (ef506ac)
  • ads: Add ResizeObserver to CS ad manager. (#3652) (2bdc326), closes #3638
  • ads: Add the original IMA event to the Shaka AD_CLICKED event. (7c6ee2d), closes #3304
  • ads: Dispose of ad manager on player detach (7b2a172)
  • ads: Fix stopping of Server Side Ad manager (#3611) (a17c988)
  • ads: Fix the skip ad button not being clickable #3284 (#3326) (78e181d)
  • Allow muxjs to be loaded after Shaka (65a2cfd), closes #3407
  • Always polyfill MediaCapabilities for Apple browsers (#3588) (4dce1e0)
  • Avoid seeking on src when start time is 0 (#3644) (3f822d8), closes #3518
  • Avoid WebCrypto randomUUID when CMCD disabled (4731c76)
  • cast: Make cast tests more forgiving. (4fee1de)
  • cea: Fix BUFFER_READ_OUT_OF_BOUNDS error when CEA caption packets are empty (#3609) (97ba4df), closes #3608
  • cea: make a more robust CEA MP4 parser (#3965) (2687b95)
  • choose the configured preferred text role at start (#3399) (d47c823)
  • Clear buffer on seek if mediaState is updating (#3795) (9705639), closes #3299
  • cmcd: Fix Symbol usage in CMCD on Xbox One (#4073) (4005754), closes #4072
  • css: Fix missing % in calculation (#4157) (1c86195)
  • dash: Account for bandwidth before filtering text stream (#3765) (0b04aec), closes #3724
  • dash: Fix performance regression (#4064) (298b604)
  • dash: Fix playback of Dolby Atmos (#4173) (d51fe23), closes #4171
  • dash: Fix stalls on a live dash stream. (7e50866)
  • dash: Notify segments on all updates. (b8b72a9), closes #3675
  • DASH: Support "forced-subtitle" role (#3807) (f767260), closes #3767
  • Debug buffer placement (#4345) (47fa309)
  • Dedupe DRM init data (#3695) (a09d8c9)
  • demo: allow switch between UITextDisplayer and SimpleTextDisplayer (#4275) (28689f3)
  • demo: erroneous FairPlay keysystem in demo (#4276) (8719bdc)
  • demo: Fix 'Tears of Steel (live, DASH, Server Side ads)' (#3758) (fb90679)
  • demo: Fix centering of icons, add hover effect on settings (#3352) (ef0c651)
  • Discard only invalid overlapping periods (1c64e20)
  • Discard only invalid periods (94d696f)
  • Display captions with forward slashes (#3556) (65e9d8f)
  • Do not report MANIFEST RESTRICTIONS_CANNOT_BE_MET error twice (#4194) (08589e8), closes #4190
  • docs: corrects typo in project README (#3368) (3404805)
  • Don't destroy ad manager on detach (#3665) (684dd85)
  • Don't force update captions by default (#3425) (a0d3e52)
  • Don't forget active track after new period is added to live stream. (22307d0), closes #3510
  • Don't gap jump at start of video if autoplay is not set (#3645) (9e15323), closes #3451
  • Don't send drmsessionupdate after unload (#4248) (60af9ad)
  • Enforce string-format of event data keys. (dd3748d), closes #3710
  • Enhanced fix for geo-redundancy (5f77d2b)
  • exception if on early adError (#4362) (3c92f05), closes #4004
  • Failover in geo-redundant streams (930c158)
  • FairPlay playback (#3531) (3995000)
  • fairplay: Re-add initDataTransform config (#4231) (ff310e9)
  • Filter unsupported H.264 streams in Xbox (#3411) (a096bc1)
  • Fix ARIA label on replay button (#3513) (2dedd9f), closes #3512
  • Fix audio language switching while using AirPlay (#3472) (f9c289e), closes #3125
  • Fix audio mime type in multiplexed HLS stream (#4241) (4e4e92e)
  • Fix broken deps file generation on Windows (#4086) (9660ce8), closes #4085
  • Fix buffering due to re-fetch (SegmentIterator) (#3419) (9e6da5a)
  • Fix buffering due to re-fetch (SegmentTemplate+duration) (#3419) (9dc4664)
  • Fix buffering due to re-fetch (SegmentTimeline) (3222370)
  • Fix CC parsing of EPB and v1 TKHD boxes (#3610) (6a775e2), closes #3502
  • Fix choosing tracks from streaming event (#3459) (760161f), closes #3448
  • Fix clearing buffer when requested for already-selected variant (#3477) (e85009d), closes #3450
  • Fix CMCD property mangling (#3842) (fa5932c), closes #3839
  • Fix CMCD top bitrate reporting (#3852) (922778a), closes #3851
  • Fix compilation error with strict constness (6757d23)
  • Fix compiler error introduced in #3864 (#3906) (0635e2c)
  • Fix DASH transition from dynamic to static (#3497) (b3166db), closes #3376
  • Fix download of some HLS assets (#3934) (36ca820)
  • Fix DRM workaround for Tizen and Xbox with ac-3 boxes (#3631) (56a0042), closes #3589
  • Fix DRM workaround for Tizen and Xbox with avc3 boxes (#3625) (31b1ca9)
  • Fix duplicate CMCD parameters in HLS live content (#3875) (f27401c), closes #3862
  • Fix EC-3 box support in DRM workaround on smart TVs (#3427) (87786f4)
  • Fix encryption detection to work around broken platforms (#4169) (c5f474e)
  • Fix enforcement of cue alignment styles (2250324), closes #3379
  • Fix EOS set-top box being identified as Apple. (#4310) (7c2c4be)
  • Fix event listener leaks in Player (#4229) (a5d3568)
  • Fix exception in StreamingEngine for EMSG with HLS (#3887) (48433ab), closes #3886
  • Fix exception with streaming.startAtSegmentBoundary (#4216) (426a19c), closes #4188
  • Fix exceptions when quickly shutting down src= on Safari (#4088) (ca08230), closes #4087
  • Fix failed assertion for eviction logic (29e7ab1), closes #3169
  • Fix failure with multiple thumbnails per period (052e794), closes #3383
  • Fix filtering of duplicate image streams (42674be), closes #3383
  • Fix getVideoPlaybackQuality in WebOS 3 (#4316) (5561111)
  • Fix hung playback on rapid seek (#3479) (f7facc0), closes #3384
  • Fix key ID byteswapping for PlayReady on PS4 (#4377) (25fd4f4)
  • Fix key rotation in DASH (6143a6d), closes #3169
  • Fix mediaCapabilities polyfill on Chromecast (de77787)
  • Fix MediaCapabilities polyfill on Playstation 4 (#4320) (0335b2a)
  • Fix MediaCapabilities polyfill on Safari (0201f2b), closes #3696 #3530
  • Fix MediaCapabilities polyfill on Tizen and WebOS (#4396) (eb2aed8), closes #4383 #4357
  • Fix memory leak in DASH live streams with inband EventStream (#3957) (b7f04cb)
  • Fix misdetection of HEVC support on MS Edge (#3897) (dfb3699), closes #3860
  • Fix missing override in MetaSegmentIndex (1dbd75a)
  • Fix missing throughput in CMCD for HLS live (#3874) (df55944), closes #3873
  • Fix multiperiod without consistent thumbnails (ed1563f), closes #3383
  • Fix new method missing from cast proxy (0a62396), closes #3392 #3389
  • Fix PERIOD_FLATTENING_FAILED error when periods have different base sample types (#4206) (b757a81), closes #4202
  • Fix playback failure due to rounding errors (1cc99c1), closes #3717
  • Fix playRangeEnd for certain content (#4068) (5c81f3b), closes #4026
  • Fix segment index assertions with DAI (#4348) (c2b3853)
  • Fix STORAGE_LIMIT_REACHED error masked by DOWNLOAD_SIZE_CALLBACK_ERROR (#3396) (69c310c)
  • Fix support for TTAF1 namespace (old version of TTML) (#3864) (771619f), closes #3009
  • Fix thumbnail duration, expose start time and duration (d4a1255), closes #3517
  • Fix thumbnail position calculation (#3516) (097c9a1), closes #3511
  • Fix UI captions icon state (#4384) (d462633), closes #4358
  • Fix usage of Shaka without polyfills (dfc44cb)
  • Fix vp09 playback on webOS (#3566) (13aafcf)
  • Fix VP9 codec checks on Mac Firefox (#4391) (b6ab769)
  • Fix VTT cue timing in HLS (#4217) (5818260), closes #4191
  • Fixes bug in trick mode stream concatenation (f091084), closes #3423
  • Fixes updating of nested cues (b02ff27), closes #3524 #3643
  • Force update captions when element resizes (#3426) (a09fa31)
  • Force update captions with fullscreen (#3414) (b426fe8)
  • hls: Assume MP4 if MIME type can't be deduced (#3325) (7714099), closes #3142
  • hls: Fix AV sync issues, fallback to sequence numbers if PROGRAM-DATE-TIME ignored (#4289) (314a987), closes #4287
  • hls: Fix av1 codec selection in HLS. (#4203) (5e13495)
  • HLS: Fix duplicate hinted segments (#4258) (9171f73), closes #4223
  • hls: Fix X-PRELOAD-HINT failure with LL mode off (#4212) (86497a5), closes #4185
  • hls: Fixed buffering issue with live HLS (#4002) (c438e85)
  • hls: Fixes parsing of HLS 'DEFAULT' attribute (#3771) (3e7a5b5), closes #3769
  • hls: Made HLS notify segments after fit (1e598ba), closes #3733
  • hls: Made HLS notify segments after fit (9220c1f), closes #3733
  • HLS: Prioritize AVERAGE-BANDWIDTH over BANDWIDTH (#3428) (76480f9)
  • HLS: skip whitespace in attributes (#3884) (ea6c02a)
  • hls: Support playing media playlists directly (#4080) (48dd205), closes #3536
  • Ignore network changes if ABR is disabled (#3387) (bf51b4b), closes #3385
  • image: Fix HLS image track issues (264c842), closes #3840
  • image: Fix thumbnails issues (#3858) (087a9b4)
  • ios: Fix CORS errors with side-loaded text in src= mode (#3328) (66d28b9), closes #3312
  • LL-DASH: Append segment chunk strictly in order (#3405) (f09616f), closes #3404
  • LL-DASH: Fix index out of bound issue when parsing mp4 segment (#3403) (e02d28c), closes #3402
  • ll-hls: get discontinuity sequence number with skipped segments (34c3133)
  • Load image

@github-actions github-actions bot force-pushed the release-please--branches--main--components--shaka-player branch from 3551333 to bfa71c0 Compare August 11, 2022 15:07
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