Legal · Open source

FFmpeg source and relinking

Component
FFmpeg
License
LGPL-2.1-or-later
Copyright
Copyright (c) 2000–2024 the FFmpeg developers
Upstream
ffmpeg.org

What this page is for

VocalOut uses FFmpeg to decode the songs you import and to encode the tracks it produces. FFmpeg is free software, and its license gives you the right to modify it and to run VocalOut against your modified copy. This page exists so you can actually do that.

1What is in the app

VocalOut links only the LGPL parts of FFmpeg. The build is configured without --enable-gpl and without --enable-nonfree, so no GPL-only or non-redistributable component is present. Only the modules the app actually needs are enabled: avformat, avcodec, avutil and swresample, with networking, filters and command-line programs all disabled.

2Android — replace the libraries

On Android, FFmpeg is built as separate shared libraries (--enable-shared --disable-static) and loaded at run time. You can build your own FFmpeg with the same soname and ABI and replace the lib*.so files inside the APK. Nothing further is needed from us for this platform.

3iOS — written offer to relink

On iOS, FFmpeg is linked statically. To be precise about why: iOS does let an app embed and load its own dynamic frameworks, so a shared build is technically possible. It would not help you, though. An installed iOS app is code-signed as a unit, so you cannot drop a modified libavcodec into it — the signature no longer matches and the app refuses to launch. A shared library mechanism therefore cannot satisfy the second condition of LGPL section 6(b), which requires that the program “operate properly with a modified version of the library, if the user installs one”.

What does work on this platform is relinking, so we take the option the LGPL gives in subsection 6(c):

For three years from the release date of any published version of VocalOut, we will supply, to anyone who asks, the complete machine-readable FFmpeg source we used, the exact configure options we passed, and the VocalOut application object files needed to relink the app against a modified FFmpeg. We charge no more than the cost of performing the distribution.

Write to grayforge.dev+vocalout@gmail.com and say which version of the app you are asking about. The archive for each released version is built and kept at release time, so naming the version is all we need to send you the right one.

With those materials you can build your own FFmpeg, link it against the supplied object files, and sign the result with your own Apple developer account — which is the only way anyone, including us, can install a modified build on an iOS device.

4Build recipe

The archive we send includes the scripts that produced these libraries, so you can reproduce the build rather than reconstruct it from a description:

5License text

The full text of the GNU Lesser General Public License, version 2.1, is published at gnu.org and is included in the FFmpeg source referenced above.