Cutlia — the source code of the LGPL software this site serves ============================================================== Cutlia (https://cutlia.com) is a video editor that runs in your browser. Some of the code it sends to the browser is built from software under the GNU Lesser General Public License (LGPL): FFmpeg and LAME. This folder holds their complete corresponding source — exactly the releases built into the site, the code they're built and linked with, and our build scripts and changes — so you can read, change and rebuild them. It's offered free of charge, from the same place as the files it builds (LGPL 2.1, section 6(d)). What the site serves, and what it's built from ---------------------------------------------- 1. The format converter — opens the files browsers can't (AVI, WMV, MPEG…) and saves AVI, MPG and WMV. Served: /libav/v2/libav-cutlia.mjs sha256 f8f9c86136b424b7129b668af57d6599578b2d2fc7601a8c83bdaaff7363c3c7 /libav/v2/libav-6.10.9.0-cutlia.wasm.mjs sha256 5cbf643bba3321a42bf32fa1d4bfebd44f318e6497871e587d777a34fb30aedb /libav/v2/libav-6.10.9.0-cutlia.wasm.wasm sha256 62555b0f90daed64d51d0194612d7e2a6d8a26922469420d440469904357a7fe Is: FFmpeg 9.0 with libav.js 6.10.9's patches, LAME 3.100, zlib 1.3.2 and emfiberthreads 1.3, compiled to WebAssembly by libav.js 6.10.9 with Emscripten 6.0.13, in Cutlia's configuration and with Cutlia's changes to libav.js. From: libav.js-6.10.9.tar.xz, ffmpeg-9.0.tar.xz, lame-3.100.tar.gz, zlib-1.3.2.tar.gz, emfiberthreads-1.3.tar.gz. With: scripts/libav/build.sh, scripts/libav/site-variant.json, scripts/libav/patch-libavjs.mjs (in cutlia-build-files.zip). Build: bash scripts/libav/build.sh site 2. The AAC encoder — makes AAC sound where the browser has no AAC encoder of its own (Firefox; Chrome and Edge on Linux). Served: /libav/aac/v1/aac.mjs sha256 0c74ba3ebb167f5c7679a04f5b6272514887b1fa9573bd4afddeb79c92965490 /libav/aac/v1/aac.wasm sha256 1c53d07b1633ae5ca2e2a4a08ed8c2d8f6701abbfbd0e9a1ff3bcd60e869756a Is: FFmpeg 9.0's libavcodec (its AAC encoder only) and libavutil, unmodified, linked with aac-bridge.c (Mediabunny's, unchanged) by Emscripten 6.0.13; the JavaScript that drives it is Mediabunny's @mediabunny/aac-encoder 1.61.6, changed as each file's notice says. From: ffmpeg-9.0.tar.xz. With: scripts/libav/build.sh, scripts/libav/aac-bridge.c, src/lib/media/aac-encoder/encoder.ts, src/lib/media/aac-encoder/encode.worker.ts, src/lib/media/aac-encoder/shared.ts, src/lib/media/aac-encoder/files.ts (in cutlia-build-files.zip). Build: bash scripts/libav/build.sh aac 3. The MP3 encoder — makes every MP3 (Video to MP3, and MP3 sound in the other tools). Served: inside the site's JavaScript: @mediabunny/mp3-encoder 1.61.6, unchanged (its WebAssembly is in dist/modules/build/lame.js). lame.js sha256 88738989c13b533ab2810d6dbb01463c18eecee398d29d2755613a70ddb95a6a Is: LAME 3.100 (its version string says so), unmodified as the package's README builds it, linked with lame-bridge.c (Mediabunny's), built by Mediabunny. From: lame-3.100.tar.gz, mediabunny-mp3-encoder-1.61.6.tgz. Build: the commands in the package's README.md, "Building and development" The files here -------------- ffmpeg-9.0.tar.xz sha256 7f607a00dd0d28a729d5a4811205812eef01cf6ef6155025febb6f36a9062d52 FFmpeg 9.0 — GNU Lesser General Public License 2.1 or later. Byte-identical to https://ffmpeg.org/releases/ffmpeg-9.0.tar.xz lame-3.100.tar.gz sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e LAME 3.100 — GNU Lesser General Public License 2.0 or later. Byte-identical to https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz zlib-1.3.2.tar.gz sha256 bb329a0a2cd0274d05519d61c667c062e06990d72e125ee2dfa8de64f0119d16 zlib 1.3.2 — zlib License. Byte-identical to https://zlib.net/fossils/zlib-1.3.2.tar.gz emfiberthreads-1.3.tar.gz sha256 0fe933d7742de3b3213608e0fb087a1ae0d060604d5835f7c9cdfcee0fc8cbcb emfiberthreads 1.3 — BSD Zero Clause License. Byte-identical to https://github.com/Yahweasel/emfiberthreads/archive/refs/tags/v1.3.tar.gz libav.js-6.10.9.tar.xz sha256 ad1932a86ef0bcc87b1e71df34b735f8b3cda0022ffe04b95890adfda24cd186 libav.js 6.10.9 — ISC License. Byte-identical to https://registry.npmjs.org/libav.js/-/libav.js-6.10.9.tgz → sources/libav.js.tar.xz mediabunny-mp3-encoder-1.61.6.tgz sha256 f9dff3f8dba5b9f432441a111ac8d354f84f531edd7902b44731c1f8f42461e2 @mediabunny/mp3-encoder 1.61.6 — Mozilla Public License 2.0. Byte-identical to https://registry.npmjs.org/@mediabunny/mp3-encoder/-/mp3-encoder-1.61.6.tgz cutlia-build-files.zip sha256 9a2782324a01bc345604daf90c9105d3f8713c4e081f28f6a2d76222e76ba468 Cutlia's build files, at their paths in Cutlia's repository: the build script, its configurations, Cutlia's changes to libav.js, Mediabunny's AAC bridge, and the AAC encoder's JavaScript side (Mediabunny's, MPL-2.0: encoder.ts and encode.worker.ts changed as their notices say, shared.ts and aac-bridge.c unchanged; files.ts is Cutlia's): scripts/libav/README.md sha256 038cd57e312b4fceb49aa53dc756723b4b6313516fe8961189d4d135fcbd46a7 scripts/libav/build.sh sha256 ae28b5b8a7ab541328ace04aa7d95216ad2928ed017c3414c08b5a27d3b9eb77 scripts/libav/site-variant.json sha256 d07ace6dd6020a0a165bca7caa03dbda4e6410c853f3174be7d1b61e7f91c261 scripts/libav/fixtures-variant.json sha256 418052d14e9695a70521f2504492edc509a57255f6b0bd7266372da9afc92cfa scripts/libav/patch-libavjs.mjs sha256 4a8ef48a1baad156ea2fb7b9a0cfd391c93c132f6245fa3e67c0c77c49561513 scripts/libav/aac-bridge.c sha256 a04e07961c47ca113710398ac8e2ea39b21e2eb1bd109685cd909a3e09f937dc src/lib/media/aac-encoder/encoder.ts sha256 616b69b66181bbccfd8f285e8895637b174fec5da277c85c6435b7d157e046f7 src/lib/media/aac-encoder/encode.worker.ts sha256 1a0e85a0dd99c1b58ea37e0e535d46e5da03a1168410e2a70cfd5fa5f84dad5a src/lib/media/aac-encoder/shared.ts sha256 fa9448aab5ee222c8fe575f8a0eed6a482ce3f9d1b9f61aa48b118b6cf12d924 src/lib/media/aac-encoder/files.ts sha256 94011f66d9ad16d49aaf3b0d08a805eab5b53015d053b98eeeee16b916dbe873 Rebuilding ---------- Unpack cutlia-build-files.zip into an empty folder, put the archives above into another, and in the first run: SOURCES= bash scripts/libav/build.sh site (or aac). The script needs Node, Python 3.10 or newer, make, curl, tar and xz; it downloads the compiler (the Emscripten SDK, 6.0.13) and the tools libav.js builds with (from npm). Without SOURCES it downloads libav.js 6.10.9 from npm, which carries the same archives. Both builds come out byte-identical to the files the site serves (their checksums above). The MP3 encoder is built with the commands in its package's README.md. The site loads these files at run time from the addresses above, so a build of your own can be used in their place. Each archive holds its license (FFmpeg: COPYING.LGPLv2.1; LAME: COPYING; zlib: LICENSE; libav.js: LICENSE.md; the MPL-2.0 files say so at their top). Questions: help@cutlia.com. The rest of the software Cutlia uses, with its licenses, is on the Open-Source Licenses page. (/source/README.txt is made with each build of the site.)