project/ecd.theia/chromium/ffmpeg/b9f01c3c54576330b2cf8918c54d5ee5be8faefe
Project: Eclipse Theia
Basic Information
- License: GNU Library General Public License (LGPL)
- Copyright Holder: Microsoft
- Project URL
- Git repository
- Binary
- Source
Additional Information
FFmpeg is a free and open-source project consisting of a vast software suite of libraries and programs for handling video, audio, and other multimedia files and streams. Chromium bundles a version of it, from their fork. Electron includes both Chromium and FFmpeg.
Intellectual Property Rights:
- The Electron-bundled FFmpeg includes by default some patent-encumbered codec(s) (at least h264). They make available a version that allegedly does not include encumbered codecs, as standalone download. The Eclipse Theia project, as part of its build infrastructure, has a way to automatically swap the default FFmpeg library with the unencumbered version, and to then validate that the new library indeed does not include the h264 codec. Should that not be the case, the build will fail, alerting us that something is wrong.
Here are the codecs present in the version of FFmpeg that is claimed to be unencumbered (performed the check in the framework):
$ /workspace/theia/node_modules/.bin/theia ffmpeg:check
codec: vp3
codec: theora
codec: vp8
codec: pcm_s16le
codec: pcm_s16be
codec: pcm_u8
codec: pcm_mulaw
codec: pcm_alaw
codec: pcm_s32le
codec: pcm_s24le
codec: pcm_s24be
codec: pcm_f32le
codec: mp3
codec: vorbis
codec: flac
codec: libopus
"/workspace/theia/node_modules/electron/dist/libffmpeg.so" does not contain
proprietary codecs (16 found).
Done in 0.95s.
Conclusion: our FFmpeg replacement scheme still works - the version we end-up with after replacement does not contain h264.
- The FFmpeg repo contains optional GPL source code, that's excluded from the build by default, but can be included at by using a specific build argument. Electron claims not to include this GPL content, when building their FFmpeg library.
I will add an attachment for FFmpeg that should permit to determine whether Electron's FFmpeg excludes GPL sources, as claimed. The Electron project has customized the FFmpeg repo to auto-generate a file, updated for each build, that lists the source files that have contributed to the build. That file is in the repo root and maned ffmpeg_generated.gni
This file for the version of FFmpeg covered by this CQ:
Tool used to generate that file, with some explanations:
I used ffmpeg_generated.gni to narrow-down which source files were used for the build. I will add an attachment that contained these files, with detailed instructions. For context I kept repo documentation that might have interesting IP information, in addition to the effective sources.