- 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
* 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]>
- Add extensive tests for packet cursor, sample cursor, and call serialization
- Major PacketCursor refactor
- Add PacketReader
- Many SampleCursor fixes, harden the behavior
- Typo fixes and various other small things
* Add support for reading transparent Matroska and implement alpha side data & decode
* Few fixes
* Implement alpha encoding
* Gracefully handle inability to acquire WebGL context, properly clean up WebGL contexts
* Improve touch device detection
* Test test
* Test test #2
* Test test 3
* Test test 4
* Test test 5
* Test test 6
* Test test 7
* Test test 8
* Test test 9
* Test test 10
* Test test 11
* Test test 12
* Test test 13
* Test test 14
* Test test 15
* Test test 16
* Test test 17
* Test test 18
* Test test 19
* Test test 20
* Fix type errors, improve MetadataTags docs
* Do a bunch of docs work
* Test test?
* "Unexpected only modifier 🤓"
* Add InputVideoTrack.canBeTransparent()
* Some clean-up
* Adjust CI to be less spammy in PRs
* Fix broken license headers
* Read ID3v2 tags from WAV file
* remove js import
Co-authored-by: David P. <[email protected]>
* revert slicing in wave-demuxer.ts and add id3.ts for further sharing
* Add `writeId3Tag` to the `WavOutputFormat` constructor options
* add more context in private and public APIs that it's non-standard
* compare actual values in the test with real file
* remove unnecesarry double slice requesting
* trim test audio file (i tried my best to preserve ID3, including artwork)
* Couple of code cleanups
* const -> using
* Fix linting errors
---------
Co-authored-by: David P. <[email protected]>
* add a test
* recognize as input format
* scaffold flac demuxer
* implement getting metadata
* Implement mime type
* read all metadata + deduplicate stubs
* Read first packet
* copyright headers
* read the first packet
* Get entire first packet, work on advancing
* iterate over all samples
* testable with bun
* stub out metadata support
* parse descriptive metadata
* All in 1 file
seems more appropriate to the philosophy
* some parameters are not needed anymore all within 1 class
* skip over bytes we are sure are not the syncword
* run prettier
* timestamp is determined based on passed blocks, not maximumBlockSize
* no binary search needed!
* simplifications
* Finish demuxer reading sequentially
* more tests + add a file with a seektable
* don't throw if (this.audioInfo.minimumBlockSize !== this.audioInfo.maximumBlockSize
* Add docs
* Update format compatibility table
* Simplification
* confirm conversion is working
* Finish
* Resolve TODO comment
* Support images (read-only)
* Returning description as Uint8Array
* Cleanup of demuxer
* Misc renames
* Object on same line
* Resolve first batch of comments
* Throw errors on corrupt blocks, correctly use requestSlice()
* Fix description field
* Explain why last frame is a bit shorter
* Add FLAC to README
* Put track backings below demuxer
* convert to methods
* Reorder container checking
* getBlockSize() -> readBlockSize()
* bitStream -> bitstream
* better naming for bytes
* use .skip()
* Don't return blockSize twice in readFlacFrameHeader
* Use enum + switch to distinguish Flac block types
* Use else-if
* Use else-if
* Compressed switch statement
* readCodedNumber
* Update flac-misc.ts
* We don't need the bits variable at all
* reorder functions in flac-demuxer
* Handle gracefully not being able to load another sample
* Update flac-demuxer.ts
* blockingbit null
* use async instead of promise.resolve
* use binary search
* Replace recursion with while loop
* Add mutex to getPacket()
* Load more data not in getPacketAtIndex, but outside
* Apply suggestion from @Vanilagy
Co-authored-by: David P. <[email protected]>
* computeDuration() reads last packet
* Update flac-demuxer.ts
* share vorbis comment reading logic
* reuse vorbis comment writing logic, set vendor always to "Mediabunny"
* flush after writign
* Use FileSlice.tempFromBytes
* assert !== null
* fixing nitpicks
* apply suggestions
* fix ogg
* We are now muxing images
* apply suggestion
* Update src/flac/flac-muxer.ts
Co-authored-by: David P. <[email protected]>
* apply suggestion
* readSampleRate()
* seek outside writeHeader()
* mention vorbis metadata + add to metadatatags comment
* should be able to -> can
* Add test in metadata tags
* Add test for packets being byte identical after remuxing
* compare to null
* no casting to uint8array
* make test pass
* Update flac-muxer.ts
* Call validateAudioChunkMetadata() and validateAndNormalizeTimestamp()
* `onFrame` option
* emit frames using onFrame
* Run prettier over files
* Fix FLAC PICTURE block logic, small other changes
* Update docs
* Remove .only modifier
* fix remuxing and add test
* Don't throw error if parsing fails in header, since hitting a syncword might just be coincidential
* Fix remaining type errors
---------
Co-authored-by: David P. <[email protected]>