| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Don't bother with making these visible by default, because often they
are bogus and/or useless.
|
|
|
|
|
|
|
|
|
|
|
| |
Precise seeking requires skipping audio, since the demuxer usually
doesn't seek precisely enough. There is a sanity check that prevents
skipping more than 300 seconds of audio. This still fails with very
large mp3s. For example, with a 1GB sized mp3 with Xing headers, entries
will be 4 MB apart on average, and occasionally much more.
Just bump the limit. I'm not even sure why it was added in the first
place; I suppose it's most important for files with real PTS resets.
|
|
|
|
| |
This bit always seemed confusing to me.
|
| |
|
|
|
|
|
| |
If compositor sends configure event before back_buffer is allocated, it
will cause null dereference.
|
|
|
|
|
|
|
|
|
| |
When not receiving frame callbacks, we should not draw anything to avoid
blocking the OpenGL renderer. We do this by extending gl context api, by
introducing new optional function 'is_active', that indicates whether
OpenGL renderers should draw or not.
This fixes issue #249.
|
|
|
|
|
| |
This allows compositor to optimize rendering, as it will know mpv is not
transparent.
|
|
|
|
|
|
|
|
| |
Define frame callback logic in wayland_common.c
As this should be used by opengl renderer as well.
Preferably drawing should be skipped entierly when no frame callbacks
are received. However, for now only swap buffers is skipped.
|
|
|
|
| |
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
| |
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
|
| |
If you enable this library in FFmpeg, you probably really want it to be
used.
|
|
|
|
|
|
| |
Like FFmpeg/Libav do. It seems not all code can actually deal with this
situation, so it's better to shift the special-cases to code which needs
it (possibly OSD code; screenshots of 0x0 windows would just fail).
|
|
|
|
|
| |
This seems to have been a mistranslation from the original code, which
multiplied the gamma by 2.6 (*not* the color itself).
|
|
|
|
|
| |
Could theoretically dereference "d" later in the loop. It's on an error
codepath, so just give up.
|
| |
|
|
|
|
|
| |
The way-too-big API call for clearing the screen can be easily shared
between two completely different codepaths.
|
| |
|
|
|
|
|
|
| |
I guess we don't really care whether this particular function succeeds.
If it fails, it must be completely broken anyway and it would not matter
much to us.
|
|
|
|
|
| |
Probably a leftover from an earlier refactoring. Now data is always in
the format MPV_FORMAT_NODE.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
"Non-monotonic" isn't even 100% correct; it's missing "strictly" (for
briefness I guess), and also the message is printed if the PTS jumps
forward. So just print something that is likely a bit easier to
understand.
|
|
|
|
| |
Basically requested. Not that anyone cares.
|
|
|
|
| |
Clarifying because someone asked.
|
|
|
|
| |
It obviously needs to be updated after the VO was destroyed.
|
|
|
|
|
|
|
|
|
|
|
| |
Unlike other VOs, this rendered OSD even while no VO was created
(because the renderer lives as long as the API user wants). Change this,
and refactor the code so that the OSD object is accessible only while
the VO is created.
(There is a short time where the OSD can still be accessed even after VO
destruction - this is not a race condition, though it's inelegant and
unfortunately unavoidable.)
|
|
|
|
|
| |
Also reindent the few lines that call into the actual renderer to remove
the "draw_osd" goto.
|
|
|
|
| |
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
| |
It was ignored.
|
|
|
|
|
|
|
|
|
| |
--af=bs2b:help abort()ed because the default value of the "profile"
option is not represented by any choice. Fix it by adding an "unset"
choice. (It's a bit odd because there's already a "default" choice,
which is not default, but I don't care enough about this filter.)
Fixes #1712.
|
|
|
|
|
|
| |
gl_video_set_options() didn't update it, so the default value set on
initialization was used. Fix by always setting the clear color before
the clear command; it's slightly easier to follow too.
|
| |
|
|
|
|
|
|
| |
Codecs for hardware acceleration are not blacklisted, but whitelisted.
Also, if this emssage is printed, the codec might not have any hardware
acceleration support in the first place.
|
|
|
|
|
| |
There are obscure methods to add timestamps to such streams, but assume
they're unused.
|
|
|
|
|
|
|
|
|
|
|
| |
Trying to handle such video is almost worthless, but it was requested by
at least 2 users.
If there are no timestamps, enable byte seeking by setting
ts_resets_possible. Use the video FPS (wherever it comes from) and the
audio samplerate for timing. The latter was already done by making the
first packet emit DTS=0; remove this again and do it "properly" in a
higher level.
|
| |
|
|
|
|
| |
Isn't it ironic.
|
|
|
|
|
| |
Commit 39ed9b7d9 got this wrong, because these shitty flags are so
goddamn confusing.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Normally, the size of an mage plane is assumed to be stride*height. But
in theory, if stride is larger than width*bpp, the last line might not
be padded, simply because it's not necessary. FFmpeg's or mpv's image
allocators always guarantee that this padding exists (it wastes some
insignificant memory for avoiding such subtle issues), but some other
libraries might not.
I suspect one such case might be Xv via vo_xv (see #1698), although my X
server appears to provide full padding. In any case, it can't harm.
|
|
|
|
|
|
|
|
|
| |
There's literally no reason why these functions have to be inline (they
might be performance critical, but then the function call overhead isn't
going to matter at all).
Uninline them and move them to mp_image.c. Drop the header file and fix
all uses of it.
|
|
|
|
| |
Some old absurdity.
|
|
|
|
| |
(But I'd really prefer removing our own refcounting mechanism fully.)
|
|
|
|
|
|
|
| |
It's relatively stable now.
Also fix a typo in an unrelated place (better not waste commits on
typos).
|
|
|
|
|
|
|
|
|
|
| |
The libavformat rtmp protocol's "timeout" option has two problems:
1) Unlike all other protocols, it's in seconds and not microseconds
2) It enables "listen" mode, which breaks playback
Make the --network-timeout do nothing in the rtmp case.
Fixes #1704.
|
|
|
|
|
|
|
|
| |
For some reason there were two points in the code where it warned
against non-monotonic video PTS. The one in video.c triggered on PTS
going backwards or making large jumps forwards, while dec_video.c
triggered on PTS going backwards or PTS not changing. Merge them into a
single check, which warns against all cases.
|
|
|
|
|
|
|
| |
In fact this should happen on resume, not on saving, but it's simpler
this way.
Fixes #1701.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a somewhat obscure optimization in the OSD and subtitle
rendering path: if only the position of the sub-images changed, and not
the actual image data, uploading of the image data could be skipped. In
theory, this could speed up things like scrolling subtitles.
But it turns out that even in the rare cases subtitles have such scrolls
or axis-aligned movement, modern libass rarely signals this kind of
change. Possibly this is because of sub-pixel handling and such, which
break this.
As such, it's a worthless optimization and just introduces additional
complexity and subtle bugs (especially in cases libass does the
opposite: incorrectly signaling a position change only, which happened
before). Remove this optimization, and rename bitmap_pos_id to
change_id.
|
|
|
|
| |
Like we do it for input.conf and osc.conf.
|
|
|
|
| |
This was requested. Apparently some find the old mesage confusing.
|
|
|
|
|
|
|
|
| |
To handle seeking correctly, we need to flush the filter. libavfilter
does not support flushing, so we destroy and recreate it. We also need
to handle resume-after-EOF, because the mpv audio code sends an EOF
before and after seeking (the latter happens because the player drains
the filter chain in a generic way, which "causes" EOF).
|
|
|
|
|
|
| |
Add bootstrap step for Linux->Windows MXE crosscompilation.
Signed-off-by: wm4 <wm4@nowhere>
|
| |
|
|
|
|
|
|
|
|
|
| |
This played e.g. a 1264x722 file as 1264x720. There was some code which
dropped the aspect ratio if the video (in original resolution) wasn't
scaled by more than 4 pixels. Commit 5f3c3f8c introduced this (although
I'm not really sure what the code replaced by it did).
Just remove this "feature".
|
|
|
|
|
| |
This function already got uglified with debug printing; might as well go
all the way.
|
|
|
|
|
|
|
| |
We now update uniforms every time, so we should try to reduce the number
of uniforms to avoid performance penalties. (Originally, some caching
was planned, but it looks like it would be too complicated to implement
compared to the expected gains.)
|
| |
|
|
|
|
|
|
|
| |
This partially reverts commit ae7228c6. I guess the old behavior was
slightly more popular.
Fixes #1693 (probably).
|
|
|
|
|
|
| |
OPT_REPLACED can't specify option values or multiple options. Change to
OPT_REMOVED. Also, target-prim doesn't have an srgb option. BT.709 uses
sRGB primaries, so use it instead.
|
|
|
|
|
|
| |
Trade one bug for another, I don't even care anymore.
Fixes #1691.
|
| |
|
|
|
|
|
|
|
|
| |
The default scaling was a slight bit too low, which could cause buffer
underruns in some cases.
This should improve the result when using tscale filters other than
oversample. The oversample case should be unaffected.
|
|
|
|
|
|
| |
This adds extra debugging output for buffer underruns, to help track
down possible queueing issues. It also inverts the numberic output for
tscale=oversample to make more sense, without changing the logic.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves the color management code out of pass_render_main (which is
now dedicated solely to up/downscaling and hence renamed pass_scale_main)
and into a new function, which gets called from pass_draw_to_screen
instead.
This makes more sense from a logical standpoint, and also means that we
interpolate in linear RGB, before color management - rather than after
it, which is significantly better for color accuracy and probably also
interpolation quality.
|
| |
|
| |
|
|
|
|
| |
There are conflicting definitons of Ginseng.
|
|
|
|
|
| |
This is interesting mainly because it's essentially equivalent to the
old smoothmotion algorithm. As such, it is now the default for tscale.
|
|
|
|
|
|
| |
This is like nearest neighbour, but the edges between pixels are
linearly interpolating if needed, as if they had been (naively)
oversampled.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces the old smoothmotion code by a more flexible tscale
option, which essentially allows any scaler to be used for interpolating
frames. (The actual "smoothmotion" scaler which behaves identical to the
old code does not currently exist, but it will be re-added in a later commit)
The only odd thing is that larger filters require a larger queue size
offset, which is currently set dynamically as it introduces some issues
when pausing or framestepping. Filters with a lower radius are not
affected as much, so this is identical to the old smoothmotion if the
smoothmotion interpolator is used.
|
|
|
|
|
|
| |
Also the size is now a simple #define that can easily be changed later.
This is done for smoothmotion, which might want to blend more than 4
frames at once, depending on the setting.
|
|
|
|
|
|
|
| |
The consequence was that some AOs (like ao_jack) could not output 8
channels.
Fixes #1688.
|
|
|
|
| |
If metadata changes, its value could change.
|
| |
|
|
|
|
| |
Not needed anymore; see previous commit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the gl_rework merge, this started to print some OpenGL errors when
using vdpau hardware decoding with vo_opengl smoothmotion. This happens
because some hwdec unmap_image call were not paired with a map_image
call. Unlike the old vo_opengl, the new code does not do this out of
convenience (it would be a pain to track this exactly). It was triggered
by smoothmotion, because not every rendered frame has actually a new
input video frame (i.e. no map_image call, but it called unmap_image
anyway).
Solve this by handling unmappin |