1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-30 15:29:56 +00:00
Commit Graph

44873 Commits

Author SHA1 Message Date
wm4
5b3ca8ed41 terminal: change license to LGPL
All authors of the current code have agreed.

The code probably originates from a software named GySmail (as the
copyright header indicates). As far as I can tell, it was written by
Arpi (who has agreed), possibly with unknown co-authors. This is most
likely OK, as none of the original code is around anymore anyway. I
could not find a working download of GySmail, that actually contained
the original getch2.c code.

This also has a wild history of random people adding ifdef guards to
control ioctl() vs. tcgetattr() calls. (See for example 2b1310abba4c1.)
Later, the ioctl() was removed in favor of the POSIX tcgetattr(), and
the ifdeffery was removed. So these people were not contacted.
2017-06-14 14:28:05 +02:00
Avi Halachmi (:avih)
d223a63bc5 js: add javascript scripting support using MuJS
Implements JS with almost identical API to the Lua support.

Key differences from Lua:
- The global mp, mp.msg and mp.utils are always available.
- Instead of returning x, error, return x and expose mp.last_error().
- Timers are JS standard set/clear Timeout/Interval.
- Supports CommonJS modules/require.
- Added at mp.utils: getenv, read_file, write_file and few more.
- Global print and dump (expand objects) functions.
- mp.options currently not supported.

See DOCS/man/javascript.rst for more details.
2017-06-14 12:29:32 +02:00
wm4
82aa1ea87f client API: document mpv_request_log_messages() return value 2017-06-14 10:23:13 +02:00
wm4
d0f807e5f3 DOCS/contribute.md: commit message body should be line-broken too
Not all tools apply line breaking. Which is probably good, because you
wouldn't be able to put lines in there which should _not_ be broken.

Don't ask me whether there is an "official" git convention for this.
2017-06-13 22:42:12 +02:00
Leo Izen
4e37980c56 manpage: Update 'u' keyboard shortcut docs to say 'sub-ass-override'
Sometime earlier, "sub-ass-style-override" was renamed to
"sub-ass-override". The option's documentation was updated to support
this, but not the documentation for the hotkey that toggles this option.
This commit updates the keyboard shortcut documentation to fix that.

Signed-off-by: wm4 <wm4@nowhere>
2017-06-13 22:37:39 +02:00
Rudolf Polzer
e2573e5b8d encode_lavc: move from GPL 2+ to LGPL 2.1+. 2017-06-13 14:22:15 -04:00
wm4
3bbb6078a5 stream: rewrite url escaping/unescaping functions
The original functions come from 24c6f11c8b, which says that these
functions were copied from another project. This other project is GPL
and was written by an unknown author, so there is no hope to relicense
them to LGPL.

Replace the existing functions with code written by Avi Halachmi. He did
not see the old code, but wrote it based on the function signature and
an extended description of what they should do (http://sprunge.us/edia).
Some additional help was provided by me (in particular the function of
the "ok" parameter and how to implement it - not in the original
ASFRecorder code).

Some of the code is hilariously similar, but these are coincidences. The
name of the variable "c" probably "leaked" from me, but "o" is a true
coincidence.

The code was integrated by me - my only change is changing the function
names to the old ones, moving the order of the top-level declarations,
and changing "default_ok" to "url_default_ok", and changing the strings
from char* to char[].

The author of the new code is Avi Halachmi.
2017-06-13 19:57:00 +02:00
wm4
4e663566dd demux_lavf: by default probe info for HLS again
This switches back the --demuxer-lavf-probe-info default for HLS from
"no" to "yes".

Apparently the old default caused problems with the FFmpeg MediaCodec
wrapper. I'm not sure whether it's due to the extradata (which would not
make any sense as MediaCodec takes in Annex B formatted h264 data), or
something else. Reportedly, enabling probing fixes it though, so enable
it again.

Add disparaging comment about Google software/APIs here.
2017-06-12 22:04:44 +02:00
wm4
eb22569ff0 options: change license of most files to LGPL (except options.c/.h)
All authors of the current code have agreed (as far as this commit
requires).

options.c/options.h will take more effort, because it contains all the
option declarations, and thus is touched extremely often.

m_option.c is technically still GPL, because of commit 2c82d5a1d8
(michael has agreed to LGPL, but only once the core of mpv is LGPL).

The geometry parsing code in m_option.c was originally by someone who
could not be reached. However, it was heavily rewritten anyway, and only
the syntax remains (i.e. not copyright-relevant).

parse_commandline.c contains a change by "adland" (commit 1d0ac71ae8),
who could not be reached - this this specific part is GPL only.
Fortunately, it matters only for DVD (and even then is more like a hack,
but whatever).

There are some other relevant changes, but they have all been reverted,
moved somewhere else, deleted, or replaced.
2017-06-12 20:55:17 +02:00
wm4
26a173f40c m_option: revert commit 2793a70e0f 2017-06-12 20:13:18 +02:00
wm4
a3be4cf2ab mpv.rc, mpv.exe.manifest: change license to LGPL
All authors have agreed.

mpv.exe.manifest probably can't have a copyright header, so it doesn't.

These files don't add license info to the executables. And of course the
executable license is still GPL.
2017-06-12 17:06:03 +02:00
wm4
2cded0ea9f m_property: change license to LGPL
All involved authors have agreed.
2017-06-12 17:00:20 +02:00
wm4
5c42c70bfd path: change license to LGPL
The history goes back to 2001 or so, but everyone involved with still
existing code has agreed.

One person who could not be reached yet (elevengu) has changes in this,
which as far as I can tell were overwritten anyway at a later point.
2017-06-12 16:41:21 +02:00
Niklas Haas
4e12baf3d7 vo_opengl: change default tone mapping algorithm
d8a3b10f4 was supposed to change this (as reflected in the man page and
commit message), I just forgot.
2017-06-10 13:48:35 +02:00
Hoyon Mak
b2f756c80e scripting: expand --script filename for C plugins 2017-06-09 19:42:12 +02:00
Niklas Haas
d8a3b10f45
vo_opengl: add new HDR tone mapping algorithm
I call it `mobius` because apparently the form f(x) = (cx+a)/(dx+b) is
called a Möbius transform, which is the algorithm this is based on. In
the extremes it becomes `reinhard` (param=0.0 and `clip` (param=1.0),
smoothly transitioning between the two depending on the parameter.

This is a useful tone mapping algorithm since the tunable mobius
transform allows the user to decide the trade-off between color accuracy
and detail preservation on a continuous scale. The default of 0.3 is
already far more accurate than `reinhard` while also being reasonably
good at preserving highlights, without suffering from the overall
brightness drop and color distortion of `hable`.

For these reasons, make this the new default. Also expand and improve
the documentation for these tone mapping functions.
2017-06-09 11:27:28 +01:00
Martin D
30cd963b25 ytdl_hook: don't override start time set by saved state
This affects resuming playback from a watch_later directory so that you can resume playback even for URLs that have a start parameter.
2017-06-09 11:13:24 +01:00
wm4
5521d48b4b mp_image: refuse to convert frames of unknown format to AVFrame
This could happen with some "special" hwaccel formats, that exist in
mpv, but not libavutil.
2017-06-08 21:52:07 +02:00
wm4
0754cbc83e d3d: add support for new libavcodec hwaccel API
Unfortunately quite a mess, in particular due to the need to have some
compatibility with the old API. (The old API will be supported only in
short term.)
2017-06-08 21:51:25 +02:00
wm4
79dc1834f5 m_option: fix leaks with OPT_KEYVALUELIST options
For example, specifying --script-opts multiple times could leak some
data.
2017-06-08 21:51:25 +02:00
Ricardo Constantino
289b11553b
ytdl_hook: don't override user-set start time 2017-06-08 19:45:49 +01:00
rslovers
9821737d06 vo_drm: fallback to vo_wait_default if VT switcher is not available
When the drm video output is used under VT with a terminal multiplexer
like screen, the VT_SETMODE ioctl call will fail since the controlling
terminal is a pseudoterminal instead of a real one, thus the VT switcher
will be unavailable.

The problem is, the wait_events function inside vo_drm.c will test for
this, and will do nothing if the switcher is not active. Normally, this
would not be noticed, however, when you pause a video, or if you're playing
multiple image files, mpv will suddenly start busy waiting on a single
core.

I confirmed this by building mpv with gprof support, in a few seconds,
wait_events got called about 90 million times.

So I added a fallback, when the VT switcher is not availble, just use the
vo_wait_default function. I tested it and it's working well so far.
2017-06-08 15:24:10 +02:00
wm4
bd603c2997 options: another missed --sub-ass-style-override use
Dammit.
2017-06-07 20:43:59 +02:00
wm4
11c7775b2c build: enable cplugins by default
There's probably no reason to keep this disabled. The -rdynamic (and the
approach we use) is probably a bit scary, but should not break anything.

Just to be sure I'm hard-disabling this on win32 anyway. We know it
can't work there in its current form.

Fixes #4491.
2017-06-07 20:43:59 +02:00
wm4
6e481d00bd options: fix some missing --sub-ass-style-override renames
The option was renamed not to include "-style", but not all uses were
updated.
2017-06-07 20:18:25 +02:00
wm4
9f79809930 demux_lavf: disable various other special behavior if hacks disabled
This affects in particular the heuristic that enables byte seeks in some
cases with .ts input. --demuxer-lavf-hacks=no should disable this
behavior now.
2017-06-07 16:48:21 +02:00
Niklas Haas
4d1ffecabc options: slight cleanup of --sub-ass-style-override
List of changes:

1. Rename `signfs` to `scale`, to better match what it actually does
   (force --sub-scale to apply to ASS subtitles), and fix the blatantly
   wrong documentation (it actually specifically does *not* apply to
   signs)

2. Rename `--sub-ass-style-override` to `--sub-ass-override` to help
   reduce confusion between it and `--sub-ass-force-style`, as well as
   pointing out that it doesn't necessarily actually override styles.
   (The new `scale` option, for example, only sets
   ASS_OVERRIDE_BIT_FONT_SIZE, but not ASS_OVERRIDE_BIT_STYLE)

3. Mention that `--sub-ass-override` is generally sort of smart about
   only overriding dialog, not signs.
2017-06-07 15:55:03 +02:00
Ricardo Constantino
cd2baf6198
encoding-profiles.conf: add faststart to enc-f-mp4
Usually a good idea to do this when encoding to mp4, but it's
commented since usefulness is arguable nowadays.

Equivalent to running qt-faststart tool on the resulting mp4.

Adds a bit of delay at the end of encoding.
2017-06-06 23:47:03 +01:00
wm4
c075b48ee0 options: change --sub-fix-timing default
Why? Better than wasting time by arguing with idiots.

Fixes #4484.
2017-06-06 18:58:20 +02:00
wm4
fdd75f90ae demux_mkv: remove incorrect comment
In the previous commit, I claimed that this GUID stuff was a libavformat
extension, but that seems to be completely wrong. (LATM might be an
extension of some kind, though.)

I don't know what Microsoft calls this GUID "suffix" though. It's
generally used to wrap wav format tags and video FourCCs as GUIDs.
I guess you could grep Microsoft headers for it to find its name,
or something.
2017-06-03 23:23:35 +02:00
wm4
eae693fc46 demux_mkv: support FFmpeg A_MS/ACM extensions
Indeed, FFmpeg found a way to maximize the misery around VfW/AVI-style
muxing. It appears it can mux a number of random codecs by using random
format tags. To make this even more stranger, it has a probably custom
GUID for signaling them, although for unknown reasons this is done only
"sometimes" (judging from FFmpeg's riffenc.c).

Whatever, it's not too hard to support it. Also apparently fix the
incorrect interpretation of extended formats - there's absolutely no
reason to assume they're always PCM. Instead, check for the correct
GUIDs. Also while we're at it, move the channel mask handling also to
codec_tag.c, so all WAVEFORMATEXTENSIBLE handling is in one place. (With
the normal wav header handling strangely still in demux_mkv.c.)

The case I was looking at (aac_latm muxing) decodes now. While I'm not
entirely sure about its correctness (libavformat has a weird
special-case for SBR), it certainly doesn't try to play it as PCM,
which is much of an improvement.

The extradata mess in the demux_mkv.c A_MS/ACM code path is unfortunate
and ugly, but has less impact than refactoring all the code to make
this specific case nicer.

Did I mention yet that I hate VfW-style mkv muxing?
2017-06-03 22:49:15 +02:00
Philip Langdale
7424651b96 vo_opengl: hwdec_cuda: Support separate decode and display devices
In a multi GPU scenario, it may be desirable to use different GPUs
for decode and display responsibilities. For example, if a secondary
GPU has better video decoding capabilities.

In such a scenario, we need to initialise a separate context for each
GPU, and use the display context in hwdec_cuda, while passing the
decode context to avcodec.

Once that's done, the actually hand-off between the two GPUs is
transparent to us (It happens during the cuMemcpy2D operation which
copies the decoded frame from a cuda buffer to the OpenGL texture).

In the end, the bulk of the work is around introducing a new
configuration option to specify the decode device.
2017-06-03 16:41:03 +02:00
wm4
7e889e5e63 README: add example compilation commands
Not sure if that helps.
2017-06-02 21:13:29 +02:00
wm4
cc69650e76 af, vf: improvements to libavfilter bridge
Add the "lavfi-" prefix (details see manpage additons).

Tag the filter name as "(lavfi)" in the verbose filter list output.
2017-05-31 17:42:55 +02:00
rr-
1a25f8c9fb
external_files: parse ~ in --{sub,audio}-paths 2017-05-31 13:10:34 +01:00
nodiscc
969c25d2f7 OSD message: "Drop files or URLs to play here."
Add "or URLs" to the default OSD message when mpv is launched without parameters.
Since this works flawlessly with youtube-dl integration, the fact that you can drop URLs directly to the window should be advertised more.
2017-05-31 12:56:14 +01:00
wm4
c443aa68d3 demux_mkv: vp9 alpha, second try
The parser is used to split superframes, and the decoder didn't like
when the blockadditional was duplicated on the second split packet.
2017-05-30 22:50:05 +02:00
wm4
3a448ab972 demux_mkv: fix alpha with vp9 + libvpx
The blockadditional side data gets lost because vp9 has to go through
the parser.
2017-05-30 19:26:27 +02:00
Raúl Peñacoba
bc3365b169 video/out/wayland/buffer.c: Add missing free() 2017-05-26 08:52:12 +01:00
Sebastian Reuße
b7d0dfaf1a ipc-unix: don’t truncate the message on EAGAIN
Fixes #4452.
2017-05-24 21:55:22 +02:00
wm4
83a9b0bc48 videotoolbox: support new libavcodec API
The new API has literally no advantages (other than that we can drop
mp_vt_download_image and other things later), but it's sort-of uniform
with the other hwaccels.

"--videotoolbox-format=no" is not supported with the new API, because it
doesn't "fit in". Probably could be added later again.

The iOS code change is untested (no way to test).
2017-05-24 15:25:48 +02:00
wm4
2426f95e0f vd_lavc: check for missing device_ctx ref
It's not really guaranteed that other components always set this (e.g.
on subtle errors), so check it explicitly. Although I'm not aware of a
failing case.
2017-05-24 14:40:25 +02:00
wm4
2a04906063 hwdec: fix 2 comments
The first is outdated, the second was always wrong.
2017-05-24 14:32:23 +02:00
wm4
25a4d10c8e player: make sure version information is always included in --log-file
If --log-file was used in config files, this could be missing due to the
exact timing when the messages are print, and when the options are
applied. Fix this by always dumping the version again when a log file is
opened.
2017-05-22 18:31:39 +02:00
Ricardo Constantino
5974f575a6
man/options: further document --chapters-file accepted files 2017-05-22 16:10:49 +01:00
wm4
e77ed53459 ad_spdif: change license to LGPL
All authors have agreed. (Even the main author, if you wonder about the
entry in the Copyright file.)
2017-05-21 12:35:53 +02:00
wm4
43aaba4f73 ao_pcm: change license to LGPL
All relevant authors have agreed to the relicensing.

Problem cases:

eca47b1a5e: someone else gets credited for the "idea" of this change,
but it doesn't seem like it was a patch (otherwise reimar would have
said "patch"). Also, the associated code got essentially removed again
anyway. (The option parsing was rewritten fully.)

ffb529e4eb: anonymous/unknown author, but the code was fully removed
anyway. The struct was removed, and the modern code does explicit
read/write calls.

40789473d2: author was not contacted, but this code was removed
anyway. The magic number (0x7ffff000) is still in the new code, but I
don't think that is copyright relevant.

c750b8ab2d: the message was entirely removed.
2017-05-20 12:46:08 +02:00
Yue Zhu
8a7614a0fb TOOLS/lua/autoload.lua: ignores all files starting with "." 2017-05-20 11:44:11 +02:00
wm4
7840125e22 audio/out: change license of some core files to LGPL
All contributors of the current code have agreed. ao.c requires a
"driver" entry for each audio output - we assume that if someone who
didn't agree to LGPL added a line, it's fine for ao.c to be LGPL
anyway. If the affected audio output is not disabled at compilation
time, the resulting binary will be GPL anyway, and ootherwise the
code is not included.

The audio output code itself was inspired or partially copied from
libao in 7a2eec4b59 (thus why MPlayer's audio code is named libao2).
Just to be sure we got permission from Aaron Holtzman, Jack Moffitt, and
Stan Seibert, who according to libao's SVN history and README are the
initial author. (Something similar was done for libvo, although the
commit relicensing it forgot to mention it.)

242aa6ebd4: anders mostly disagreed with the LGPL relicensing, but we
got permission for this particular commit.

0ef8e55573: nick could not be reached, but the include statement was
removed again anyway.

879e05a7c1: iive agreed to LGPL v3+ only, but this line of code was
removed anyway, so ao_null.c can be LGPL v2.1+.

9dd8f241ac: patch author could not be reached, but the corresponding
code (old slave mode interface) was completely removed later.
2017-05-20 11:43:57 +02:00
wm4
9b5e4e5715 demux_raw: drop "mp-rawvideo" use
This is an old pseudo codec to pass through the pixel format. Setup a
suitable AVCodecParameter directly instead, so the "rawvideo" codec can
be used.
2017-05-20 11:43:57 +02:00