From patchwork Fri Oct 4 17:44:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dash Santosh X-Patchwork-Id: 52049 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp577625vqg; Fri, 4 Oct 2024 10:45:08 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXvZkHwkhDv2zS2hcljxAOxfMkfUlWHMrY/rIbk+fJNf018HV0OCeTnMFzhk2K5xzMmVLAThJ7zJgvpC4Ok4qfh@gmail.com X-Google-Smtp-Source: AGHT+IHmMd1oGPzG+W1J8M0NOuJcb9t44jajoN3rrZ5TDiSEZExkEB3zqvrrcA8bCyrsq8lIZjOq X-Received: by 2002:a05:6512:e9b:b0:52e:7448:e137 with SMTP id 2adb3069b0e04-539ab862598mr2448881e87.6.1728063907884; Fri, 04 Oct 2024 10:45:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728063907; cv=none; d=google.com; s=arc-20240605; b=IXTSTWIsNW54mkwfQ6sLgxLIUKyinT46u76imwgZkgRx5TTlsToi+1t8nBRpgPOVwa fjIMRpFQqkBHmfMcP78pi0hWoQyH9HMLoNTFnM6py0TPDRnglEStEvUcJG8s3OxoGQn/ jMhcV62QZF8U10/jZKwiicJaXVKMzVWrTPllP3IWD/yXMlD8A2GUxQUvCosvaTwIL0CC 4e4vWu35aK8kXhE3dhzRuSAySj216N3mHVKXIDwFvKhkppoI8dsMHl1jK+Ifx62IzW+g 1Mn5gpJT2D5tghRVI3UjDlupLVNKkVkGjbQyg+4YacvmJ8azjt+YvU6j2idvSqZyxudo lJkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=KsqIZ3Ez1NF6m+cqGvgZKx4AuCw2VBsprNvAX2IemHg=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=CTBuV4u2ivHk/t6AdmQ8DiR7XJR5j8fsIW8Is1q4bTK3PQrX9NzYxXeUz3T3U8AK6R tMDhktLRcXByzwp32OOeh+305uHdbC0VO+rJcDDSZr+HEUV9p5i4Xs0tUebmnEtM6Wku sxCEVUjWDkWpv8UXx4sCr5DDGwYZqZ+lmjORCBqiahT1Sgks8tAnrdhIQ6MUqWjhcNLR aMFqDSJAQo2qrr5ziUnHo1MzxNChPdzzn8PUInrEaU0uO5Gs8GRpjRD8ZNw9/GrGzzhP tQFKZR4m5f4c08W38hmJ0hibu6yFfi3Por2LWp85iBSGPOkvnBUeuKNWuuBq5yBcAHqJ xOWw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@multicorewareinc-com.20230601.gappssmtp.com header.s=20230601 header.b=SvEAacsC; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dara=fail header.i=@gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-539b001fc3bsi34993e87.574.2024.10.04.10.45.07; Fri, 04 Oct 2024 10:45:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@multicorewareinc-com.20230601.gappssmtp.com header.s=20230601 header.b=SvEAacsC; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CFAE768D9E8; Fri, 4 Oct 2024 20:45:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C9EAC68D9E8 for ; Fri, 4 Oct 2024 20:44:55 +0300 (EEST) Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-5398ec2f3c3so3156526e87.1 for ; Fri, 04 Oct 2024 10:44:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=multicorewareinc-com.20230601.gappssmtp.com; s=20230601; t=1728063895; x=1728668695; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=wHef4GWJOh5TOzycGCCteK32DL3RWxMpGXplfwyzVbo=; b=SvEAacsCMXH+RaHkIHFQNLT/9wydkJR196Z2GfhhoBH8Cl6+Wk2GBqxpTi0UJyFdAh mfR1rgZ69VfVobo7oZJppvNB+mNUh+ny+mFuz6BursX6Wx8fia/Of9wJJ3Y9to32+Mc3 nxtL93lNltBUY/tCqcozp+3/2R7LdtHyId46r82vjCVXavHKBeRdfH6cfC4h3gLdtRmE ufrfxkvn92Ed77Tr34toPayfctdLUyBQbvdACsU8IhqL+FGwgqs5ip3Z/DMSqFKQNv46 p1oKmNpX7tAOq7CoFUtV+WrIozI++f/vGpGXpFpJingNotJ6XOco4XUjU1QUdFqEUwVT 22TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728063895; x=1728668695; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=wHef4GWJOh5TOzycGCCteK32DL3RWxMpGXplfwyzVbo=; b=XgDJ2TWhqoN4LxOsTs/kuQYEMERCrNYFtadMHi4WAtE28GcLCVhVq4yQN5YBUpPjhi i8/pCWUhjUx7zVAhqjstBtrJEIYZWsiXllMB1coYXU0hwk0m+JdcqxDQkXjWdBs06N+G GUp857gs/V/MZAfLaIEDIMuDbgeyIaZjzl9sM8TVMO3Vh11fEPfGyuBaCVjsrwYGAYFe xGe5QYGk20OlBQVoKLsqNZhC47930ttAfam1Dwhe31X8Bi+k+EIVY74RE3xW13uuygRf 2SljEihWsgRu4AJW4wZdPt6YBg0Hm4VbA9u+l5U+xfXungKE6BUF6Flbrs7LGcVmrBiV lXqg== X-Gm-Message-State: AOJu0YxArm41O6WKNnxJ5A/Mnuo3aXyF+0P+xom4jOmXFMdmzaPaebOb tbXjukNH6iPz4QvaX/9tR5NJYOQ4Rc7XBNak4JHJj3vFxEHO0jQHJMBG+G7RB9irUUf6xqMlWHl KPdsdrG4CM6mZMOXXoqI0Qcm0woZmhXwJUcN1IfwcsincBsW4sNdBMQ== X-Received: by 2002:a05:6512:3192:b0:52e:9762:2ba4 with SMTP id 2adb3069b0e04-539ab88c5afmr2229383e87.25.1728063894479; Fri, 04 Oct 2024 10:44:54 -0700 (PDT) MIME-Version: 1.0 From: Dash Santosh Date: Fri, 4 Oct 2024 23:14:41 +0530 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec/mfenc: add support for AV1 MF encoders X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4CuLKPrWyLt6 From 77c708805c52302861650cf770f6c32a33590e90 Mon Sep 17 00:00:00 2001 From: Min Chen 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@ffmpeg.org Signed-off-by: Dash Santosh --- 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; case AV_CODEC_ID_AC3: return &MFAudioFormat_Dolby_AC3; 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);