Legal · Open source
FFmpeg source and relinking
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:
bootstrap_ios.sh— iOS, staticbootstrap_android.sh— Android, sharedconfig.log— FFmpeg's own record of the configuration, which is authoritative if it ever disagrees with the scripts
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.