diff options
author | Min Chen <chenm003@163.com> | 2024-10-04 23:04:04 +0530 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2024-10-09 16:30:37 +0300 |
commit | 37842f2caa0fb495869aab61603edc5c6b8a45f4 (patch) | |
tree | f7f640cf90f64cd5be96c58a145887e02086d998 | |
parent | 6668268e16b6d1a6992840dccb12effece2e7202 (diff) | |
download | ffmpeg-37842f2caa0fb495869aab61603edc5c6b8a45f4.tar.gz |
avcodec/mfenc: add support for AV1 MF encoders
Signed-off-by: Dash Santosh <dash.sathyanarayanan@multicorewareinc.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-x | configure | 1 | ||||
-rw-r--r-- | libavcodec/allcodecs.c | 1 | ||||
-rw-r--r-- | libavcodec/mf_utils.c | 2 | ||||
-rw-r--r-- | libavcodec/mf_utils.h | 1 | ||||
-rw-r--r-- | libavcodec/mfenc.c | 1 | ||||
-rw-r--r-- | libavcodec/version.h | 2 |
6 files changed, 7 insertions, 1 deletions
@@ -3347,6 +3347,7 @@ av1_cuvid_decoder_deps="cuvid CUVIDAV1PICPARAMS" av1_mediacodec_decoder_deps="mediacodec" av1_mediacodec_encoder_deps="mediacodec" av1_mediacodec_encoder_select="extract_extradata_bsf" +av1_mf_encoder_deps="mediafoundation" av1_nvenc_encoder_deps="nvenc NV_ENC_PIC_PARAMS_AV1" av1_nvenc_encoder_select="atsc_a53" av1_qsv_decoder_select="qsvdec" diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index aa0fc47647..f5317616b7 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -838,6 +838,7 @@ extern const FFCodec ff_av1_nvenc_encoder; extern const FFCodec ff_av1_qsv_decoder; extern const FFCodec ff_av1_qsv_encoder; extern const FFCodec ff_av1_amf_encoder; +extern const FFCodec ff_av1_mf_encoder; extern const FFCodec ff_av1_vaapi_encoder; extern const FFCodec ff_libopenh264_encoder; extern const FFCodec ff_libopenh264_decoder; diff --git a/libavcodec/mf_utils.c b/libavcodec/mf_utils.c index 48e3a63efc..ff44130ca9 100644 --- a/libavcodec/mf_utils.c +++ b/libavcodec/mf_utils.c @@ -240,6 +240,7 @@ static struct GUID_Entry guid_names[] = { GUID_ENTRY(MFMediaType_Video), GUID_ENTRY(MFAudioFormat_PCM), GUID_ENTRY(MFAudioFormat_Float), + GUID_ENTRY(ff_MFVideoFormat_AV1), GUID_ENTRY(MFVideoFormat_H264), GUID_ENTRY(MFVideoFormat_H264_ES), GUID_ENTRY(ff_MFVideoFormat_HEVC), @@ -507,6 +508,7 @@ void ff_media_type_dump(void *log, IMFMediaType *type) const CLSID *ff_codec_to_mf_subtype(enum AVCodecID codec) { switch (codec) { + case AV_CODEC_ID_AV1: return &ff_MFVideoFormat_AV1; case AV_CODEC_ID_H264: return &MFVideoFormat_H264; case AV_CODEC_ID_HEVC: return &ff_MFVideoFormat_HEVC; case AV_CODEC_ID_AC3: return &MFAudioFormat_Dolby_AC3; diff --git a/libavcodec/mf_utils.h b/libavcodec/mf_utils.h index 387c005f38..a59b36d015 100644 --- a/libavcodec/mf_utils.h +++ b/libavcodec/mf_utils.h @@ -113,6 +113,7 @@ DEFINE_GUID(ff_MF_SA_MINIMUM_OUTPUT_SAMPLE_COUNT_PROGRESSIVE, 0xf5523a5, 0x1cb2, DEFINE_MEDIATYPE_GUID(ff_MFVideoFormat_HEVC, 0x43564548); // FCC('HEVC') DEFINE_MEDIATYPE_GUID(ff_MFVideoFormat_HEVC_ES, 0x53564548); // FCC('HEVS') +DEFINE_MEDIATYPE_GUID(ff_MFVideoFormat_AV1, 0x31305641); // FCC('AV01') // This enum is missing from mingw-w64's codecapi.h by v7.0.0. diff --git a/libavcodec/mfenc.c b/libavcodec/mfenc.c index b8f8a25f43..c062d87f11 100644 --- a/libavcodec/mfenc.c +++ b/libavcodec/mfenc.c @@ -1315,3 +1315,4 @@ static const FFCodecDefault defaults[] = { MF_ENCODER(VIDEO, h264, H264, venc_opts, VFMTS, VCAPS, defaults); MF_ENCODER(VIDEO, hevc, HEVC, venc_opts, VFMTS, VCAPS, defaults); +MF_ENCODER(VIDEO, av1, AV1, venc_opts, VFMTS, VCAPS, defaults); diff --git a/libavcodec/version.h b/libavcodec/version.h index da6f3a84ac..9411511e04 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 21 +#define LIBAVCODEC_VERSION_MINOR 22 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |