Commit Graph

51065 Commits

Author SHA1 Message Date
Dudemanguy 4709a94aec demux_mkv: check if the video codec is an image
Add a simple helper to codec_tags to check if the codec name matches one
of the images. If so, then we set still_image and image in the stream as
true (slightly different semanatics).
2023-10-23 19:32:53 +00:00
Dudemanguy be0a979a0b demux: put type2format into codec_tags with helper functions
demux_mf has a big const struct which is essentially a nice list handy
list of codecs that are considered images. This is generally useful for
all demuxers (demux_mkv could use this), so instead of making yet
another list, lift it out and put it in a common place. Some things
slightly changed so it matches the very similiar mimetype mapping struct
below it. demux_mf calls a helper mapping function instead.
2023-10-23 19:32:53 +00:00
Dudemanguy 1ea106bac0 ci/freebsd: disable iconv
This actually started having a linking error a few days ago, but the ci
never actually actually exited 1 for some reason so it was never caught.
The actual commits where this started happening are unrelated (reverted
all of the them to be sure) and there's no other obvious things like a
meson update that would cause this. All I can assume is some other
package within BSD itself, but I can't be bothered to debug it. Anyways,
just disable iconv in the build for now so the CI stops failing.
Presumably there's something wrong in the environment with GNU's
libiconv and the built-in one clashing somehow. Also, sdl unbelievably
defines HAVE_ICONV in their public header so we have to disable that
too.
2023-10-23 19:23:48 +00:00
Dudemanguy 71a497deee github/workflows: use cross-platform-actions for freebsd
Since vmactions is basically a bootlooping disaster* with no signs of
life from upstream, let's try a different action instead and hope it
works better. We don't need to force the latest release channel, so
delete that part. Also make the pkg install just one command for
simplicity.

*: https://github.com/vmactions/freebsd-vm/issues/74
2023-10-23 19:23:48 +00:00
Kacper Michajłow 7d63b81cf1 ci: disable Werror for libplacebo subproject build 2023-10-23 20:35:13 +02:00
Kacper Michajłow bfb10a8e86 ci/msys2: disable autocrlf
I won't even comment how terrible this option is and why in 2023 default
is not at least `autocrlf=input`.

Disable the conversion to CRLF. We build everything in MSYS2 sysroot,
which supports/expects LF. While the checkout itself is done with
actions/checkout@v3 and this causes problems.
2023-10-23 20:35:13 +02:00
Kacper Michajłow 9ade565a7c gitignore: update for meson wraps 2023-10-23 20:35:13 +02:00
Kacper Michajłow 1805681aab m_option: initialize m_option_value union properly
C standard says that `= {0}` activates and initializes first member of
union. We expect whole union to be zeroed, it is used as default value.

Initialize union with one zeroed default instance to ensure proper init.

Fixes: #12711
2023-10-23 20:33:51 +02:00
llyyr 9074436862 workflows/build: install git in freebsd image
for downloading libplacebo.wrap via git
2023-10-23 13:03:29 +02:00
llyyr f5ca11e12b meson: make libplacebo a required dependency
Make it not possible to build mpv without the latest libplacebo anymore.
This will allow for less code duplication between mpv and libplacebo,
and in the future also let us delete legacy ifdefs and track libplacebo
better.
2023-10-23 13:03:29 +02:00
psykose 59a3c453f9 subprojects: add a libplacebo wrap
most distros don't have a v6 yet, so this is needed for
https://github.com/mpv-player/mpv/pull/11952
2023-10-23 13:03:29 +02:00
llyyr b4da71af2b workflows/build: explicitly define `CXX` in the env 2023-10-23 13:03:29 +02:00
psykose 3ad384a768 .gitignore: ignore subprojects but allow later overriding
a rule without * prevents later overriding it with ! to exclude.
2023-10-23 13:03:29 +02:00
Kacper Michajłow 0a799547aa vo: define <= 0 as unsupported for last_queue_display_time
Also sanitize vsync values, just in case.
2023-10-23 00:10:49 +00:00
Kacper Michajłow ed8b3cef5f vo: change spammy log to trace 2023-10-23 00:10:49 +00:00
Kacper Michajłow 8c7c878255 vo: average more vsync samples
Improves averaging on high refresh rate displays.
2023-10-23 00:10:49 +00:00
Kacper Michajłow f27767f59e d3d11: calc vsync interval on real stats, not just last interval 2023-10-23 00:10:49 +00:00
NRK b26d2ab01c img_format: remove duplicated macros
these are defined in osdep/endian.h already
2023-10-23 00:10:42 +00:00
NRK 876915edd3 ta: don't hardcode alignment requirement
use standard C11 max_align_t instead.

also sorts the standard header includes.

ref: https://en.cppreference.com/w/c/types/max_align_t
2023-10-23 00:10:42 +00:00
NRK 8dc12f1d5b osdep: remove alignof emulation
it's unused. and since C11 is pretty freely used now, new code can just
use _Alignof or include <stdalign.h> directly.
2023-10-23 00:10:42 +00:00
NRK a1f465b582 aspect: remove unused multiplication
the variable `w` is unused as a whole.
2023-10-23 00:10:42 +00:00
Philip Langdale 05e6813eb2 hwtransfer: handle constraints for hwdec with NULL supported_formats
Some hwdecs (eg: dxva) have no frames constraints and no static
supported_formats, which ends up segfaulting. This change fixes the
segfault, but also includes additional changes to avoid concluding that
direct output of hardware decoded video is impossible.

In the case where there are no frame constraints and no
supported_formats, we basically have no idea what the hardware actually
supports. Previously, we just tried to display the frame, but all the
work I did to detect incompatible formats causes this scenario to now
conclude that no formats can be displayed, and forces a HW download to
system memory.

I have made a couple of small changes to assume that direct display is
possible. If it's not, the VO will error out down the line, which is
what happened previously.
2023-10-22 10:22:04 -07:00
Dudemanguy 7768c3d035 DOCS/contribute: increase hard column limit to 100
I'm guilty of violating this, but surely I can't be the only one. 85 is
pretty small and there's plenty of lines in the codebase that go well
over that. Surely nobody programs on tiny screens anymore and the kernel
raised the limit to 100 a few years ago so let's just copy that.
2023-10-22 14:31:36 +00:00
Dudemanguy 1382a854c9 stats.lua: disable tonemapping plot by default
Nobody except a chosen few (I'm not one of them) even knows what it
means. Multiple people thought it was actually some kind of rendering
bug. Just disable it by default. Closes #12671.
2023-10-22 13:34:56 +02:00
NRK cf7453226d path: don't treat "hidden" files as extension
currently for a filename such as ".file" mpv incorrectly thinks of the
entire filename as being an extension. skip leading dots to avoid
treating "hidden/dot" files as extension.
2023-10-22 10:41:19 +02:00
Dudemanguy 6e428c261e ytdl_hook: remove extra playlist insert
b388c73540 should have deleted this line
since the insert is done a little below it instead, but it was missed
during review.
2023-10-21 18:29:57 -05:00
Umar Getagazov b388c73540 ytdl_hook: parse the separate cookies field
https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj
https://github.com/yt-dlp/yt-dlp/commit/1ceb657bdd25
2023-10-21 22:30:22 +00:00
chainikdn ce03b42424 vf_vapoursynth: set nominal_fps after the filter 2023-10-21 22:29:31 +00:00
Kacper Michajłow 81102b0f6c Revert "demux_mkv: PAR should be calculated after applying crop"
Matroska spec says that DisplayWidth and DisplayHeight should be applied
after cropping, but this doesn't adhere to the real files which does not
follow this rule. Revert the change and we can re-evaluate if someone
complains with spec compliant files.

See: https://datatracker.ietf.org/doc/draft-ietf-cellar-matroska/

This reverts commit f8db02b59d.
2023-10-21 16:37:03 +00:00
Dudemanguy dc2298f4da demux_mkv: don't set codec crop rect when there is no crop
Unfortunately there are files out there with broken tags where the
width/height doesn't match the actual width/height of the file. That
means the cropping logic which normally should be a no-op resulting in
(0, 0, w, h) ends up being a crop which is probably not wanted by the
user. Workaround this by simply keeping the entire crop rect as 0 when
there is no container cropping. All zeros is internally treated the same
as (0, 0, w, h) and avoids bad container data messing up the width or
height of the window. Also simplify the logic a bit and get rid of some
superflorous bools that had no real use. Fixes #12680.
2023-10-21 16:37:03 +00:00
Dudemanguy 9ea9279cf4 DOCS/contribute: stop pretending that C11 isn't allowed
Doesn't really make much of a different in practice aside from us
dropping ancient legacy fallbacks but still.
2023-10-21 14:05:38 +00:00
Dudemanguy 57fedcfcda meson: remove -D_ISOC99_SOURCE flag
The meson build has always compiled with c_std=c11. This was never
really needed.
2023-10-21 14:05:38 +00:00
Dudemanguy 94b67355c2 timer: drop ancient macOS fallback
macOS didn't support clock_gettime until 10.12 which was released
roughly 7 years ago. Since we're breaking support for ancient OSes
anyway, we might as well break some old macOS versions for fun. This
makes 10.12 the minimum supported macOS version.
2023-10-21 14:05:22 +00:00
sfan5 97afea441b win32/pthread: fix calculation error in pthread_cond_timedwait
closes #12699
2023-10-21 15:56:01 +02:00
sfan5 490af95c10 dvbin: do a big cleanup on code style and functions 2023-10-21 11:07:59 +02:00
sfan5 c78c33bf7c stream_dvb: avoid static function variable 2023-10-21 11:07:59 +02:00
sfan5 2569c69d92 dvb_tune: remove use of time() 2023-10-21 11:07:59 +02:00
sfan5 d7683ec4ac dvbin: revise many log lines 2023-10-21 11:07:59 +02:00
sfan5 e8e1466426 stream_dvb: use talloc 2023-10-21 11:07:59 +02:00
sfan5 a394e5cd1d stream_dvb: fix missing newlines on log messages 2023-10-21 11:07:59 +02:00
Thomas Weißschuh ae908a70ce audio: don't block on lock in ao_read_data
ao_read_data() is used by pull AOs potentially from threads managed by
external libraries.  These threads can be sensitive to blocking.
For example the pipewire ao is using a realtime thread for the
callbacks.
2023-10-20 21:33:46 +02:00
Thomas Weißschuh dd13412986 win32/pthread: add support for pthread_mutex_trylock 2023-10-20 21:33:46 +02:00
Thomas Weißschuh 2181159158 threads: add support for pthread_mutex_trylock 2023-10-20 21:33:46 +02:00
NRK d05ef7fdc4 various: sort some standard headers
since i was going to fix the include order of stdatomic, might as well
sort the surrouding includes in accordance with the project's coding
style.

some headers can sometime require specific include order. standard
library headers usually don't. but mpv might "hack into" the standard
headers (e.g pthreads) so that complicates things a bit more.

hopefully nothing breaks. if it does, the style guide is to blame.
2023-10-20 21:31:09 +02:00
NRK 450a69b1d6 various: remove ATOMIC_VAR_INIT
the fallback needed it due to the struct wrapper. but the fallback is
now removed so it's no longer needed.

as for standard atomics, it was never really needed either, was useless
and then made obsolete in C17 and removed in C23.

ref: https://gustedt.wordpress.com/2018/08/06/c17-obsoletes-atomic_var_init/
ref: https://en.cppreference.com/w/c/atomic/ATOMIC_VAR_INIT
2023-10-20 21:31:09 +02:00
NRK 2070331f64 osdep: remove atomic.h
replace it with <stdatomic.h> and replace the mp_atomic_* typedefs with
explicit _Atomic qualified types.

also add missing config.h includes on some files.
2023-10-20 21:31:09 +02:00
NRK 2fa695c3f9 osdep: drop atomic fallback
even msvc (which mpv apparently doesn't support) supports C11 atomics
now. no need to carry around fallback with subtle semantic differences.
2023-10-20 21:31:09 +02:00
sfan5 3fb4eb2ba4 win32/pthread: try to fix system headers leaking through 2023-10-20 21:30:51 +02:00
sfan5 dad4e61b68 test: add basic tests for timer code 2023-10-20 21:30:51 +02:00
sfan5 af53ce18bd meson: streamline selection of certain osdep sources 2023-10-20 21:30:51 +02:00