Commit Graph

7953 Commits

Author SHA1 Message Date
Shaka Bot 04a720fe40 chore(v5.1.x): release 5.1.6 (#10123) v5.1.6 2026-05-25 12:37:57 +02:00
absidue 21f7ad8e36 perf(transmuxer): Write nalu lengths directly into combined buffer in h265 (#10119) 2026-05-25 09:54:51 +02:00
absidue a930801fe8 fix(UI): Fix blurry seek bar marks (#10097)
On long videos with lots of chapters Chromium based browser were showing
the chapter markers as blury lines instead of clearly defined lines.
This solves that problem by taking advantage of the fact that CSS
supports multiple backgrounds and creates a separate one for each
chapter. It also applies the same change to the ad markers.
2026-05-25 09:54:51 +02:00
Joey Parrish 44e9cb6630 docs: Fix missing details on TextDisplayer in upgrade docs (#10116) 2026-05-25 09:54:51 +02:00
Álvaro Velad Galván 6dcf8ba463 fix: Map the "audio/x-mpegurl" MIME type as HLS (#10114) 2026-05-25 09:54:51 +02:00
Joey Parrish 7d1bec38e9 fix: Fix XML node attribute externs (#10111) 2026-05-25 09:54:51 +02:00
Shaka Bot d5cd3072ad chore(v5.1.x): release 5.1.5 (#10105) v5.1.5 2026-05-18 12:56:36 +02:00
Ivan 13b9ba1cab perf(Mp4Generator): assemble segment data in a single allocation (#10101)
This PR reduces allocation pressure in MP4 segment generation by writing
mdat data directly into the final segment buffer - this avoids one full
media-payload copy per segment
2026-05-18 11:00:27 +02:00
Álvaro Velad Galván d90d2217a6 fix(HLS): Fix timeline sync gaps on discontinuity sequences (#10087)
Calculates and compensates for PDT drift only when the discontinuity
sequence changes, preventing timeline breaks during manifest updates.

Fixes https://github.com/shaka-project/shaka-player/issues/10084
2026-05-18 10:46:42 +02:00
absidue 29533bdfee perf(transmuxer): Avoid repeatedly creating empty Uint8Arrays (#10100)
In `H264.getVideoSamples()` `lastVideoSample.data` is initialized with
an empty `Uint8Array` which is always replaced before the sample is
pushed into the `videoSamples` array, so to avoid creating a new empty
placeholder `Uint8Array` for each sample, the empty `Uint8Array` can be
created once and then use to initialize all `lastVideoSample` objects in
that segment.

`TSParser.parsePES_` had a similar placeholder empty `Uint8Array` issue,
which I was able to resolve by creating the PES object in the return
statement instead of upfront, that way it can be initialized with the
final data, avoiding the placeholder.

While yes empty Uint8Arrays definitely need less memory than larger
ones, it is still better to not create 100+ unnecessary objects in rapid
succession which then need to be cleaned up by the garbage collector
later on.
2026-05-18 10:46:42 +02:00
absidue 45c86eaca1 chore: Tidy up array pop() with subsequent re-push() (#10099) 2026-05-18 10:46:42 +02:00
Álvaro Velad Galván ec305103f8 chore: Remove Sindarin translation (#10082)
Since it's a Lord of the Rings language, and maintenance is complicated
and it was added as an Easter Egg, it's simpler to remove it.
2026-05-18 10:46:41 +02:00
Ivan adbcec3bd2 perf(player): avoid full configuration deep-clone in time update callback (#10098)
This PR replaces a full-config deep-clone in Player.getBufferFullness()
with a direct read, removing a per-timeupdate allocation for playback
sessions that have liveSync configured, or `vodDynamicPlaybackRate`
2026-05-18 10:45:57 +02:00
absidue 6494c19526 perf(transmuxer): Reduce per-frame object allocations for h265, ac-3 and ec-3 (#10094)
This improves TS h265, TS AC-3, TS EC-3, raw AC-3 and raw EC-3 as the
transmuxer calls `parseFrame` for each frame in the payload passed to
the `transmux` method, for LOC h265 this is marginally worse as it only
calls `parseFrame` once per `transmux` call.
2026-05-18 10:45:55 +02:00
Álvaro Velad Galván 5cbf641002 refactor(UI): Simplify resolution label generation and track comparison (#10093) 2026-05-18 10:45:39 +02:00
Joey Parrish b6c0f11535 docs: Clean up upgrade doc (#10095)
- Remove duplicate entry in the 5.0 list
- Rename the 5.1 list as 6.0 (named for the version in which something
is removed, with a note about the deprecation version)
 - Reindent the set of related config changes

Noticed while preparing CAF for 5.0 compatibility
2026-05-18 10:45:39 +02:00
Álvaro Velad Galván 8172f5eb1a chore(Mp4Parser): introduce boxes() for multiple box registration (#10091) 2026-05-18 10:45:39 +02:00
absidue 7e030d93df chore: Make Mp4Generator.allocBox_ private and use it more (#10092) 2026-05-18 10:45:38 +02:00
taylorchu 4ab4e95649 fix: fix opus transmux sample duration (#10090)
We recorded a h264 + opus video and audio stream with chrome
mediarecorder api.

From debug mode, I noticed that transmuxed opus chunk was 3x shorter
than video, but ffmpeg showed that they should be about the same.

It turns out the duration is not set correctly. Before the fix, repeated
seeking will eventually get stuck. After this fix, I can verify that
seeking no longer is stuck.

Co-authored-by: Claude <noreply@anthropic.com>

---------

Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2026-05-18 10:45:37 +02:00
Álvaro Velad Galván 418bf05acb test: log user agent during tests (#10089) 2026-05-18 10:45:25 +02:00
Álvaro Velad Galván 45be4842a0 fix: force gap jump when stalled at the end of a buffer (#10086)
Ensures the GapJumpingController identifies gaps even if the playhead
hasn't technically exited the previous buffered range
2026-05-18 10:45:15 +02:00
Álvaro Velad Galván 484efeec9a docs: Copy tutorial content referenced in upgrade guide from older branches into the repo (#10072)
Issue: https://github.com/shaka-project/shaka-player/issues/9984
2026-05-18 10:45:15 +02:00
Álvaro Velad Galván 1dc3e27add fix(UI): Remove buffered bar delay after seeking (#10071)
Fixes https://github.com/shaka-project/shaka-player/issues/9842
2026-05-18 10:45:15 +02:00
Álvaro Velad Galván 972b57b306 fix(Offline): Only request the license on download when usePersistentLicense is true (#10074)
Fixes https://github.com/shaka-project/shaka-player/issues/10038
2026-05-18 10:45:15 +02:00
Ivan 1d987d71b2 perf(HLS): skip rebuilding known refs on live playlist refresh (#10075)
This PR reduces steady-state work during HLS live/DVR playlist refreshes
by avoiding already known segments' re-construction. Before this, on a
live playlist update, the parser would still call
createSegmentReference_() for every segment, though only the newly
appended tail was actually merged into the segment index.
2026-05-18 10:45:15 +02:00
Shaka Bot f1bf1d79a3 chore(v5.1.x): release 5.1.4 (#10081) v5.1.4 2026-05-11 13:38:18 +02:00
dependabot[bot] 37b093dc5d build(deps-dev): bump @babel/plugin-transform-modules-systemjs from 7.16.7 to 7.29.4 (#10076) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván 6a4b7aa739 fix(text): include regionAnchorX/Y in region cache key (#10073)
Region elements were cached by an ID that omitted regionAnchorX and
regionAnchorY, causing regions that shared the same viewport anchor but
differed in region anchor to reuse a previously cached DOM element
positioned incorrectly. Include both region anchor values in the
generated ID so each unique anchor combination gets its own element.

Issue: https://github.com/shaka-project/shaka-player/issues/2583
2026-05-11 11:07:29 +02:00
Ivan fad81e64d1 perf(media): replace slice with in-place array truncation (#10070)
This PR removes slice for a simpler truncation - especially good for
`merge` because we just truncate from the back. No need for allocation
for none of them anyway so this is an easy win
2026-05-11 11:07:29 +02:00
0xDragonLong 3dc5afff29 fix: Avoid race condition in concurrent getAllThumbnails calls (#10022) 2026-05-11 11:07:29 +02:00
absidue 94a82e0ecc perf: Remove unnecessary Uint8Array allocations in Mp4Generator (#10069)
Co-authored-by: Álvaro Velad Galván <ladvan91@hotmail.com>
2026-05-11 11:07:29 +02:00
Álvaro Velad Galván 0940ca364b test: Disable Dolby Vision p10 tests on Edge (#10067) 2026-05-11 11:07:29 +02:00
Joey Parrish c2a15ae118 chore: Add a note about default locales (#10068) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván 97c3ef09cf chore(Demo): Pass mimetype to preload (#10066) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván bd3960ad06 perf: Remove unnecessary allocations in Mp4Generator (#10059) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván ecd2c2da81 chore: Use shaka.drm.DrmUtils.isClearKeySystem where possible (#10058) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván c3d593d504 chore: Remove duplicated code (#10057) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván e810f08d19 fix(MSF): handle WebTransport.closed rejection to avoid Safari unhandled promise error (#10056) 2026-05-11 11:07:29 +02:00
Álvaro Velad Galván 3409636eda docs: Update README links (#10055)
Issue: https://github.com/shaka-project/shaka-player/issues/9984
2026-05-11 11:07:29 +02:00
Shaka Bot 48a5d65371 chore(v5.1.x): release 5.1.3 (#10054) v5.1.3 2026-05-04 14:03:09 +02:00
Dawid Laskowski 11ad3eb911 fix(UI): check if ad is linear before updating mute label and icon (#10044)
When linear ad was muted and there is still nonlinear ad mute button is
stuck with status of linear ad instead of video, this change fixes it
2026-05-04 12:50:05 +02:00
Ivan 2227133afb perf(DASH): lazy segment reference creation (#10050)
This PR extends work from #5061 to DASH SegmentTemplate@duration streams
by lazily creating fixed-duration segment references instead of building
the full index up front during manifest parsing
2026-05-04 12:50:05 +02:00
absidue 004ff8dfd2 perf: Remove unnecessary Uint8ArrayUtils.concat calls in Mp4Generator (#10047)
`Mp4Generator.box()` merges all arguments into one `Uint8Array`, so
arrays of `Uint8Arrays` can be spread directly into the
`Mp4Generator.box()` calls instead of doing the extra step of merging
them into a single `Uint8Array` first. I also included a drive-by change
to simplify `array.push(...[x, y])` into `array.push(x, y)` in the
`segmentData` method.
2026-05-04 12:50:05 +02:00
absidue 270f7ea751 perf(transmuxer): Merge consecutive Uint8Arrays in h265 transmuxer (#10046) 2026-05-04 12:50:05 +02:00
Joey Parrish 8797fe16a7 ci: Deploy demo releases to GitHub Pages (#10041)
This drops appspot deployments entirely.

 - Latest stable release build of the demo:
   https://shaka-project.github.io/shaka-player-release/
 - Latest dev build of the demo from `main`:
   https://shaka-project.github.io/shaka-player/

More cleanup is coming to turn down appspot and clean up any lingering
references to it.

Issue #9984
2026-05-04 12:50:05 +02:00
Shaka Bot 07b3e051cc chore(v5.1.x): release 5.1.2 (#10034) v5.1.2 2026-04-27 16:59:53 +02:00
dependabot[bot] 9c13a17a39 build(deps): bump postcss from 8.4.31 to 8.5.10 (#10030) 2026-04-27 14:48:34 +02:00
Álvaro Velad Galván 7751d5abb5 chore: Simplify shaka.util.Mp4Generator.StreamInfo info (#10029) 2026-04-27 14:48:34 +02:00
Álvaro Velad Galván 1d4fc9c7de chore: Remove videoNalus of shaka.util.Mp4Generator.StreamInfo (#10028)
This was used only for MSS, but we have now removed support for it.
2026-04-27 14:48:34 +02:00
Wojciech Tyczyński 74506c3db1 test: Fix customTrackLabel tests (#10026)
Provide consistent system language code in tests to avoid potential
failures on different systems.
2026-04-27 14:48:34 +02:00