mirror of https://github.com/mpv-player/mpv
2852691587
vaapi allows for implicit conversion on upload, which has some relevance as the set of supported source formats is larger than the set of displayable formats. In theory, this allows for offloading the conversion to the GPU - if you have any confidence in the hardware and/or driver's ability to do the conversion. Today, we actually track the 'input' and 'output' upload formats separately all the way up until the point we do a check as to whether the original source format is an accepted 'output' format and then reject it if it is not. This means that we're essentially ignoring all the work we did to track those 'input' formats in the first place. But it also means that it's a simple change to compare against the 'input' format instead. The logic is already in place to do best format selection on both sides. I imagine that if I read through the history here, wm4 tried to implement all of this properly and then gave up in disgust after seeing vaapi mangle various conversions. This is particularly interesting for vo-dmabuf-wayland where it is only possible to display the subset of valid vaapi formats that are supported by the compositor, yet all playback has to go through vaapi. Users will then be able to take advantage of all possible vaapi formats to avoid having to do software format conversion. |
||
---|---|---|
.. | ||
f_async_queue.c | ||
f_async_queue.h | ||
f_auto_filters.c | ||
f_auto_filters.h | ||
f_autoconvert.c | ||
f_autoconvert.h | ||
f_decoder_wrapper.c | ||
f_decoder_wrapper.h | ||
f_demux_in.c | ||
f_demux_in.h | ||
f_hwtransfer.c | ||
f_hwtransfer.h | ||
f_lavfi.c | ||
f_lavfi.h | ||
f_output_chain.c | ||
f_output_chain.h | ||
f_swresample.c | ||
f_swresample.h | ||
f_swscale.c | ||
f_swscale.h | ||
f_utils.c | ||
f_utils.h | ||
filter.c | ||
filter.h | ||
filter_internal.h | ||
frame.c | ||
frame.h | ||
user_filters.c | ||
user_filters.h |