After adding a copy pass through path inside MSDK, x2rgb10 is now
available as an output of VPP.
Command line for CSC:
ffmpeg -hwaccel qsv -v verbose -c:v hevc_qsv -i
p010.h265 -vf scale_qsv=format=x2rgb10,hwdownload,format=x2rgb10
-vframes 1 out.yuv
Signed-off-by: Linjie Fu <[email protected]>
---
[1]Issue:
https://github.com/Intel-Media-SDK/MediaSDK/issues/1654
[2]Adding copy passthrou:
https://github.com/AntonGrishin/MediaSDK/commit/20058c0e1dbd521e2571e14f6246c48fea996094
[3]Still in need to be fixed:
https://github.com/Intel-Media-SDK/MediaSDK/pull/2268
This patch would be ready to merge after [3] is handled decently.
libavutil/hwcontext_qsv.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index 35a944f8f8..64cb1663d8 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -110,6 +110,10 @@ static const struct {
#if CONFIG_VAAPI
{ AV_PIX_FMT_YUYV422,
MFX_FOURCC_YUY2 },
+#if QSV_VERSION_ATLEAST(1, 9)
+ { AV_PIX_FMT_X2RGB10,
+ MFX_FOURCC_A2RGB10 },
+#endif
#if QSV_VERSION_ATLEAST(1, 27)
{ AV_PIX_FMT_Y210,
MFX_FOURCC_Y210 },
@@ -798,6 +802,10 @@ static int map_frame_to_surface(const AVFrame *frame,
mfxFrameSurface1 *surface)
surface->Data.V16 = (mfxU16 *)frame->data[0] + 3;
break;
#endif
+ case AV_PIX_FMT_X2RGB10:
+ surface->Data.A2RGB10 = (mfxA2RGB10 *)frame->data[0];
+ break;
+
default:
return MFX_ERR_UNSUPPORTED;
}
--
2.28.0
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".