Commit Graph
100 Commits
Author SHA1 Message Date
David Payr 53e8ce5cac Begin work on documentation 2025-03-29 11:47:21 +01:00
Vanilagy 95cc8beb06 Fix chunked writing issues & drop ChunkedStreamTargetWriter 2025-03-26 21:35:19 +01:00
Vanilagy ceb2528014 Add specific, per-output-format data callbacks & rewrite some logic in the process 2025-03-22 20:30:24 +01:00
Vanilagy bbc2e088ca Refactor UrlSource to use fetch instead of XHR & offer more options 2025-03-22 16:26:04 +01:00
Vanilagy b14daf6dca Add configurable minimum MP4 fragment duration and Matroska cluster duration 2025-03-22 15:33:00 +01:00
Vanilagy 1652b4f614 More intentional codec description extraction for Matroska, & generate CodecPrivate for VP9 2025-03-22 14:50:35 +01:00
Vanilagy 4645b0d6a5 Allow Matroska clusters that don't begin with a key frame 2025-03-21 22:50:57 +01:00
David Payr 3863ffe4d8 Add documentation comments everywhere 2025-03-15 17:12:42 +01:00
David Payr 6eb5c02591 Add VideoSample and AudioSample abstractions 2025-03-13 21:46:39 +01:00
Vanilagy d833b5ef31 Make use of OffscreenCanvas 2025-03-02 19:30:09 +01:00
Vanilagy 00975b456c Fix error when aborting conversion, expose Conversion class for more control, refactor Output state 2025-03-02 17:32:56 +01:00
Vanilagy 453f8b6884 Ensure rotation is always clockwise, make CanvasSink more powerful, disable rotation metadata for Matroska outputs, & other changes 2025-03-02 11:59:11 +01:00
David Payr 2ab385b16e Fix cslg box for QuickTime compatibility 2025-02-26 22:46:44 +01:00
David Payr c2b20ccda5 EncodedVideoSample/EncodedAudioSample -> EncodedPacket 2025-02-22 19:54:59 +01:00
Vanilagy 5d1866653c Todo 2025-02-21 22:25:28 +01:00
Vanilagy 7988b6c2f8 Multiple miscellaneous fixes 2025-02-18 22:13:21 +01:00
Vanilagy 3848a59ec3 0-duration VideoFrame 2025-02-16 19:03:36 +01:00
Vanilagy 873dae00c1 Add more relaxed rules for edit lists 2025-02-16 18:55:47 +01:00
Vanilagy a4c5ab4a8c Add fix to ensure VideoFrames are output in timestamp order, fix atTimestamps iterator logic & leaks 2025-02-16 18:30:14 +01:00
David Payr 444770d4f8 todo 2025-02-13 16:12:42 +01:00
David Payr fff9589bfb Todo 2025-02-13 09:50:05 +01:00
Vanilagy 557314c640 digest -> add 2025-02-09 17:59:30 +01:00
Vanilagy b3cd4de1f6 Make conversion cancelable 2025-02-09 17:55:59 +01:00
Vanilagy 02ac371011 Drop frames if encoded is overloaded 2025-02-09 17:40:07 +01:00
Vanilagy 9f6d561772 Add StreamSource 2025-02-09 17:34:59 +01:00
Vanilagy 6cdaa06c07 Add limited edit list support 2025-02-09 17:21:41 +01:00
Vanilagy f750bcfa21 Fix incorrect timestamp rounding for audio 2025-02-09 14:42:08 +01:00
Vanilagy 0db871dd21 Implement Ogg muxer 2025-02-09 10:56:54 +01:00
Vanilagy cd30c9faec Unpromise many input track methods 2025-02-08 16:32:34 +01:00
Vanilagy 1d823805cf Remove sample correlation logic in decoder pipeline 2025-02-08 15:55:54 +01:00
Vanilagy b4d4c71916 Add reusable Opus identification header parsing function 2025-02-07 20:14:01 +01:00
Vanilagy 50442691a5 Implement Ogg demuxer 2025-02-04 16:59:25 +01:00
Vanilagy 35c4d384cf Mime type & MP3 improvements 2025-02-02 17:21:57 +01:00
Vanilagy ffd0835e9a Add support for custom encoders & decoders 2025-01-26 17:32:10 +01:00
Vanilagy bb9f56b1f0 Remove unused fields 2025-01-26 13:22:14 +01:00
Vanilagy b759fd8808 Add toDataView 2025-01-26 12:03:23 +01:00
Vanilagy d3566305df Implement MP3 muxer 2025-01-26 11:45:56 +01:00
Vanilagy 7205d9445b Implement MP3 demuxer 2025-01-26 10:01:09 +01:00
Vanilagy 387c4dc525 isobmffReader -> metadataReader 2025-01-19 18:56:45 +01:00
Vanilagy 70b88332b2 Add media conversion utility function, fix fragment/cluster reading issues, expand color space logic, add qualitative bitrates, & many other fixes and improvements 2025-01-19 18:55:12 +01:00
Vanilagy d323c2be8e Add track count limit checking 2025-01-17 12:26:12 +01:00
Vanilagy 7b6567fcf0 Add language getter to InputTrack 2025-01-15 20:21:34 +01:00
Vanilagy 2bec661985 Add setting track language code, add proper AV1 CodecPrivate for Matroska muxer 2025-01-15 20:00:29 +01:00
Vanilagy 9af3e6eb66 Fix atTimestamps iterator 2025-01-14 21:23:37 +01:00
Vanilagy 45474764ca Add explanatory comment 2025-01-12 16:57:31 +01:00
Vanilagy 9c501808b1 Add WebMInputFormat, add OutputFormat.getFileExtension() 2025-01-12 16:52:28 +01:00
Vanilagy aea808ca0c Adjust timestamp logic for media sinks for more accurate audio timing 2025-01-12 16:41:42 +01:00
Vanilagy 764a6dfd52 Replace block sorting algorithm 2025-01-12 15:40:05 +01:00
Vanilagy 2dfb595911 Improve lookup algorithm to handle misleading cue points, fix cluster start timestamp in Matroska muxer, improve cue points in Matroska muxer, & other misc improvements 2025-01-12 15:17:21 +01:00
Vanilagy 61a4f1483a Add VP9 and AV1 bitstream parsers for extracting codec info 2025-01-11 21:28:10 +01:00
Vanilagy 2d4df211d8 Support rotation metadata in Matroska muxer 2025-01-11 20:07:31 +01:00
Vanilagy 11d41fcbc7 Fix interleaving of chunks in finalize() 2025-01-11 19:57:31 +01:00
Vanilagy c38c285eab Add Matroska demuxer 2025-01-11 19:39:01 +01:00
David Payr fbe084d721 Minor cleanup 2025-01-08 14:43:16 +01:00
David Payr b6b82084d4 Drain -> Sink 2025-01-08 14:26:49 +01:00
Vanilagy dc81afa1d9 Drop big-endian PCM support for WaveDemuxer 2025-01-07 22:23:04 +01:00
Vanilagy e1c070fe7b Move RiffWriter into separate file 2025-01-07 22:20:33 +01:00
Vanilagy 9d51a896ae Make sure encoders are ensured only once 2025-01-07 21:58:30 +01:00
Vanilagy 7d5957957e Add WAVE muxer 2025-01-07 21:37:55 +01:00
Vanilagy 3041989cf3 Add WAVE demuxer 2025-01-07 20:57:16 +01:00
Vanilagy 48c9a225e2 Improve encoders and check availability 2025-01-06 21:22:15 +01:00
Vanilagy 00408c86ff Add support for remaining audio codecs to Matroska muxer 2025-01-06 21:09:12 +01:00
Vanilagy 7c65c2e7e9 Slightly modify input formats 2025-01-06 19:45:47 +01:00
Vanilagy 2625dc7662 Implement PCM encoders 2025-01-05 15:58:20 +01:00
Vanilagy 37820f1d4c Replace ArrayBufferTarget with BufferTarget, now spitting out Uint8Array and using .resize 2025-01-05 14:24:06 +01:00
Vanilagy ee81e1b674 Add support for all audio codecs in the ISOBMFF muxer (& some fixes) 2025-01-05 13:50:50 +01:00
Vanilagy 316e16211b Add onread callback 2025-01-04 14:46:53 +01:00
Vanilagy 3487bae4fe Add cslg box 2025-01-04 14:43:26 +01:00
Vanilagy b8c0d76503 Add compileSampleStats 2025-01-04 14:25:22 +01:00
Vanilagy 5bb9f8609c Allow non-zero initial timestamps for ISOBMFF muxer 2025-01-04 14:02:45 +01:00
Vanilagy 2e8d49f900 Add SampleRetrievalOptions to samples iterator 2025-01-04 01:11:01 +01:00
Vanilagy 1145e0ebbe Use new sample classes for muxers as well 2025-01-04 00:28:54 +01:00
Vanilagy e83356662e Add own encoded sample classes and port the code to them 2025-01-04 00:14:34 +01:00
Vanilagy f6d12390cd Fix audio tracks with channel count 1 being discarded 2025-01-02 23:53:22 +01:00
Vanilagy 676ceb7df1 Add some try-catch 2025-01-02 23:47:50 +01:00
Vanilagy 8db8f10a1e Fix sample index retrieval case 2025-01-02 23:44:40 +01:00
Vanilagy a3f19f6f08 Oops 2025-01-02 23:31:06 +01:00
Vanilagy 60947168f9 CodecConfig -> EncodingConfig 2025-01-02 23:15:30 +01:00
Vanilagy 3035fcddbf Add functions that test codec encodability 2025-01-02 23:12:00 +01:00
Vanilagy 74369ee108 Explicitly model the supported codecs per output format 2025-01-02 21:03:17 +01:00
Vanilagy 2471f55f20 Validate audio codec strings 2025-01-02 20:21:49 +01:00
Vanilagy 9ac0519217 Add onEncodedChunk callback 2025-01-02 20:01:30 +01:00
Vanilagy 141bed1b37 Add Output.cancel 2025-01-02 19:57:32 +01:00
Vanilagy c42495ec7e Allow more manual control over key frames 2025-01-02 19:39:02 +01:00
Vanilagy 022b157eeb Turn AudioBuffers into AudioData in a chunked fashion 2025-01-02 19:28:43 +01:00
Vanilagy 0f25dcb096 Add methods that check decodability 2025-01-02 19:08:09 +01:00
Vanilagy ad653434a6 Small fix 2025-01-02 18:37:34 +01:00
Vanilagy af26b4aab4 Fix fragment reading bug 2025-01-02 18:16:06 +01:00
Vanilagy d476c42424 Fix rotation matrix detection 2025-01-02 17:03:05 +01:00
Vanilagy 5dda43959d Support mp4a.67 2025-01-02 15:42:04 +01:00
Vanilagy 3a7e272d2f Vorbis works! 2025-01-02 15:33:36 +01:00
Vanilagy 4bef3b6722 Manually write the async generators so that return() is immediate 2025-01-02 15:24:38 +01:00
Vanilagy 7c5e31a93a Add Opus support to ISOBMFF demuxer 2025-01-02 14:19:17 +01:00
Vanilagy 8a8fbc264e Add FLAC support to ISOBMFF demuxer 2025-01-02 00:03:32 +01:00
Vanilagy 4e0b3a7b3a Add ulaw and alaw support to ISOBMFF demuxer 2025-01-01 22:03:12 +01:00
Vanilagy fac4e4bf7b Implement PCM decoder, add PCM support to ISOBMFF demuxer 2025-01-01 21:31:00 +01:00
Vanilagy d203d75bdd Add MP3 support to ISOBMFF demuxer 2024-12-30 23:47:42 +01:00
David Payr 8f861f3cfe Validate video codec strings using regexes 2024-12-30 00:47:01 +01:00
David Payr 06cedf1a26 Use more parts of codec string to determine av1C 2024-12-30 00:16:22 +01:00
David Payr 94b43bf8da Make VP9 and AV1 codec strings much more detailed 2024-12-30 00:08:23 +01:00