diff options
author | Philip Langdale <philipl@overt.org> | 2022-03-24 14:18:59 -0700 |
---|---|---|
committer | Philip Langdale <github.philipl@overt.org> | 2022-09-21 09:39:34 -0700 |
commit | e50db4292795de511531e764d7e609c1a37a204f (patch) | |
tree | 86215376579b077db945452b40042abca54081d6 /filters/filter.c | |
parent | 7f2bc43a686ef59d2e6ea1a7a5cf95b55ee10d71 (diff) | |
download | mpv-e50db4292795de511531e764d7e609c1a37a204f.tar.bz2 mpv-e50db4292795de511531e764d7e609c1a37a204f.tar.xz |
vo: hwdec: do hwdec interop lookup by image format
It turns out that it's generally more useful to look up hwdecs by image
format, rather than device type. In the situations where we need to
find one, we generally know the image format we're dealing with. Doing
this avoids us having to create mappings from image format to device
type.
The most significant part of this change is filling in the image format
for the various hw interops. There is a hw_imgfmt field today today, but
only a couple of the interops fill it in, and that seems to be because
we've never actually used this piece of metadata before. Well, now we
have a good use for it.
Diffstat (limited to 'filters/filter.c')
-rw-r--r-- | filters/filter.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/filters/filter.c b/filters/filter.c index d4a0dd6a0b..2522209b49 100644 --- a/filters/filter.c +++ b/filters/filter.c @@ -685,32 +685,19 @@ struct mp_stream_info *mp_filter_find_stream_info(struct mp_filter *f) return NULL; } -struct AVBufferRef *mp_filter_load_hwdec_device(struct mp_filter *f, int avtype) +struct AVBufferRef *mp_filter_load_hwdec_device(struct mp_filter *f, int imgfmt) { struct mp_stream_info *info = mp_filter_find_stream_info(f); if (!info || !info->hwdec_devs) return NULL; - int imgfmt = IMGFMT_NONE; - switch (avtype) { - case AV_HWDEVICE_TYPE_VAAPI: - imgfmt = IMGFMT_VAAPI; - break; - case AV_HWDEVICE_TYPE_VDPAU: - imgfmt = IMGFMT_VDPAU; - break; - default: - MP_WARN(f, - "Unrecognised HW Device type requested. Loading all devices\n"); - } - struct hwdec_imgfmt_request params = { .imgfmt = imgfmt, .probing = false, }; hwdec_devices_request_for_img_fmt(info->hwdec_devs, ¶ms); - return hwdec_devices_get_lavc(info->hwdec_devs, avtype); + return hwdec_devices_get_imgfmt(info->hwdec_devs, imgfmt); } static void filter_wakeup(struct mp_filter *f, bool mark_only) |