| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original filter window was design for a radius based on the true
zero, but we always cut it off at our selection of radius either way (by
necessity, due to the square matrix we sample from).
This window is tweaked from the original (true radius) to our actual
cut-off radius, and hence improves the result in a few edge cases. The
main win is the reduction of code complexity, since we no longer need to
know what the true radius actually is.
(cherry picked from commit 1ecd9727f0e3df68c6be9955b759547a34a0b79f)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit f54220d9 attempted to improve this, but it got worse. Now there
was a crash when ytdl_hook.lua added external tracks. This happened
because close_unused_demuxers() assumed that sources[0] was the main
demuxer (so that it didn't close it). This assumption failed, because
the ytdl script can add external tracks before the main file is loaded.
The easy fix would have been to check for master_demuxer, and not i==0.
But instead give up on the old idea, make some stricter assumptions how
demuxers and external tracks map, and simplify the code.
(cherry picked from commit 53867aa9d834fd6a6314803655bd4c444d0e1df4)
|
|
|
|
| |
(cherry picked from commit 0466ce2f98ef1cdba264c016daa1061e797e1b91)
|
|
|
|
|
|
| |
Requested, and should be quite good at giving an overview how it works.
(cherry picked from commit af435e0a027df4b2135488d76ee8b488a0474dfa)
|
|
|
|
|
|
|
| |
Maybe I don't know what I'm doing. I'm fairly certain though that Intel
does not know what they're doing.
(cherry picked from commit d71bbcbc98c1fa8a934ee656b13adda089a11681)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do timeline building (scanning & opening reference files for ordered
chapters, and more) in a thread. As a result, this process can actually
be stopped without having to kill the player.
This is pretty simple: just reuse the demuxer opening thread. We have
to give up on the idea that open_demux_reentrant() is reusable, though.
(Althoughthe timeline readers still need some fixes before they react to
the quit request.)
(cherry picked from commit 44411674ebb764adeb806040d24700bc4cc493cc)
|
|
|
|
|
|
|
|
| |
These functions do blocking work on a separate thread, but wait until
they return. So they are not async or non-blocking. But they do react to
user-input and client API accesses, which makes them reentrant.
(cherry picked from commit 2c305d5b2990d31911d7faa4c9117bf4eb89c88b)
|
|
|
|
|
|
|
| |
Now the player can actually be quit if a pipe was opened, but nobody is
writing to it.
(cherry picked from commit 3c9344a1a9de335925b81058b7699fccd187626b)
|
|
|
|
|
|
|
|
| |
Check the scanf() return value, and don't continue if it doesn't find
both numbers (can happen with GLES 1.0). Also, some implementations can
return NULL from glGetString() if something is "broken".
(cherry picked from commit 9861abf8ffa4c9e7c4ad9a4f3f667e6f833624a3)
|
|
|
|
|
|
|
|
| |
I've reworked pretty much all the logic to correspond to what the theory
actually describes. With this commit, playback is wonderfully smooth on
my machine.
(cherry picked from commit 4356e893a138e24f2d54dee2b96d2720e69d4c18)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some of the hacks were not applied if the file format was forced. Commit
37a0c914 moved them to a table, which is checked with normal probing
only.
Fixes #1612 (DVD forces mpeg, which in turn has to export native stream
IDs specifically).
Do some code restructuring on the way. For example, the probescore can
simply be set to the correct initial value, instead of checking whether
it was set at all.
(cherry picked from commit 611f9ab0a8f8820056d8f7f77dbe8a8794291873)
|
|
|
|
|
|
|
|
|
| |
It probably was always a flag, so the documentation became invalid as
soon as mpv stopped accepting 0/1 for flags.
Fixes #1608.
(cherry picked from commit b230f32624b0ec979f848183e0aec88d1fd2d024)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Starting with waf 1.8.6 (in Python 3), the hcode variable isn't a
string, but a byte string.
This commit adds the solution proposed in the upstream waf bug report:
https://code.google.com/p/waf/issues/detail?id=1535
It seems a bit overly verbose, but on the other hand, this solution has
the chance of being most correct/compatible.
Fixes #1604.
(cherry picked from commit 14b231119d2c125bcdcba48d159a78097152e387)
|
| |
|
|
|
|
|
|
|
|
| |
Whatever the hell that is. FFmpeg tries to open any files with .bin file
extension with this demuxer (unless it finds a better demuxer), and then
reads the whole damn file, along with spamming dumb crap.
(cherry picked from commit 79006ef66d10fb356782eed6d3b3cc103ae2ba4b)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This message will be printed relatively often once EOF is reached. In
some cases this is rather annoying, for example when playing HLS. (With
HLS, the stream is just a playlist file, while libavformat opens actual
media files without mpv's knowledge, so the cache is completely useless
and hits EOF instantly.)
That it retries reading is apparently a good thing: at least local files
can grow, and even after the player got the EOF, playback _could_ be
resumed by basically polling and detecting that there is more data. So
I'm not changing this behavior yet.
(cherry picked from commit 3f5b5b758dac511f500fdfd9ae85089cbfc31fde)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An attempt to make format-specifics more declarative. (In my opinion,
all of this should be either provided by libavformat, or should not be
needed.)
I'm still leaving many checks with matches_avinputformat_name(), because
they're so specific.
Also useful for the following commit.
(cherry picked from commit 37a0c9140ad85be8d184b626759f8d24ca69aa83)
|
|
|
|
|
|
|
|
| |
Helps with terminating the stream if e.g. HLS streams are stuck. (For
other demuxers, the stream's interrupt callback already takes care of
this.)
(cherry picked from commit ff992e093b93fd8dd0eecd2c592f8608870f0bbe)
|
|
|
|
| |
(cherry picked from commit aa9804987788a0cc239403d13698cc685146122c)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Matroska timeline code was the only thing which still used the
demuxer.type field. This field explicitly identifies a demuxer
implementation. The purpose of the Matroska timeline code was to reject
files that are not Matroska. But it already forces the Matroska format,
meaning loading will explicitly only use the Matroska demuxer. If the
demuxer can't open the file, no other demuxer will be tried, and thus
checking the field is redundant.
The change in demux_mkv_timeline.c removes the if condition, and
unindents the if body.
(cherry picked from commit fa9b587426d7bd350d92afdb440c396336b2ecfd)
|
|
|
|
|
|
|
|
|
| |
Only demux_cue and demux_edl used it. It's a weird field and doesn't
help with anything anymore - by now, it only saves a priv context in the
mentioned demuxers. Reducing the number of confusing things the demuxer
struct has is more important than minimizing the code.
(cherry picked from commit 082371a1603eaaa6c5c9f4bd57f9e77ff027ee15)
|
|
|
|
| |
(cherry picked from commit d7a4cb14ff8dc61d87cec54abcd7f7623e8cc666)
|
|
|
|
|
|
| |
Same deal as with demux_cue, and a separate commit for the same reasons.
(cherry picked from commit 1e44c811f3683f62714ff5ecc2e4f233eb8bb668)
|
|
|
|
|
|
| |
Also see previous commit(s).
(cherry picked from commit 10781c2a9c175a8f9e445df4a91031301f225351)
|
|
|
|
|
|
|
|
|
|
| |
Move the implementation, of which most was in tl_cue.c, to demux_cue.c.
Currently, this is illogical, because tl_cue.c still accesses MPContext.
This is going to change, and then it will be better if everything is in
demux_cue.c. This is only a separate commit to distinguish code movement
and actual work; the next commit will do the actual work.
(cherry picked from commit 7f03f46882ec4e9eb9d9857cf5cc393bb3afa7ca)
|
|
|
|
|
|
|
| |
Weird, but helps with the case a demuxer gets handed its own instance
from outside.
(cherry picked from commit f9872ab26fad62766f62be112436482ef3e7e07b)
|
|
|
|
|
|
|
| |
Separate from previous commit, because git is bad at tracking file
renames when the file contents are also changed.
(cherry picked from commit edc0007e74ab4ad043f35eed8cdebd9ed73c8062)
|
|
|
|
| |
(cherry picked from commit 5a186d5942bda0c7cae56bc524a6dceccb5c7d3f)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of accessing MPContext in player/timeline/*, create a separate
context struct, which the timeline loaders fill out. It turns out that
there's not much in the way too big MPContext that these need to access.
One major PITA is managing (and closing) the set of open demuxers. The
problem is that we need a list of all demuxers to make sure no unneeded
streams are enabled.
This adds a callback to the demuxer_desc struct, with the intention of
leaving to to the demuxer to call the right loader, instead of
explicitly checking the demuxer type and dispatching manually in common
code. I also considered making the timeline part of the demuxer state,
but decided against: it's too much of a mess wrt. memory management and
threading, and also doesn't make it clear who owns the child demuxers.
With the struct timeline decoupled from the demuxer state, it's at least
somewhat clear that the child demuxers are independent from the "main"
demuxer.
The actual changes to player/timeline/* are separated in the following
commits, because they're quite verbose. Some artifacts will be removed
later as soon as there's only 1 timeline loading mechanism.
(cherry picked from commit a0a089f6a48c2775478b544185a0ddeabf43cce8)
|
|
|
|
|
|
| |
Makes some of the following commits slightly simpler. Also fix a typo.
(cherry picked from commit 3efeee446e50c0cd4674137a680e6d3660c74a22)
|
|
|
|
|
|
| |
Should be equivalent.
(cherry picked from commit 969edb9e0b86500ed0af9c26209ad7000adb5157)
|
|
|
|
|
|
|
|
|
|
|
| |
Also effects some other cases.
The real reason for this is for keeping track of which demuxers can be
closed (see following commit). Since I don't want to use reference
counting for this, some sort of simplistic mark-and-sweep is done to
determine whether a demuxer is still needed.
(cherry picked from commit f54220d95150ee53a33cc6626b7d0ff8b235c7f0)
|
|
|
|
|
|
|
| |
(There was a missing version bump for the msg-level change; just move it
under 1.14.)
(cherry picked from commit 0283815ee15dff0fbe23da8b26a9d50dfbf26f42)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The HLs protocol consists of a "playlist" main file, which mpv downloads
and passes to the HLS demuxer. The HLS demuxer actually requests segment
files containing media data on its own. The packets read from the
demuxer have a source file position set, but it's not from the main
file. This leads to a strange effect: as a last fallback, the player
will calculate the approximate playback position from the file
position/size ratio, and since the main file is tiny, this will always
show 100%. Fix this by resetting the packet file position.
This doesn't affect the case when HLS actually reports a duration.
(cherry picked from commit a64b1deaa613108ffa3496b0306c1aea1ba5a68f)
|
|
|
|
|
|
| |
This is already mapped by default.
(cherry picked from commit 8b784fb1ca7b908f76d8a389419149feef811c5f)
|
|
|
|
|
|
|
| |
This should be no problem... but it _might_ help with #1536, so it's
worth a try.
(cherry picked from commit 0063d94927a0dfd1ba8f4af1bc59467ba793ef82)
|
|
|
|
| |
(cherry picked from commit d34eabe286c46811f0fb1188c789572a57df2b5d)
|
| |
|
| |
|
| |
|
|
|
|
| |
(cherry picked from commit 31ac0574ad910ee9256ad5d5b89c7a7d3b88761f)
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The previous commit effectively fixes the mess caused by 'config' vs.
'mpv.conf', and the hack introduced by commit e01a6dac and extended by
commit db167cd4 isn't needed anymore.
(cherry picked from commit 816d7bba1f3842146fa12c98232070559e72e807)
|
|
|
|
|
|
|
|
|
| |
Actually, it's pretty simple to look for multiple filenames at once,
since mp_find_all_config_files() is already a bit "special" anyway.
See #1569. Reverts most of commit db167cd4 (keeps osx-bundle.conf).
(cherry picked from commit a27aa68dd33c613218d261b14ef1cf763abc1c33)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A recent behavior change in libavcodec's h264 decoder keeps at least 1
surface even after avcodec_flush_buffers() has been called. We used to
flush the decoder in order to make sure all surfaces are free'd, so that
the hw decoder can be safely uninitialized. This doesn't work anymore.
Fix it by closing the AVCodecContext before the hw decoder is
uninitialized. This is actually simpler and more robust. It seems to be
well-supported too.
Fixes invalid read accesses with vaapi-copy and dxva2-copy. These
destroyed the hwdec API fully on uninit, and could not deal with
surfaces surviving the decoder.
Probably fixes #1587.
(cherry picked from commit cf073138b289243fb551242f8058a4f8490cc9af)
|
|
|
|
|
|
| |
This line of code ended up in the wrong block in commit cd6dfcbe.
(cherry picked from commit f247294d7346306ef9f42a986d693df4743f9152)
|
|
|
|
|
|
|
|
|
| |
Admittedly, the behavior on Windows is not quite straightforward. The
behavior on the other platforms is equivalent to fopen().
Fixes #1585.
(cherry picked from commit a799a4c57f998ed2ef7f5d306d4dad32c173c349)
|
|
|
|
| |
(cherry picked from commit bf46f4c99714d2df105c3c004aa96680b4dda749)
|
|
|
|
|
|
|
| |
Some IR receivers emit this key by default for remote control
buttons. Make it mappable.
(cherry picked from commit 9aaec7cffb2fb1543d4c3cabb55165f606c0b87d)
|
|
|
|
|
|
| |
Hopefully.
(cherry picked from commit 5247416735e86417d466f0137cf907b5921602a1)
|
|
|
|
|
|
|
| |
This value is not necessarily trustworthy (it might change) and can be
0.
(cherry picked from commit 349067a6ab2d03024b3e984e80314f303dd14432)
|
|
|
|
|
|
|
| |
Falls back to the first display in the list returned by xrandr. Not
entirely correct, but makes some people happy (see #1575).
(cherry picked from commit cd6dfcbef4ef15fd7ccd387e2f3438d7e702c567)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently there's at least one distro which ships a /etc/mpv/mpv.conf
file (mpv doesn't install such a file). This breaks config files named
'config' located in the user's mpv config directory, because mpv first
loads files named 'config' and then 'mpv.conf'. There is no mechanism
for putting files with different names into the same config path order.
(Even worse, that mpv.conf file only set an option to the default value.
Why do distros always do very stupid things?)
Print a warning on collisions.
Although using 'config' was well-supported, supporting both names is
starting to become messy, so deprecate 'config' and print a warning if
one is found.
At least we will be able to remove the whole mess once 'config' files
are ignored...
This also affects the osx-bundle, which intentionally used these not-so-
optimal semantics. Solve it in a different way. (Unfortunately with an
ifdef - it's not required, but having to explain everyone why mpv tries
to load a osx-bundle.mpv file on Linux and Windows would consume
energy.)
Closes #1569.
(cherry picked from commit db167cd438b516371bc2a7b6e08a57f2054dc742)
|
|
|
|
|
|
|
| |
Using it just makes no sense. But we're really being nice about this and
don't remove it immediately.
(cherry picked from commit fd5403cb404ca8fb30c2c6b1f415201bbce40d77)
|
|
|
|
|
|
|
|
|
|
| |
Makes all keys documented in XF86keysym.h mappable. This requires the
user to deal with numeric keycodes; no names are queried or exported.
This is an easy way to avoid adding all the hundreds of XF86 keys to
our X11 lookup table and mpv's keycode/name list.
(cherry picked from commit 417869f845d34596d8651fd9c38e6c74d56fecee)
|
|
|
|
|
|
|
|
|
| |
Happens to fix #1581 due to an unfortunate interaction with the way the
VO does not react to commands for a while if a video frame is queued.
Slightly improves other situations as well, if the client spams mpv with
commands during playback.
(cherry picked from commit 32b56c56bad78d8d3038361aef6f36ad9cabebb0)
|
|
|
|
|
|
|
| |
Using prev_pts as the start of the scale was plain wrong. Change it to
prev_vsync.
(cherry picked from commit 3931544ef33196e1966c416cc0d60d4160cf27fb)
|
|
|
|
|
|
|
|
|
|
| |
Commit e920a00eb assumed that terminate_cocoa_application() actually
would exit. But apparently that is not always the case; e.g. mpv --help
will just hang. The old code had a dummy exit(0), which was apparently
actually called. Fix by explicitly exiting if mpv_main() returns and
terminate_cocoa_application() does nothing.
(cherry picked from commit 9e14042e575435e94da660823d14aa6a6b6cb668)
|