31d86331ec
FLAC: Add appendOnly option for FlaxMuxer, fix FlacDemuxer reading it ( #325 )
...
* implement in FlacOutputFormatOptions
* implement in flac-muxer.ts
* Fix demuxer: Handle minimumFrameSize = 0, maxiumFrameSize = 0
* add a test
* Update flac-demuxer.ts
* Update flac.test.ts
* clean up comments for minima and maxima
* Add FlacOutputFormatOptions.appendOnly to docs
---------
Co-authored-by: Vanilagy <[email protected] >
2026-03-19 13:43:28 +00:00
Vanilagy
0d50526ff6
Fix incorrectly-written video rotation metadata even when rotation is baked into the video ( fixes #329 )
2026-03-19 14:25:40 +01:00
Vanilagy
e693765d23
Fix failing test
2026-03-19 12:33:27 +01:00
Vanilagy
1da96f6d69
Add displayAspectWidth/displayAspectHeight only when they are necessary
2026-03-19 12:25:19 +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
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
e18da824ce
Make test more resilient
2026-03-04 17:12:40 +01:00
Vanilagy
c4398fb88c
Add @mediabunny/aac-encoder extension package
2026-03-04 17:05:34 +01:00
Vanilagy
bb4749cd8d
Add support for reading/writing non-square pixel video frames ( fixes #309 )
2026-02-25 17:16:33 +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
df5efa0442
Fix test
2026-02-16 15:34:42 +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
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
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
Vanilagy
7aa0fa465e
Add support for ID3 metadata in ADTS, make MPEG-TS demuxer more resilient
2026-01-27 14:32:16 +01:00
Vanilagy
7e1c93c331
Skip transparency tests for now
2026-01-23 13:50:18 +01:00
Vanilagy
92454b28f7
Use random_access_indicator for key packet detection, rewrite packet lookup algorithm to use a chunked approach to perform better over the network
2026-01-23 13:16:41 +01:00
Vanilagy
e1e32c9505
Up the timeout
2026-01-20 20:12:17 +01:00
Vanilagy
79f19b6717
Fix MPEG-TS demuxer reading entire file in the metadata phase, optimize it a bit, bump patch
2026-01-20 20:08:17 +01:00
Vanilagy
277290abe3
Fix tests and elaborate on point in docs
2026-01-19 14:11:02 +01:00
Vanilagy
6c78a0ff09
Fix HEVC not being encodable in CI
2026-01-19 10:25:57 +01:00
Vanilagy
c3a3eb6abf
Merge remote-tracking branch 'origin/main' into mpeg-ts
2026-01-16 21:04:14 +01:00
Vanilagy
46fbfc8a2c
Make MPEG-TS muxing tests not rely on AAC encoder
2026-01-16 21:02:12 +01:00
Vanilagy
53b04619e1
Convert ADTS to AAC in muxers that accept it
2026-01-16 17:27:50 +01:00
Vanilagy
e8b27768a9
Add MPEG-TS muxer, fix a demuxer bug, remove Infinity from output format track counts
2026-01-16 16:33:28 +01:00
Vanilagy
ae37973878
MPEG-TS demuxer optimizations: faster Annex B segmentation, better NALU iteration
2026-01-16 13:26:58 +01:00
Vanilagy
e3ee9d91a9
Add MP3 support to MPEG-TS demuxer
2026-01-16 10:28:00 +01:00
Vanilagy
c0f2693cb3
Add HEVC support to MPEG-TS demuxer
2026-01-16 10:05:40 +01:00
Vanilagy
54dfa75a7e
Add proper packet duration extraction to MPEG-TS demuxer
2026-01-15 16:33:17 +01:00
Vanilagy
8fea9671ea
Fix some demuxer bugs that occurred on files by FFmpeg, fix packet marking logic
2026-01-15 08:51:07 +01:00
Vanilagy
0719a17c85
Add mutex to packet lookup algorithm, fix incorrect next packet retrieval following packet lookup
2026-01-14 21:53:23 +01:00
Vanilagy
045df3b9a5
Make ADTS demuxer spit out ADTS packets instead of AAC, make ADTS muxer accept both AAC and ADTS input
2026-01-14 13:52:46 +01:00
Vanilagy
06ab9c8433
Add support for different TS packet strides and offsets, add proper input format detection, fix error messages, add packet lookup algorithm with no file size known
2026-01-14 13:16:40 +01:00
Vanilagy
888441232d
Implement the bulk of the MPEG-TS demuxer, add a bunch of tests, and a few other things
2026-01-14 12:05:39 +01:00
David P. and GitHub
8aac07eb61
Merge pull request #279 from samohovets/bugfix/vorbis-eos
...
Fix OGG Vorbis decoding error for files with empty EOS pages
2026-01-13 17:36:09 +01:00
Vanilagy
267c09abf8
Return null earlier on
2026-01-13 17:34:33 +01:00
Igor Samokhovets
a89101ff40
Fix OGG Vorbis decoding error for files with empty EOS pages (VLC-encoded)
2026-01-13 13:45:43 +01:00
Vanilagy
2ab1be3834
Add maximumPageDuration Ogg muxer option ( closes #277 )
2026-01-13 13:37:34 +01:00
Vanilagy
78e78e5b4f
Make _flushOrWaitForOngoingClose set closingPromise ( fixes #270 )
2026-01-12 14:36:51 +01:00
Vanilagy
8f43086e3d
Make allocationSize and copyTo always throw if internal format is null ( closes #267 )
2026-01-05 11:07:32 +01:00
Vanilagy
c86af052f5
Add test for Annex B to length-prefixed conversion
2025-12-19 16:04:27 +01:00
Vanilagy
15bdd072e1
Add options to VideoSample allocationSize and copyTo methods, add explicit error message when format is null ( closes #256 )
2025-12-17 15:10:25 +01:00
Vanilagy
228721d68f
Add VideoSampleColorSpace
2025-12-16 18:47:50 +01:00
Vanilagy
3dd7a9cb58
Fix unclosed samples in tests
2025-12-04 17:04:24 +01:00
Vanilagy
abe6185ddd
Fix test?
2025-11-13 11:02:36 +01:00
Vanilagy
217b383f12
Add read/write support for track disposition information
2025-11-13 11:00:42 +01:00
JonnyBurger
fe4eebd487
Increase tolerance of pixels by 1 in tests
2025-11-05 10:54:03 +01:00
Vanilagy
efcf5d0069
Add vjeux
2025-11-02 22:03:35 +01:00
Vanilagy
aad31009fe
Make test more strict
2025-11-02 21:56:16 +01:00