diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2022-03-10 14:39:06 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2023-02-07 09:51:37 +0800 |
commit | 36016c55967622a1475e5ec9cade39543921915c (patch) | |
tree | 0a01b4ba30397163ad6d3558b7ad2146b1e94e60 | |
parent | f1355ec9f6125ff8eb644e5beb3e3ccd6e35da28 (diff) | |
download | ffmpeg-36016c55967622a1475e5ec9cade39543921915c.tar.gz |
lavfi/vf_vpp_qsv: support UYVY in system memory
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>
-rw-r--r-- | libavfilter/qsvvpp.c | 9 | ||||
-rw-r--r-- | libavfilter/vf_vpp_qsv.c | 3 |
2 files changed, 12 insertions, 0 deletions
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 }; |