diff mbox series

[FFmpeg-devel,2/2] lavfi/vf_vpp_qsv: support UYVY in system memory

Message ID 20230203063448.4440-2-haihao.xiang@intel.com
State Accepted
Commit 36016c55967622a1475e5ec9cade39543921915c
Headers show
Series [FFmpeg-devel,1/2] lavu/hwcontext_qsv: add support for UYVY | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Xiang, Haihao Feb. 3, 2023, 6:34 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

It only works on Linux

$ ffmpeg -loglevel verbose -init_hw_device qsv=intel -f lavfi -i \
yuvtestsrc -vf "format=uyvy422,vpp_qsv=format=nv12" -f null -

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavfilter/qsvvpp.c     | 9 +++++++++
 libavfilter/vf_vpp_qsv.c | 3 +++
 2 files changed, 12 insertions(+)
diff mbox series

Patch

diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index 7e64944f2c..e181e7b584 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -247,6 +247,10 @@  static int pix_fmt_to_mfx_fourcc(int format)
         return MFX_FOURCC_RGB4;
     case AV_PIX_FMT_P010:
         return MFX_FOURCC_P010;
+#if CONFIG_VAAPI
+    case AV_PIX_FMT_UYVY422:
+        return MFX_FOURCC_UYVY;
+#endif
     }
 
     return MFX_FOURCC_NV12;
@@ -276,6 +280,11 @@  static int map_frame_to_surface(AVFrame *frame, mfxFrameSurface1 *surface)
         surface->Data.R = frame->data[0] + 2;
         surface->Data.A = frame->data[0] + 3;
         break;
+    case AV_PIX_FMT_UYVY422:
+        surface->Data.Y = frame->data[0] + 1;
+        surface->Data.U = frame->data[0];
+        surface->Data.V = frame->data[0] + 2;
+        break;
     default:
         return MFX_ERR_UNSUPPORTED;
     }
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c
index 010b69943a..65484fa091 100644
--- a/libavfilter/vf_vpp_qsv.c
+++ b/libavfilter/vf_vpp_qsv.c
@@ -703,6 +703,9 @@  static int vpp_query_formats(AVFilterContext *ctx)
         AV_PIX_FMT_YUYV422,
         AV_PIX_FMT_RGB32,
         AV_PIX_FMT_P010,
+#if CONFIG_VAAPI
+        AV_PIX_FMT_UYVY422,
+#endif
         AV_PIX_FMT_QSV,
         AV_PIX_FMT_NONE
     };