Source Code
Norri includes components licensed under the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL). Source code for these components is provided below.
norri-transcoder
A build of FFmpeg for media server transcoding, streaming, and codec operations. Based on an upstream media-server FFmpeg fork, itself derived from FFmpeg.
License
norri-transcoder enables GPL components and --enable-version3, and is therefore licensed under the GNU General Public License v3 or later (GPL-3.0+).
The build configuration and all license texts are included in the source tarball.
Attribution
- FFmpeg. ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.
- Upstream media-server FFmpeg fork. Full attribution is preserved in the source tarball.
Changes from upstream
norri-transcoder is derived from an upstream media-server FFmpeg fork with the following changes:
- Removed fdk-aac. The third-party FDK AAC encoder has been removed; norri-transcoder uses FFmpeg’s native AAC encoder instead. The upstream patch that reclassified fdk-aac-stripped as a standard library has also been removed, reducing the patch count from 93 to 92.
- Rebranded. Package name, installation paths, and version string changed to norri-transcoder.
- Self-contained install. The build script bundles the matched libplacebo and its userspace dependencies, while sourcing the host GPU stack (libva, libdrm, Vulkan and OpenCL loaders) from the host so it matches the host driver.
The remaining 92 media-server patches from upstream are preserved unmodified.
Modified files carry notices identifying the changes and their date, as required by GPL v2 Section 2(a).
Source code
norri-transcoder-7.1.3-2.tar.gz
sha256: b53c5852318dcc73e609b898f090952b7f25c7e0269e63c80ea7c3db67cb89e9
norri-wasm
A WebAssembly build of the libass subtitle renderer for the browser, used by Norri’s web client to render ASS/SSA subtitles. Forked from an actively maintained downstream JavascriptSubtitlesOctopus branch, itself a fork of the upstream github.com/libass/JavascriptSubtitlesOctopus project.
License
The package license expression is:
LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0
The dominant license for the relinkable browser subtitle renderer is GNU Lesser General Public License v2.1 or later (LGPL-2.1+). Bundled libraries retain their own licenses, including FreeType under FTL or GPL-2.0-or-later, plus MIT, MIT-Modern-Variant, ISC, NTP, Zlib, and BSL-1.0 components. All license texts are included in the source distribution.
Attribution
- libass. github.com/libass/libass. Copyright (c) the libass contributors.
- JavascriptSubtitlesOctopus (upstream). github.com/libass/JavascriptSubtitlesOctopus. Originally by Dador / JustAMan.
- JavascriptSubtitlesOctopus (active downstream fork). Full attribution is preserved in the source tarball’s README and COPYRIGHT files.
Changes from upstream
norri-wasm is derived from the actively maintained JavascriptSubtitlesOctopus fork with the following changes:
- Rebranded. Package name and homepage changed; npm
nameis nownorri-wasm. - No code modifications. The renderer, worker, and WebAssembly artifacts are preserved unmodified to retain upstream subtitle-rendering fixes.
Source code
Norri provides complete corresponding source as a componentized source set. The root archive contains the norri-wasm source tree, build scripts, .gitmodules, SUBMODULES.txt, COPYING.LESSER, and COPYRIGHT. The submodule archives contain the pinned source trees for the bundled libraries. Unpack all archives into the same parent directory to reconstruct the complete source tree without contacting external repositories.
| Archive | SHA-256 |
|---|---|
| norri-wasm-4.2.5-norri.1-src.tar.gz | 0f94bd3b1c55e4f15adff5dd0b3ffb30ee439a76fbae341379e2b78779bbe7f1 |
| norri-wasm-4.2.5-norri.1-submodule-libass.tar.xz | 25f635845b5bd41fe937ea122f2c2269d9330d2f3be7ba8a8439db1656b74432 |
| norri-wasm-4.2.5-norri.1-submodule-fribidi.tar.xz | fbebbcbeea6b4b7262907ab7b72629c6ea2ee7beabb180ee1af015704cf3038f |
| norri-wasm-4.2.5-norri.1-submodule-fontconfig.tar.xz | 7e40446ce2c392a01294fb88630b0b86016b08457ab34f2d7923bc3cfc8bccc1 |
| norri-wasm-4.2.5-norri.1-submodule-freetype.tar.xz | ac030f39b8565997db806fe747b1b75b6a40f7b37705148e61fafe90a15526a7 |
| norri-wasm-4.2.5-norri.1-submodule-expat.tar.xz | f5964fb7e097e16e4dc90f709f1b212b557738945a061316551c329176f2712e |
| norri-wasm-4.2.5-norri.1-submodule-harfbuzz.tar.xz | 247a0a0a5ef65077d8844d627ad932cdd272cd1101a999b6c9192eb20e36b70c |
| norri-wasm-4.2.5-norri.1-submodule-brotli.tar.xz | c4ed7a34bae97e65e14c1fc0327cc2a88d94537cf97c0de237bfc38c2707c793 |
This split keeps each file under the static hosting file-size limit while preserving a complete, machine-readable source distribution for relinking.
Chromaprint (fpcalc)
The fpcalc audio fingerprinting tool from Chromaprint, bundled with the server and used to identify music tracks that cannot be matched from their tags. Norri runs it as a separate command-line process; it is not linked into Norri’s own code.
License
GNU Lesser General Public License v2.1 or later (LGPL-2.1+). The fpcalc build embeds FFmpeg libraries (avcodec, avformat, avutil, swresample) for audio decoding, which are also LGPL-2.1-or-later.
Attribution
- Chromaprint. github.com/acoustid/chromaprint. Copyright (c) Lukáš Lalinský and the Chromaprint contributors.
- FFmpeg. ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.
Changes from upstream
Norri ships fpcalc unmodified. The complete corresponding source is therefore the upstream Chromaprint release.
Source code
As Norri ships this component unmodified, the complete corresponding source is the upstream release: github.com/acoustid/chromaprint/releases.
norri-airplay
AirPlay audio sending to speakers and devices like HomePods. Translated from the AirPlay component of OwnTone (formerly forked-daapd).
License
GNU General Public License v2 or later (GPL-2.0+)
Attribution
- OwnTone (formerly forked-daapd). github.com/owntone/owntone-server. Copyright (c) 2009-2011 Julien BLACHE, Copyright (c) 2012-2020 Espen Jürgensen, and OwnTone contributors.
- FFmpeg (ALAC encoder). ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.
Changes from upstream
norri-airplay is a translation of OwnTone’s AirPlay implementation from C to Go, extracted as a standalone component with an integrated ALAC encoder.
| norri-airplay | OwnTone source |
|---|---|
internal/airplay2/ | src/outputs/airplay.c |
internal/raop/ | src/outputs/raop.c |
internal/hap/ | src/pair_ap/ |
internal/rtp/ | src/outputs/rtp_common.c |
internal/discovery/ | src/mdns.c |
internal/audio/ | src/outputs/raop.c (ALAC encoding) + FFmpeg |
Each Go source file carries a header identifying the original OwnTone source it is derived from.
Source code
Source downloads will be available here when Norri reaches public release.
Norri for Apple TV
The Apple TV app plays media using AetherEngine, which builds on FFmpeg and several supporting libraries. All of these are embedded in the app as dynamic frameworks, which means you are able to replace any of them with your own build of the library.
Norri ships these components unmodified. The complete corresponding source is therefore the upstream release identified for each below.
License
| Component | Version | License |
|---|---|---|
| AetherEngine | 5.29.0 | LGPL-3.0-or-later, with an App Store / DRM exception |
| FFmpeg (avcodec, avfilter, avformat, avutil, swresample, swscale) | via FFmpegBuild 2.3.0 | LGPL-2.1-or-later |
| dav1d | via FFmpegBuild 2.3.0 | BSD-2-Clause |
| zimg | via FFmpegBuild 2.3.0 | WTFPL |
| libzvbi | via FFmpegBuild 2.3.0 | LGPL-2.0-or-later (ure.c MIT) |
| libdovi | via LibDovi 1.0.2 | MIT |
| SMBClient | 0.3.1 | MIT |
The FFmpeg build enables neither --enable-gpl nor --enable-version3, so no GPL components are compiled into the Apple TV app.
Attribution
- AetherEngine. github.com/superuser404notfound/AetherEngine. Copyright (c) 2026 Vincent Herbst.
- FFmpeg. ffmpeg.org. Copyright (c) 2000-2025 the FFmpeg developers.
- dav1d. code.videolan.org/videolan/dav1d. Copyright (c) the dav1d authors.
- zimg. github.com/sekrit-twc/zimg.
- libzvbi. github.com/zapping-vbi/zvbi.
- libdovi (from dovi_tool). github.com/quietvoid/dovi_tool. Used under the MIT option of its MIT / Apache-2.0 dual license.
- SMBClient. github.com/kishikawakatsumi/SMBClient. Copyright (c) Kishikawa Katsumi.
Changes from upstream
Norri makes no changes to any of these components.
One upstream change is worth noting because it affects licensing: the FFmpegBuild distribution excludes libzvbi’s three GPL-2 source files (packet-830.c, pdc.c, exp-vtx.c), replacing the referenced entry points with LGPL stubs. The libzvbi build shipped in the Apple TV app therefore contains no GPL code.
Source code
As Norri ships these components unmodified, the complete corresponding source is the upstream tagged release in each case:
| Component | Source |
|---|---|
| AetherEngine 5.29.0 | github.com/superuser404notfound/AetherEngine |
| FFmpeg, dav1d, zimg, libzvbi | github.com/superuser404notfound/FFmpegBuild |
| libdovi | github.com/superuser404notfound/LibDovi |
| SMBClient 0.3.1 | github.com/kishikawakatsumi/SMBClient |
Should Norri ever ship a modified build of any of these, the modified source will be published here and this page updated accordingly.
Building from source
Each source tarball includes a build script and instructions needed to reproduce the distributed binaries.
Written offer for source code
In accordance with the GNU General Public License and GNU Lesser General Public License, we will provide the complete corresponding source code for any GPL-licensed or LGPL-licensed component distributed with Norri to any party, for a period of at least three years from the date of each release, at no charge beyond the cost of distribution.
To request source code, contact hello@norri.tv.