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

Feature/mpeg ts hevc #5847

Merged
merged 2 commits into from
Feb 7, 2024
Merged

Conversation

devoldemar
Copy link
Contributor

@devoldemar devoldemar commented Sep 23, 2023

New features

  • Playing HEVC video in MPEG-2 TS container
  • Check if target browser may decode HEVC stream

Resolves issues:

#5450
#4943

Checklist

  • Changes have been done against master branch, and PR should not conflict
  • New stream was added to functional test, same video as hosted on devstreaming-cdn.apple.com but re-packed in TS container
  • Sanity-checked and tested successfully
  • New features are mentioned in README.md

Copy link
Collaborator

@robwalch robwalch left a comment

Choose a reason for hiding this comment

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

Thank you for the contribution. I think this PR should replace (stale) #5734.

I scanned the changes and am requesting feedback/change on the sps re-parsing change for possible regression ❗#5847 (comment). Other comments 💬 are np.

I will need to review again in more detail and perform some testing before approval. I'd also like @softworkz to provide a review as they have expressed interest in m2ts hevc support in the past.

src/demux/video/avc-video-parser.ts Outdated Show resolved Hide resolved
src/demux/video/avc-video-parser.ts Outdated Show resolved Hide resolved
tests/test-streams.js Show resolved Hide resolved
Copy link
Contributor

@softworkz softworkz left a comment

Choose a reason for hiding this comment

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

I have carefully compared the SPS/VPS parsing to an earlier implementation I had done and besides the two missing cases, it looks all good.

Yet, I've been just looking through the code for now, haven't come to test it yet.

Thanks

src/demux/tsdemuxer.ts Outdated Show resolved Hide resolved
src/demux/tsdemuxer.ts Outdated Show resolved Hide resolved
src/demux/tsdemuxer.ts Outdated Show resolved Hide resolved
src/demux/tsdemuxer.ts Outdated Show resolved Hide resolved
src/demux/tsdemuxer.ts Outdated Show resolved Hide resolved
tests/test-streams.js Show resolved Hide resolved
src/demux/video/base-video-parser.ts Outdated Show resolved Hide resolved
src/demux/video/hevc-video-parser.ts Outdated Show resolved Hide resolved
src/demux/video/hevc-video-parser.ts Outdated Show resolved Hide resolved
src/demux/video/hevc-video-parser.ts Show resolved Hide resolved
@devoldemar devoldemar force-pushed the feature/mpeg-ts-hevc branch 2 times, most recently from 36d80f2 to 0bea815 Compare September 24, 2023 15:26
Copy link
Contributor

@softworkz softworkz left a comment

Choose a reason for hiding this comment

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

I didn't go through all the bit-parsing again, I'm sure you fixed it properly.
I hope I'll be able to test it shortly, but for the code review, at least those parts where I know a bit are looking good to me know.

Thanks

@monyone
Copy link

monyone commented Sep 27, 2023

The HEVC parser bug in mpegts.js (in mpegts.js already fixed) is present as same in this PR.
It's a bit odd.
(xqq/mpegts.js@b6efc69 and xqq/mpegts.js@b9c605b are fix commit, same problem in this hevc-video-parser.ts)

For example, must fixed_pic_rate_within_cvs_flag infer true if fixed_pic_rate_general_flag is true, this code base infer false same as older mepgts.js.
Thus, if HEVC contains HRD paramsters, this parser parsing failed and can't play such stream.

I would not like to have the same bugs in hls.js.

@devoldemar
Copy link
Contributor Author

The HEVC parser bug in mpegts.js (in mpegts.js already fixed) is present as same in this PR. It's a bit odd. (xqq/mpegts.js@b6efc69 and xqq/mpegts.js@b9c605b are fix commit, same problem in this hevc-video-parser.ts)

For example, must fixed_pic_rate_within_cvs_flag infer true if fixed_pic_rate_general_flag is true, this code base infer false same as older mepgts.js. Thus, if HEVC contains HRD paramsters, this parser parsing failed and can't play such stream.

I would not like to have the same bugs in hls.js.

Fixed, tested. Thanks!

@devoldemar devoldemar force-pushed the feature/mpeg-ts-hevc branch 2 times, most recently from cd06ecf to bf595f0 Compare October 7, 2023 07:07
@devoldemar devoldemar requested a review from robwalch October 8, 2023 08:23
@CamiloPenagos99
Copy link

"Hello, I would like to know where we would find support for HEVC video in an MPEG-2 TS container.

@devoldemar devoldemar force-pushed the feature/mpeg-ts-hevc branch from bf595f0 to 621065e Compare November 5, 2023 13:05
@devoldemar
Copy link
Contributor Author

Force-pushed with amends required by eslint

@robwalch robwalch mentioned this pull request Nov 16, 2023
3 tasks
@robwalch robwalch linked an issue Nov 16, 2023 that may be closed by this pull request
@robwalch robwalch self-requested a review November 17, 2023 02:13
@devoldemar
Copy link
Contributor Author

"Hello, I would like to know where we would find support for HEVC video in an MPEG-2 TS container.

git clone https://github.com/devoldemar/hls.js
git checkout feature/mpeg-ts-hevc

src/is-supported.ts Outdated Show resolved Hide resolved
@qqaimh
Copy link

qqaimh commented Dec 28, 2023

Is there any progress?

@RsknCankov
Copy link

@devoldemar is there any resource on your side to proceed with the requested changes on that one? Thats really crucial feature for this project

@devoldemar
Copy link
Contributor Author

devoldemar commented Jan 14, 2024

@devoldemar is there any resource on your side to proceed with the requested changes on that one? Thats really crucial feature for this project

The changes requested are made, all conversations above are marked as resolved.
You may ask @robwalch ...
Nevertheless, the solution works, and you can merge it. Especially, if the stream to be played is a realtime one, e.g. from surveillance camera - such a stream cannot implement sophisticated relationships between NAL units.

@devoldemar
Copy link
Contributor Author

It only worked out of the box with Safari, not Chrome, nor Firefox.

Am I missing something? Is there anything I can do to debug this and potentially troubleshoot still existing issues with this PR?

The stream has problems with timestamps. But generally it's played via hls.js (this fork) without errors.
In case of Google Chrome, please, make sure that hardware acceleration is on (see browser Settings), and decoding of HEVC video is supported by GPU in your device (see chrome://gpu).
Latest FF build can play HEVC in theory but relies on Windows media foundation as well as hardware capabilities (see elsewhere).

@busybox11
Copy link

Hi @devoldemar!
Thanks for the very quick response, and apologies for the confusion.

I had a hard time with CORS and web security things yesterday, for some reason I didn't register the "mixed-contents" error as a fixable error but rather a CORS issue.
Guess I shouldn't debug at 5am lol - that explains why it did load in localhost, this security doesn't have any effect on it.

You're right, it does play without errors. Apologies once again!

I can confirm my hardware supports HEVC decoding. I tested this on both an M2 Pro Macbook Pro running MacOS Sonoma and a ROG Zephyrus G15, Ryzen 9 5900HS and RTX 3070 running ArchLinux. All of my hardware support HEVC, and can do it on native video players using hardware acceleration. Chrome / Firefox do report HEVC support as well.

You mentioned timestamp problems. I tried looking into it but didn't get any encouraging results. What's the issue about them? Is there anything I can do about it? Again, I'm not an expert - I really hope this isn't bothering you!

Copy link
Collaborator

@robwalch robwalch left a comment

Choose a reason for hiding this comment

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

Waiting on conflicts to be resolved before final review and merge.

case 'avc':
this.videoParser = new AvcVideoParser();
break;
case 'hevc':
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd like to know the size difference of hls.js ans hls.light.js before and after these changes. I think we'll want __USE_M2TS_ADVANCED_CODECS__ to conditionally omit HEVC in TS support like it does for AC3 (at points like this and on the entire hevc-video-parser.ts file). It doesn't have to be part of this PR, but we still need to maintain a small light build with the same baseline features.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, I also thought about possible use of __USE_M2TS_ADVANCED_CODECS__ and conditional replacement of hevc-video-parser.ts by empty.js, for original version of hls.js. If all another issues are resolved. Let me know if my assistance is needed.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Here's the change #6194

robwalch
robwalch previously approved these changes Jan 29, 2024
@devoldemar
Copy link
Contributor Author

Waiting on conflicts to be resolved before final review and merge.

I created test branch (forked at my last commit) and rebased onto master one without severe conflicts. So there're no obstacles for a history with minimum merge commits, if it's preferable.
The only question would be whether to keep original commit dates or to rewrite them.

@robwalch
Copy link
Collaborator

robwalch commented Feb 3, 2024

The only question would be whether to keep original commit dates or to rewrite them.
Up to you.

@devoldemar devoldemar force-pushed the feature/mpeg-ts-hevc branch from ec2f715 to 69e8b46 Compare February 4, 2024 16:44
@devoldemar devoldemar force-pushed the feature/mpeg-ts-hevc branch from 69e8b46 to 934b7df Compare February 4, 2024 18:22
@devoldemar
Copy link
Contributor Author

devoldemar commented Feb 4, 2024

The branch has been rebased onto actual master. Only two commits were left: changes in architecture, parse and remux of H.265 video (later commits were squashed into that one).

@robwalch robwalch added this to the 1.6.0 milestone Feb 7, 2024
@robwalch robwalch merged commit 40ba183 into video-dev:master Feb 7, 2024
12 checks passed
@krystal-bin
Copy link

"Hello, I would like to know where we would find support for HEVC video in an MPEG-2 TS container.

git clone https://github.com/devoldemar/hls.js
git checkout feature/mpeg-ts-hevc

HEVC video in MPEG-2 TS container can play well in chrome. But in edge the version number is 123.0.2420.65, we can only see the first frame in video, then the frame will not change.
here is my test file.
m3u8_hevc.zip

Copy link

@wolflikeme200 wolflikeme200 left a comment

Choose a reason for hiding this comment

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

protected createVideoSample(

@krystal-bin
Copy link

protected createVideoSample(

how to solve it

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 #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>
@robwalch robwalch mentioned this pull request Jun 12, 2024
3 tasks
@Apezdr
Copy link

Apezdr commented Sep 18, 2024

Any movement on getting this integrated? If the browser environment supports HEVC I'd think that HLS should support it also, just a thought. Not sure how to work around this in the meantime.

@robwalch
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support for H.265/HEVC in MPEG2-TS