1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-25 00:53:22 +00:00
mpv/filters
Philip Langdale 19ea8b31bd hwtransfer: use the right hardware config to find conversion targets
The last piece in the puzzle for doing hardware conversions
automatically is ensuring we only consider valid target formats for the
conversion. Although it is unintuitive, some vaapi drivers can expose a
different set of formats for uploads vs for conversions, and that is
the case on the Intel hardware I have here.

Before this change, we would use the upload target list, and our
selection algorithm would pick a format that doesn't work for
conversions, causing everything to fail. Whoops.

Successfully obtaining the conversion target format list is a bit of a
convoluted process, with only parts of it encapsulated by ffmpeg.
Specifically, ffmpeg understands the concept of hardware configurations
that can affect the constraints of a device, but does not define what
configurations are - that is left up to the specific hwdevice type.

In the case of vaapi, we need to create a config for the video
processing endpoint, and use that when querying for constraints.

I decided to encapsulate creation of the config as part of the hwdec
init process, so that the constraint query can be down in the
hwtransfer code in an opaque way. I don't know if any other hardware
will need this capability, but if so, we'll be able to account for it.

Then, when we look at probing, instead of checking for what formats
are supported for transfers, we use the results of the constraint query
with the conversion config. And as that config doesn't depend on the
source format, we only need to do it once.
2023-08-26 10:07:55 -07:00
..
f_async_queue.c f_async_queue: add various helper functions 2020-08-28 20:08:32 +02:00
f_async_queue.h f_async_queue: add various helper functions 2020-08-28 20:08:32 +02:00
f_auto_filters.c hwdec_vulkan: use bwdif_vulkan as deinterlacing auto filter 2023-05-28 15:46:05 -07:00
f_auto_filters.h filters/auto_filters: switch from scaletempo to scaletempo2 2021-02-15 00:13:03 +02:00
f_autoconvert.c autoconvert: destroy sub filter immediately if reconfiguration is needed 2023-08-26 10:07:55 -07:00
f_autoconvert.h vf_format: add gross mechanism for forcing scaler for testing 2020-04-13 15:56:27 +02:00
f_decoder_wrapper.c m_option: change m_option_type_aspect to double 2023-08-09 13:51:28 +00:00
f_decoder_wrapper.h player/video: check for forced eof 2023-07-22 17:42:25 +00:00
f_demux_in.c f_demux_in: log EOF "recovery" 2020-08-27 18:40:57 +02:00
f_demux_in.h video: make decoder wrapper a filter 2018-01-30 03:10:27 -08:00
f_hwtransfer.c hwtransfer: use the right hardware config to find conversion targets 2023-08-26 10:07:55 -07:00
f_hwtransfer.h hwtransfer: implement support for hw->hw format conversion 2023-08-26 10:07:55 -07:00
f_lavfi.c options: transition options from OPT_FLAG to OPT_BOOL 2023-02-21 17:15:17 +00:00
f_lavfi.h filters: lavfi: allow hwdec_interop selection for filters 2022-09-21 09:39:34 -07:00
f_output_chain.c output_chain: don't reset autoconvert on changes to unrelated filters 2023-08-26 10:07:55 -07:00
f_output_chain.h audio: redo video-sync=display-adrop 2020-05-23 04:04:46 +02:00
f_swresample.c options: transition options from OPT_FLAG to OPT_BOOL 2023-02-21 17:15:17 +00:00
f_swresample.h options: transition options from OPT_FLAG to OPT_BOOL 2023-02-21 17:15:17 +00:00
f_swscale.c f_swscale: do not reset color levels to default 2023-03-02 09:37:06 -05:00
f_swscale.h vf_format: add gross mechanism for forcing scaler for testing 2020-04-13 15:56:27 +02:00
f_utils.c osdep: rename MP_UNREACHABLE 2021-11-03 15:15:20 +01:00
f_utils.h various: fix typos 2022-04-25 09:07:18 -04:00
filter_internal.h various: fix typos 2023-03-28 19:29:44 +00:00
filter.c options: transition commands from OPT_FLAG to OPT_BOOL 2023-02-21 17:15:17 +00:00
filter.h vf_vapoursynth: save display resolution as a variable 2023-08-13 19:58:20 +00:00
frame.c Implement backwards playback 2019-09-19 20:37:04 +02:00
frame.h Implement backwards playback 2019-09-19 20:37:04 +02:00
user_filters.c filters: lavfi: allow hwdec_interop selection for filters 2022-09-21 09:39:34 -07:00
user_filters.h audio: add scaletempo2 filter based on chromium 2020-07-27 00:57:22 +02:00