| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
I added this non-sense earlier this day. Oops.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If --write-filename-in-watch-later-config is used, and the filename
contains newline characters (as generally allowed on Unix), then the
newline will be written to the resume file literally, and the parts
after the newline character are interpreted as options.
This is possibly security relevant.
Change newline characters (and in fact any other special characters)
to '_'.
Reported as #1099 (this commit is a reimplementation of the proposed
pull request).
CC: @mpv-player/stable
|
| |
|
|
|
|
| |
This fixes a build failure introduced by c269fa1.
|
| |
|
|
|
|
| |
Should fix #1071.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With --gapless-audio=no, changing from one file to the next apparently
made it hang, until the player was woken up by unrelated events like
input. The reason was that the AO doesn't notify the player of EOF
properly. the played was querying ao_eof_reached(), and then just went
to sleep, without anything waking it up.
Make it event-based: the AO wakes up the playloop if the EOF state
changes.
We could have fixed this in a simpler way by synchronously draining the
AO in these cases. But I think proper event handling is preferable.
Fixes: #1069
CC: @mpv-player/stable (perhaps)
|
|
|
|
|
|
|
| |
Just like the previous commit, this takes care of fallout from commit
7ab228, which fixed a bug, but introduced some new ones.
CC: @mpv-player/stable
|
|
|
|
|
|
| |
Signed-off-by: wm4 <wm4@nowhere>
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Somehow, there was a larger misunderstanding in the code: ao_buffer
does not need to be preserved over audio reinit for proper support of
gapless audio. The actual AO internal buffer takes care of this.
In fact, preserving ao_buffer just breaks audio resync. In the ordered
chapter case, end_pts is used, which means not all audio data in the
buffer is played, thus some data is left over when audio decoding
resumes on the next segment. This triggers some code that aborts resync
if there's "audio decoded" (ao_buffer contains something), but no PTS
is known (nothing was actually decoded yet).
Simplify, and always bind the output buffer to the decoder.
CC: @mpv-player/stable (maybe)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The oldest supported FFmpeg release doesn't provide
av_vdpau_alloc_context(). With these versions, the application has no
other choice than to hard code the size of AVVDPAUContext. (On the other
hand, there's av_alloc_vdpaucontext(), which does the same thing, but is
FFmpeg specific - not sure if it was available early enough, so I'm not
touching it.)
Newer FFmpeg and Libav releases require you to call this function, for
ABI compatibility reasons. It's the typcal lakc of foresight that make
FFmpeg APIs terrible. mpv successfully pretended that this crap didn't
exist (ABI compat. is near impossible to reach anyway) - but it appears
newer developments in Libav change the function from initializing the
struct with all-zeros to something else, and mpv vdpau decoding would
stop working as soon as this new work is relewased.
So, add a configure test (sigh).
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
| |
What the flying fuck?
Unfortunately, these are already in the wild.
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't worry, your ~/.config/... paths are safe. This merely removes
handling of $XDG_CONFIG_DIRS for global paths.
Maybe there is a better solution for this, like still including the
"traditional" config dir. But I will leave the fine reading of this
(crappy) spec and fixing the code accordingly to someone else. So, if
anyone has interest in getting this behavior back, you will have to
write a patch. This patch should _also_ not break expected behavior.
Fixes #1060.
|
|
|
|
|
|
|
| |
If a playlist is loaded from the internal playlist (like
"mpv playlist.m3u"), then attempt to resume from it.
CC: @mpv-player/stable
|
|
|
|
|
| |
Only execute most of the opengl termination procedure if we actually have an
egl context.
|
|
|
|
|
|
| |
Conflicts:
DOCS/man/input.rst
DOCS/man/options.rst
|
|
|
|
|
|
|
|
|
|
|
|
| |
Loading a playlist with --playlist from a sub-directory added the
playlist's base path twice: one time in the playlist demuxer, and then
again in playlist_parse_file(). The latter function is used only for
--playlist, so it worked when loading the playlist directly.
(This is probably a mess-up when the MPlayer playlist parsers were
replaced with newer code.)
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
|
| |
The audio/video sync code in player/audio.c calls ao_reset() each time
audio decoding is entered, but the player is paused, and there would be
more than 1 sample to skip to make audio start match with video start.
This caused a wakeup feedback loop with push.c.
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When embedding a X window, it's hard to control whether it receives
mouse/keyboard input or not. It seems the X protocol itself makes this
hard (basically due to the outdated design mismatching with modern
toolkits), and we have to take care of these things explicitly.
Simply do this by manually querying and using the parent window event
flags.
This restores some MPlayer behavior (it doesn't add back exactly the
same code, but it's very similar).
This probably has some potential to interfere with libmpv embedding, so
bump the client API minor.
CC: @mpv-player/stable (if applied, client-api-changes.rst has to be
adjusted to include the 0.5.2 release)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The player didn't quit when seeking past EOF in audio-only mode while
paused. The only case when we don't want to quit is when the last video
frame is displayed while paused.
This logic was probably broken a while ago, but I'm not exactly sure.
CC: @mpv-player/stable
Conflicts:
player/playloop.c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't attempt to resync after speed changes. Note that most other cases
of audio reinit (like switching tracks etc.) still resync, but other
code paths take care of setting the audio_status accordingly.
This restores the old behavior of not trying to fix audio desync, which
was probably changed with commit 261506e3.
Note that the code as of now wasn't even entirely correct, since the A/V
sync values are slightly shifted. The dsync depends on the audio buffer
size, so a larger buffer size will show more extreme desync. Also see
mplayer2 commit 213a224e, which should fixed this - it was not merged
into mpv, because it disabled audio for too long, resulting in a worse
user experience. This is similar to the issue this commit attempts to
fix.
Fixes: #1042 (probably)
CC: @mpv-player-stable
|
| |
|
|
|
|
|
|
|
|
| |
The little lua snippet at #488 as well as the actual implementation
seems to indicate that not expanding properties is indeed the correct
behavior. Document that.
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
| |
Fixes #1030
|
|
|
|
|
|
|
| |
Seems some programs were still relying on it. Whatever, it's not hard to
support.
CC: @mpv-player/stable
|
|
|
|
|
|
|
|
| |
If video reaches EOF, and audio is also EOF (or is otherwise not
meaningful, like audio disabled), then the playback position was briefly
set to 0. Fix this by not trying to use a bogus audio PTS.
CC: @mpv-player/stable (maybe)
|
|
|
|
|
|
|
| |
Probably be accidentally added in b6b8bffd.
CC: @mpv-player/stable
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
|
|
| |
Fixes #1025.
CC: @mpv-player/stable
|
|
|
|
|
|
| |
The FBO format was changed some time ago.
CC: @mpv-player/stable
|
| |
|
| |
|
|
|
|
|
|
| |
The previous commit made the completion script always return non-zero, even when
a match is found. This explicitly sets the return value to zero whenever a match
is found but defaults to non-zero in case nothing is matched.
|
|
|
|
|
|
|
|
| |
Returning a non-zero value signals to the zsh completion system that no matches
were added by the script so that it can try the user-defined matchers (e.g.
those defined with matcher-list).
Fixes #1008.
|
|
|
|
|
|
|
|
| |
Just always load the theme. It gets freed properly and dosn't bother anyone.
Fixes #1012.
CC: @mpv-player/stable
|
|
|
|
|
|
| |
Fixes #1009.
CC: @mpv-player/stable
|
|
|
|
|
| |
Otherwise vdp_video_mixer_destroy() would later fail when called on an invalid
video mixer handle. With mesa r600 vdpau driver, this would cause a segfault.
|
|
|
|
|
|
| |
Fixes #1007.
CC: @mpv-player/stable
|
|
|
|
|
|
|
| |
Also add instructions to release-policy.md, since this can be easily
forgotten.
CC: @mpv-player/stable
|
| |
|
|
|
|
|
|
| |
Requested on: https://github.com/mpv-player/mpv/commit/90ec3334174e80c16f00971886223a3afabc1aca#commitcomment-7331673
Might remove or remap them again later.
|
|
|
|
|
| |
Or at leats this is the intention. It's a bit hard to tell which
information is needed, and which not.
|
|
|
|
| |
This makes a certain corner case simpler at a later point.
|
|
|
|
|
|
| |
Found with valgrind. This is somewhat terrifying, because the VA-API API
function is supposed to fill these values, and we access them only if
the API functions return success. So this shouldn't have happened.
|
| |
|
| |
|
|
|
|
|
| |
Looks like TOOLS/lua/ is now established as dumping ground for random
Lua scripts, so DOCS/lua_examples/ is not needed anymore.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The function video_decode_and_filter(), called between initializing the
local vf variable and using it, can actually destroy and recreate the
filter. Thus, the vf variable turns into a dangling pointer if that
happens.
Could be observed with: --hwdec=vda --deinterlace=yes --vf=yadif
(Also happens with vdpau/vaapi.)
|
|
|
|
|
| |
Whether this helps is probably questionable and depends on the GPU. But
the vaapi code does it too.
|
|
|
|
|
|
|
|
| |
When a new event was added, merely a flag was set, instead of actually
waking up the core (if needed). This was ok in ancient times when all
event sources were part of the select() loop. But now there are several
cases where other threads can add input, and then you actually need to
wakeup the core in order to make it read the events at all.
|
| |
|
|
|
|
| |
For convenience. Use ${=cache} to get the old formatting.
|
|
|
|
|
|
|
|
| |
This code was sending a string to a different thread, and then
deallocated the string shortly after, which means most of the time
the other thread was accessing a dangling pointer.
It's possible that this is the cause for #1002.
|
|
|
|
| |
We want this heuristic to trigger during normal playback only.
|
|
|
|
|
|
| |
vo_sdl.c has broken event handling and just polls. The polling time was
quite low, so the playloop OSD redrawing heuristic inhibited redraws,
which made the window appear frozen when paused.
|
| |
|
|
|
|
|
|
|
|
|
| |
Completely useless, and could accidentally be enabled by cycling
framedrop modes. Just get rid of it.
But still allow triggering the old code with --vd-lavc-framedrop, in
case someone asks for it. If nobody does, this new option will be
removed eventually.
|
|
|
|
|
|
|
| |
Some of them changed semantics or got renamed.
Note that the replacements in the example.conf are not necessarily the
equivalents of the replaced options.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Trying to jump chapters in a gile that has no chapters does nothing,
not even show a warning. This is confusing. The reason is that the
"add chapter" command will just bail out completely if the property
is unavailable.
This was because it exited when it couldn't get the property type.
Instead of exiting, just don't enter the code that needs the type.
(I'm not sure when this behavior changed. I consider it a regression.
It was probably caused by changes to the chapter code, which perhaps
started returning UNAVAILABLE instead of OK if there are no chapters.)
|
| |
|
|
|
|
|
|
| |
"UP" seeks forward, so "PGUP" should skip to the next chapter.
Fixes #998.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split the options into the following sections:
* Playback Control
* Program Behaviour
* Video
* Audio
* Subtitles
* Window
* Disc Devices
* Equalizer
* Demuxer
* Input
* OSD
* Screenshot
* Software Scaler
* Terminal
* TV
* Cache
* Network
* DVB
* PVR
* Miscellaneous
Most options are sorted by usefullness and how often they're used or how
important they are.
This makes finding the right options easier and adds some sort of structure.
|
|
|
|
|
|
| |
Reduce from 1000ms to 100ms. Since there is an audio thread updating AOs
quickly enough now, requesting such a large buffer size makes no sense
anymore.
|
|
|
|
|
|
|
|
|
|
| |
Changing audio-delay is probably not needed.
Changing balance "works", but not as expected (sets up a pan matrix to
change left/right contributions to each other, rather than changing the
relative volumes of each channel).
I expect that the rest are not in use by anyone.
|
|
|
|
|
|
| |
The client API exports this state via events already, but maybe it's
better to explicitly provide this property in order to facilitate use on
OSD and similar cases.
|