From a97200f3f04a2f5ca40855b6a62dbef6773f7193 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Thu, 12 Feb 2026 18:31:59 +0100 Subject: [PATCH] Add @mediabunny/ac3 extension package --- .github/workflows/release.yml | 2 +- .gitignore | 3 +- dev/convert.html | 11 +- dev/demux.html | 17 +- docs/.vitepress/config.mts | 1 + docs/api-config.json | 3 +- docs/guide/extensions/ac3.md | 33 ++ docs/guide/supported-formats-and-codecs.md | 2 +- package-lock.json | 19 + package.json | 6 +- packages/ac3/.gitattributes | 1 + packages/ac3/LICENSE | 373 ++++++++++++++++++ packages/ac3/README.md | 103 +++++ packages/ac3/api-extractor.json | 37 ++ packages/ac3/build/ac3.js | Bin 0 -> 687356 bytes packages/ac3/package.json | 56 +++ packages/ac3/src/bridge.c | 289 ++++++++++++++ packages/ac3/src/codec.worker.ts | 306 ++++++++++++++ packages/ac3/src/decoder.ts | 70 ++++ packages/ac3/src/encoder.ts | 191 +++++++++ packages/ac3/src/index.ts | 21 + packages/ac3/src/shared.ts | 103 +++++ packages/ac3/src/worker-client.ts | 69 ++++ .../{mp3-encoder/src => ac3}/tsconfig.json | 15 +- packages/ac3/tsdoc.json | 4 + packages/mp3-encoder/README.md | 4 +- packages/mp3-encoder/src/encode.worker.ts | 15 +- packages/mp3-encoder/src/index.ts | 25 +- packages/mp3-encoder/src/shared.ts | 3 + packages/mp3-encoder/tsconfig.json | 25 ++ packages/mp3-encoder/tsdoc.json | 4 + build.sh => scripts/build.sh | 9 +- scripts/bundle.ts | 32 ++ scripts/check.sh | 16 + scripts/ensure-license-headers.ts | 1 + shared/ac3-misc.ts | 13 + src/codec-data.ts | 11 +- src/conversion.ts | 7 + src/isobmff/isobmff-demuxer.ts | 2 +- src/media-source.ts | 28 +- src/mpeg-ts/mpeg-ts-demuxer.ts | 2 +- test/node/ac3.test.ts | 203 ++++++++++ todo.txt | 1 + tsconfig.vite.json | 1 + tsconfig.vitest.json | 8 +- vitest.config.ts | 9 + 46 files changed, 2083 insertions(+), 71 deletions(-) create mode 100644 docs/guide/extensions/ac3.md create mode 100644 packages/ac3/.gitattributes create mode 100644 packages/ac3/LICENSE create mode 100644 packages/ac3/README.md create mode 100644 packages/ac3/api-extractor.json create mode 100644 packages/ac3/build/ac3.js create mode 100644 packages/ac3/package.json create mode 100644 packages/ac3/src/bridge.c create mode 100644 packages/ac3/src/codec.worker.ts create mode 100644 packages/ac3/src/decoder.ts create mode 100644 packages/ac3/src/encoder.ts create mode 100644 packages/ac3/src/index.ts create mode 100644 packages/ac3/src/shared.ts create mode 100644 packages/ac3/src/worker-client.ts rename packages/{mp3-encoder/src => ac3}/tsconfig.json (56%) create mode 100644 packages/ac3/tsdoc.json create mode 100644 packages/mp3-encoder/tsconfig.json create mode 100644 packages/mp3-encoder/tsdoc.json rename build.sh => scripts/build.sh (78%) create mode 100755 scripts/check.sh create mode 100644 shared/ac3-misc.ts create mode 100644 todo.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b2b2155..31b076b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -59,7 +59,7 @@ jobs: - name: Upload build artifacts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh release upload ${{ github.event.release.tag_name }} dist/bundles/mediabunny.cjs dist/bundles/mediabunny.min.cjs dist/bundles/mediabunny.mjs dist/bundles/mediabunny.min.mjs dist/mediabunny.d.ts packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.js packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.min.js packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.mjs packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.min.mjs packages/mp3-encoder/dist/mediabunny-mp3-encoder.d.ts + run: gh release upload ${{ github.event.release.tag_name }} dist/bundles/mediabunny.cjs dist/bundles/mediabunny.min.cjs dist/bundles/mediabunny.mjs dist/bundles/mediabunny.min.mjs dist/mediabunny.d.ts packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.js packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.min.js packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.mjs packages/mp3-encoder/dist/bundles/mediabunny-mp3-encoder.min.mjs packages/mp3-encoder/dist/mediabunny-mp3-encoder.d.ts packages/ac3/dist/bundles/mediabunny-ac3.js packages/ac3/dist/bundles/mediabunny-ac3.min.js packages/ac3/dist/bundles/mediabunny-ac3.mjs packages/ac3/dist/bundles/mediabunny-ac3.min.mjs packages/ac3/dist/mediabunny-ac3.d.ts - name: Publish Mediabunny to npm run: npm publish --access public diff --git a/.gitignore b/.gitignore index a359208..289f126 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ node_modules /docs/api *.tsbuildinfo -packages/mp3-encoder/dist \ No newline at end of file +packages/mp3-encoder/dist +packages/ac3/dist \ No newline at end of file diff --git a/dev/convert.html b/dev/convert.html index 76494f1..661d12b 100644 --- a/dev/convert.html +++ b/dev/convert.html @@ -2,9 +2,11 @@ + + + +``` + +This will expose the global objects `Mediabunny` and `MediabunnyAc3`. Use `mediabunny-ac3.d.ts` to provide types for these globals. You can download the built distribution files from the [releases page](https://github.com/Vanilagy/mediabunny/releases). + +## Usage + +```ts +import { registerAc3Decoder, registerAc3Encoder } from '@mediabunny/ac3'; + +registerAc3Decoder(); +registerAc3Encoder(); +``` +That's it - Mediabunny now uses the registered AC-3/E-AC-3 decoder and encoder automatically. diff --git a/docs/guide/supported-formats-and-codecs.md b/docs/guide/supported-formats-and-codecs.md index 1c83d05..dbaf533 100644 --- a/docs/guide/supported-formats-and-codecs.md +++ b/docs/guide/supported-formats-and-codecs.md @@ -59,7 +59,7 @@ Mediabunny ships with built-in decoders and encoders for all audio PCM codecs, m - `'ulaw'` - μ-law PCM - `'alaw'` - A-law PCM -[^1]: AC-3 and E-AC-3 are not natively supported by WebCodecs. To encode or decode these codecs, you must provide a [custom coder](#custom-coders). +[^1]: AC-3 and E-AC-3 are not natively supported by WebCodecs. To encode or decode these codecs, you can use the [`@mediabunny/ac3`](./extensions/ac3) extension package, or provide your own [custom coder](#custom-coders). ### Subtitle codecs diff --git a/package-lock.json b/package-lock.json index 7338ee5..7618011 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1413,6 +1413,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mediabunny/ac3": { + "resolved": "packages/ac3", + "link": true + }, "node_modules/@mediabunny/mp3-encoder": { "resolved": "packages/mp3-encoder", "link": true @@ -12063,6 +12067,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "packages/ac3": { + "name": "@mediabunny/ac3", + "version": "1.33.0", + "license": "MPL-2.0", + "devDependencies": { + "@types/emscripten": "^1.40.1" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/Vanilagy" + }, + "peerDependencies": { + "mediabunny": "^1.0.0" + } + }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", "version": "1.33.0", diff --git a/package.json b/package.json index 4ebc696..33ae921 100644 --- a/package.json +++ b/package.json @@ -29,18 +29,18 @@ }, "sideEffects": false, "scripts": { - "build": "./build.sh", + "build": "./scripts/build.sh", "watch": "tsx scripts/bundle.ts --watch", "lint": "eslint .", "test": "npx vitest --run", "test-node": "npm run test node/", "test-browser": "npm run test browser/", - "check": "rm -rf dist/modules && tsc -p src --stripInternal false && tsc -p packages/mp3-encoder/src --noEmit && tsc -p tsconfig.vitest.json --noEmit && tsc -p scripts --noEmit && tsc -p tsconfig.vite.json --noEmit", + "check": "./scripts/check.sh", "check-docblocks": "tsx scripts/check-docblocks.ts dist/mediabunny.d.ts", "docs:dev": "vitepress dev docs", "docs:build": "npm run build && npm run docs:generate && vitepress build docs && npm run examples:build && cp dist/mediabunny.d.ts dist-docs/", "docs:preview": "vitepress preview docs", - "docs:generate": "tsx scripts/generate-api-docs.ts src/index.ts packages/mp3-encoder/src/index.ts docs/api-config.json", + "docs:generate": "tsx scripts/generate-api-docs.ts src/index.ts packages/mp3-encoder/src/index.ts packages/ac3/src/index.ts docs/api-config.json", "dev": "vite", "examples:build": "vite build", "fix-build-import-paths": "tsx scripts/add-import-extensions.ts", diff --git a/packages/ac3/.gitattributes b/packages/ac3/.gitattributes new file mode 100644 index 0000000..72ef19a --- /dev/null +++ b/packages/ac3/.gitattributes @@ -0,0 +1 @@ +build/* linguist-generated diff --git a/packages/ac3/LICENSE b/packages/ac3/LICENSE new file mode 100644 index 0000000..d0a1fa1 --- /dev/null +++ b/packages/ac3/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at https://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/packages/ac3/README.md b/packages/ac3/README.md new file mode 100644 index 0000000..8f1874b --- /dev/null +++ b/packages/ac3/README.md @@ -0,0 +1,103 @@ +# @mediabunny/ac3 + +[![](https://img.shields.io/npm/v/@mediabunny/ac3)](https://www.npmjs.com/package/@mediabunny/ac3) +[![](https://img.shields.io/bundlephobia/minzip/@mediabunny/ac3)](https://bundlephobia.com/package/@mediabunny/ac3) +[![](https://img.shields.io/npm/dm/@mediabunny/ac3)](https://www.npmjs.com/package/@mediabunny/ac3) + +Browsers have no support for AC-3 (Dolby Digital) or E-AC-3 (Dolby Digital Plus) in their WebCodecs implementations. This extension package provides both a decoder and encoder for use with [Mediabunny](https://github.com/Vanilagy/mediabunny), allowing you to decode and encode these codecs directly in the browser. It is implemented using Mediabunny's [custom coder API](https://mediabunny.dev/guide/supported-formats-and-codecs#custom-coders) and uses a fast, size-optimized WASM build of [FFmpeg](https://ffmpeg.org/)'s AC-3 and E-AC-3 coders under the hood. + +> This package, like the rest of Mediabunny, is enabled by its [sponsors](https://mediabunny.dev/#sponsors) and their donations. If you've derived value from this package, please consider [leaving a donation](https://github.com/sponsors/Vanilagy)! 💘 + +## Installation + +This library peer-depends on Mediabunny. Install both using npm: +```bash +npm install mediabunny @mediabunny/ac3 +``` + +Alternatively, directly include them using a script tag: +```html + + +``` + +This will expose the global objects `Mediabunny` and `MediabunnyAc3`. Use `mediabunny-ac3.d.ts` to provide types for these globals. You can download the built distribution files from the [releases page](https://github.com/Vanilagy/mediabunny/releases). + +## Usage + +```ts +import { registerAc3Decoder, registerAc3Encoder } from '@mediabunny/ac3'; + +registerAc3Decoder(); +registerAc3Encoder(); +``` +That's it - Mediabunny now uses the registered AC-3/E-AC-3 decoder and encoder automatically. + +## Building and development + +For simplicity, all built WASM artifacts are included in the repo, since these rarely change. However, here are the instructions for building them from scratch: + +[Install Emscripten](https://emscripten.org/docs/getting_started/downloads.html) and clone [FFmpeg](https://github.com/FFmpeg/FFmpeg). Then, from the Mediabunny root and with Emscripten sourced in: + +```bash +export FFMPEG_PATH=/path/to/ffmpeg +export MEDIABUNNY_ROOT=$PWD + +# Build FFmpeg +cd $FFMPEG_PATH +emmake make distclean +emconfigure ./configure \ + --target-os=none \ + --arch=x86_32 \ + --enable-cross-compile \ + --disable-asm \ + --disable-x86asm \ + --disable-inline-asm \ + --disable-programs \ + --disable-doc \ + --disable-debug \ + --disable-all \ + --disable-everything \ + --disable-autodetect \ + --disable-pthreads \ + --disable-runtime-cpudetect \ + --enable-avcodec \ + --enable-decoder=ac3 \ + --enable-decoder=eac3 \ + --enable-encoder=ac3 \ + --enable-encoder=eac3 \ + --cc="emcc" \ + --cxx=em++ \ + --ar=emar \ + --ranlib=emranlib \ + --extra-cflags="-DNDEBUG -Oz -flto -msimd128" \ + --extra-ldflags="-Oz -flto" +emmake make + +# Compile the bridge between JavaScript and FFmpeg's API +cd $MEDIABUNNY_ROOT/packages/ac3 +emcc src/bridge.c \ + $FFMPEG_PATH/libavcodec/libavcodec.a \ + $FFMPEG_PATH/libavutil/libavutil.a \ + -I$FFMPEG_PATH \ + -s MODULARIZE=1 \ + -s EXPORT_ES6=1 \ + -s SINGLE_FILE=1 \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s ENVIRONMENT=web,worker \ + -s FILESYSTEM=0 \ + -s MALLOC=emmalloc \ + -s SUPPORT_LONGJMP=0 \ + -s EXPORTED_RUNTIME_METHODS=cwrap,HEAPU8 \ + -s EXPORTED_FUNCTIONS=_malloc,_free \ + -msimd128 \ + -flto \ + -Oz \ + -o build/ac3.js +``` + +This generates `build/ac3.js`, which contains both the JavaScript "glue code" as well as the compiled WASM inlined. + +### Building the package + +Then, the complete JavaScript package can be built alongside the rest of Mediabunny by running `npm run build` in Mediabunny's root. diff --git a/packages/ac3/api-extractor.json b/packages/ac3/api-extractor.json new file mode 100644 index 0000000..461488c --- /dev/null +++ b/packages/ac3/api-extractor.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "dist/modules/src/index.d.ts", + "bundledPackages": [], + "compiler": {}, + "apiReport": { + "enabled": false + }, + "docModel": { + "enabled": false + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "dist/mediabunny-ac3.d.ts" + }, + "tsdocMetadata": { + "enabled": false + }, + "messages": { + "compilerMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + } + } + }, + "newlineKind": "lf" +} diff --git a/packages/ac3/build/ac3.js b/packages/ac3/build/ac3.js new file mode 100644 index 0000000000000000000000000000000000000000..777bd8a313d4091753c16961676e75ada177615d GIT binary patch literal 687356 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

qc91Bfg7;ovd?%go&WAD;a2xc$SA8+!wWlM6I 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

k&LtWOp3io7|S1N16>b7a07s0@nn82 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≧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≻$Dj?U7m&>VKoUdFX(i2DU+Qwo0cRabZtqTbr$>4*%;Ug`wp& z9Ni=XX^6(!)4v$&BHbS zQ#9xRhOK%H#@KS2AHg5oB?>pzW2GTJNh_~7+HKBGpHCNN%scKA+Cz;rX4XLQ(6o*O zmYUPPvbR?|%YgWj-k|}?Gm5YTcB3AD1w zWknw^3JlclcW4n>Y>#JZ|ZMd~S-+nsrBX*D5=h}n?yxZ*BHX$Da(n@K(@S&S%SgY-bGqts? zU$35rwkLW4tpSof(&_UVCra@YqQZJl)27I$fTEj07Dx?8*h$@W(<(tI#2E?F==I{ZfXA$F zQnsqsvbAxxNm!%~=-Q#qg*H3I;J$v_PYzpUGEEBZm}?OU)yJYT-MI*v0d0h^bC|Xo zG?9~90ztSWGZj zU9xC4!fn>CH;{mPnUXlt8Oo-Kk`ql^h{42qXsJ}`FASBMsTv&)EHuKW%gx?LBl9b} zyx!K%4ta~$u;e1^(Q0$sGjj^u6jn=3#SS?JSWR|b3gjdwGsRsHt2#G_s$uX8GT`eS0L|ogaXhrj&SIK1$fLP>1&9$;g%}RYf zw1g`V*-{o88;27h&^&w*f(jRzrH1OXV9p?vo`4@Sg0rx$`C^XoZ%`2Xef&W zML544J3xRDPf4h;2i2(wRYHJCyXj7)**dwlW>Qg|cEf&Bg=V=ZA!2f!o)|&5()3!X z(PkJV(rl??^|WQJS8t>HZ1wGOIk(lrWHh;(JAH~)Ro?-Ff^|3gl2%j|7<(YPTZSga zGQYH`HL}$2z&%N&-iKR5F)P&VWhDLpa5S|ce)V=2Q*xF?d7oc(P+l`w~ zfqGpO>t!TaCL5`qV)!Q3m$SoqB19;pBoU<$IZ{$Bxva(v6)DhUEexQ_UUbt=YC45D zhGC~@5RL2@Ayeg5ljtyth~j9#E&?a2HzD8K1rH% z>l{OxDx!gP3qD2vnthL^p_0(3LNsaY5yjDfy9qGH;t*+2_e8gfSS=#k?v346E+3IC z_fg9)ttXMq_oKPGz{qkf;1FT>;qYNJQ!GA_*rse|u9LeY!mFhMQwFsmdrr&6vmG@S z%9J{r$5^DM#@U)srf0d?T5(|*@f3M$wl*{~CIZ=%e41V4r|793Hdnq8k)BgwYmX?# za*mjYykT!^M2!|mheX?);Y(^GW9>F~K1G|Qz}PzEc{uWHYmo&MWVLzaDFsn&&GJ<4 z^KD1+!--vnEj>nwTyi+5$a2HJRd)$YF0U*IIhPdnP+Ta3kjeyCc)4m8mb%R +#include +#include +#include "libavcodec/avcodec.h" +#include "libavutil/opt.h" +#include "libavutil/channel_layout.h" + +typedef struct { + AVCodecContext *codec_ctx; + AVPacket *packet; + AVFrame *frame; +} DecoderContext; + +EMSCRIPTEN_KEEPALIVE +DecoderContext *init_decoder(int codec_id) { + enum AVCodecID av_codec_id = codec_id == 0 ? AV_CODEC_ID_AC3 : AV_CODEC_ID_EAC3; + + const AVCodec *codec = avcodec_find_decoder(av_codec_id); + if (!codec) return NULL; + + AVCodecContext *codec_ctx = avcodec_alloc_context3(codec); + if (!codec_ctx) return NULL; + + if (avcodec_open2(codec_ctx, codec, NULL) < 0) { + avcodec_free_context(&codec_ctx); + return NULL; + } + + AVPacket *packet = av_packet_alloc(); + if (!packet) { + avcodec_free_context(&codec_ctx); + return NULL; + } + + AVFrame *frame = av_frame_alloc(); + if (!frame) { + av_packet_free(&packet); + avcodec_free_context(&codec_ctx); + return NULL; + } + + DecoderContext *ctx = malloc(sizeof(DecoderContext)); + if (!ctx) { + av_frame_free(&frame); + av_packet_free(&packet); + avcodec_free_context(&codec_ctx); + return NULL; + } + + ctx->codec_ctx = codec_ctx; + ctx->packet = packet; + ctx->frame = frame; + + return ctx; +} + +EMSCRIPTEN_KEEPALIVE +uint8_t *configure_decode_packet(DecoderContext *ctx, int size) { + if (av_new_packet(ctx->packet, size) < 0) { + return NULL; + } + + return ctx->packet->data; +} + +EMSCRIPTEN_KEEPALIVE +int decode_packet(DecoderContext *ctx, int pts) { + ctx->packet->pts = pts; + int ret = avcodec_send_packet(ctx->codec_ctx, ctx->packet); + av_packet_unref(ctx->packet); + if (ret < 0) return ret; + + ret = avcodec_receive_frame(ctx->codec_ctx, ctx->frame); + if (ret < 0) return ret; + + return 0; +} + +EMSCRIPTEN_KEEPALIVE +int get_decoded_format(DecoderContext *ctx) { + return ctx->frame->format; +} + +EMSCRIPTEN_KEEPALIVE +uint8_t *get_decoded_plane_ptr(DecoderContext *ctx, int plane) { + return ctx->frame->data[plane]; +} + +EMSCRIPTEN_KEEPALIVE +int get_decoded_channels(DecoderContext *ctx) { + return ctx->frame->ch_layout.nb_channels; +} + +EMSCRIPTEN_KEEPALIVE +int get_decoded_sample_rate(DecoderContext *ctx) { + return ctx->frame->sample_rate; +} + +EMSCRIPTEN_KEEPALIVE +int get_decoded_sample_count(DecoderContext *ctx) { + return ctx->frame->nb_samples; +} + +EMSCRIPTEN_KEEPALIVE +int get_decoded_pts(DecoderContext *ctx) { + return (int)ctx->frame->pts; +} + +EMSCRIPTEN_KEEPALIVE +void flush_decoder(DecoderContext *ctx) { + avcodec_send_packet(ctx->codec_ctx, NULL); + while (avcodec_receive_frame(ctx->codec_ctx, ctx->frame) == 0) {} + avcodec_flush_buffers(ctx->codec_ctx); +} + +EMSCRIPTEN_KEEPALIVE +void close_decoder(DecoderContext *ctx) { + av_frame_free(&ctx->frame); + av_packet_free(&ctx->packet); + avcodec_free_context(&ctx->codec_ctx); + free(ctx); +} + +typedef struct { + AVCodecContext *codec_ctx; + AVPacket *packet; + AVFrame *frame; + float *input_buffer; + int input_buffer_size; + int encoded_pts; + int encoded_duration; +} EncoderContext; + +EMSCRIPTEN_KEEPALIVE +EncoderContext *init_encoder(int codec_id, int channels, int sample_rate, int bitrate) { + enum AVCodecID av_codec_id = codec_id == 0 ? AV_CODEC_ID_AC3 : AV_CODEC_ID_EAC3; + + const AVCodec *codec = avcodec_find_encoder(av_codec_id); + if (!codec) return NULL; + + AVCodecContext *codec_ctx = avcodec_alloc_context3(codec); + if (!codec_ctx) return NULL; + + codec_ctx->sample_fmt = AV_SAMPLE_FMT_FLTP; + codec_ctx->sample_rate = sample_rate; + codec_ctx->bit_rate = bitrate; + codec_ctx->time_base = (AVRational){1, sample_rate}; + + AVChannelLayout layout; + av_channel_layout_default(&layout, channels); + av_channel_layout_copy(&codec_ctx->ch_layout, &layout); + av_channel_layout_uninit(&layout); + + if (avcodec_open2(codec_ctx, codec, NULL) < 0) { + avcodec_free_context(&codec_ctx); + return NULL; + } + + AVPacket *packet = av_packet_alloc(); + if (!packet) { + avcodec_free_context(&codec_ctx); + return NULL; + } + + AVFrame *frame = av_frame_alloc(); + if (!frame) { + av_packet_free(&packet); + avcodec_free_context(&codec_ctx); + return NULL; + } + + // The frame has a fixed format, so let's create it now: + frame->format = AV_SAMPLE_FMT_FLTP; + frame->sample_rate = sample_rate; + frame->nb_samples = codec_ctx->frame_size; + av_channel_layout_copy(&frame->ch_layout, &codec_ctx->ch_layout); + + if (av_frame_get_buffer(frame, 0) < 0) { + av_frame_free(&frame); + av_packet_free(&packet); + avcodec_free_context(&codec_ctx); + return NULL; + } + + EncoderContext *ctx = malloc(sizeof(EncoderContext)); + if (!ctx) { + av_frame_free(&frame); + av_packet_free(&packet); + avcodec_free_context(&codec_ctx); + return NULL; + } + + ctx->codec_ctx = codec_ctx; + ctx->packet = packet; + ctx->frame = frame; + ctx->input_buffer = NULL; + ctx->input_buffer_size = 0; + ctx->encoded_pts = 0; + ctx->encoded_duration = 0; + + return ctx; +} + +EMSCRIPTEN_KEEPALIVE +int get_encoder_frame_size(EncoderContext *ctx) { + return ctx->codec_ctx->frame_size; +} + +EMSCRIPTEN_KEEPALIVE +float *get_encode_input_ptr(EncoderContext *ctx, int size) { + if (ctx->input_buffer_size < size) { + free(ctx->input_buffer); + ctx->input_buffer = malloc(size); + if (!ctx->input_buffer) { + ctx->input_buffer_size = 0; + return NULL; + } + ctx->input_buffer_size = size; + } + return ctx->input_buffer; +} + +EMSCRIPTEN_KEEPALIVE +int encode_frame(EncoderContext *ctx, int pts) { + int channels = ctx->codec_ctx->ch_layout.nb_channels; + int frame_size = ctx->frame->nb_samples; + + ctx->frame->pts = pts; + + // Deinterleave f32 input into the frame's f32-planar planes + float *input = ctx->input_buffer; + for (int ch = 0; ch < channels; ch++) { + float *plane = (float *)ctx->frame->data[ch]; + for (int i = 0; i < frame_size; i++) { + plane[i] = input[i * channels + ch]; + } + } + + int ret = avcodec_send_frame(ctx->codec_ctx, ctx->frame); + if (ret < 0) return ret; + + ret = avcodec_receive_packet(ctx->codec_ctx, ctx->packet); + if (ret < 0) return ret; + + ctx->encoded_pts = ctx->packet->pts; + ctx->encoded_duration = ctx->packet->duration; + + return ctx->packet->size; +} + +EMSCRIPTEN_KEEPALIVE +void flush_encoder(EncoderContext *ctx) { + avcodec_send_frame(ctx->codec_ctx, NULL); + while (avcodec_receive_packet(ctx->codec_ctx, ctx->packet) == 0) { + av_packet_unref(ctx->packet); + } +} + +EMSCRIPTEN_KEEPALIVE +uint8_t *get_encoded_data(EncoderContext *ctx) { + return ctx->packet->data; +} + +EMSCRIPTEN_KEEPALIVE +int get_encoded_pts(EncoderContext *ctx) { + return ctx->encoded_pts; +} + +EMSCRIPTEN_KEEPALIVE +int get_encoded_duration(EncoderContext *ctx) { + return ctx->encoded_duration; +} + +EMSCRIPTEN_KEEPALIVE +void close_encoder(EncoderContext *ctx) { + free(ctx->input_buffer); + av_frame_free(&ctx->frame); + av_packet_free(&ctx->packet); + avcodec_free_context(&ctx->codec_ctx); + free(ctx); +} diff --git a/packages/ac3/src/codec.worker.ts b/packages/ac3/src/codec.worker.ts new file mode 100644 index 0000000..7224b15 --- /dev/null +++ b/packages/ac3/src/codec.worker.ts @@ -0,0 +1,306 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import createModule from '../build/ac3'; +import type { WorkerCommand, WorkerResponse, WorkerResponseData } from './shared'; + +type ExtendedEmscriptenModule = EmscriptenModule & { + cwrap: typeof cwrap; +}; + +let module: ExtendedEmscriptenModule; +let modulePromise: Promise | null = null; + +let initDecoderFn: (codecId: number) => number; +let configureDecodePacket: (ctx: number, size: number) => number; +let decodePacket: (ctx: number, pts: number) => number; +let getDecodedFormat: (ctx: number) => number; +let getDecodedPlanePtr: (ctx: number, plane: number) => number; +let getDecodedChannels: (ctx: number) => number; +let getDecodedSampleRate: (ctx: number) => number; +let getDecodedSampleCount: (ctx: number) => number; +let getDecodedPts: (ctx: number) => number; +let flushDecoderFn: (ctx: number) => void; +let closeDecoderFn: (ctx: number) => void; + +let initEncoderFn: (codecId: number, channels: number, sampleRate: number, bitrate: number) => number; +let getEncoderFrameSize: (ctx: number) => number; +let getEncodeInputPtr: (ctx: number, size: number) => number; +let encodeFrameFn: (ctx: number, pts: number) => number; +let flushEncoderFn: (ctx: number) => void; +let getEncodedData: (ctx: number) => number; +let getEncodedPts: (ctx: number) => number; +let getEncodedDuration: (ctx: number) => number; +let closeEncoderFn: (ctx: number) => void; + +const codecToId = (codec: string) => codec === 'ac3' ? 0 : 1; + +const ensureModule = async () => { + if (!module) { + if (modulePromise) { + // If we don't do this we can have a race condition + return modulePromise; + } + + modulePromise = createModule() as Promise; + module = await modulePromise; + modulePromise = null; + + initDecoderFn = module.cwrap('init_decoder', 'number', ['number']); + configureDecodePacket = module.cwrap('configure_decode_packet', 'number', ['number', 'number']); + decodePacket = module.cwrap('decode_packet', 'number', ['number', 'number']); + getDecodedFormat = module.cwrap('get_decoded_format', 'number', ['number']); + getDecodedPlanePtr = module.cwrap('get_decoded_plane_ptr', 'number', ['number', 'number']); + getDecodedChannels = module.cwrap('get_decoded_channels', 'number', ['number']); + getDecodedSampleRate = module.cwrap('get_decoded_sample_rate', 'number', ['number']); + getDecodedSampleCount = module.cwrap('get_decoded_sample_count', 'number', ['number']); + getDecodedPts = module.cwrap('get_decoded_pts', 'number', ['number']); + flushDecoderFn = module.cwrap('flush_decoder', null, ['number']); + closeDecoderFn = module.cwrap('close_decoder', null, ['number']); + + initEncoderFn = module.cwrap('init_encoder', 'number', ['number', 'number', 'number', 'number']); + getEncoderFrameSize = module.cwrap('get_encoder_frame_size', 'number', ['number']); + getEncodeInputPtr = module.cwrap('get_encode_input_ptr', 'number', ['number', 'number']); + encodeFrameFn = module.cwrap('encode_frame', 'number', ['number', 'number']); + flushEncoderFn = module.cwrap('flush_encoder', null, ['number']); + getEncodedData = module.cwrap('get_encoded_data', 'number', ['number']); + getEncodedPts = module.cwrap('get_encoded_pts', 'number', ['number']); + getEncodedDuration = module.cwrap('get_encoded_duration', 'number', ['number']); + closeEncoderFn = module.cwrap('close_encoder', null, ['number']); + } +}; + +const initDecoder = async (codec: string) => { + await ensureModule(); + + const ctx = initDecoderFn(codecToId(codec)); + if (ctx === 0) { + throw new Error('Failed to initialize AC3 decoder.'); + } + + return { ctx, frameSize: 0 }; +}; + +// Keys are AVSampleFormat enum values +const AV_FORMAT_MAP: Record = { + 0: { format: 'u8', bytesPerSample: 1, planar: false }, + 1: { format: 's16', bytesPerSample: 2, planar: false }, + 2: { format: 's32', bytesPerSample: 4, planar: false }, + 3: { format: 'f32', bytesPerSample: 4, planar: false }, + 5: { format: 'u8-planar', bytesPerSample: 1, planar: true }, + 6: { format: 's16-planar', bytesPerSample: 2, planar: true }, + 7: { format: 's32-planar', bytesPerSample: 4, planar: true }, + 8: { format: 'f32-planar', bytesPerSample: 4, planar: true }, +}; + +const decode = (ctx: number, encodedData: ArrayBuffer, timestamp: number) => { + const bytes = new Uint8Array(encodedData); + + const dataPtr = configureDecodePacket(ctx, bytes.length); + if (dataPtr === 0) { + throw new Error('Failed to configure decode packet.'); + } + + module.HEAPU8.set(bytes, dataPtr); + + const ret = decodePacket(ctx, timestamp); + if (ret < 0) { + throw new Error(`Decode failed with error code ${ret}.`); + } + + const avFormat = getDecodedFormat(ctx); + const info = AV_FORMAT_MAP[avFormat]; + if (!info) { + throw new Error(`Unsupported AVSampleFormat: ${avFormat}`); + } + + const channels = getDecodedChannels(ctx); + const sampleRate = getDecodedSampleRate(ctx); + const sampleCount = getDecodedSampleCount(ctx); + const pts = getDecodedPts(ctx); + + let pcmData: ArrayBuffer; + if (info.planar) { + const planeSize = sampleCount * info.bytesPerSample; + const buffer = new Uint8Array(planeSize * channels); + + for (let ch = 0; ch < channels; ch++) { + const ptr = getDecodedPlanePtr(ctx, ch); + buffer.set(module.HEAPU8.subarray(ptr, ptr + planeSize), ch * planeSize); + } + + pcmData = buffer.buffer; + } else { + const totalSize = sampleCount * channels * info.bytesPerSample; + const ptr = getDecodedPlanePtr(ctx, 0); + pcmData = module.HEAPU8.slice(ptr, ptr + totalSize).buffer; + } + + return { pcmData, format: info.format, channels, sampleRate, sampleCount, pts }; +}; + +const initEncoder = async ( + codec: string, + numberOfChannels: number, + sampleRate: number, + bitrate: number, +) => { + await ensureModule(); + + const ctx = initEncoderFn(codecToId(codec), numberOfChannels, sampleRate, bitrate); + if (ctx === 0) { + throw new Error('Failed to initialize AC3 encoder.'); + } + + return { ctx, frameSize: getEncoderFrameSize(ctx) }; +}; + +const encode = (ctx: number, audioData: ArrayBuffer, timestamp: number) => { + const audioBytes = new Uint8Array(audioData); + + const inputPtr = getEncodeInputPtr(ctx, audioBytes.length); + if (inputPtr === 0) { + throw new Error('Failed to allocate encoder input buffer.'); + } + module.HEAPU8.set(audioBytes, inputPtr); + + const bytesWritten = encodeFrameFn(ctx, timestamp); + if (bytesWritten < 0) { + throw new Error(`Encode failed with error code ${bytesWritten}.`); + } + + const ptr = getEncodedData(ctx); + const encodedData = module.HEAPU8.slice(ptr, ptr + bytesWritten).buffer; + const pts = getEncodedPts(ctx); + const duration = getEncodedDuration(ctx); + + return { encodedData, pts, duration }; +}; + +const flushEncoder = (ctx: number) => { + flushEncoderFn(ctx); +}; + +const onMessage = (data: { id: number; command: WorkerCommand }) => { + const { id, command } = data; + + const handleCommand = async (): Promise => { + try { + let result: WorkerResponseData; + const transferables: Transferable[] = []; + + switch (command.type) { + case 'init-decoder': { + const { ctx, frameSize } = await initDecoder(command.data.codec); + result = { type: command.type, ctx, frameSize }; + }; break; + + case 'decode': { + const decoded = decode(command.data.ctx, command.data.encodedData, command.data.timestamp); + result = { + type: command.type, + pcmData: decoded.pcmData, + format: decoded.format, + channels: decoded.channels, + sampleRate: decoded.sampleRate, + sampleCount: decoded.sampleCount, + pts: decoded.pts, + }; + transferables.push(decoded.pcmData); + }; break; + + case 'flush-decoder': { + flushDecoderFn(command.data.ctx); + result = { type: command.type }; + }; break; + + case 'close-decoder': { + closeDecoderFn(command.data.ctx); + result = { type: command.type }; + }; break; + + case 'init-encoder': { + const { ctx, frameSize } = await initEncoder( + command.data.codec, + command.data.numberOfChannels, + command.data.sampleRate, + command.data.bitrate, + ); + result = { type: command.type, ctx, frameSize }; + }; break; + + case 'encode': { + const encoded = encode( + command.data.ctx, + command.data.audioData, + command.data.timestamp, + ); + result = { + type: command.type, + encodedData: encoded.encodedData, + pts: encoded.pts, + duration: encoded.duration, + }; + transferables.push(encoded.encodedData); + }; break; + + case 'flush-encoder': { + flushEncoder(command.data.ctx); + result = { type: command.type }; + }; break; + + case 'close-encoder': { + closeEncoderFn(command.data.ctx); + result = { type: command.type }; + }; break; + } + + const response: WorkerResponse = { + id, + success: true, + data: result, + }; + sendMessage(response, transferables); + } catch (error: unknown) { + const response: WorkerResponse = { + id, + success: false, + error, + }; + sendMessage(response); + } + }; + + void handleCommand(); +}; + +const sendMessage = (data: unknown, transferables?: Transferable[]) => { + if (parentPort) { + parentPort.postMessage(data, transferables ?? []); + } else { + self.postMessage(data, { transfer: transferables ?? [] }); + } +}; + +let parentPort: { + postMessage: (data: unknown, transferables?: Transferable[]) => void; + on: (event: string, listener: (data: never) => void) => void; +} | null = null; + +if (typeof self === 'undefined') { + const workerModule = 'worker_threads'; + // eslint-disable-next-line @stylistic/max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-member-access + parentPort = require(workerModule).parentPort; +} + +if (parentPort) { + parentPort.on('message', onMessage); +} else { + self.addEventListener('message', event => onMessage(event.data as { id: number; command: WorkerCommand })); +} diff --git a/packages/ac3/src/decoder.ts b/packages/ac3/src/decoder.ts new file mode 100644 index 0000000..73cc9fe --- /dev/null +++ b/packages/ac3/src/decoder.ts @@ -0,0 +1,70 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { + CustomAudioDecoder, + AudioCodec, + AudioSample, + EncodedPacket, + registerDecoder, +} from 'mediabunny'; +import { sendCommand } from './worker-client'; + +class Ac3Decoder extends CustomAudioDecoder { + private ctx = 0; + + static override supports(codec: AudioCodec): boolean { + return codec === 'ac3' || codec === 'eac3'; + } + + async init() { + const result = await sendCommand({ + type: 'init-decoder', + data: { codec: this.codec }, + }); + this.ctx = result.ctx; + } + + async decode(packet: EncodedPacket) { + const encodedData = packet.data.slice().buffer; + const timestamp = Math.round(packet.timestamp * this.config.sampleRate); + + const result = await sendCommand({ + type: 'decode', + data: { ctx: this.ctx, encodedData, timestamp }, + }, [encodedData]); + + const sample = new AudioSample({ + data: result.pcmData, + format: result.format, + numberOfChannels: result.channels, + sampleRate: result.sampleRate, + timestamp: result.pts / result.sampleRate, + }); + this.onSample(sample); + } + + async flush() { + await sendCommand({ type: 'flush-decoder', data: { ctx: this.ctx } }); + } + + close() { + void sendCommand({ type: 'close-decoder', data: { ctx: this.ctx } }); + } +} + +/** + * Registers AC-3 and E-AC-3 decoders, which Mediabunny will then use automatically when applicable. Make sure to call + * this function before starting any decoding task. + * + * @group \@mediabunny/ac3 + * @public + */ +export const registerAc3Decoder = () => { + registerDecoder(Ac3Decoder); +}; diff --git a/packages/ac3/src/encoder.ts b/packages/ac3/src/encoder.ts new file mode 100644 index 0000000..1f567a0 --- /dev/null +++ b/packages/ac3/src/encoder.ts @@ -0,0 +1,191 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { + CustomAudioEncoder, + AudioCodec, + AudioSample, + EncodedPacket, + registerEncoder, +} from 'mediabunny'; +import { sendCommand } from './worker-client'; +import { assert } from './shared'; +import { AC3_SAMPLE_RATES, EAC3_REDUCED_SAMPLE_RATES } from '../../../shared/ac3-misc'; + +class Ac3Encoder extends CustomAudioEncoder { + private ctx = 0; + private encoderFrameSize = 0; + private sampleRate = 0; + private numberOfChannels = 0; + private chunkMetadata: EncodedAudioChunkMetadata = {}; + + // Accumulate interleaved f32 samples until we have a full frame + private pendingBuffer = new Float32Array(2 ** 16); + private pendingFrames = 0; + private nextSampleTimestampInSamples: number | null = null; + private nextPacketTimestampInSamples: number | null = null; + + static override supports(codec: AudioCodec, config: AudioEncoderConfig): boolean { + const sampleRates = codec === 'eac3' + ? [...AC3_SAMPLE_RATES, ...EAC3_REDUCED_SAMPLE_RATES] + : AC3_SAMPLE_RATES; + + return (codec === 'ac3' || codec === 'eac3') + && config.numberOfChannels >= 1 + && config.numberOfChannels <= 8 + && sampleRates.includes(config.sampleRate); + } + + async init() { + assert(this.config.bitrate); + this.sampleRate = this.config.sampleRate; + this.numberOfChannels = this.config.numberOfChannels; + + const result = await sendCommand({ + type: 'init-encoder', + data: { + codec: this.codec, + numberOfChannels: this.config.numberOfChannels, + sampleRate: this.config.sampleRate, + bitrate: this.config.bitrate, + }, + }); + + this.ctx = result.ctx; + this.encoderFrameSize = result.frameSize; + + this.resetInternalState(); + } + + private resetInternalState() { + this.pendingFrames = 0; + this.nextSampleTimestampInSamples = null; + this.nextPacketTimestampInSamples = null; + + this.chunkMetadata = { + decoderConfig: { + codec: this.codec === 'ac3' ? 'ac-3' : 'ec-3', + numberOfChannels: this.config.numberOfChannels, + sampleRate: this.config.sampleRate, + }, + }; + } + + async encode(audioSample: AudioSample) { + if (this.nextSampleTimestampInSamples === null) { + this.nextSampleTimestampInSamples = Math.round(audioSample.timestamp * this.sampleRate); + this.nextPacketTimestampInSamples = this.nextSampleTimestampInSamples; + } + + const channels = this.numberOfChannels; + const incomingFrames = audioSample.numberOfFrames; + + // Extract interleaved f32 data + const totalBytes = audioSample.allocationSize({ format: 'f32', planeIndex: 0 }); + const audioBytes = new Uint8Array(totalBytes); + audioSample.copyTo(audioBytes, { format: 'f32', planeIndex: 0 }); + const incomingData = new Float32Array(audioBytes.buffer); + + const requiredSamples = (this.pendingFrames + incomingFrames) * channels; + if (requiredSamples > this.pendingBuffer.length) { + let newSize = this.pendingBuffer.length; + while (newSize < requiredSamples) { + newSize *= 2; + } + const newBuffer = new Float32Array(newSize); + newBuffer.set(this.pendingBuffer.subarray(0, this.pendingFrames * channels)); + this.pendingBuffer = newBuffer; + } + this.pendingBuffer.set(incomingData, this.pendingFrames * channels); + this.pendingFrames += incomingFrames; + + while (this.pendingFrames >= this.encoderFrameSize) { + await this.encodeOneFrame(); + } + } + + async flush() { + // Pad remaining samples with silence to fill a full frame + if (this.pendingFrames > 0) { + const channels = this.numberOfChannels; + const frameSize = this.encoderFrameSize; + const usedSamples = this.pendingFrames * channels; + const frameSamples = frameSize * channels; + + this.pendingBuffer.fill(0, usedSamples, frameSamples); + this.pendingFrames = frameSize; + + await this.encodeOneFrame(); + } + + await sendCommand({ type: 'flush-encoder', data: { ctx: this.ctx } }); + + this.resetInternalState(); + } + + close() { + void sendCommand({ type: 'close-encoder', data: { ctx: this.ctx } }); + } + + private async encodeOneFrame() { + assert(this.nextSampleTimestampInSamples !== null); + assert(this.nextPacketTimestampInSamples !== null); + + const channels = this.numberOfChannels; + const frameSize = this.encoderFrameSize; + const frameSamples = frameSize * channels; + + const frameData = this.pendingBuffer.slice(0, frameSamples); + + // Shift remaining using copyWithin + this.pendingFrames -= frameSize; + if (this.pendingFrames > 0) { + this.pendingBuffer.copyWithin(0, frameSamples, frameSamples + this.pendingFrames * channels); + } + + const audioData = frameData.buffer; + const result = await sendCommand({ + type: 'encode', + data: { + ctx: this.ctx, + audioData, + timestamp: this.nextSampleTimestampInSamples, + }, + }, [audioData]); + + this.nextSampleTimestampInSamples += frameSize; + + // We always get exactly one packet because we encode the correct frame size + const packet = new EncodedPacket( + new Uint8Array(result.encodedData), + 'key', + this.nextPacketTimestampInSamples / this.sampleRate, + result.duration / this.sampleRate, + ); + + this.nextPacketTimestampInSamples += result.duration; + + this.onPacket( + packet, + this.chunkMetadata, + ); + + this.chunkMetadata = {}; + } +} + +/** + * Registers AC-3 and E-AC-3 encoders, which Mediabunny will then use automatically when applicable. Make sure to call + * this function before starting any encoding task. + * + * @group \@mediabunny/ac3 + * @public + */ +export const registerAc3Encoder = () => { + registerEncoder(Ac3Encoder); +}; diff --git a/packages/ac3/src/index.ts b/packages/ac3/src/index.ts new file mode 100644 index 0000000..79ebf7f --- /dev/null +++ b/packages/ac3/src/index.ts @@ -0,0 +1,21 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +const AC3_LOADED_SYMBOL = Symbol.for('@mediabunny/ac3 loaded'); +if ((globalThis as Record)[AC3_LOADED_SYMBOL]) { + console.error( + '[WARNING]\n@mediabunny/ac3 was loaded twice.' + + ' This will likely cause the encoder/decoder not to work correctly.' + + ' Check if multiple dependencies are importing different versions of @mediabunny/ac3,' + + ' or if something is being bundled incorrectly.', + ); +} +(globalThis as Record)[AC3_LOADED_SYMBOL] = true; + +export { registerAc3Decoder } from './decoder'; +export { registerAc3Encoder } from './encoder'; diff --git a/packages/ac3/src/shared.ts b/packages/ac3/src/shared.ts new file mode 100644 index 0000000..ba8d578 --- /dev/null +++ b/packages/ac3/src/shared.ts @@ -0,0 +1,103 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +export type WorkerCommand = { + type: 'init-decoder'; + data: { + codec: string; + }; +} | { + type: 'decode'; + data: { + ctx: number; + encodedData: ArrayBuffer; + timestamp: number; + }; +} | { + type: 'flush-decoder'; + data: { + ctx: number; + }; +} | { + type: 'close-decoder'; + data: { + ctx: number; + }; +} | { + type: 'init-encoder'; + data: { + codec: string; + numberOfChannels: number; + sampleRate: number; + bitrate: number; + }; +} | { + type: 'encode'; + data: { + ctx: number; + audioData: ArrayBuffer; + timestamp: number; + }; +} | { + type: 'flush-encoder'; + data: { + ctx: number; + }; +} | { + type: 'close-encoder'; + data: { + ctx: number; + }; +}; + +export type WorkerResponseData = { + type: 'init-decoder'; + ctx: number; + frameSize: number; +} | { + type: 'decode'; + pcmData: ArrayBuffer; + format: AudioSampleFormat; + channels: number; + sampleRate: number; + sampleCount: number; + pts: number; +} | { + type: 'flush-decoder'; +} | { + type: 'close-decoder'; +} | { + type: 'init-encoder'; + ctx: number; + frameSize: number; +} | { + type: 'encode'; + encodedData: ArrayBuffer; + pts: number; + duration: number; +} | { + type: 'flush-encoder'; +} | { + type: 'close-encoder'; +}; + +export type WorkerResponse = { + id: number; +} & ({ + success: true; + data: WorkerResponseData; +} | { + success: false; + error: unknown; +}); + +export function assert(x: unknown): asserts x { + if (!x) { + throw new Error('Assertion failed.'); + } +} diff --git a/packages/ac3/src/worker-client.ts b/packages/ac3/src/worker-client.ts new file mode 100644 index 0000000..d79e1ae --- /dev/null +++ b/packages/ac3/src/worker-client.ts @@ -0,0 +1,69 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { assert, type WorkerCommand, type WorkerResponse, type WorkerResponseData } from './shared'; +// @ts-expect-error An esbuild plugin handles this, TypeScript doesn't need to understand +import createWorker from './codec.worker'; + +let workerPromise: Promise | null; +let nextMessageId = 0; +const pendingMessages = new Map void; + reject: (reason?: unknown) => void; +}>(); + +export const sendCommand = async ( + command: WorkerCommand & { type: T }, + transferables?: Transferable[], +) => { + const worker = await ensureWorker(); + + return new Promise((resolve, reject) => { + const id = nextMessageId++; + pendingMessages.set(id, { + resolve: resolve as (value: WorkerResponseData) => void, + reject, + }); + + if (transferables) { + worker.postMessage({ id, command }, transferables); + } else { + worker.postMessage({ id, command }); + } + }); +}; + +const ensureWorker = () => { + return workerPromise ??= (async () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + const worker = (await createWorker()) as Worker; + + const onMessage = (data: WorkerResponse) => { + const pending = pendingMessages.get(data.id); + assert(pending !== undefined); + + pendingMessages.delete(data.id); + if (data.success) { + pending.resolve(data.data); + } else { + pending.reject(data.error); + } + }; + + if (worker.addEventListener) { + worker.addEventListener('message', event => onMessage(event.data as WorkerResponse)); + } else { + const nodeWorker = worker as unknown as { + on: (event: string, listener: (data: never) => void) => void; + }; + nodeWorker.on('message', onMessage); + } + + return worker; + })(); +}; diff --git a/packages/mp3-encoder/src/tsconfig.json b/packages/ac3/tsconfig.json similarity index 56% rename from packages/mp3-encoder/src/tsconfig.json rename to packages/ac3/tsconfig.json index 8e70282..27a7ef1 100644 --- a/packages/mp3-encoder/src/tsconfig.json +++ b/packages/ac3/tsconfig.json @@ -1,7 +1,8 @@ { - "extends": "../../../tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../dist/modules", + "composite": true, + "outDir": "./dist/modules", "declaration": true, "declarationMap": true, "stripInternal": true, @@ -10,14 +11,14 @@ "module": "nodenext", "allowJs": true, "paths": { - "mediabunny": ["../../../src/index.ts"], + "mediabunny": ["../../src/index.ts"], }, }, "include": [ - "**/*", - "../../../shared/**/*" + "./src/**/*", + "./build/**/*", ], "references": [ - { "path": "../../../src" } + { "path": "../../src" } ] -} \ No newline at end of file +} diff --git a/packages/ac3/tsdoc.json b/packages/ac3/tsdoc.json new file mode 100644 index 0000000..51d29d3 --- /dev/null +++ b/packages/ac3/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../tsdoc.json"] +} diff --git a/packages/mp3-encoder/README.md b/packages/mp3-encoder/README.md index 14178c5..c7e7dfb 100644 --- a/packages/mp3-encoder/README.md +++ b/packages/mp3-encoder/README.md @@ -102,8 +102,6 @@ The WASM build itself is a performance-optimized, SIMD-enabled build of LAME 3.1 ## Building and development -Building this library is done using the build commands in the [Mediabunny root](https://github.com/Vanilagy/mediabunny). - For simplicity, all built WASM artifacts are included in the repo, since these rarely change. However, here are the instructions for building them from scratch: ### Prerequisites @@ -148,7 +146,7 @@ emcc src/lame-bridge.c build/libmp3lame.a \ -o build/lame.js ``` -This generates `build/lame.js`, which contains both the JavaScript "glue code" as well as the compiled WASM encoded with Base64. +This generates `build/lame.js`, which contains both the JavaScript "glue code" as well as the compiled WASM inlined. ### Building the package diff --git a/packages/mp3-encoder/src/encode.worker.ts b/packages/mp3-encoder/src/encode.worker.ts index e5745b9..ee24db8 100644 --- a/packages/mp3-encoder/src/encode.worker.ts +++ b/packages/mp3-encoder/src/encode.worker.ts @@ -146,7 +146,10 @@ const onMessage = (data: { id: number; command: WorkerCommand }) => { command.data.sampleRate, command.data.bitrate, ); - result = { success: true }; + result = { + type: command.type, + success: true, + }; }; break; case 'encode': { @@ -154,13 +157,19 @@ const onMessage = (data: { id: number; command: WorkerCommand }) => { command.data.audioData, command.data.numberOfFrames, ); - result = { encodedData }; + result = { + type: command.type, + encodedData, + }; transferables.push(encodedData); }; break; case 'flush': { const flushedData = flush(); - result = { flushedData }; + result = { + type: command.type, + flushedData, + }; transferables.push(flushedData); }; break; } diff --git a/packages/mp3-encoder/src/index.ts b/packages/mp3-encoder/src/index.ts index 1519a19..ad32601 100644 --- a/packages/mp3-encoder/src/index.ts +++ b/packages/mp3-encoder/src/index.ts @@ -80,6 +80,12 @@ class Mp3Encoder extends CustomAudioEncoder { }, }); + this.resetInternalState(); + } + + private resetInternalState() { + this.currentBufferOffset = 0; + this.currentTimestamp = null; this.chunkMetadata = { decoderConfig: { codec: 'mp3', @@ -119,15 +125,15 @@ class Mp3Encoder extends CustomAudioEncoder { }, }, [audioData]); - assert('encodedData' in result); this.digestOutput(new Uint8Array(result.encodedData)); } async flush() { const result = await this.sendCommand({ type: 'flush' }); - assert('flushedData' in result); this.digestOutput(new Uint8Array(result.flushedData)); + + this.resetInternalState(); } close() { @@ -171,9 +177,7 @@ class Mp3Encoder extends CustomAudioEncoder { const duration = header.audioSamplesInFrame / header.sampleRate; this.onPacket(new EncodedPacket(data, 'key', this.currentTimestamp, duration), this.chunkMetadata); - if (this.currentTimestamp === 0) { - this.chunkMetadata = {}; // Mimic WebCodecs-like behavior - } + this.chunkMetadata = {}; // Mimic WebCodecs-like behavior this.currentTimestamp += duration; pos += header.totalSize; @@ -186,13 +190,16 @@ class Mp3Encoder extends CustomAudioEncoder { } } - private sendCommand( - command: WorkerCommand, + private sendCommand( + command: WorkerCommand & { type: T }, transferables?: Transferable[], ) { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const id = this.nextMessageId++; - this.pendingMessages.set(id, { resolve, reject }); + this.pendingMessages.set(id, { + resolve: resolve as (value: WorkerResponseData) => void, + reject, + }); assert(this.worker); diff --git a/packages/mp3-encoder/src/shared.ts b/packages/mp3-encoder/src/shared.ts index d407003..526dac1 100644 --- a/packages/mp3-encoder/src/shared.ts +++ b/packages/mp3-encoder/src/shared.ts @@ -24,10 +24,13 @@ export type WorkerCommand = { }; export type WorkerResponseData = { + type: 'init'; success: boolean; } | { + type: 'encode'; encodedData: ArrayBuffer; } | { + type: 'flush'; flushedData: ArrayBuffer; }; diff --git a/packages/mp3-encoder/tsconfig.json b/packages/mp3-encoder/tsconfig.json new file mode 100644 index 0000000..bf2e94f --- /dev/null +++ b/packages/mp3-encoder/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/modules", + "declaration": true, + "declarationMap": true, + "stripInternal": true, + "noEmit": false, + "moduleResolution": "nodenext", + "module": "nodenext", + "allowJs": true, + "paths": { + "mediabunny": ["../../src/index.ts"], + }, + }, + "include": [ + "./src/**/*", + "./build/**/*", + "../../shared/**/*", + ], + "references": [ + { "path": "../../src" } + ] +} diff --git a/packages/mp3-encoder/tsdoc.json b/packages/mp3-encoder/tsdoc.json new file mode 100644 index 0000000..51d29d3 --- /dev/null +++ b/packages/mp3-encoder/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../tsdoc.json"] +} diff --git a/build.sh b/scripts/build.sh similarity index 78% rename from build.sh rename to scripts/build.sh index e1d5e58..c0595fe 100755 --- a/build.sh +++ b/scripts/build.sh @@ -6,13 +6,15 @@ set -e # Clear the stuff from last build rm -rf dist rm -rf packages/mp3-encoder/dist +rm -rf packages/ac3/dist # Ensure license headers on all source files tsx scripts/ensure-license-headers.ts # Type check & generate .js and .d.ts files tsc -p src -tsc -p packages/mp3-encoder/src +tsc -p packages/mp3-encoder +tsc -p packages/ac3 # So that the resulting files use valid ESM imports with file extension. This only runs for the core Mediabunny as only # it ships the individual files to npm (for tree shaking, because it's large) @@ -24,14 +26,17 @@ tsx scripts/bundle.ts # Declaration file rollup and checks api-extractor run api-extractor run -c packages/mp3-encoder/api-extractor.json +api-extractor run -c packages/ac3/api-extractor.json # Checks that all symbols are documented tsx scripts/check-docblocks.ts dist/mediabunny.d.ts tsx scripts/check-docblocks.ts packages/mp3-encoder/dist/mediabunny-mp3-encoder.d.ts +tsx scripts/check-docblocks.ts packages/ac3/dist/mediabunny-ac3.d.ts # Checks that API docs are generatable npm run docs:generate -- --dry # Appends stuff to the declaration files to register the global variables these libraries expose echo 'export as namespace Mediabunny;' >> dist/mediabunny.d.ts -echo 'export as namespace MediabunnyMp3Encoder;' >> packages/mp3-encoder/dist/mediabunny-mp3-encoder.d.ts \ No newline at end of file +echo 'export as namespace MediabunnyMp3Encoder;' >> packages/mp3-encoder/dist/mediabunny-mp3-encoder.d.ts +echo 'export as namespace MediabunnyAc3;' >> packages/ac3/dist/mediabunny-ac3.d.ts \ No newline at end of file diff --git a/scripts/bundle.ts b/scripts/bundle.ts index 5ca0c3d..c1a23d2 100644 --- a/scripts/bundle.ts +++ b/scripts/bundle.ts @@ -113,9 +113,41 @@ const mp3EncoderVariants = await createVariants( }, ); +const ac3Variants = await createVariants( + 'packages/ac3/src/index.ts', + 'MediabunnyAc3', + 'packages/ac3/dist/bundles/mediabunny-ac3', + 'js', // The bundles are purely for the browser, not for Node (due to the peer dependecy) + { + plugins: [ + PluginExternalGlobal.externalGlobalPlugin({ + mediabunny: 'Mediabunny', + }), + inlineWorkerPlugin({ + define: { + 'import.meta.url': '""', + }, + legalComments: 'none', + }), + ], + }, + { + external: ['mediabunny'], + plugins: [ + inlineWorkerPlugin({ + define: { + 'import.meta.url': '""', + }, + legalComments: 'none', + }), + ], + }, +); + const contexts = [ ...mediabunnyVariants, ...mp3EncoderVariants, + ...ac3Variants, ]; if (process.argv[2] === '--watch') { diff --git a/scripts/check.sh b/scripts/check.sh new file mode 100755 index 0000000..41aaef3 --- /dev/null +++ b/scripts/check.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +rm -rf dist/modules +tsc -p src --stripInternal false + +tsc -p packages/mp3-encoder --noEmit + +rm -rf packages/ac3/dist/modules +tsc -p packages/ac3 + +tsc -p tsconfig.vitest.json --noEmit + +tsc -p scripts --noEmit + +tsc -p tsconfig.vite.json --noEmit diff --git a/scripts/ensure-license-headers.ts b/scripts/ensure-license-headers.ts index 231f427..37720ed 100644 --- a/scripts/ensure-license-headers.ts +++ b/scripts/ensure-license-headers.ts @@ -36,6 +36,7 @@ const checkDirectory = (dirPath: string) => { checkDirectory(path.join(__dirname, '..', 'src')); checkDirectory(path.join(__dirname, '..', 'packages', 'mp3-encoder', 'src')); +checkDirectory(path.join(__dirname, '..', 'packages', 'ac3', 'src')); checkDirectory(path.join(__dirname, '..', 'shared')); if (missingFiles.length > 0) { diff --git a/shared/ac3-misc.ts b/shared/ac3-misc.ts new file mode 100644 index 0000000..fa3145f --- /dev/null +++ b/shared/ac3-misc.ts @@ -0,0 +1,13 @@ +/*! + * Copyright (c) 2026-present, Vanilagy and contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +/** Sample rates indexed by fscod (Table 4.1) */ +export const AC3_SAMPLE_RATES = [48000, 44100, 32000]; + +/** E-AC-3 reduced sample rates for fscod2 per ATSC A/52:2018 */ +export const EAC3_REDUCED_SAMPLE_RATES = [24000, 22050, 16000]; diff --git a/src/codec-data.ts b/src/codec-data.ts index 685948b..5f2ffb5 100644 --- a/src/codec-data.ts +++ b/src/codec-data.ts @@ -28,6 +28,7 @@ import { } from './misc'; import { PacketType } from './packet'; import { MetadataTags } from './metadata'; +import { AC3_SAMPLE_RATES, EAC3_REDUCED_SAMPLE_RATES } from '../shared/ac3-misc'; // References for AVC/HEVC code: // ISO 14496-15 @@ -2649,14 +2650,11 @@ export const createVorbisComments = (headerBytes: Uint8Array, tags: MetadataTags // Reference: ETSI TS 102 366 V1.4.1 // ============================================================================ -/** Sample rates indexed by fscod (Table 4.1) */ -export const AC3_SAMPLE_RATES = [48000, 44100, 32000] as const; - /** * Channel counts indexed by acmod (Table 4.3). * Does NOT include LFE - add lfeon to get total channel count. */ -export const AC3_ACMOD_CHANNEL_COUNTS = [2, 1, 2, 3, 3, 4, 4, 5] as const; +export const AC3_ACMOD_CHANNEL_COUNTS = [2, 1, 2, 3, 3, 4, 4, 5]; export interface Ac3FrameInfo { /** Sample rate code */ @@ -2788,11 +2786,8 @@ export const AC3_REGISTRATION_DESCRIPTOR = new Uint8Array([0x05, 0x04, 0x41, 0x4 /** E-AC-3 registration_descriptor for MPEG-TS/ */ export const EAC3_REGISTRATION_DESCRIPTOR = new Uint8Array([0x05, 0x04, 0x45, 0x41, 0x43, 0x33]); -/** E-AC-3 reduced sample rates for fscod2 per ATSC A/52:2018 */ -const EAC3_REDUCED_SAMPLE_RATES = [24000, 22050, 16000] as const; - /** Number of audio blocks per syncframe, indexed by numblkscod */ -export const EAC3_NUMBLKS_TABLE = [1, 2, 3, 6] as const; +export const EAC3_NUMBLKS_TABLE = [1, 2, 3, 6]; /** * E-AC-3 independent substream info. diff --git a/src/conversion.ts b/src/conversion.ts index 221e13a..0a4ac13 100644 --- a/src/conversion.ts +++ b/src/conversion.ts @@ -773,6 +773,13 @@ export class Conversion { `\nThe @mediabunny/mp3-encoder extension package provides support for encoding MP3.`, ); } + + if (codecs.includes('ac3') || codecs.includes('eac3')) { + elements.push( + '\nThe @mediabunny/ac3 extension package provides support' + + ' for encoding and decoding AC-3/E-AC-3.', + ); + } } else { elements.push('\nCheck the discardedTracks field for more info.'); } diff --git a/src/isobmff/isobmff-demuxer.ts b/src/isobmff/isobmff-demuxer.ts index 37eee33..c70efcc 100644 --- a/src/isobmff/isobmff-demuxer.ts +++ b/src/isobmff/isobmff-demuxer.ts @@ -30,7 +30,6 @@ import { parseEac3Config, getEac3SampleRate, getEac3ChannelCount, - AC3_SAMPLE_RATES, AC3_ACMOD_CHANNEL_COUNTS, } from '../codec-data'; import { Demuxer } from '../demuxer'; @@ -92,6 +91,7 @@ import { readAscii, } from '../reader'; import { DEFAULT_TRACK_DISPOSITION, MetadataTags, RichImageData, TrackDisposition } from '../metadata'; +import { AC3_SAMPLE_RATES } from '../../shared/ac3-misc'; type InternalTrack = { id: number; diff --git a/src/media-source.ts b/src/media-source.ts index 362733c..a65a9da 100644 --- a/src/media-source.ts +++ b/src/media-source.ts @@ -227,7 +227,6 @@ class VideoEncoderWrapper { * So, we keep track of the encoder error and throw it as soon as we get the chance. */ private error: Error | null = null; - private errorNeedsNewStack = true; constructor(private source: VideoSource, private encodingConfig: VideoEncodingConfig) {} @@ -413,7 +412,6 @@ class VideoEncoderWrapper { } private ensureEncoder(videoSample: VideoSample) { - const encoderError = new Error(); this.ensureEncoderPromise = (async () => { const encoderConfig = buildVideoEncoderConfig({ width: videoSample.codedWidth, @@ -448,7 +446,6 @@ class VideoEncoderWrapper { void this.muxer!.addEncodedVideoPacket(this.source._connectedTrack!, packet, meta) .catch((error) => { this.error ??= error; - this.errorNeedsNewStack = false; }); }; @@ -520,10 +517,11 @@ class VideoEncoderWrapper { void this.muxer!.addEncodedVideoPacket(this.source._connectedTrack!, packet, meta) .catch((error) => { this.error ??= error; - this.errorNeedsNewStack = false; }); }; + const stack = new Error('Encoding error').stack; + this.encoder = new VideoEncoder({ output: (chunk, meta) => { if (!this.alphaEncoder) { @@ -560,13 +558,15 @@ class VideoEncoderWrapper { } }, error: (error) => { - error.stack = encoderError.stack; // Provide a more useful stack trace + error.stack = stack; // Provide a more useful stack trace, the default one sucks this.error ??= error; }, }); this.encoder.configure(encoderConfig); if (this.encodingConfig.alpha === 'keep') { + const stack = new Error('Encoding error').stack; + // We need to encode alpha as well, which we do with a separate encoder this.alphaEncoder = new VideoEncoder({ // We ignore the alpha chunk's metadata @@ -594,7 +594,7 @@ class VideoEncoderWrapper { } }, error: (error) => { - error.stack = encoderError.stack; // Provide a more useful stack trace + error.stack = stack; // Provide a more useful stack trace this.error ??= error; }, }); @@ -652,10 +652,6 @@ class VideoEncoderWrapper { checkForEncoderError() { if (this.error) { - if (this.errorNeedsNewStack) { - this.error.stack = new Error().stack; // Provide an even more useful stack trace - } - throw this.error; } } @@ -1351,7 +1347,6 @@ class AudioEncoderWrapper { * So, we keep track of the encoder error and throw it as soon as we get the chance. */ private error: Error | null = null; - private errorNeedsNewStack = true; constructor(private source: AudioSource, private encodingConfig: AudioEncodingConfig) {} @@ -1546,7 +1541,6 @@ class AudioEncoderWrapper { } private ensureEncoder(audioSample: AudioSample) { - const encoderError = new Error(); this.ensureEncoderPromise = (async () => { const { numberOfChannels, sampleRate } = audioSample; @@ -1582,7 +1576,6 @@ class AudioEncoderWrapper { void this.muxer!.addEncodedAudioPacket(this.source._connectedTrack!, packet, meta) .catch((error) => { this.error ??= error; - this.errorNeedsNewStack = false; }); }; @@ -1603,6 +1596,8 @@ class AudioEncoderWrapper { ); } + const stack = new Error('Encoding error').stack; + this.encoder = new AudioEncoder({ output: (chunk, meta) => { // WebKit emits an invalid description for AAC (https://bugs.webkit.org/show_bug.cgi?id=302253), @@ -1637,11 +1632,10 @@ class AudioEncoderWrapper { void this.muxer!.addEncodedAudioPacket(this.source._connectedTrack!, packet, meta) .catch((error) => { this.error ??= error; - this.errorNeedsNewStack = false; }); }, error: (error) => { - error.stack = encoderError.stack; // Provide a more useful stack trace + error.stack = stack; // Provide a more useful stack trace this.error ??= error; }, }); @@ -1782,10 +1776,6 @@ class AudioEncoderWrapper { checkForEncoderError() { if (this.error) { - if (this.errorNeedsNewStack) { - this.error.stack = new Error().stack; // Provide an even more useful stack trace - } - throw this.error; } } diff --git a/src/mpeg-ts/mpeg-ts-demuxer.ts b/src/mpeg-ts/mpeg-ts-demuxer.ts index b9810da..6223e7b 100644 --- a/src/mpeg-ts/mpeg-ts-demuxer.ts +++ b/src/mpeg-ts/mpeg-ts-demuxer.ts @@ -20,7 +20,6 @@ import { } from '../codec'; import { AC3_ACMOD_CHANNEL_COUNTS, - AC3_SAMPLE_RATES, AC3_SAMPLES_PER_FRAME, AvcDecoderConfigurationRecord, AvcNalUnitType, @@ -71,6 +70,7 @@ import { FRAME_HEADER_SIZE as MP3_FRAME_HEADER_SIZE, readMp3FrameHeader } from ' import { EncodedPacket, PacketType, PLACEHOLDER_DATA } from '../packet'; import { FileSlice, readBytes, Reader, readU16Be, readU32Be, readU8 } from '../reader'; import { buildMpegTsMimeType, MpegTsStreamType, TIMESCALE, TS_PACKET_SIZE } from './mpeg-ts-misc'; +import { AC3_SAMPLE_RATES } from '../../shared/ac3-misc'; type ElementaryStream = { demuxer: MpegTsDemuxer; diff --git a/test/node/ac3.test.ts b/test/node/ac3.test.ts index 08e3fbb..0989b89 100644 --- a/test/node/ac3.test.ts +++ b/test/node/ac3.test.ts @@ -8,6 +8,12 @@ import { MpegTsOutputFormat } from '../../src/output-format.js'; import { BufferTarget } from '../../src/target.js'; import { Conversion } from '../../src/conversion.js'; import { AC3_REGISTRATION_DESCRIPTOR, EAC3_REGISTRATION_DESCRIPTOR } from '../../src/codec-data.js'; +import { canEncode } from '../../src/encode.js'; +import { AudioSampleSink, EncodedPacketSink } from '../../src/media-sink.js'; +import { AudioSampleSource } from '../../src/media-source.js'; +import { Mp4OutputFormat } from '../../src/output-format.js'; +import { AudioSample } from '../../src/sample.js'; +import { registerAc3Decoder, registerAc3Encoder } from '@mediabunny/ac3'; const __dirname = new URL('.', import.meta.url).pathname; @@ -122,3 +128,200 @@ test('reads and writes E-AC-3 in MPEG-TS', async () => { } expect(found).toBe(true); }); + +test('Custom coder registration', async () => { + using ac3Input = new Input({ + source: new FilePathSource(path.join(__dirname, '..', 'public/ac3.mp4')), + formats: ALL_FORMATS, + }); + using eac3Input = new Input({ + source: new FilePathSource(path.join(__dirname, '..', 'public/eac3.mp4')), + formats: ALL_FORMATS, + }); + + const ac3Track = (await ac3Input.getPrimaryAudioTrack())!; + const eac3Track = (await eac3Input.getPrimaryAudioTrack())!; + + // Before registration, nothing can decode or encode AC3/EAC3 + expect(await ac3Track.canDecode()).toBe(false); + expect(await eac3Track.canDecode()).toBe(false); + expect(await canEncode('ac3')).toBe(false); + expect(await canEncode('eac3')).toBe(false); + + registerAc3Decoder(); + registerAc3Encoder(); + + // After registration, both should work + expect(await ac3Track.canDecode()).toBe(true); + expect(await eac3Track.canDecode()).toBe(true); + expect(await canEncode('ac3')).toBe(true); + expect(await canEncode('eac3')).toBe(true); +}); + +test('AC-3 decoding', async () => { + registerAc3Decoder(); + + using input = new Input({ + source: new FilePathSource(path.join(__dirname, '..', 'public/ac3.mp4')), + formats: ALL_FORMATS, + }); + + const track = (await input.getPrimaryAudioTrack())!; + const { packetCount } = await track.computePacketStats(); + const sink = new AudioSampleSink(track); + + let sampleCount = 0; + let nextTimestamp = 0; + + for await (using sample of sink.samples()) { + expect(sample.timestamp).toBeCloseTo(nextTimestamp); + expect(sample.duration).toBe(0.032); + expect(sample.format).toBe('f32-planar'); + expect(sample.numberOfChannels).toBe(track.numberOfChannels); + expect(sample.sampleRate).toBe(track.sampleRate); + + nextTimestamp += sample.duration; + sampleCount++; + } + + expect(sampleCount).toBe(packetCount); +}); + +test('E-AC-3 decoding', async () => { + registerAc3Decoder(); + + using input = new Input({ + source: new FilePathSource(path.join(__dirname, '..', 'public/eac3.mp4')), + formats: ALL_FORMATS, + }); + + const track = (await input.getPrimaryAudioTrack())!; + const { packetCount } = await track.computePacketStats(); + const sink = new AudioSampleSink(track); + + let sampleCount = 0; + let nextTimestamp = 0; + + for await (using sample of sink.samples()) { + expect(sample.timestamp).toBeCloseTo(nextTimestamp); + expect(sample.duration).toBe(0.032); + expect(sample.format).toBe('f32-planar'); + expect(sample.numberOfChannels).toBe(track.numberOfChannels); + expect(sample.sampleRate).toBe(track.sampleRate); + + nextTimestamp += sample.duration; + sampleCount++; + } + + expect(sampleCount).toBe(packetCount); +}); + +const createSineWave = (sampleRate: number, channels: number, durationSeconds: number) => { + const totalFrames = sampleRate * durationSeconds; + const data = new Float32Array(totalFrames * channels); + + for (let i = 0; i < totalFrames; i++) { + const value = Math.sin(2 * Math.PI * 440 * i / sampleRate); + for (let ch = 0; ch < channels; ch++) { + data[i * channels + ch] = value; + } + } + + return data; +}; + +test('AC-3 encoding', async () => { + registerAc3Encoder(); + + const sampleRate = 48000; + const channels = 2; + const durationSeconds = 2; + const data = createSineWave(sampleRate, channels, durationSeconds); + + const output = new Output({ + format: new Mp4OutputFormat(), + target: new BufferTarget(), + }); + + const audioSource = new AudioSampleSource({ codec: 'ac3', bitrate: 192000 }); + output.addAudioTrack(audioSource); + + await output.start(); + await audioSource.add(new AudioSample({ + data, + format: 'f32', + numberOfChannels: channels, + sampleRate, + timestamp: 0, + })); + audioSource.close(); + await output.finalize(); + + using input = new Input({ + source: new BufferSource(output.target.buffer!), + formats: ALL_FORMATS, + }); + + const track = (await input.getPrimaryAudioTrack())!; + expect(track.codec).toBe('ac3'); + expect(track.sampleRate).toBe(sampleRate); + expect(track.numberOfChannels).toBe(channels); + + const sink = new EncodedPacketSink(track); + let packetCount = 0; + for await (const packet of sink.packets()) { + expect(packet.type).toBe('key'); + packetCount++; + } + expect(packetCount).toBeGreaterThan(0); + + expect(await track.computeDuration()).toBeCloseTo(2, 1); +}); + +test('E-AC-3 encoding', async () => { + registerAc3Encoder(); + + const sampleRate = 48000; + const channels = 2; + const durationSeconds = 2; + const data = createSineWave(sampleRate, channels, durationSeconds); + + const output = new Output({ + format: new Mp4OutputFormat(), + target: new BufferTarget(), + }); + + const audioSource = new AudioSampleSource({ codec: 'eac3', bitrate: 192000 }); + output.addAudioTrack(audioSource); + + await output.start(); + await audioSource.add(new AudioSample({ + data, + format: 'f32', + numberOfChannels: channels, + sampleRate, + timestamp: 0, + })); + audioSource.close(); + await output.finalize(); + + using input = new Input({ + source: new BufferSource(output.target.buffer!), + formats: ALL_FORMATS, + }); + + const track = (await input.getPrimaryAudioTrack())!; + expect(track.codec).toBe('eac3'); + expect(track.sampleRate).toBe(sampleRate); + expect(track.numberOfChannels).toBe(channels); + + const sink = new EncodedPacketSink(track); + let packetCount = 0; + for await (const packet of sink.packets()) { + expect(packet.type).toBe('key'); + packetCount++; + } + expect(packetCount).toBeGreaterThan(0); + + expect(await track.computeDuration()).toBeCloseTo(2, 1); +}); diff --git a/todo.txt b/todo.txt new file mode 100644 index 0000000..25dba5b --- /dev/null +++ b/todo.txt @@ -0,0 +1 @@ +- Investigate quicktime stuttering with mediabunny-generated .ts file \ No newline at end of file diff --git a/tsconfig.vite.json b/tsconfig.vite.json index e40e718..18c8e14 100644 --- a/tsconfig.vite.json +++ b/tsconfig.vite.json @@ -7,6 +7,7 @@ "noEmit": false, "paths": { "mediabunny": ["./src/index.ts"], + "@mediabunny/ac3": ["./packages/ac3/src/index.ts"], }, "types": ["vite/client"] }, diff --git a/tsconfig.vitest.json b/tsconfig.vitest.json index 7a24606..7101888 100644 --- a/tsconfig.vitest.json +++ b/tsconfig.vitest.json @@ -4,9 +4,13 @@ "moduleResolution": "nodenext", "module": "NodeNext", "composite": true, - "noEmit": false + "noEmit": false, + "paths": { + "mediabunny": ["./src/index.ts"], + "@mediabunny/ac3": ["./packages/ac3/src/index.ts"], + }, }, "include": ["vitest.config.ts", "./test/**/*"], "exclude": ["./test/public/**/*"], - "references": [{ "path": "./src" }] + "references": [{ "path": "./src" }, { "path": "./packages/ac3" }] } diff --git a/vitest.config.ts b/vitest.config.ts index 33a53df..3623ed8 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,11 +1,19 @@ /// import { defineConfig } from 'vitest/config'; +import path from 'path'; export default defineConfig({ + resolve: { + alias: { + 'mediabunny': path.resolve(__dirname, './src/index.ts'), + '@mediabunny/ac3': path.resolve(__dirname, './packages/ac3/dist/bundles/mediabunny-ac3.mjs'), + }, + }, test: { projects: [ { + extends: true, test: { name: 'node', root: 'test', @@ -14,6 +22,7 @@ export default defineConfig({ }, }, { + extends: true, test: { name: 'browser', root: 'test',