diff --git a/Copyright b/Copyright index cf025070d7..fc51b0e1f0 100644 --- a/Copyright +++ b/Copyright @@ -11,7 +11,7 @@ files can have a standard license header). All new contributions must be LGPLv2.1+ licensed, or if the changes are done on GPL code, must come with the implicit agreement that the project can relicense the code to LGPLv2.1+ at a later point without asking the contributor. (This -is a safeguard for making potential relicensing of the project to LGPLv2.1+ +is a safeguard for making potential relicensing of remaining code to LGPLv2.1+ easier.) Using a more liberal license compatible to LGPLv2.1+ is also ok. For information about authors and contributors, consult the git log, which @@ -31,6 +31,28 @@ under mplayer2, and has been removed from mpv. Some libraries are GPLv2+ or GPLv3+ only. Building mpv with Samba support makes it GPLv3+. +mpv can be built as LGPLv3+ with the --enable-preliminary-lgpl3 configure +option. This is a very new switch and it hasn't been confirmed yet whether +really all GPL code is excluded (thus preliminary). In addition, it disables +a number of useful features, some of them quite central: +- no audio filtering, which breaks: --volume, --af, replaygain, pitch + correction, fine control about downmix/upmix/resampling behavior +- Linux X11 video output +- Linux audio output via ALSA (PulseAudio works) +- BSD audio output via OSS +- Linux hardware decoding (vaapi, vdpau) +- many builtin video filters (use libavfilter instead) +- automatic rotation and stereoscopic video handling +- Linux TV input +- the --frames option +- the add/cycle and sub-add/audio-add/sub-remove/audio-remove commands +- video format conversion (if not supported by the VO) +- minor features: jack, DVD, CDDA, SMB, CACA, legacy direct3d VO +Some of these will be fixed in the future. The lack of the add/cycle commands +makes this particularly useless for CLI mode, and most of the appeal of LGPL +is for libmpv anyway. Thus it's not recommended to build mpv CLI in LGPL mode +at all. + Source files with specific licenses: - etc/input.conf is LGPLv2.1+ - etc/builtin.conf is LGPLv2.1+ @@ -43,251 +65,43 @@ Source files with specific licenses: - bootstrap.py is unknown (probably GPLv2+ or LGPLv2+) - the build system (wscript, waftools/*) is LGPLv2+, some parts BSD -Some files are marked with "Almost LGPL." These files are GPL, but all authors -have agreed to relicense them to LGPL. the problem is that one of the authors is -Michael Niedermayer, who cited the following conditions for relicensing: - - http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-September/073535.html - -We assume the first 3 conditions are fulfilled. The last condition can be -interpreted as that his code can be changed to LGPL only as soon as the "core" -of mpv changes to LGPL. We interpret "core" as something minimal, that can -actually be built and run, with all GPL code disabled. - Some files are LGPLv3+. This is due to the contributions of a single developer going by the SVN username "iive". The chosen license of this project is LGPLv2.1+. The affected files will be changed to LGPLv2.1+ at the earliest opportunity, for example if his contributions disappear by being replaced or removed. All new contributions to these files are implied to be LGPLv2.1+. -LGPL relicensing status. Files which require some sort of action to get a basic -LGPL player core (relicensing, replacement, or partial/full rewrites) are marked -with an "x". +The following files are still GPL: - audio/decode/ad.h LGPL - audio/decode/ad_lavc.c LGPL - audio/decode/ad_spdif.c LGPL - audio/decode/dec_audio.* LGPL -x audio/filter/af.* must be killed (main author disagreed) - (required for LGPL core: a new filter chain must be written) - audio/filter/af_channel.c must be killed (main author disagreed) - audio/filter/af_equalizer.c must be killed (main author disagreed) - audio/filter/af_pan.c must be killed (main author disagreed) - audio/filter/af_volume.c must be killed (main author disagreed) - audio/filter/equalizer.h must be killed (main author disagreed) - audio/filter/tools.c must be killed (main author disagreed) - audio/filter/af_format.c LGPL - audio/filter/af_lavc3enc.c LGPL - audio/filter/af_lavfi.c LGPL - audio/filter/af_scaletempo.c LGPL - audio/filter/af_rubberband.c LGPL - audio/out/ao.c LGPL - audio/out/ao.h LGPL - audio/out/ao_alsa.c extremely hard (original author did not decide) - audio/out/ao_audiounit.m LGPL - audio/out/ao_coreaudio.c LGPL - audio/out/ao_coreaudio_chmap.c LGPL - audio/out/ao_coreaudio_chmap.h LGPL - audio/out/ao_coreaudio_exclusiv LGPL - audio/out/ao_coreaudio_properti LGPL - audio/out/ao_coreaudio_properti LGPL - audio/out/ao_coreaudio_utils.c LGPL - audio/out/ao_coreaudio_utils.h LGPL + audio/filter/* will be replaced with new filter chain + audio/filter/af_format.c mostly LGPL (except af glue code) + audio/filter/af_lavc3enc.c as above + audio/filter/af_lavfi.c as above + audio/filter/af_scaletempo.c as above + audio/filter/af_rubberband.c as above + audio/out/ao_alsa.c chaotic history, original author did not decide audio/out/ao_jack.c will stay GPL - audio/out/ao_lavc.c LGPL - audio/out/ao_null.c LGPL - audio/out/ao_openal.c LGPL - audio/out/ao_opensles.c LGPL audio/out/ao_oss.c will stay GPL - audio/out/ao_pcm.c LGPL - audio/out/ao_pulse.c LGPL - audio/out/ao_rsound.c LGPL - audio/out/ao_sdl.c LGPL - audio/out/ao_sndio.c LGPL (BSD) - audio/out/ao_wasapi.c LGPL - audio/out/ao_wasapi_changenotif LGPL - audio/out/ao_wasapi.h LGPL - audio/out/ao_wasapi_utils.c LGPL - audio/out/internal.h LGPL - audio/out/pull.c LGPL - audio/out/push.c LGPL -x audio/audio.* very hard (mp_audio based of anders' af_audio) - (required for LGPL core: determine if the struct can be used anyway, or - devise a cheap AVFrame wrapper) - audio/audio_buffer.* LGPL - audio/chmap.* LGPL - audio/chmap_sel.* LGPL - audio/fmt-conversion.* LGPL - audio/format.* LGPL - common/av_common.* LGPL - common/av_log.c almost LGPL - common/av_log.h LGPL - common/codecs.* LGPL - common/common.* LGPL - common/encode.h LGPL - common/encode_lavc.* LGPL - common/global.h LGPL - common/msg.c almost LGPL - common/msg_control.h LGPL - common/msg.h LGPL - common/playlist.* LGPL - common/recorder.* LGPL - common/tags.* LGPL - common/version.c LGPL - demux/codec_tags.* LGPL - demux/cue.* LGPL - demux/demux.* LGPL - demux/demux_cue.c LGPL - demux/demux_disc.c LGPL - demux/demux_edl.c LGPL - demux/demux_lavf.c almost LGPL - demux/demux_libarchive.c LGPL - demux/demux_mf.c LGPLv3+ - demux/demux_mkv.c LGPL (mostly) - demux/demux_mkv_timeline.c LGPL - demux/demux_null.c LGPL - demux/demux_playlist.c LGPL - demux/demux_rar.c LGPL - demux/demux_raw.c almost LGPL - demux/demux_timeline.c LGPL + audio/audio.* needed by af code only demux/demux_tv.c will stay GPL - demux/ebml.* LGPL - demux/matroska.h LGPL - demux/packet.* LGPL - demux/stheader.h LGPL - demux/timeline.* LGPL - input/cmd_* LGPL - input/event.* LGPL - input/input.* LGPL - input/ipc.c LGPL - input/ipc-unix.c LGPL - input/ipc-win.c LGPL - input/keycodes.* LGPL - input/pipe-win32.c LGPL - libmpv/*.* LGPL - misc/*.* LGPL - options/m_config.* LGPL - options/m_option.c almost LGPL - options/m_option.h LGPL - options/m_property.* LGPL - options/options.* LGPL - options/parse_commandline.* LGPL - options/parse_configfile.* LGPL - options/path.* LGPL - osdep/android/* LGPL (BSD) - osdep/ar/* LGPL (BSD) - osdep/atomic.h LGPL - osdep/compiler.h LGPL - osdep/endian.h LGPL - osdep/glob-win.c LGPL - osdep/io.* LGPL - osdep/macosx_application.h LGPL - osdep/macosx_application.m LGPL - osdep/macosx_application_objc.h LGPL - osdep/macosx_compat.h LGPL - osdep/macosx_events.* LGPL - osdep/macosx_events_objc.h LGPL - osdep/macosx_touchbar.* LGPL - osdep/macosx_versions.h LGPL - osdep/main-fn-cocoa.c LGPL - osdep/main-fn.h LGPL - osdep/main-fn-unix.c LGPL - osdep/main-fn-win.c LGPL - osdep/mpv.exe.manifest LGPL - osdep/mpv.rc LGPL - osdep/path.h LGPL - osdep/path-macosx.m LGPL - osdep/path-unix.c LGPL - osdep/path-win.c LGPL - osdep/semaphore.h LGPL - osdep/semaphore_osx.c LGPL - osdep/strnlen.h LGPL - osdep/subprocess.* LGPL - osdep/subprocess-posix.c LGPL - osdep/subprocess-win.c LGPL - osdep/terminal.h LGPL - osdep/terminal-unix.c LGPL - osdep/terminal-win.c LGPL - osdep/threads.* LGPL - osdep/timer.c LGPL - osdep/timer.h LGPL - osdep/timer-darwin.c LGPL (MIT) - osdep/timer-linux.c LGPL - osdep/timer-win2.c LGPL - osdep/w32_keyboard.c LGPL - osdep/w32_keyboard.h LGPL - osdep/win32-console-wrapper.c LGPL (BSD) - osdep/win32/* LGPL (ISC) - osdep/windows_utils.* LGPL -x player/audio.c LGPL (dysfunctional due to libaf) - player/client.* LGPL (ISC) - player/command.c LGPL - player/command.h LGPL - player/configfiles.c LGPL - player/core.h LGPL - player/external_files.* LGPL - player/lavfi.* LGPL - player/loadfile.c LGPL - player/lua/*.* LGPL - player/lua.c LGPL - player/misc.c LGPL - player/osd.c LGPL - player/playloop.c LGPL - player/screenshot.* LGPL - player/scripting.* LGPL - player/sub.c LGPL - player/video.c LGPL stream/ai_* will stay GPL (TV code) stream/audio_in.* will stay GPL (TV code) - stream/cache.c LGPLv3+ - stream/cache_file.c LGPL - stream/cookies.* LGPL stream/dvb* must stay GPL stream/frequencies.* must stay GPL - stream/rar.* LGPL - stream/stream_avdevice.c LGPL - stream/stream_bluray.c LGPL - stream/stream.* LGPL - stream/stream_cb.c LGPL stream/stream_cdda.c unknown stream/stream_dvb.* must stay GPL stream/stream_dvd.c unknown stream/stream_dvd_common.* unknown stream/stream_dvdnav.c unknown - stream/stream_edl.c LGPL - stream/stream_file.c LGPL - stream/stream_lavf.c LGPL - stream/stream_libarchive.* LGPL - stream/stream_memory.c LGPL - stream/stream_mf.c LGPL - stream/stream_null.c LGPL - stream/stream_rar.c LGPL stream/stream_smb.c will stay GPLv3 stream/stream_tv.c will stay GPL stream/tv* will stay GPL - sub/* LGPL - ta/* LGPL (ISC) - video/decode/d3d.* LGPL - video/decode/dec_video.* almost LGPL - video/decode/hw_cuda.c LGPL - video/decode/hw_d3d11va.c LGPL - video/decode/hw_dxva2.c LGPL - video/decode/hw_videotoolbox.c LGPL - video/decode/lavc.h almost LGPLv3+ - video/decode/vd.h LGPL - video/decode/vd_lavc.c almost LGPLv3+ - video/filter/refqueue.* LGPL - video/filter/vf.c LGPL - video/filter/vf.h LGPL (mostly) - video/filter/vf_buffer.c LGPL video/filter/vf_crop.c will be deleted - video/filter/vf_d3d11vpp.c LGPL video/filter/vf_dsize.c will be deleted video/filter/vf_expand.c will be deleted video/filter/vf_flip.c will be deleted video/filter/vf_format.c will be deleted video/filter/vf_gradfun.c will be deleted - video/filter/vf_lavfi.* LGPL video/filter/vf_mirror.c will be deleted video/filter/vf_noformat.c will be deleted video/filter/vf_pullup.c will be deleted @@ -295,57 +109,36 @@ x player/audio.c LGPL (dysfunctional due to libaf) video/filter/vf_scale.c will be deleted video/filter/vf_stereo3d.c will be deleted video/filter/vf_sub.c will be deleted - video/filter/vf_vapoursynth.c LGPL - video/filter/vf_vavpp.c LGPL - video/filter/vf_vdpaupp.c LGPL video/filter/vf_yadif.c will be deleted - video/csputils.* LGPL - video/fmt-conversion.* LGPL video/gpu_memcpy.* will be deleted - video/hwdec.* LGPL - video/image_writer.* LGPL - video/img_format.* LGPL - video/mp_image.* almost LGPL - video/mp_image_pool.* LGPL - video/out/aspect.* LGPL - video/out/bitmap_packer.* LGPL - video/out/cocoa* LGPL - video/out/d3d_shader_420p.h LGPL - video/out/d3d_shader_nv12.h LGPL - video/out/d3d_shader_yuv.hlsl LGPL - video/out/dither.* LGPL - video/out/drm_common.* LGPL - video/out/filter_kernels.* LGPL (BSD) video/out/opengl/hwdec_vaglx.c GPL - video/out/opengl/* LGPL - video/out/vo.c LGPL - video/out/vo.h LGPL video/out/vo_caca.c unknown video/out/vo_direct3d.c unknown - video/out/vo_drm.c LGPL - video/out/vo_image.c LGPL - video/out/vo_lavc.c LGPL - video/out/vo_null.c LGPL - video/out/vo_opengl.c LGPL - video/out/vo_opengl_cb.c LGPL - video/out/vo_rpi.c LGPL - video/out/vo_sdl.c LGPL - video/out/vo_tct.c LGPL video/out/vo_vaapi.c probably impossible (some company's code) video/out/vo_vdpau.c probably impossible (nVidia's code) - video/out/vo_wayland.c LGPL video/out/vo_x11.c probably impossible video/out/vo_xv.c probably impossible - video/out/w32_common.* LGPL - video/out/wayland* LGPL - video/out/win32/* LGPL - video/out/win_state.* LGPL video/out/x11_common.* probably impossible - video/out/x11_icon.bin LGPL - video/sws_utils.* almost LGPL video/vaapi.* hard (GPL-only parts must be ifdefed) video/vdpau.c hard (GPL-only parts must be ifdefed) - video/vdpau_functions.inc LGPL video/vdpau.h unknown video/vdpau_mixer.* actual code must be rewritten - video/vt.* LGPL + +The following files contain some optional GPL code: + + input/cmd_list.c potentially some commands + demux/demux_mkv.c some verbose message + options/options.c --frames option + options/parse_commandline.c dvd:// expansion + player/audio.c libaf glue code + player/loadfile.c --frames option (minor but probably fatal) + player/osd.c OSD level 3 + player/command.c add/cycle command, possible sub-add command + player/main.c configuration output + +The following files are partially LGPLv3+ (otherwise LGPL): + + demux/demux_mf.c minor autodetection thing + stream/cache.c minor cache option changes + video/decode/lavc.h split from vd_lavc.c + video/decode/vd_lavc.c XvMC influences in get_format() diff --git a/audio/filter/af.h b/audio/filter/af.h index 4bd8f55b96..f66b189f14 100644 --- a/audio/filter/af.h +++ b/audio/filter/af.h @@ -23,8 +23,8 @@ #include #include "config.h" -#if !HAVE_LIBAF -#error "libaf disabled" +#if !(HAVE_LIBAF && HAVE_GPL) +#error "libaf/GPL disabled" #endif #include "options/options.h" diff --git a/common/av_log.c b/common/av_log.c index 3f07106b5a..8e5502b317 100644 --- a/common/av_log.c +++ b/common/av_log.c @@ -5,20 +5,18 @@ * * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/common/msg.c b/common/msg.c index 623a509bb4..375eff9aad 100644 --- a/common/msg.c +++ b/common/msg.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index e61529fb71..53bf62016a 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -3,20 +3,18 @@ * * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/input/cmd_list.c b/input/cmd_list.c index 6199e7c65f..c8dd77cf7a 100644 --- a/input/cmd_list.c +++ b/input/cmd_list.c @@ -225,10 +225,12 @@ const struct mp_cmd_def mp_cmds[] = { { MP_CMD_KEYDOWN, "keydown", { ARG_STRING } }, { MP_CMD_KEYUP, "keyup", { OARG_STRING("") } }, +#if HAVE_GPL { MP_CMD_AUDIO_ADD, "audio-add", { ARG_STRING, OARG_CHOICE(0, ({"select", 0}, {"auto", 1}, {"cached", 2})), OARG_STRING(""), OARG_STRING("") } }, { MP_CMD_AUDIO_REMOVE, "audio-remove", { OARG_INT(-1) } }, +#endif { MP_CMD_AUDIO_RELOAD, "audio-reload", { OARG_INT(-1) } }, { MP_CMD_RESCAN_EXTERNAL_FILES, "rescan-external-files", { diff --git a/options/m_option.c b/options/m_option.c index 0ec85825b6..00ea5d6d93 100644 --- a/options/m_option.c +++ b/options/m_option.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ /// \file diff --git a/player/audio.c b/player/audio.c index a26a7d1ff5..d32b8b78d6 100644 --- a/player/audio.c +++ b/player/audio.c @@ -965,7 +965,6 @@ static int decode_new_frame(struct ao_chain *ao_c) } } -#if HAVE_GPL /* Try to get at least minsamples decoded+filtered samples in outbuf * (total length including possible existing data). * Return 0 on success, or negative AD_* error code. @@ -1064,7 +1063,6 @@ static int filter_audio(struct MPContext *mpctx, struct mp_audio_buffer *outbuf, return res; } -#endif void reload_audio_output(struct MPContext *mpctx) { diff --git a/player/command.h b/player/command.h index c9410423c7..0ab746b1d2 100644 --- a/player/command.h +++ b/player/command.h @@ -13,8 +13,6 @@ * * You should have received a copy of the GNU Lesser General Public * License along with mpv. If not, see . - * - * Parts under HAVE_GPL are licensed under GNU General Public License. */ #ifndef MPLAYER_COMMAND_H diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c index 04e428246b..a78203b49a 100644 --- a/video/decode/dec_video.c +++ b/video/decode/dec_video.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/video/decode/dec_video.h b/video/decode/dec_video.h index 73570f8ed5..d8d47a827c 100644 --- a/video/decode/dec_video.h +++ b/video/decode/dec_video.h @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #ifndef MPLAYER_DEC_VIDEO_H diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index e08246a296..82ab752165 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPLv3+. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . * * The parts potentially making this file LGPL v3 (instead of v2.1 or later) are: * 376e3abf5c7d2 xvmc use get_format for IDCT/MC recognition @@ -261,16 +259,11 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = { #endif #if HAVE_VDPAU_HWACCEL &mp_vd_lavc_vdpau, - &mp_vd_lavc_vdpau_copy, #endif #if HAVE_VIDEOTOOLBOX_HWACCEL &mp_vd_lavc_videotoolbox, &mp_vd_lavc_videotoolbox_copy, #endif -#if HAVE_VAAPI_HWACCEL - &mp_vd_lavc_vaapi, - &mp_vd_lavc_vaapi_copy, -#endif #if HAVE_D3D_HWACCEL &mp_vd_lavc_d3d11va, @@ -290,6 +283,13 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = { &mp_vd_lavc_cuda_old, #endif &mp_vd_lavc_cuda_copy, +#endif +#if HAVE_VDPAU_HWACCEL + &mp_vd_lavc_vdpau_copy, +#endif +#if HAVE_VAAPI_HWACCEL + &mp_vd_lavc_vaapi, + &mp_vd_lavc_vaapi_copy, #endif &mp_vd_lavc_crystalhd, NULL diff --git a/video/filter/vf.c b/video/filter/vf.c index ae38947262..c2fc4f716a 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -64,24 +64,25 @@ extern const vf_info_t vf_info_d3d11vpp; // list of available filters: static const vf_info_t *const filter_list[] = { +#if HAVE_GPL &vf_info_crop, &vf_info_expand, &vf_info_scale, &vf_info_format, &vf_info_noformat, &vf_info_flip, - &vf_info_mirror, - &vf_info_lavfi, - &vf_info_lavfi_bridge, &vf_info_rotate, &vf_info_gradfun, &vf_info_pullup, &vf_info_yadif, &vf_info_stereo3d, - &vf_info_dsize, &vf_info_sub, +#endif + + &vf_info_lavfi, + &vf_info_lavfi_bridge, &vf_info_buffer, #if HAVE_VAPOURSYNTH_CORE && HAVE_VAPOURSYNTH &vf_info_vapoursynth, diff --git a/video/mp_image.c b/video/mp_image.c index aee1f913e6..100149535a 100644 --- a/video/mp_image.c +++ b/video/mp_image.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/video/mp_image.h b/video/mp_image.h index 53b25c5999..dffbb0d6d1 100644 --- a/video/mp_image.h +++ b/video/mp_image.h @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #ifndef MPLAYER_MP_IMAGE_H diff --git a/video/sws_utils.c b/video/sws_utils.c index b1ab499f68..ae6df02f52 100644 --- a/video/sws_utils.c +++ b/video/sws_utils.c @@ -1,20 +1,18 @@ /* * This file is part of mpv. * - * mpv is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * mpv is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * mpv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with mpv. If not, see . - * - * Almost LGPL. + * You should have received a copy of the GNU Lesser General Public + * License along with mpv. If not, see . */ #include diff --git a/waftools/generators/headers.py b/waftools/generators/headers.py index c7f5b48b84..84f914c2c1 100644 --- a/waftools/generators/headers.py +++ b/waftools/generators/headers.py @@ -29,7 +29,6 @@ def __add_mpv_defines__(ctx): ctx.define("CONFIGURATION", " ".join(argv)) ctx.define("MPV_CONFDIR", ctx.env.CONFLOADDIR) ctx.define("FULLCONFIG", __escape_c_string(__get_features_string__(ctx))) - ctx.define("HAVE_GPL", 1) def configure(ctx): __add_mpv_defines__(ctx) diff --git a/wscript b/wscript index 289021b446..9c4c823a08 100644 --- a/wscript +++ b/wscript @@ -27,6 +27,21 @@ Dependency identifiers (for win32 vs. Unix): build_options = [ { + 'name': '--preliminary-lgpl3', + 'desc': 'Preliminary LGPLv3+ license', + 'default': 'disable', + 'func': check_true, + }, { + 'name': 'gpl', + 'desc': 'GPL build', + 'deps': '!preliminary-lgpl3', + 'func': check_true, + }, { + 'name': 'libaf', + 'desc': 'internal audio filter chain', + 'deps': 'gpl', + 'func': check_true, + }, { 'name': '--cplayer', 'desc': 'mpv CLI player', 'default': 'enable', @@ -289,7 +304,7 @@ iconv support use --disable-iconv.", }, { 'name': '--libsmbclient', 'desc': 'Samba support (makes mpv GPLv3)', - 'deps': 'libdl', + 'deps': 'libdl && gpl', 'func': check_pkg_config('smbclient'), 'default': 'disable', 'module': 'input', @@ -338,22 +353,25 @@ iconv support use --disable-iconv.", }, { 'name': '--dvdread', 'desc': 'dvdread support', + 'deps': 'gpl', 'func': check_pkg_config('dvdread', '>= 4.1.0'), 'default': 'disable', }, { 'name': '--dvdnav', 'desc': 'dvdnav support', + 'deps': 'gpl', 'func': check_pkg_config('dvdnav', '>= 4.2.0', 'dvdread', '>= 4.1.0'), 'default': 'disable', }, { 'name': 'dvdread-common', 'desc': 'DVD/IFO support', - 'deps': 'dvdread || dvdnav', + 'deps': 'gpl && (dvdread || dvdnav)', 'func': check_true, }, { 'name': '--cdda', 'desc': 'cdda support (libcdio)', + 'deps': 'gpl', 'func': check_pkg_config('libcdio_paranoia'), 'default': 'disable', }, { @@ -364,6 +382,7 @@ iconv support use --disable-iconv.", }, { 'name': '--rubberband', 'desc': 'librubberband support', + 'deps': 'libaf', 'func': check_pkg_config('rubberband', '>= 1.8.0'), }, { 'name': '--lcms2', @@ -389,10 +408,6 @@ iconv support use --disable-iconv.", 'desc': 'libarchive wrapper for reading zip files and more', 'func': check_pkg_config('libarchive >= 3.0.0'), 'default': 'disable', - }, { - 'name': '--libaf', - 'desc': 'internal audio filter chain', - 'func': check_true, } ] @@ -504,7 +519,7 @@ audio_output_features = [ 'name': '--oss-audio', 'desc': 'OSS', 'func': check_cc(header_name='sys/soundcard.h'), - 'deps': 'posix', + 'deps': 'posix && gpl', }, { 'name': '--rsound', 'desc': 'RSound audio output', @@ -522,6 +537,7 @@ audio_output_features = [ }, { 'name': '--jack', 'desc': 'JACK audio output', + 'deps': 'gpl', 'func': check_pkg_config('jack'), }, { 'name': '--openal', @@ -535,6 +551,7 @@ audio_output_features = [ }, { 'name': '--alsa', 'desc': 'ALSA audio output', + 'deps': 'gpl', 'func': check_pkg_config('alsa', '>= 1.0.18'), }, { 'name': '--coreaudio', @@ -581,6 +598,7 @@ video_output_features = [ } , { 'name': '--x11', 'desc': 'X11', + 'deps': 'gpl', 'func': check_pkg_config('x11', '>= 1.0.0', 'xscrnsaver', '>= 1.0.0', 'xext', '>= 1.0.0', @@ -678,7 +696,7 @@ video_output_features = [ }, { 'name': '--vaapi', 'desc': 'VAAPI acceleration', - 'deps': 'libdl && (x11 || wayland || egl-drm)', + 'deps': 'gpl && libdl && (x11 || wayland || egl-drm)', 'func': check_pkg_config('libva', '>= 0.36.0'), }, { 'name': '--vaapi-x11', @@ -713,6 +731,7 @@ video_output_features = [ }, { 'name': '--caca', 'desc': 'CACA', + 'deps': 'gpl', 'func': check_pkg_config('caca', '>= 0.99.beta18'), }, { 'name': '--jpeg', @@ -722,7 +741,7 @@ video_output_features = [ }, { 'name': '--direct3d', 'desc': 'Direct3D support', - 'deps': 'win32-desktop', + 'deps': 'win32-desktop && gpl', 'func': check_cc(header_name='d3d9.h'), }, { # We need MMAL/bcm_host/dispmanx APIs. Also, most RPI distros require @@ -870,7 +889,7 @@ hwaccel_features = [ }, { 'name': 'sse4-intrinsics', 'desc': 'GCC SSE4 intrinsics for GPU memcpy', - 'deps': 'd3d-hwaccel && !d3d-hwaccel-new', + 'deps': 'd3d-hwaccel && !d3d-hwaccel-new && gpl', 'func': check_cc(fragment=load_fragment('sse.c')), } ] @@ -879,6 +898,7 @@ radio_and_tv_features = [ { 'name': '--tv', 'desc': 'TV interface', + 'deps': 'gpl', 'func': check_true, 'default': 'disable', }, { @@ -909,6 +929,7 @@ radio_and_tv_features = [ } , { 'name': '--dvbin', 'desc': 'DVB input module', + 'deps': 'gpl', 'func': check_true, 'default': 'disable', } diff --git a/wscript_build.py b/wscript_build.py index d9b56074ef..2f6c08bc0a 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -171,7 +171,7 @@ def build(ctx): ( "audio/filter/af_lavfi.c", "libaf" ), ( "audio/filter/af_lavrresample.c", "libaf" ), ( "audio/filter/af_pan.c", "libaf" ), - ( "audio/filter/af_rubberband.c", "rubberband && libaf" ), + ( "audio/filter/af_rubberband.c", "rubberband" ), ( "audio/filter/af_scaletempo.c", "libaf" ), ( "audio/filter/af_volume.c", "libaf" ), ( "audio/filter/tools.c", "libaf" ), @@ -357,25 +357,25 @@ def build(ctx): ( "video/filter/refqueue.c" ), ( "video/filter/vf.c" ), ( "video/filter/vf_buffer.c" ), - ( "video/filter/vf_crop.c" ), + ( "video/filter/vf_crop.c", "gpl" ), ( "video/filter/vf_d3d11vpp.c", "d3d-hwaccel" ), - ( "video/filter/vf_dsize.c" ), - ( "video/filter/vf_expand.c" ), - ( "video/filter/vf_flip.c" ), - ( "video/filter/vf_format.c" ), - ( "video/filter/vf_gradfun.c" ), + ( "video/filter/vf_dsize.c", "gpl" ), + ( "video/filter/vf_expand.c", "gpl" ), + ( "video/filter/vf_flip.c", "gpl" ), + ( "video/filter/vf_format.c", "gpl" ), + ( "video/filter/vf_gradfun.c", "gpl" ), ( "video/filter/vf_lavfi.c" ), - ( "video/filter/vf_mirror.c" ), - ( "video/filter/vf_noformat.c" ), - ( "video/filter/vf_pullup.c" ), - ( "video/filter/vf_rotate.c" ), - ( "video/filter/vf_scale.c" ), - ( "video/filter/vf_stereo3d.c" ), - ( "video/filter/vf_sub.c" ), + ( "video/filter/vf_mirror.c", "gpl" ), + ( "video/filter/vf_noformat.c", "gpl" ), + ( "video/filter/vf_pullup.c", "gpl" ), + ( "video/filter/vf_rotate.c", "gpl" ), + ( "video/filter/vf_scale.c", "gpl" ), + ( "video/filter/vf_stereo3d.c", "gpl" ), + ( "video/filter/vf_sub.c", "gpl" ), ( "video/filter/vf_vapoursynth.c", "vapoursynth-core" ), ( "video/filter/vf_vavpp.c", "vaapi" ), ( "video/filter/vf_vdpaupp.c", "vdpau" ), - ( "video/filter/vf_yadif.c" ), + ( "video/filter/vf_yadif.c", "gpl" ), ( "video/out/aspect.c" ), ( "video/out/bitmap_packer.c" ), ( "video/out/cocoa/video_view.m", "cocoa" ),