[FFmpeg-devel] a potential licensing conflict in libavfilter

Stefano Sabatini stefano.sabatini-lala at poste.it
Sat Jul 2 12:19:44 CEST 2011


On date Saturday 2011-07-02 02:00:40 -0700, D M German encoded:
> 
> hi everybody,
> 
> I am a researcher who specializes in licensing of software (for example
> we have developed a licensing identification tool called ninka:
> http://ninka.turingmachine.org)
> 
> My collaborators and I are currently trying to develop a tool to try to
> understand what sources are used to create a binary. We felt that ffmpeg
> was a good candidate to test our tool due to the fact that its binaries
> can be generated under different licenses (each with different
> contents).
> 
> We compiled ffmpeg with the default parameters, and found that one file:
> libavfilter/x86/gradfun.c (GPLv2+) appears to be used to create the LGPL
> libavfilter library.
> 
> Looking at the build files. The bottom of libavfilter/Makefile contains:
> 
> ----------------------------------------------------------------------
> DIRS = x86 libmpcodecs
> ----------------------------------------------------------------------
> 
> The directory libmpcodecs does not contain a Makefile (hence it is
> ignored). But x86 contains a Makefile:
> 
> MMX-OBJS-$(CONFIG_YADIF_FILTER)              += x86/yadif.o
> MMX-OBJS-$(CONFIG_GRADFUN_FILTER)            += x86/gradfun.o
> 
> libavfilter/x86/gradfun.c and libavfilter/x86/yadif.c are GPLv2+ 
> 
> We have traced the building of the library;
> 
> - libavfilter/x86/yadif.c does not get compiled. But
> - libavfilter/x86/gradfun.c does, and it seems to be incorporated into the
>   library.
> 
> And the symbol is in the output library:
> 
> dmg at i:/tmp/ffmpeg$ nm -a ./libavfilter/libavfilter.a  | grep ff_gradfun_filter_line_mmx2
>          U ff_gradfun_filter_line_mmx2
> 00000250 T ff_gradfun_filter_line_mmx2
> 
> 
> Here is the dependency graph for the library (libavfilter.a) we have
> built. The file in question (libavfilter/x86/gradfun.c) is shown in
> red. Files in ffmpeg are in blue, the library in green (far right).
> 
> http://turingmachine.org/~dmg/temp/ffmpeg_no_gpl_libavfilter.pdf
> 
> 
> Did we find a potential bug or are we missing something?
> 
> Thanks a lot for any help!

That's because the gradfun C code was relicensed as LGPL, while the
assembly routines are still GPL. Possible solutions:

* relicense as LGPL the assembly code
* compile optimizations only in case GPL is enabled (like in patch) 

I'm CC-ing Nolan and Loren, as they are the copyright holders and they
have to decide regarding the eventual relicensing.

Note: the x86/gradfun.c file has no copyright notice. 
-- 
FFmpeg = Fundamentalist and Forgiving Murdering Perennial Elected Guru
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-gradfun-disable-compilation-of-x86-optimizations-in-.patch
Type: text/x-diff
Size: 1767 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110702/072ce810/attachment.bin>


More information about the ffmpeg-devel mailing list