[MPlayer-dev-eng] Relicensing MPlayer or parts of it to LGPL

wm4 nfxjfg at googlemail.com
Mon Jan 4 18:03:36 CET 2016


On Mon, 4 Jan 2016 13:29:06 +0100
Roberto Togni <rxt at rtogni.it> wrote:

> On Sun, 27 Dec 2015 15:47:48 +0100
> wm4 <nfxjfg at googlemail.com> wrote:
> 
> [...]
> >   
> Hi
> 
> > To avoid this, I'm thinking of relicensing mpv to LGPL 2.1 (with the 
> > "or later"). While many things have changed in mpv compared to MPlayer
> > (and many parts have been rewritten or removed), much of its core is
> > still based on MPlayer, and I need agreement from the original authors
> > of the code.
> >   
> Do you have a list of the files that have to be relicensed?
> This would be a good starting point to understand what we're talking
> about.

Here's a brainstormed list of C source files. Corresponding header files
(with same name but .h extension) should of course be included as well,
but are not explicitly listed.

The most interesting ones are those which make up the core:

mplayer.c
mpcommon.c
command.c
parser-cfg.c
parser-mpcmd.c
input.c
mp_fifo.c
sub.c
mp_core.h
access_mpcontext.h
cfg-common.h
cfg-mplayer-def.h
cfg-mplayer.h
mp_global.h
mp_osd.h
aspect.c
fastmemcpy.h
mplayer.rc
mplayer.exe.manifest

Infrastructure:

video_out.c
video_out_internal.h
audio_out.c
audio_out_internal.h
ad.c
dec_audio.c
af.c
format.c
af_format.h
stream.c
vd.c
dec_video.c
img_format.c
mp_image.c
vf.c
vfcap.h
vf_vo.c
eosd.c (or whatever it's based on)
demuxer.c
stheader.h

Codecs:

ad_ffmpeg.c
ad_spdif.c
vd_ffmpeg.c
av_sub.c
subassconvert.c
ass_mp.c

Demuxers:

demux_lavf.c
demux_mkv.c
matroska.h
ebml.c
demux_mf.c
mf.c
demux_rawaudio.c
demux_rawvideo.c

Audio outputs:

ao_alsa.c
ao_coreaudio.c
ao_null.c
ao_pcm.c
ao_pulse.c

Filters:

af_channels.c
af_lavcac3enc.c
af_lavcresample.c (maybe)
af_scaletempo.c
af_volnorm.c
af_sub.c
vf_ass.c
vf_crop.c
vf_eq2.c
vf_dsize.c
vf_expand.c
vf_noformat.c
vf_rotate.c (maybe)
vf_scale.c
vf_screenshot.c
vf_stereo3d.c
vf_gradfun.c (LGPL in FFmpeg)
vf_yadif.c (LGPL in FFmpeg)

Protocols:

stream_ffmpeg.c
stream_file.c
cache2.c

Video outputs:

vo_null.c
vo_jpeg.c
vo_png.c
vo_vdpau.c
vo_xv.c
vo_x11.c
x11_common.c
w32_common.c
osx_common.c
osx_objc_common.m/.h

Utility functions:

mp_msg.c
bstr.c
path.c
m_config.c
m_options.c
m_property.c
mixer.c
av_helpers.c
fmt-conversion.c
find_sub.c
glob-win.c
keycodes.h
getch2.c
getch2-win.c
macosx_finder_args.c (probably)
priority.c
timer-darwin.c
timer-linux.c
timer-win2.c
timer.h
equalizer.h
control.h
af_tools.c
url.c
cookies.c


There are also some strange confusing things, for example mpv has a
file named osd.c, which is renamed from mplayer's sub.c, and which has
nothing to do with mplayer's osd.c. vf_lavfi.c also has the same name,
but is completely different and not based on the other one. The SDL
code in mpv is a complete rewrite (AFAIK). And mplayer.c/mp_common.c
got split into about 6 separate source files.

Quite some files were partially or completely rewritten, but might be
considered the basis for some mpv code.

I did not include everything. All OpenGL code is already GPL and LGPL
dual-licensed. Some parts are still in mpv, but can be disabled by
default and enabled with a --enable-gpl option (similar to how FFmpeg
does).

vf_gradfun.c and some others are tiny wrappers which invoke libavfilter
filters. I'm not sure if they can be considered derived from MPlayer
code, but probably can, so I included them.

My most important point is that if all files listed above would be
relicensed to LGPL, mpv could be relicensed to LGPL and still remain
fully functional on all platforms supported by mpv. Except the following
features, which could be made optional and guarded under a
--enable-gpl config option. I.e. enabling them would result in a GPL
licensed binary:

TV, DVB, DVD, Bluray, SMB, af_delay, af_equalizer, af_pan, vf_mirror,
vf_flip, vf_pullup, vf_gradun, vf_rotate, ao_dsound, ao_jack, ao_openal,
ao_rsound, vo_caca, vo_direct3d, vo_vaapi, and encoding support.

Challenging this claim would be appreciated (although of course not
required), as I'd prefer to do any relicensing cleanly. And with the
heavy refactoring the MPlayer code has gone through in mplayer2 and
mpv, it's not always easy to tell who "owns" some specific code.

The audio outputs are strangely the most important parts to me. Because
if I were to rewrite mpv from ground up, I'd still want to use the
OpenGL renderer (already LGPL), and not want to rewrite audio output
code.

> Did you forked mpv from MPlayer or mplayer2 repository?

mplayer2. (When I forked, mplayer2 was already too different from
MPlayer.)

> The only reliable way to get a list of all contributor for MPlayer
> files is to go over every commit message (CVS and SVN does not keep
> track of contributions committed by others), and also check all replies
> to the commit on the cvslog mailing list (sometime we forgot to add the
> original author to the commit message, and commented it in a reply on
> cvslog).
> Also beware that many people (me included) changed username in the
> transition from CVS to SVN; also email addresses changed over the
> years (I used at least 3 emails since I started contributing).
> 
> Surely you have a huge task in front of you.
> 
> > I'm thinking it would be beneficial for MPlayer as well to relicense
> > parts to LGPL (or all of it, if enough contributors can be reached).
> > Alternatively, I'd just ask for permission to relicense the affected
> > source files in mpv.
> >   
> I don't think that relicensing the complete MPlayer is something doable
> with a reasonable effort (for my understanding of reasonable, others
> may disagree).
> It's a big codebase with 15 years of history, and there are also files
> ported from other projects.
> I'm not against it, but I won't be the one doing it.

Yeah, I guess it's not feasible after all.

> We didn't even relicensed the filters ported from MPlayer to FFmpeg (I
> don't remember if there was a clear opposition, or it was just never
> tried).

Well, there are some examples of mplayer code which got changed to a
more liberal license: libass (ISC licensed), the OpenGL code (GPL and
LGPL dual licensed; effectively LGPL), vf_yadif.c and vf_gradfun.c
(LGPL), and probably more things unknown to me.

> 
> 
> > Would there be any welcoming or opposing to such a move from MPlayer
> > developers?  
> 
> You can use my code from MPlayer in mvp under LGPL 2.1 or later (I
> already relicensed most of it anyway when the codecs were moved from
> MPlayer to FFmpeg).

Thanks!


More information about the MPlayer-dev-eng mailing list