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

Log error and detach if MediaSource 'sourceopen' is interrupted #5206

Merged
merged 2 commits into from Feb 7, 2023

Conversation

robwalch
Copy link
Collaborator

@robwalch robwalch commented Feb 3, 2023

This PR will...

Listen for "emptied" event on media element while attaching MediaSource. If the media src attribute does not match the object URL being attached log an error and detach the media element (this will emit MEDIA_DETACHING).

Why is this Pull Request needed?

#4952 Users are unsure why calling hls.attachMedia(HTMLMediaElement) does not always resolve with the player emitting MEDIA_ATTACHED after MediaSource is attached and open. My best guess is that something is changing the video.src externally while attaching, which interrupts the MediaSource from dispatching the 'sourceopen' event HLS.js depends on to complete the attachMedia operation.

With this change-set, detachMedia will be called if attaching the MediaSource is interrupted ("emptied" event with src change detected). The detaching event following an attach attempt could allow application to retry attaching.

For v2.0, attachMedia could be made to return a Promise, which resolved on attached and is rejected if interrupted or the media element errors.

Resolves issues:

Resolves #4952

Checklist

  • changes have been done against master branch, and PR does not conflict
  • new unit / functional tests have been added (whenever applicable)
  • API or design changes are documented in API.md

@robwalch robwalch marked this pull request as ready for review February 3, 2023 03:15
@itsjamie
Copy link
Collaborator

itsjamie commented Feb 3, 2023

If they've requested the action, and it has failed, giving that information back makes sense.

However, to this question:

In addition to these changes, should the player “auto detach” if the media element is emptied externally after sourceopen?

I don't think that hls.js should start to make changes in addition to what the user has requested, because then the actual state to the average user is non-deterministic and requires far more intimate knowledge of what the underlying API does, breaking the abstraction.

logger.error(
`Media reset while attaching MediaSource, detaching media (${_objectUrl} > ${media.src})`
);
this.hls.detachMedia();
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If they've requested the action, and it has failed, giving that information back makes sense.

In v2.0 attachMedia can return a Promise.

In addition to these changes, should the player “auto detach” if the media element is emptied externally after sourceopen?

I don't think that hls.js should start to make changes in addition to what the user has requested, because then the actual state to the average user is non-deterministic and requires far more intimate knowledge of what the underlying API does, breaking the abstraction.

To be completely safe, I will remove this call to detachMedia. I don't think the detached event provides a reliable mechanism to recover. Changing src while opening a MediaSource can result in the media element entering an error state.

Comment on lines 816 to 819
logger.error(
`Media reset while attaching MediaSource, detaching media (${_objectUrl} > ${media.src})`
);
this.hls.detachMedia();
Copy link
Collaborator Author

@robwalch robwalch Feb 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@itsjamie what do you think?

Suggested change
logger.error(
`Media reset while attaching MediaSource, detaching media (${_objectUrl} > ${media.src})`
);
this.hls.detachMedia();
logger.error(
`Media element src was set while attaching MediaSource (${_objectUrl} > ${media.src})`
);

The cap-level and fps controllers will use the media element after onMediaAttaching even without the MediaSource completing it's task. Detaching would prevent this.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the messaging. For the onMediaAttaching continuing to fire thoughts on those controllers using onMediaAttached instead?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense for the fps controller, since it's entire operation is based on getVideoPlaybackQuality() dropped frames. For the cap controller, there may be a need to get element dimensions sooner rather than later so that the selected media matches the player size on start. I don't think a change is needed now. Plan is to deliver this in today's v1.3.3 patch. We can continue if there's additional feedback from users in #4952 using the patch.

@robwalch robwalch added this to the 1.3.3 milestone Feb 7, 2023
@robwalch robwalch merged commit ab06d97 into master Feb 7, 2023
@robwalch robwalch deleted the enhancement/detach-on-emptied-with-new-src branch February 7, 2023 23:00
yajin2021 added a commit to DiceTechnology/hls.js that referenced this pull request Feb 27, 2023
* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
yajin2021 added a commit to DiceTechnology/hls.js that referenced this pull request May 5, 2023
* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
eowino pushed a commit to DiceTechnology/hls.js that referenced this pull request Jan 16, 2024
* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
eowino pushed a commit to DiceTechnology/hls.js that referenced this pull request Jan 16, 2024
* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
eowino pushed a commit to DiceTechnology/hls.js that referenced this pull request Jan 16, 2024
* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
eowino added a commit to DiceTechnology/hls.js that referenced this pull request Jan 17, 2024
* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore(deps): update babel monorepo to v7.21.5

* chore(deps): update dependency @microsoft/api-extractor to v7.34.5

* chore(deps): update dependency @babel/core to v7.21.8

* chore(deps): update dependency @microsoft/api-extractor to v7.34.6

* chore(deps): update dependency @microsoft/api-extractor to v7.34.8

* chore(deps): update dependency @types/chai to v4.3.5

* chore(deps): update dependency rollup to v3.21.1

* chore(deps): update dependency rollup to v3.21.5

* chore(deps): update dependency eventemitter3 to v5.0.1

* fix: partial audiovideo fragments not being treated as partial (video-dev#5460)

Fragments which contain both audio and video also need to be checked if
they are partial. We check for them individually, but there are cases
when only the one flag is set.

* Fix AV desync regression in v1.4.0 when mp4 audio track timestamps start before video track timestamps (video-dev#5471)

Fixes video-dev#5452

* chore(deps): update dependency wrangler to v2.18.0

* chore(deps): update dependency chromedriver to v112.0.1

* chore(deps): update dependency wrangler to v2.20.0

* Allow live level loading to recover from net::ERR_NETWORK_IO_SUSPENDED errors (video-dev#5473)

* Remove startLoad() as recovery method from API.md doc (video-dev#5478)

video-dev#5476

* Fix first fragment ejection tracking (video-dev#5480)

Fixes video-dev#5482

* Provide light ESM dist file (video-dev#5486)

* Playlist loading errors are fatal after all levels and retries exhausted (video-dev#5498)

Fixes video-dev#5488

* Adjust parsed TS AVC samples when start PTS overlaps with last DTS (video-dev#5500)

Resolves video-dev#5477

* Fix TS probing false positives by requiring 2-3 packet start bytes to be matched or more if first byte does not match sync word (video-dev#5503)

Fixes video-dev#5501

* Use input timescale when normalizing metadata cue timestamps (video-dev#5505)

Fixes video-dev#5504

* Resume fragment loading after level switch follows level error
Fixes video-dev#5498

(cherry picked from commit 1d7de74)

* Do not adjust the end time of metadata cues that overlap with cues of another type (id3, emsg, daterange)
Fixes video-dev#5531

* Keep level switch error actions within player constraints

Fixes video-dev#5566

* Patch/v1.4.0 doris (#79)

* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>

* Patch/v1.4.1 doris (#80)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore: Modify version

* chore: remove package-lock.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>

* Update DiceTechnology/hls.js to v1.4.3(#81)

* Patch/v1.4.4 doris (#82)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore(deps): update babel monorepo to v7.21.5

* chore(deps): update dependency @microsoft/api-extractor to v7.34.5

* chore(deps): update dependency @babel/core to v7.21.8

* chore(deps): update dependency @microsoft/api-extractor to v7.34.6

* chore(deps): update dependency @microsoft/api-extractor to v7.34.8

* chore(deps): update dependency @types/chai to v4.3.5

* chore(deps): update dependency rollup to v3.21.1

* chore(deps): update dependency rollup to v3.21.5

* chore(deps): update dependency eventemitter3 to v5.0.1

* fix: partial audiovideo fragments not being treated as partial (video-dev#5460)

Fragments which contain both audio and video also need to be checked if
they are partial. We check for them individually, but there are cases
when only the one flag is set.

* Fix AV desync regression in v1.4.0 when mp4 audio track timestamps start before video track timestamps (video-dev#5471)

Fixes video-dev#5452

* chore(deps): update dependency wrangler to v2.18.0

* chore(deps): update dependency chromedriver to v112.0.1

* chore(deps): update dependency wrangler to v2.20.0

* Allow live level loading to recover from net::ERR_NETWORK_IO_SUSPENDED errors (video-dev#5473)

* Remove startLoad() as recovery method from API.md doc (video-dev#5478)

video-dev#5476

* Fix first fragment ejection tracking (video-dev#5480)

Fixes video-dev#5482

* Provide light ESM dist file (video-dev#5486)

* Playlist loading errors are fatal after all levels and retries exhausted (video-dev#5498)

Fixes video-dev#5488

* Adjust parsed TS AVC samples when start PTS overlaps with last DTS (video-dev#5500)

Resolves video-dev#5477

* Fix TS probing false positives by requiring 2-3 packet start bytes to be matched or more if first byte does not match sync word (video-dev#5503)

Fixes video-dev#5501

* Use input timescale when normalizing metadata cue timestamps (video-dev#5505)

Fixes video-dev#5504

* chore: change package.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>

* 1.4.6

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>
Co-authored-by: yajin2021 <83813017+yajin2021@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
Co-authored-by: Hongfei Huang <83795629+hongfeih-es@users.noreply.github.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>
eowino added a commit to DiceTechnology/hls.js that referenced this pull request Apr 5, 2024
* chore(deps): update typescript-eslint monorepo to v6.17.0

* chore(deps): update babel monorepo to v7.23.7

* chore(deps): update dependency rollup to v4.9.2

* chore(deps): update dependency rollup to v4.9.4

* Fix codec parsing for AVC streams (video-dev#6077)

* Force auto level on emergency switch down (video-dev#6082)

Update estimates on frag load timeout
Do not abort request in _abandonRulesCheck
Remove two segment forward buffer length limit in _abandonRulesCheck
Reset estimate when candidate bitrate is lower than adjusted estimate
Resolves video-dev#6079

* chore(deps): update dependency wrangler to v3.22.2

* chore(deps): update dependency wrangler to v3.22.4

* chore(deps): update dependency @microsoft/api-documenter to v7.23.16

* chore(deps): update dependency @microsoft/api-extractor to v7.39.1

* Null CMCD callbacks on destroy (video-dev#6098)

* Fix regression where subtitle options with AUTOSELECT and FORCED are enabled at start (video-dev#6094)

* Do not enable subtitle options with AUTOSELECT=YES attribute
* Update and add initial selection tests for subtitle-controller
* Only pick forced subtitle option if it is the only one
Add default field to audio and subtitle selection options and forced field to subtitle selection option
* Address TextTrack change event overriding subtitle preference
Fix _TRACKS_UPDATED and _TRACK_SWITCH event order when preference is selected
* Do not auto select subtitle options with FORCED=YES attribute

* Update artifact actions (video-dev#6099)

* Update functional tests to run on Safari using MacOS 13 (video-dev#6101)

* Update functional tests to run on Safari using MacOS 13

* Skip smooth switch test in Safari on streams with overlapping appends

* Omit VOD "ended" event tests with overlapping appends from Safari

* chore(deps): update dependency chai to v4.4.0

* chore(deps): update dependency chai to v4.4.1

* chore(deps): update typescript-eslint monorepo to v6.18.0

* chore(deps): update typescript-eslint monorepo to v6.18.1

* Use AAC SBR (HE-AAC) workaround on Pale Moon (video-dev#6111)

* Patch/v1.4.0 doris (#79)

* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>

* Patch/v1.4.1 doris (#80)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore: Modify version

* chore: remove package-lock.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>

* Update DiceTechnology/hls.js to v1.4.3(#81)

* Patch/v1.4.4 doris (#82)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore(deps): update babel monorepo to v7.21.5

* chore(deps): update dependency @microsoft/api-extractor to v7.34.5

* chore(deps): update dependency @babel/core to v7.21.8

* chore(deps): update dependency @microsoft/api-extractor to v7.34.6

* chore(deps): update dependency @microsoft/api-extractor to v7.34.8

* chore(deps): update dependency @types/chai to v4.3.5

* chore(deps): update dependency rollup to v3.21.1

* chore(deps): update dependency rollup to v3.21.5

* chore(deps): update dependency eventemitter3 to v5.0.1

* fix: partial audiovideo fragments not being treated as partial (video-dev#5460)

Fragments which contain both audio and video also need to be checked if
they are partial. We check for them individually, but there are cases
when only the one flag is set.

* Fix AV desync regression in v1.4.0 when mp4 audio track timestamps start before video track timestamps (video-dev#5471)

Fixes video-dev#5452

* chore(deps): update dependency wrangler to v2.18.0

* chore(deps): update dependency chromedriver to v112.0.1

* chore(deps): update dependency wrangler to v2.20.0

* Allow live level loading to recover from net::ERR_NETWORK_IO_SUSPENDED errors (video-dev#5473)

* Remove startLoad() as recovery method from API.md doc (video-dev#5478)

video-dev#5476

* Fix first fragment ejection tracking (video-dev#5480)

Fixes video-dev#5482

* Provide light ESM dist file (video-dev#5486)

* Playlist loading errors are fatal after all levels and retries exhausted (video-dev#5498)

Fixes video-dev#5488

* Adjust parsed TS AVC samples when start PTS overlaps with last DTS (video-dev#5500)

Resolves video-dev#5477

* Fix TS probing false positives by requiring 2-3 packet start bytes to be matched or more if first byte does not match sync word (video-dev#5503)

Fixes video-dev#5501

* Use input timescale when normalizing metadata cue timestamps (video-dev#5505)

Fixes video-dev#5504

* chore: change package.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>

* 1.5.1

* chore(deps): update dependency rollup to v4.9.5

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.6

* chore(deps): update dependency @babel/preset-env to v7.23.8

* chore(deps): update typescript-eslint monorepo to v6.19.0

* chore(deps): update typescript-eslint monorepo to v6.19.1

* Use WebCrypto by default and only use software as a fallback if enabled (video-dev#6015)

Fixes use of  `enableSoftwareAES` to match the docs and the intended behavior when added in video-dev#99

* Null inline class JavaScript Event callback properties on destroy (video-dev#6102)

* chore(deps): update dependency @microsoft/api-documenter to v7.23.17

* chore(deps): update dependency @microsoft/api-documenter to v7.23.18

* chore(deps): update dependency @microsoft/api-documenter to v7.23.19

* chore(deps): update dependency wrangler to v3.22.5

* chore(deps): update dependency wrangler to v3.24.0

* Remove user-agent check from "mp4a.40.34" to "mp3" and "audio/mpeg" fallback (video-dev#6130)

Fixes video-dev#6125

* Adding AES-256 and AES-256-CTR encryption modes

* fix: generate silent aac frame based on original codec (video-dev#6123)

* Lazy init CEA608 parsers (2) (video-dev#6127)

* Use average for level sorting and abandon rules check (video-dev#6135)

Fixes video-dev#6122

* User unique logger configurations across instances of Hls(js)
Resolves video-dev#2461

* chore(deps): update dependency @svta/common-media-library to v0.6.2

* Use average for level sorting and abandon rules check (video-dev#6135) (video-dev#6146)

Fixes video-dev#6122

* Add MEDIA_ENDED event (forwards "ended" event, or emits when stalling begins near end of VOD) (video-dev#6141)

* chore(deps): update dependency chromedriver to v120.0.2

* chore(deps): update dependency rollup to v4.9.6

* feat: add support for CMCD nor (video-dev#6091)

* feat: add support for CMCD nor
* deps: update @svta/common-media-library to version 0.6.2
Resolves video-dev#6088

* fix(Remuxer): Safari segment overlap ensure PTS order (video-dev#6132)

* fix(Remuxer): Safari segment overlap ensure PTS alignment

* Fix regression in hls.light.js selection (video-dev#6155)

Fixes video-dev#6151

* chore(deps): update dependency selenium-webdriver to v4.17.0

* chore(deps): update dependency @microsoft/api-extractor to v7.39.2

* chore(deps): update dependency @microsoft/api-extractor to v7.39.4

* Fix regression in hls.light.js selection (video-dev#6157)

Fixes video-dev#6151

* chore(deps): update dependency husky to v9 (video-dev#6165)

* chore(deps): update dependency husky to v9

* Make changes for new husky

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>

* chore(deps): update actions/cache action to v4 (video-dev#6143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency prettier to v3.2.4 (video-dev#6124)

* chore(deps): update dependency prettier to v3.2.4

* Run prettier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>

* Disable `AppleAdvancedHevcAvcHls` stream for now due to cors errors (video-dev#6176)

* chore(deps): update babel monorepo to v7.23.9

* chore(deps): update dependency @microsoft/api-documenter to v7.23.20

* chore(deps): update dependency wrangler to v3.25.0

* chore(deps): update dependency chromedriver to v121 (video-dev#6162)

* chore(deps): update dependency wrangler to v3.26.0

* chore(deps): replace dependency npm-run-all with npm-run-all2 5.0.0 (video-dev#6153)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency npm-run-all2 to v5.0.2

* chore(deps): update dependency husky to v9.0.7

* chore(deps): update dependency husky to v9.0.10

* chore(deps): update typescript-eslint monorepo to v6.20.0

* chore(deps): update typescript-eslint monorepo to v6.21.0

* Revert "Disable `AppleAdvancedHevcAvcHls` stream for now due to cors errors (…" (video-dev#6187)

This reverts commit e3f4d4d.

* Use main playlist details to determine start position of audio and subtitle streaming controllers
Fixes video-dev#6126

* Fix regression that removed (unofficial) support for `startLevel` above max level index
Fixes video-dev#6172

* Account for overlapping sidx subsegment durations by parsing earlierstPresentationTime
Fixes video-dev#6191

* Use main playlist details to determine start position of audio and subtitle streaming controllers
Fixes video-dev#6126

(cherry picked from commit 35c773d)

* Fix regression that removed (unofficial) support for `startLevel` above max level index
Fixes video-dev#6172

(cherry picked from commit 88d54a9)

* Account for overlapping sidx subsegment durations by parsing earlierstPresentationTime
Fixes video-dev#6191

(cherry picked from commit aadb239)

* Handle ManagedMediaSource endStreaming events without aborting requests

* Feature/mpeg ts hevc (video-dev#5847)

* Modify video parser and ts-demuxer to support NALu streams other than AVC
* Process HEVC in mpeg-ts container
---------
Co-authored-by: vladimir.vyatkin <vladimir.vyatkin@portal59.ru>

* Do not include HEVC in TS support in hls.light (compiled out by __USE_M2TS_ADVANCED_CODECS__)

* chore(deps): update dependency lint-staged to v15.2.1

* chore(deps): update dependency lint-staged to v15.2.2

* Update API.md for CMCD `includeKeys`

* Global exported logger uses the log methods from last call to `enableLogs`
Follow up to video-dev#6131

* Skip segment and part directives when last LL-HLS response is older than three target durations
Fix Media Playlist 'advanced' state when no Multivariant Playlist is provided
Related to video-dev#6076

* Switch between part and fragment loading at start and on segment boundary appends

* Fix subtitle stream controller buffered TimeRanges

* chore(deps): update dependency semver to v7.6.0

* chore(deps): update dependency @microsoft/api-documenter to v7.23.21

* chore(deps): update dependency @microsoft/api-documenter to v7.23.23

* chore(deps): update dependency @microsoft/api-extractor to v7.39.5

* chore(deps): update dependency @microsoft/api-extractor to v7.40.1

* Fix subtitle stream controller buffered TimeRanges

* chore(deps): update dependency wrangler to v3.27.0

* chore(deps): update dependency wrangler to v3.28.2

* chore(deps): update dependency mocha to v10.3.0

* Fix issues with detached and destroyed level selection (video-dev#6216)

* Fix issues with detached and destroyed level selection (video-dev#6216)

* chore(deps): update dependency rollup to v4.10.0

* chore(deps): update dependency rollup to v4.12.0

* fix index offset in sidx parsing (video-dev#6221)

* fix index offset in sidx parsing (video-dev#6221)

(cherry picked from commit e18d394)

* Add no-op comment to empty statement (fix lint error)

* Block audio append queue to keep AV appends in lock-step

* Reduce length of ESDS box guard statement

* rutube logo for they use section

* chore(deps): update dependency husky to v9.0.11

* Don't flush buffer on cap-level change when in manual selection mode (video-dev#6223)

* Don't switch level if current already greater or equal
* Don't switch level if autoLevel disabled
---------
Co-authored-by: Vladimir Polomanov <vpolomanov@rutube.ru>

* Fix audio/subtitles stream controllers restarting on switch after stopped
Update stream controller access specifiers

* Cleanup buffer-helper functions and remove nested try-catch statements

* Fix pauseBuffering() dev regression

* chore(deps): update dependency chromedriver to v121.0.1

* chore(deps): update dependency eslint-plugin-mocha to v10.3.0

* chore(deps): update dependency chromedriver to v121.0.2

* chore(deps): update dependency wrangler to v3.28.3

* chore(deps): update dependency @microsoft/api-documenter to v7.23.24

* chore(deps): update dependency @microsoft/api-extractor to v7.40.2

* chore(deps): update dependency @microsoft/api-extractor to v7.40.6

* chore(deps): update dependency wrangler to v3.29.0

* chore(deps): update dependency @microsoft/api-documenter to v7.23.30

* Fix compatibility of ManagedMediaSource implementation with Edge 18
Fixes video-dev#6243

* chore(deps): update dependency selenium-webdriver to v4.18.1

* Clean up base-stream-controller

* Don't pass log functions with player id to global logger

* Clear media from cap-level-controller on detach

* remove iphone compatibility note since its supported through mms

* added more info for iOS 17.1+ support

* Run Prettier to address lint error

* chore(deps): update dependency @types/chai to v4.3.12

* Ensure media element references are removed after calling detachMedia

* chore(deps): update dependency eslint to v8.57.0

* chore(deps): update dependency karma to v6.4.3

* chore(deps): update dependency @microsoft/api-extractor to v7.41.0

* chore(deps): update dependency @microsoft/api-extractor to v7.42.2

* chore(deps): update dependency @microsoft/api-documenter to v7.23.31

* chore(deps): update dependency @microsoft/api-documenter to v7.23.35

* chore(deps): update dependency wrangler to v3.30.0

* chore(deps): update dependency wrangler to v3.31.0

* chore(deps): update babel monorepo to v7.24.0

* chore(deps): update dependency @svta/common-media-library to v0.6.3

* chore(deps): update dependency @svta/common-media-library to v0.6.4

* chore(deps): update dependency chromedriver to v122 (video-dev#6250)

* chore(deps): update typescript-eslint monorepo to v7 (video-dev#6225)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency npm-run-all2 to v6 (video-dev#6179)

* chore(deps): update dependency @microsoft/api-documenter to v7.23.36

* chore(deps): update dependency @microsoft/api-documenter to v7.23.37

* chore(deps): update dependency @microsoft/api-extractor to v7.42.3

* chore(deps): update typescript-eslint monorepo to v7.1.1

* chore(deps): update typescript-eslint monorepo to v7.2.0

* chore(deps): update dependency rollup to v4.12.1

* chore(deps): update dependency rollup to v4.13.0

* chore(deps): update dependency typescript to v5.4.2

* chore(deps): update dependency eslint-plugin-mocha to v10.4.0

* chore(deps): update dependency eslint-plugin-mocha to v10.4.1

* chore(deps): update dependency wrangler to v3.32.0

* chore(deps): update dependency wrangler to v3.34.2

* chore(deps): update dependency chromedriver to v122.0.5

* chore(deps): update dependency chromedriver to v122.0.6

* 1.5.7

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Jakub Perżyło <qizot1405@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: Pat Nafarrete <pnaf@users.noreply.github.com>
Co-authored-by: yajin2021 <83813017+yajin2021@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
Co-authored-by: Hongfei Huang <83795629+hongfeih-es@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>
Co-authored-by: root <root@jvarydeb>
Co-authored-by: FredTsang <zengzhifeng@cvte.com>
Co-authored-by: Rob Walch <rwalch@apple.com>
Co-authored-by: Casey Occhialini <1508707+littlespex@users.noreply.github.com>
Co-authored-by: Asen-O-Nikolov <98342935+Asen-O-Nikolov@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tom@tjenkinson.me>
Co-authored-by: Vladmir Vyatkin <voldemarpro@hotmail.com>
Co-authored-by: Nikola Hristov <nklhtv@gmail.com>
Co-authored-by: Pavel Fomin <pfomin@rutube.ru>
Co-authored-by: Vladimir Polomanov <67444538+corndev27@users.noreply.github.com>
Co-authored-by: Felix Groove <felix.groove@lhind.dlh.de>
Co-authored-by: Rob Walch <rob@jwplayer.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Order of attachMedia and loadSource calls is inconsistent in docs and causes inconsistent results
2 participants