Commit Graph
839 Commits
Author SHA1 Message Date
Vanilagy 22716b1f83 Merge branch 'main' into hls 2026-03-06 10:59:24 +01:00
6a11a1302c Fix CTS=0 in fragmented fMP4 with multiple tracks (#317)
* Fix CTS=0 in fragmented fMP4 with multiple tracks

When muxing fragmented MP4 with both video and audio tracks,
compositionTimeOffset (CTS) was zero for all video samples, causing
B-frame content to display in decode order instead of presentation
order (visible judder).

Root cause: During finalize(), interleaveSamples(true) triggers
finalizeFragment() via the cross-track keyframe check in
addSampleToTrack. This writes the trun box before processTimestamps
has computed correct decodeTimestamp values, so CTS = PTS - DTS = 0.

Fix: Call processTimestamps() for all tracks at the start of
finalizeFragment(). This is safe because processTimestamps is a no-op
when the timestampProcessingQueue is empty.

Video-only fragmented muxing was unaffected because the single-track
case never triggers the cross-track keyframe check during
interleaveSamples.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Fix the problem at the actual root

* Oopsie doopsie

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: Vanilagy <[email protected]>
2026-03-06 09:56:53 +00:00
Vanilagy 472dc113e3 Uhm v1.38.0 2026-03-05 19:58:10 +01:00
Vanilagy 193dcf0f14 Bump minor 2026-03-05 19:57:45 +01:00
Vanilagy f79834c3c1 Add frame rate-based sampling for MediaStreamVideoTrackSource, reducing the probability of files with wildly irregular FPS; add unthrottled timer primitives 2026-03-05 19:57:32 +01:00
Vanilagy 66185fed15 Clean up & clarify 2026-03-05 11:49:27 +01:00
Vanilagy fa4a0b4806 Merge branch 'main' into hls 2026-03-04 21:49:51 +01:00
Vanilagy 4172f81aa0 Upload FLAC artifacts in release CI 2026-03-04 21:27:21 +01:00
Vanilagy f37dd21947 Bump minor v1.37.0 2026-03-04 21:23:02 +01:00
Vanilagy a15283eaa3 Add @mediabunny/flac-encoder extension, clean up some other code, fix incorrect top-level tsconfig 2026-03-04 21:21:52 +01:00
Vanilagy 365469e64e Merge branch 'main' into hls 2026-03-04 17:33:16 +01:00
Vanilagy e18da824ce Make test more resilient v1.36.0 2026-03-04 17:12:40 +01:00
Vanilagy 506ad0c798 Bump minor 2026-03-04 17:08:02 +01:00
Vanilagy c4398fb88c Add @mediabunny/aac-encoder extension package 2026-03-04 17:05:34 +01:00
Vanilagy dc4e557776 Read #EXT-X-PROGRAM-DATE-TIME, add Unix epoch-offset timestamps, parallelize HLS master playlist resolution 2026-03-04 11:08:42 +01:00
Vanilagy 6d5821aa74 Clean up some code, add new source getting for Input 2026-03-04 09:34:37 +01:00
Vanilagy cfb5418fa0 Refactor HLS API: Get rid of specialized Manifest* classes, use Input instead. Add unhydrated InputTracks, InputTrack compatibility, InputTrack queries 2026-03-03 15:28:26 +01:00
Vanilagy 76e0703b13 Bump patch v1.35.1 2026-02-26 21:48:36 +01:00
152002bd5d fix(isobmff): write QuickTime-compliant MOV AAC sample entry (#311)
* fix(isobmff): write QuickTime-compliant MOV AAC sample entry

* Clean up logic, only version 1 sample description box was needed, remove bloaty tests

---------

Co-authored-by: Vanilagy <[email protected]>
2026-02-26 21:48:11 +01:00
Vanilagy b0604150c1 Merge branch 'main' into hls 2026-02-26 15:53:46 +01:00
Vanilagy adc2f125bf Bump minor v1.35.0 2026-02-25 17:20:06 +01:00
Vanilagy bb4749cd8d Add support for reading/writing non-square pixel video frames (fixes #309) 2026-02-25 17:16:33 +01:00
Vanilagy 02484778d1 Oops 2026-02-24 20:29:23 +01:00
Vanilagy 9fd82c3448 Make maxWorkerCount strict, queue reads if no worker is free 2026-02-24 20:29:09 +01:00
Vanilagy 49994bf9ed Remove hackiness in "moof"-starting mp4 segments 2026-02-24 15:22:21 +01:00
Vanilagy a7dc2c198b Bump patch v1.34.5 2026-02-24 13:13:34 +01:00
Vanilagy 89afa1e2a6 Make worker_threads dynamic imports direct and keep them in the bundle (externalized), & mark them as ignored for browser builds (fixes #306) 2026-02-24 13:11:16 +01:00
31147d6e96 fix: surface StreamTarget write errors instead of swallowing them (#305)
* fix: await StreamTarget writes to prevent overlapping OPFS operations

* no need for flush

* preserve fire and forget writes

* Remove pendingWrites, add missing mutex acquire to ADTS muxer finalize method

---------

Co-authored-by: Vanilagy <[email protected]>
2026-02-24 11:21:13 +00:00
Vanilagy 48f9bda91a Add Tella gold sponsor 2026-02-24 11:07:05 +01:00
Vanilagy dd8a87c4a3 Merge remote-tracking branch 'origin/main' into hls 2026-02-20 19:56:40 +01:00
Vanilagy 68b3ae7155 A BUNCH of HLS (and related) progress
- Add support for fMP4 segments
- Add initInput (supported by ISOBMFF and MPEG-TS)
- Input.isSupported()
- Refactored file size retrieval logic, the file size can now be retrieved alongside the first read.
- Add support for unsized UrlSources
- Add support for multiple trun boxes in a row for the same track (as the spec literally says lol)
- Add support for more M3U8 features
- Fix faulty line reader
- MPEG-TS improvements: support video parameters not in first packet, support better key frame detection, support extension PES packets without PTS
- Fix reorder buffer being 1 element too small
2026-02-20 19:56:20 +01:00
Vanilagy 6a4e86698e Bump patch v1.34.4 2026-02-17 12:35:49 +01:00
Vanilagy 317193452c Fix Webpack erroring with worker_threads import, unref Worker so process can terminate 2026-02-17 12:34:45 +01:00
Vanilagy 4928779ba1 Add Screen Studio gold sponsor v1.34.3 2026-02-16 21:04:41 +01:00
Vanilagy 703858fc4e Bump patch, fix broken remote resource link 2026-02-16 20:59:33 +01:00
Vanilagy de84d78092 Merge branch 'main' into hls 2026-02-16 15:55:59 +01:00
Vanilagy df5efa0442 Fix test 2026-02-16 15:34:42 +01:00
Vanilagy ddc826e6e3 MPEG-TS muxer: Write out DTS for video tracks (fixes buggy QuickTime behavior) 2026-02-16 15:30:23 +01:00
2876197631 Fix WaveDemuxer reading too far in corrupted ID3 chunk (#301)
* Update read-mp4.test.ts

* Fix the bug

* Delete read-wav.test.ts

* Submit test file

* Small adjustments

---------

Co-authored-by: Vanilagy <[email protected]>
2026-02-16 10:48:07 +00:00
Vanilagy e3906a3e36 Bump patch AGAIN v1.34.2 2026-02-12 18:54:42 +01:00
Vanilagy 46bd70b880 Bump patch, add bunny v1.34.1 2026-02-12 18:50:00 +01:00
Vanilagy 31b278fbd4 Fix linting errors, fix test not creating bundle 2026-02-12 18:37:55 +01:00
Vanilagy d3b737b183 Bump minor v1.34.0 2026-02-12 18:32:32 +01:00
Vanilagy a97200f3f0 Add @mediabunny/ac3 extension package 2026-02-12 18:31:59 +01:00
Vanilagy e3aa7108f5 Make test 150% faster 2026-02-12 12:22:25 +01:00
Vanilagy b717cbf68c Bump minor v1.33.0 2026-02-12 12:06:25 +01:00
Vanilagy 7cc26edacb Add Mediabunny Codec Registry 2026-02-12 11:56:37 +01:00
Vanilagy de9a4bbc23 Update codec soup 2026-02-11 16:03:57 +01:00
Vanilagy 4fae45ec40 Allow negative trim ranges for conversion, add OutputFormat.supportsTimestampedMediaData 2026-02-11 15:56:51 +01:00
417c85d8ed feat(codec): add detection support for AC-3, E-AC-3 audio codecs (#275)
* ac3/eac3 detection

* fix tests

* review pass + follow codebase comments style

* Add ac3/eac3 to docs

* WIP mpeg-2

* Set registration_descriptor

* add support for ac3 system b in mpeg-ts

* Update docs with ac3 in .ts support

* fix formatting

* Remove default to fix linter

* Add eac3 to mpeg-ts

* fix formatting

* Fix failing test

* Refactor AC3/EAC3 code a little

---------

Co-authored-by: Vanilagy <[email protected]>
2026-02-11 15:23:12 +01:00