| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
...instead of relying on the hw decoding API to align it for us. The old
method could in theory have gone wrong if the video is cropped by an
amount large enough to step over several blocks.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Always configure the vdpau mixer based on the current surface sent to
it. Before this, we just hardcoded the chroma type, and the surface size
was essentially a guess.
Calling VdpVideoSurfaceGetParameters() on every surface is a bit
suspicious, but it appears it's a cheap function (just requiring some
locks and a table lookup). This way we avoid creating another
complicated mechanism to carry around the actual surface parameters
with a mp_image/AVFrame.
|
|
|
|
|
|
|
| |
There's not much of a reason to keep get_surface_hwdec() and
get_buffer2_hwdec() separate. Actually, the way the mpi->AVFrame
referencing is done makes this confusing. The separation is probably
an artifact of the pre-libavcodec-refcounting compatibility glue.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most of hardware decoding is initialized lazily. When the first packet
is parsed, libavcodec will call get_format() to check whether hw or sw
decoding is wanted. Until now, we've returned AV_PIX_FMT_NONE from
get_format() if hw decoder initialization failed. This caused the
avcodec_decode_video2() call to fail, which in turn let us trigger the
fallback. We didn't return a sw format from get_format(), because we
didn't want to continue decoding at all. (The reason being that full
reinitialization is more robust when continuing sw decoding.)
This has some disadvantages. libavcodec vomited some unwanted error
messages. Sometimes the failures are more severe, like it happened with
HEVC. In this case, the error code path simply acted up in a way that
was extremely inconvenient (and had to be fixed by myself). In general,
libavcodec is not designed to fallback this way.
Make it a bit less violent from the API usage point of view. Return a sw
format if hw decoder initialization fails. In this case, we let
get_buffer2() call avcodec_default_get_buffer2() as well. libavcodec is
allowed to perform its own sw fallback. But once the decode function
returns, we do the full reinitialization we wanted to do.
The result is that the fallback is more robust, and doesn't trigger any
decoder error codepaths or messages either. Change our own fallback
message to a warning, since there are no other messages with error
severity anymore.
|
|
|
|
|
|
|
|
|
|
|
| |
Vobsubs come as .idx/.sub pair of files. The .idx file is the one that
should be opened, but the name of the .sub file is unknown. We can now
make our own guess what the name of that file is. In particular, improve
support with URLs (as these can have the file extension in the middle of
the filename string if there are HTTP parameters).
Note that this works only with newer ffmpeg versions, because the
recently added sub_name demuxer option is used for this.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This command has been deprecated in the 0.8.x and 0.9.x releases - get
rid of it. Its only point ever was MPlayer compatibility, which broke
years ago anyway.
|
|
|
|
| |
It has been deprecated for ages.
|
|
|
|
|
| |
There is not much of a reason to do this later. (Since some time ago,
the input_ctx is created right at the start, so this can be done now.)
|
|
|
|
| |
This is about as early as possible.
|
|
|
|
|
| |
As suggested by haasn. The term "full range" makes it sound like it has
to do with TV vs. PC range, which is not the case at all.
|
|
|
|
|
| |
libmpv can be embedded in a cocoa view (without the mpv window). This has been
the case for serveral months, and the comment is just wrong now.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
They're completely orthogonal concepts, merged in the past due to
convenience and ease of implementing it in the old #ifdef hell renderer.
Especially after the CMS stuff was generalized by 634b4a, this was a
trivial change to implement and also means color management will be much
higher quality when enabled with vo=opengl (which had quantization
issues in the past due to the 8 bit FBO format and upscaling), since it
can be done in a single pass now.
|
|
|
|
| |
Signed-off-by: wm4 <wm4@nowhere>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
While all functions of input_ctx are inherently thread-safe, access to
the _inputContext field itself is not. It could be unset any time by
cocoa_set_input_context(). So even trivial input_ctx calls must be under
a lock, so that the input_ctx can not be destroyed while the function
call is "starting". (Even a function call in progress wouldn't be fine,
because mp_input_uninit() requires the caller to "own" the object, i.e.
no other threads can access it at this point.)
|
|
|
|
| |
Keep it internal, so we can synchronize access to it properly.
|
|
|
|
|
| |
Wakeup FDs are not needed anymore (this code exists only for libwaio
usage by now), and 2 other functions can be made private.
|
|
|
|
|
|
|
|
| |
For certain reasons, we allow adding external tracks even before the
main file is loaded. This somewhat breaks in old assumption, which uses
mpctx->num_sources to determine whether a command can be applied in the
current state. Use the newer playback_initialized instead, which is a
much better choice for this purpose.
|
|
|
|
|
|
|
|
|
|
|
| |
The previous commit removed this. Although mp_switch_track() can now be
called in all situations, we still don't want it to be called here.
Setting a track property while no file is loaded would simply deselect
the track instead of setting the underlying option to the requested
value.
Likewise, if the "cycle" command (M_PROPERTY_SWITCH) is used, don't just
deselect the track.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adding an external audio track before loading the main file didn't work
right. For one, mp_switch_track() assumes it is called after the main
file is loaded. (The difference is that decoders are only initialized
once the main file is loaded, and we avoid doing this before that for
whatever reason.)
To avoid further messiness, just allow mp_switch_track() to be called at
any time. Also make it do what mp_mark_user_track_selection() did, since
the latter requires current_track to be set. (One could probably simply
allow current_track to be set at this point, but it'd interfere with
default track selection anyway and thus would be pointless.)
Fixes #1984.
|
|
|
|
|
| |
In this case, streaming ogg via mpd over icecast made it buffer
infinitely on new tracks.
|
|
|
|
|
| |
The ALSA API is inconsistent and doesn't report support. Just requesting
1 channel actually works. Whatever.
|
|
|
|
|
| |
Also mention that this code does not reflect the status line of current
mpv.
|
|
|
|
|
|
|
|
|
|
| |
Wnile it seems quite logical to me that commands use _ as word
separator, while properties use -, I can't really explain the
difference, and it tends to confuse users as well. So always
prefer - as separator for everything.
Using _ still works, and will probably forever. Not doing so would
probably create too much chaos and confusion.
|
|
|
|
|
|
| |
Another very minor step towards property/option unification.
Not bothering with interface compatibility here.
|
|
|
|
|
| |
Instead of the requested one, which can be just "auto", and which is
rather useless.
|
|
|
|
|
| |
Mostly to see whether someone uses it, and if a better solution can be
worked out. (It's simple enough to be supported forever.)
|
|
|
| |
Makes ricers happy.
|
|
|
|
| |
It doesn't need access to the playback core state anymore.
|
|
|
|
|
|
| |
There's no need for this, it just creates more corner cases.
Also always reset it on seeks etc..
|
|
|
|
|
| |
And use it for the estimated-vf-fps property (it should be doing the
same as before).
|
| |
|
|
|
| |
Missed in 450af053.
|
| |
|
|
|
|
| |
Fixes #1972.
|
|
|
|
| |
This was missed in commit 450af053.
|
|
|
|
| |
The current code just segfaults.
|
|
|
|
|
|
|
|
|
|
| |
Now it simply changes the options, i.e. what will be requested, instead
of returning M_PROPERTY_UNAVAILABLE.
This is another minor step towards unifying options and properties.
Still a bit weird: it will always return "no" if no file is loaded, and
disregards the option value.
|
|
|
|
| |
This makes the code slightly more generic.
|
|
|
|
|
|
|
| |
Also replace their implementation with the recently introduced
properties. One significant difference is that audio-channels using OSD
formatting does not print the channel layout. The user can just use the
replacement property instead.
|
| |
|
|
|
|
|
|
|
| |
We don't need two.
This mechanism was basically for MPlayer, and it has expired its
usefulness by now.
|
|
|
|
| |
Clashes with the option.
|
|
|
|
| |
Conflicts with the property.
|
|
|
|
| |
It collides with the --length option.
|