[FFmpeg-devel] PATCH: Force vaapi image formats to NV12-only
Lluís Batlle i Rossell
viric at viric.name
Thu Aug 8 21:37:41 EEST 2024
attached
-------------- next part --------------
>From c6439f3a74529db25777029596791a62eb3c77d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= <viric at viric.name>
Date: Thu, 8 Aug 2024 20:32:03 +0200
Subject: [PATCH] Force vaapi image formats to NV12-only
Vaapi drivers often lack proper image converesions and not all
situations allow vaGetImage or vaPutImage with the image formats
reported by the API. NV12 seems allowed in all circumstances.
With this change now one can use the hwaccel directly without
explicit conversions to nv12 for frame downloading to work.
gstreamer adopted a similar approach:
https://bugzilla.gnome.org/show_bug.cgi?id=752958
---
libavutil/hwcontext_vaapi.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c
index 12bc95119a..d678e58d07 100644
--- a/libavutil/hwcontext_vaapi.c
+++ b/libavutil/hwcontext_vaapi.c
@@ -418,7 +418,12 @@ static int vaapi_device_init(AVHWDeviceContext *hwdev)
for (i = 0; i < image_count; i++) {
fourcc = image_list[i].fourcc;
pix_fmt = vaapi_pix_fmt_from_fourcc(fourcc);
- if (pix_fmt == AV_PIX_FMT_NONE) {
+ if (pix_fmt != AV_PIX_FMT_NV12) {
+ av_log(hwdev, AV_LOG_DEBUG, "Format %#x -> ignored.\n",
+ fourcc);
+ continue;
+ }
+ else if (pix_fmt == AV_PIX_FMT_NONE) {
av_log(hwdev, AV_LOG_DEBUG, "Format %#x -> unknown.\n",
fourcc);
} else {
--
2.44.1
More information about the ffmpeg-devel
mailing list