[FFmpeg-devel] [PATCH] avcodec/mfenc: add support for AV1 MF encoders
Martin Storsjö
martin at martin.st
Fri Oct 4 20:50:11 EEST 2024
On Fri, 4 Oct 2024, Dash Santosh wrote:
> From 77c708805c52302861650cf770f6c32a33590e90 Mon Sep 17 00:00:00 2001
> From: Min Chen <chenm003 at 163.com>
> Date: Fri, 4 Oct 2024 23:04:04 +0530
> Subject: [PATCH] avcodec/mfenc: add support for AV1 MF encoders
> X-Unsent: 1
> To: ffmpeg-devel at ffmpeg.org
>
> Signed-off-by: Dash Santosh <santdas36 at gmail.com>
> ---
> configure | 1 +
> libavcodec/allcodecs.c | 1 +
> libavcodec/mf_utils.c | 2 ++
> libavcodec/mfenc.c | 1 +
> 4 files changed, 5 insertions(+)
>
> diff --git a/configure b/configure
> index 0247ea08d6..63bc53cc27 100755
> --- a/configure
> +++ b/configure
> @@ -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..f740a6090b 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(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 &MFVideoFormat_AV1;
> case AV_CODEC_ID_H264: return &MFVideoFormat_H264;
> case AV_CODEC_ID_HEVC: return &ff_MFVideoFormat_HEVC;
Doing this like this would break compilation with any earlier SDK, that
doesn't contain a declaration of MFVideoFormat_AV1. See how we've provided
a local definition of MFVideoFormat_HEVC in the form of
ff_MFVideoFormat_HEVC, to work around this issue.
// Martin
More information about the ffmpeg-devel
mailing list