aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Copyright309
-rw-r--r--audio/filter/af.h4
-rw-r--r--common/av_log.c16
-rw-r--r--common/msg.c16
-rw-r--r--demux/demux_lavf.c16
-rw-r--r--input/cmd_list.c2
-rw-r--r--options/m_option.c16
-rw-r--r--player/audio.c2
-rw-r--r--player/command.h2
-rw-r--r--video/decode/dec_video.c16
-rw-r--r--video/decode/dec_video.h16
-rw-r--r--video/decode/vd_lavc.c28
-rw-r--r--video/filter/vf.c9
-rw-r--r--video/mp_image.c16
-rw-r--r--video/mp_image.h16
-rw-r--r--video/sws_utils.c16
-rw-r--r--waftools/generators/headers.py1
-rw-r--r--wscript41
-rw-r--r--wscript_build.py30
19 files changed, 183 insertions, 389 deletions
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 <sys/types.h>
#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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
/// \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 <http://www.gnu.org/licenses/>.
- *
- * 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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPLv3+.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*
* 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,
@@ -291,6 +284,13 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = {
#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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <limits.h>
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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#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 <http://www.gnu.org/licenses/>.
- *
- * Almost LGPL.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
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" ),