From patchwork Sun Dec 4 17:12:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 39585 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp2708615pzb; Sun, 4 Dec 2022 09:13:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf4GQz24+a6bsaVi+5MuOhmlBDrOVCeSpQezpfnRcwiSBJ0zwRMv+MWvc1mresqhQZ/800v8 X-Received: by 2002:a17:907:3c12:b0:7c0:cd7d:fb39 with SMTP id gh18-20020a1709073c1200b007c0cd7dfb39mr7660356ejc.288.1670174039343; Sun, 04 Dec 2022 09:13:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670174039; cv=none; d=google.com; s=arc-20160816; b=PBVc6IRdRuGVjjM3VU/pw/C6Vd/wmVecuKST9c9981XJAXCzBBBMXjVwTnX+O+ukhB R9WMFpXTSNatbVEJpC5kYkY1wVy8ukcJgGFpjNj2bisamyBVsvBWrqRhJHSe+v5VXAEE tgYuytwjVp/ZN0Kyafrtl8s1htwXT54UFF77kYloYRuXhRWT946MV4IkqnnSg6MCC9WL Cf16eLIZ+//os1uGicjwN7NRJxMo21NfO1MTzPsazDygajRs9WanWapciJtIgFpiMa7g iwLOoLutOPJuhZW/nEE7VxsZTlIUQpyXa8O+H1yEc65/2tNQORzICC/qfbsquV71HP0/ aK2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=fCSzklXxkgywY6DCPzs3YOmFjChO+04xdypYxlbleJs=; b=mGtkPR+AAzepSHPTUX8a7S8r0S14m84FmRULdsMknTq5mOSgesE4nJbbfH9cOpRTNc glupqwNIGWXY0JRggnoPlR/ip8nMcU01wKaUa0c0CziwuHP4aB7eL279TjfInETR5B+h oGW3wSDSg8Pp9XYIGoS7v+y2ktIFx20+oY/ObltJv6143vEN8DiVCSvWFe220ZXmANjh cQTwp2qpFLAfVZRsPZcKO0Z++0EURmHBtapEBqWOAy14nOqQBUb9mBrVDdnRo3Dt7DGu 3inOy6TKGdAQo4OWuYPMZvhbV4tw4LdxiUFkqmNyhNbvojsIrcXFybcVs9DPU7/k3y/d v6FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=n1e5o37l; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h9-20020a05640250c900b0046c6e69565dsi3509649edb.259.2022.12.04.09.13.59; Sun, 04 Dec 2022 09:13:59 -0800 (PST) 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=@foxmail.com header.s=s201512 header.b=n1e5o37l; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2840E68B96D; Sun, 4 Dec 2022 19:13:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-205.mail.qq.com (out203-205-221-205.mail.qq.com [203.205.221.205]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0C9E168B8BE for ; Sun, 4 Dec 2022 19:12:59 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1670173974; bh=swf6Q3VBEnypt7A9SS/5nVSp8JUJBM8VvLufylVVmtA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=n1e5o37lyd/Z50WNr/86DTzJ/slDLtDGdphUo/bpRFAadOffm1pYq20fSpyXkkRPL hLRfEPKzKM/2PhpapVYoTVL91AE9qL33Fy/UeuYmC2dFf+lYfxNShtEOHFuXavj4Ym F4SfUkerw5vQn2NvIx2WK0sWlZT1hcOFH4xULDds= Received: from localhost.localdomain ([14.153.79.182]) by newxmesmtplogicsvrszb1-0.qq.com (NewEsmtp) with SMTP id 334B3853; Mon, 05 Dec 2022 01:12:52 +0800 X-QQ-mid: xmsmtpt1670173973td1adlvy9 Message-ID: X-QQ-XMAILINFO: NvKyM24IHTKSUfXBQoTSN+iIBiGCvkgQm/pXSWxuznvOYUIVeHi4MSrZVkN7zQ +xs488FJ6eou78NjPDo5eLthyGkYmUy0hFiVVe9gTAnCHzAMYDyhQ/Y+HZ4tXrw6r4wEjr1aXtDW QLEOCdZXqVUDbRx9vXCpJskmQVsweIiHWEn9oeE7Ox/snYMeQWaAsJq+YPq+6vdIexPcqiTuMAP/ 6xzzn275SfQL7fKVqWF4vUeRVhi/DxEwznrbzrTguf7NNAIGsluASTU0sFr1sMylSc7nv3XDBSPj ukvfhgrNEZW1U9nXhavAWfctNsX7UKY39toxLNO0tFbYS9i9Oi3BoeAwp4+kMm34MjjbqzGYWPgB +tRdLNOqMnwaldIl4/gSdz0ght2i4NCLIkG5yg+R4mEd3hCHANKbPSMSWJX498oQ/dLsCVKhJ/1q ncc9JHKVbMGjR7tTMbhJJImnWdmQuXuzixC8RUAfnGhvJhE7Eq4uLRLIcMrTI9muifLXHhwLfKvk RpgoUpf2mEdigak4/qBImGjcz6OADFzZH8GZMI8H3mOhuz9nYlhb2xU5uLx4Ux/RVVaPp25zmbIl VCnCYGUDTSdY8WfLVdCVpRXNPH8p5HwYKTw8wqaONmGuX6mCTD6VhlVbBcEvB7Lftn9KPcSWoYhT Tfaa9X8odZPtOlM104q9IlebBxTg6xC/6lKsJTp0LvMJ/yymV5DypkWvR4ebnqyldwzPF1W3dnWK 2BwuQmaFlRiwCI4ZsI3GjTCG6FDlDZ/MH6/x4vB93rflagOCqv0shEu3kv2ErXjTochd2VII5x8p jnkyOOra13n1Rselm3Cm2XafQL54YCsIBIfYy8tB5O+EtHKq05R9tkOz74hDChd047HjxKJ+dzVr eWwEdpXKP69QagfbFGF0Gi5Nc04DSReDlJrN4E0Mpphj2VKJMm0Ma6A+VGbrra9gC0sS+7xoDyhy gBeQ8lKo0IpwT+61ImjC9MPsgMdxhF From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 01:12:23 +0800 X-OQ-MSGID: <20221204171228.50160-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221204171228.50160-1-quinkblack@foxmail.com> References: <20221204171228.50160-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/7] avcodec/mediacodecenc: make each encoder has its own option 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 Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qPCYAwBqWFps From: Zhao Zhili --- libavcodec/mediacodecenc.c | 42 ++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index c8d8f84e46..c28cce56c6 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -495,29 +495,27 @@ static const AVCodecHWConfigInternal *const mediacodec_hw_configs[] = { #define OFFSET(x) offsetof(MediaCodecEncContext, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM -static const AVOption common_options[] = { - { "ndk_codec", "Use MediaCodec from NDK", - OFFSET(use_ndk_codec), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE }, - { "codec_name", "Select codec by name", - OFFSET(name), AV_OPT_TYPE_STRING, {0}, 0, 0, VE }, - { "bitrate_mode", "Bitrate control method", - OFFSET(bitrate_mode), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE, "bitrate_mode" }, - { "cq", "Constant quality mode", - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CQ}, 0, 0, VE, "bitrate_mode" }, - { "vbr", "Variable bitrate mode", - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_VBR}, 0, 0, VE, "bitrate_mode" }, - { "cbr", "Constant bitrate mode", - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR}, 0, 0, VE, "bitrate_mode" }, - { "cbr_fd", "Constant bitrate mode with frame drops", - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR_FD}, 0, 0, VE, "bitrate_mode" }, - { NULL }, -}; +#define COMMON_OPTION \ + { "ndk_codec", "Use MediaCodec from NDK", \ + OFFSET(use_ndk_codec), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE }, \ + { "codec_name", "Select codec by name", \ + OFFSET(name), AV_OPT_TYPE_STRING, {0}, 0, 0, VE }, \ + { "bitrate_mode", "Bitrate control method", \ + OFFSET(bitrate_mode), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE, "bitrate_mode" }, \ + { "cq", "Constant quality mode", \ + 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CQ}, 0, 0, VE, "bitrate_mode" }, \ + { "vbr", "Variable bitrate mode", \ + 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_VBR}, 0, 0, VE, "bitrate_mode" }, \ + { "cbr", "Constant bitrate mode", \ + 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR}, 0, 0, VE, "bitrate_mode" }, \ + { "cbr_fd", "Constant bitrate mode with frame drops", \ + 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR_FD}, 0, 0, VE, "bitrate_mode" }, \ #define MEDIACODEC_ENCODER_CLASS(name) \ static const AVClass name ## _mediacodec_class = { \ .class_name = #name "_mediacodec", \ .item_name = av_default_item_name, \ - .option = common_options, \ + .option = name ## _options, \ .version = LIBAVUTIL_VERSION_INT, \ }; \ @@ -542,9 +540,17 @@ const FFCodec ff_ ## short_name ## _mediacodec_encoder = { \ }; \ #if CONFIG_H264_MEDIACODEC_ENCODER +static const AVOption h264_options[] = { + COMMON_OPTION + { NULL, } +}; DECLARE_MEDIACODEC_ENCODER(h264, "H.264", AV_CODEC_ID_H264) #endif #if CONFIG_HEVC_MEDIACODEC_ENCODER +static const AVOption hevc_options[] = { + COMMON_OPTION + { NULL, } +}; DECLARE_MEDIACODEC_ENCODER(hevc, "H.265", AV_CODEC_ID_HEVC) #endif