Source Code
Norri uses components licensed under the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL). This page retains their attribution, source links, and previously published component archives.
Note
Version-specific source information
Each download below identifies a specific component version. Historical archives remain available unchanged; later development changes are included only when that version’s source record says so.
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.
In the linked 7.1.3-2 source archive, the remaining 92 media-server patches from upstream are preserved unmodified. Later development changes are not included in that archive.
Modified files in the archive carry notices identifying the changes and their date.
Source code
Current Docker component: 7.1.3-norri.5
This component is included in Public Beta 0.1.4-beta, 0.1.3-beta, 0.1.2-beta, 0.1.1-beta, and 0.1.0-beta.1. The earlier candidate 0.1.0-alpha.1-rc.1 has the same image contents as 0.1.0-beta.1; its change to beta naming did not rebuild this component.
The package preserves the AAC timestamp and deinterlacing behavior while rebuilding codec, format, and filter with 19 upstream security backports. Six private support libraries are refreshed from exact Ubuntu packages. Other parent components remain unchanged. The source and build records identify all nine changed libraries, retained parent files, and matching sources for all 58 private support-library packages.
The FFmpeg source archive is at packaging revision 015d032e5689fd5d0d17c303712f29cd14285749; the built functional source revision is 18a35ec38b29f37505b2dbb85ab480892c4aa690.
| Download | SHA-256 |
|---|---|
| FFmpeg source archive | 6c0a65f37f1b1fa4c30c5621676f7ec811011238f960c65cae9938e4a9154d64 |
| Source record | fbae2731f6fe72cbd2a032eee2b665b2f86bfbb8a58e9da9837fcb28b2a0c736 |
Build record, retained file inventory, complete bundle checksums.
The complete source bundle, including parent source and all support-package sources and notices, is retained inside the public component image. Extract it without running the image:
docker pull registry.norri.tv/norri/norri-transcoder@sha256:78cd8cfac5e275aa938a1f7fbb76096f3cb15e0995a8210aa327cafad3f9e04d
docker create --name norri-source registry.norri.tv/norri/norri-transcoder@sha256:78cd8cfac5e275aa938a1f7fbb76096f3cb15e0995a8210aa327cafad3f9e04d
docker cp norri-source:/usr/share/licenses/norri-transcoder/releases/7.1.3-norri.5 ./norri-transcoder-source
docker rm norri-source
cd norri-transcoder-source
sha256sum -c SHA256SUMS
The checksum file covers the whole extracted bundle. Downloading only the two files above does not provide every file in that manifest. The same complete bundle is also retained in the all-in-one Public Beta image.
Development source snapshot: da7343e8
This is a development source snapshot for a future build. It does not accompany a newly published binary or an official Alpha release.
On September 20, 2026, Norri modified libavfilter/yadif.h and libavfilter/yadif_common.c to preserve progressive frame cadence and caption timing in conditional field-rate deinterlacing. The archive includes that change, its regression tests, original license notices, and build/package recipes at revision da7343e8ff919f6f13b999ae4c0430b5db132f7f. It does not represent a rebuild of the full dependency bundle.
| Download | SHA-256 |
|---|---|
| norri-transcoder-development-da7343e8.tar.gz | 2e1c5808f3c007bc4bcbd4ec85d9b529029e6c6284b5b63674f38774b4abaeb6 |
| Source record (SOURCE.json) | 1bba8d0b13d204c8ed092c8641ad020b346fa79367c1ac94b7c065aec6072b6f |
Source and build instructions, SHA-256 checksums. The build recipes identify the retained components; their previously published source remains available below.
Previously published development package: 7.1.3-norri.3
These package and source records remain available unchanged for reproducibility and recovery. They document a previously published development package, not an official Norri Alpha release.
The 7.1.3-norri.3 transcoder package combines a freshly rebuilt libavformat muxer library with the executables and other libraries retained from 7.1.3-norri.1. The muxer includes the AAC timestamp correction. The source and build records distinguish the rebuilt library from retained components and identify their exact bytes.
The FFmpeg source archive for this package includes the source, tests, license notices, and build/package recipes at revision 62cb172d47a16f665463029a8c44c78fc9950170. The historical baseline archive is provided separately. The retained component inventory and pinned base-image digest record the unchanged binaries; these downloads do not claim a fresh rebuild or a newly assembled source set for every third-party dependency.
| Download | SHA-256 |
|---|---|
| norri-transcoder-7.1.3-norri.3-src.tar.gz | d7c90c7e12a90c30f5761486c52132db5cb4ed71638e7b2806b4321b5e763fd6 |
| Retained baseline source | b53c5852318dcc73e609b898f090952b7f25c7e0269e63c80ea7c3db67cb89e9 |
| Source record (SOURCE.json) | 00cefa459edd76c9d05eb5818047572031bae5400f9c513c8ea36c27a608d9f2 |
| Build record (BUILD.json) | 90d01d189c4be169c9777e1b910bb75879f4402076f73343d36e1e7dbfea7f6d |
Retained file inventory, SHA-256 checksums, Source extraction instructions.
Package: registry.norri.tv/norri/norri-transcoder
.1.3-norri.3.
Image digest:
sha256:9433d6ea2cbf68fee6968c305eabe66341dc31ef777709fb14e5d95949b2efd3
The same seven source files and records are bundled in the image under /usr/share/licenses/norri-transcoder/release/. Download them into the same directory using their original filenames to check them against SHA256SUMS. The retained baseline archive is byte-identical to the historical download below.
Retained historical source
The following archive remains available unchanged. Its 7.1.3-2 filename is independent of OCI image tag numbering.
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 | 78f661a10fd82d19209b94c6551c809c54f3f86fd2c847d9a7c1082e99a88d91 |
| 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.
The root archive’s package metadata was updated on October 7, 2026. Renderer source, build scripts, licenses, and submodule archives are unchanged. Use the updated checksum above.
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
The recorded fpcalc component uses upstream Chromaprint. Its embedded FFmpeg libraries have separate source and license requirements.
Source code
Upstream Chromaprint source: github.com/acoustid/chromaprint/releases. This link alone does not identify the exact source and build configuration for every embedded dependency; those must match the component distributed with a release.
Current Docker source
Public Beta 0.1.4-beta, 0.1.3-beta, 0.1.2-beta, 0.1.1-beta, and 0.1.0-beta.1 use Debian Chromaprint 1.5.1-7 with dynamically loaded, security-maintained FFmpeg libraries. Its exact Debian source descriptor, upstream archive, Debian patch archive, copyright notices, and checksum record are retained at /usr/share/licenses/norri-fingerprint in the image. This differs from the older static fpcalc component described above.
The image also retains all eight matching browser subtitle-renderer archives listed above at /usr/share/licenses/norri-web/sources/norri-wasm, with a checksum manifest, and keeps Go and browser dependency notices under /usr/share/licenses/norri-go and /usr/share/licenses/norri-web.
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
This AirPlay sender is not included in the current Public Beta. For source relating to a previously distributed component, use the written source offer below.
Norri for Apple TV
The Apple TV app uses AetherEngine, which builds on FFmpeg and supporting libraries. The dependency record below retains previously published component versions and their source links.
For the components included in your installed app, open Open Source Licences in the Apple TV app’s settings. It explains the bundled components and how to request matching source. On iPhone or iPad, open Settings → Open Source Licenses to read the notices and save or share the bundled AetherEngine source archive.
Historical component versions
| 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 |
For the historical versions listed above, the FFmpeg build enables neither --enable-gpl nor --enable-version3, so it does not compile GPL components into that recorded app build.
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
The historical versions listed here described unmodified upstream components. The installed apps’ notices identify any Norri modifications and the matching source.
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. That recorded libzvbi build therefore contains no GPL code.
Source code
Upstream tagged releases for the recorded versions:
| 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 |
For source questions about your installed app, contact hello@norri.tv and include its version and build number.
Building from source
Follow each package’s source extraction instructions and build records to identify its source archives, build recipes, and retained components.
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.