diff options
author | agalin89 <[email protected]> | 2020-10-22 14:02:21 +0100 |
---|---|---|
committer | Scott <[email protected]> | 2020-11-12 19:36:59 +0000 |
commit | 25fd847fc82af409afc46c9b273e072bc80b7dbd (patch) | |
tree | cd66c10abd8332d77519ff5028252de7e64646e3 /contrib | |
parent | cc7b7e6878617573b9e8251830c92488a8b4b5a5 (diff) |
qsv: added AV1 HW decoding capabilities
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ffmpeg/A21-qsv-av1-decoder.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/contrib/ffmpeg/A21-qsv-av1-decoder.patch b/contrib/ffmpeg/A21-qsv-av1-decoder.patch new file mode 100644 index 000000000..90891bede --- /dev/null +++ b/contrib/ffmpeg/A21-qsv-av1-decoder.patch @@ -0,0 +1,77 @@ +diff --git a/configure b/configure +index 8569a60bf8..7be6c8f7e5 100755 +--- a/configure ++++ b/configure +@@ -3128,6 +3128,7 @@ vp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9" + vp9_qsv_encoder_select="qsvenc" + vp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m" + wmv3_crystalhd_decoder_select="crystalhd" ++av1_qsv_decoder_select="qsvdec" + + # parsers + aac_parser_select="adts_header" +diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c +index 80f128cade..7176a36af9 100644 +--- a/libavcodec/allcodecs.c ++++ b/libavcodec/allcodecs.c +@@ -808,6 +808,7 @@ extern AVCodec ff_vp9_mediacodec_decoder; + extern AVCodec ff_vp9_qsv_decoder; + extern AVCodec ff_vp9_vaapi_encoder; + extern AVCodec ff_vp9_qsv_encoder; ++extern AVCodec ff_av1_qsv_decoder; + + // The iterate API is not usable with ossfuzz due to the excessive size of binaries created + #if CONFIG_OSSFUZZ +diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c +index 1c9b649c10..616cc2462b 100644 +--- a/libavcodec/qsv.c ++++ b/libavcodec/qsv.c +@@ -66,6 +66,10 @@ int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id) + case AV_CODEC_ID_VP9: + return MFX_CODEC_VP9; + #endif ++#if QSV_VERSION_ATLEAST(1, 34) ++ case AV_CODEC_ID_AV1: ++ return MFX_CODEC_AV1; ++#endif + + default: + break; +diff --git a/libavcodec/qsvdec_other.c b/libavcodec/qsvdec_other.c +index b4df76739c..0629fc710c 100644 +--- a/libavcodec/qsvdec_other.c ++++ b/libavcodec/qsvdec_other.c +@@ -327,3 +327,32 @@ AVCodec ff_vp9_qsv_decoder = { + .wrapper_name = "qsv", + }; + #endif ++ ++#if CONFIG_AV1_QSV_DECODER ++static const AVClass av1_qsv_class = { ++ .class_name = "av1_qsv", ++ .item_name = av_default_item_name, ++ .option = options, ++ .version = LIBAVUTIL_VERSION_INT, ++}; ++ ++AVCodec ff_av1_qsv_decoder = { ++ .name = "av1_qsv", ++ .long_name = NULL_IF_CONFIG_SMALL("AV1 video (Intel Quick Sync Video acceleration)"), ++ .priv_data_size = sizeof(QSVOtherContext), ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = AV_CODEC_ID_AV1, ++ .init = qsv_decode_init, ++ .decode = qsv_decode_frame, ++ .flush = qsv_decode_flush, ++ .close = qsv_decode_close, ++ .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HYBRID, ++ .priv_class = &av1_qsv_class, ++ .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, ++ AV_PIX_FMT_P010, ++ AV_PIX_FMT_QSV, ++ AV_PIX_FMT_NONE }, ++ .hw_configs = ff_qsv_hw_configs, ++ .wrapper_name = "qsv", ++}; ++#endif +\ No newline at end of file |