* 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 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]>