From patchwork Fri Jun 9 11:14:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 42023 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp1050426pzb; Fri, 9 Jun 2023 04:14:43 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7yzX6mnYxCXB15DVW6fSrBXpOsp01fFmYpfsZDYQWoiJJ6icsr4rIm851uPPJfsHF2/+Lm X-Received: by 2002:a17:907:1caa:b0:974:c1c:8217 with SMTP id nb42-20020a1709071caa00b009740c1c8217mr1914575ejc.55.1686309283714; Fri, 09 Jun 2023 04:14:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686309283; cv=none; d=google.com; s=arc-20160816; b=clObf+m4MKToC2zpkeJMOoISkzoPkrscpOl6vka2nHA3SpfXDM9muv2L1pbBFb7Z2f 31/5GZ/UvVWtHvVDlcms7Z7eyaB2Iyb2ehfKe1YymJLKI3LIk/w9qowo6ngACPkLT7PH LwlQXxRAsZ0LrLD8yqsl89iHa1CJ2IP/rJug/sscHdwvxTxMs8lKjOVIL2u5ibPeYghB RwqUKrsI1oB4hdUOLyyIlWJLKFWNMmRzImw6J+SzY43YYz1EQOUy4OZ6tqJAzIbr5kkF oqodt0yAbZPD8ZbA/hsHOVtiqLl7Z1lJDfwq31GsSsvH5Xvkdiz8/an0tKExF2I/HDX9 dL7Q== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=pnKYazTc2+5lyZDL9/4yKGxaWRk9f7I0YXw3KqQbh+Y=; b=HA5FIz7GtYbgSZjs9jtzqF8nabOC4CRnj34nlu/ap9C8izP+1L9HzVZzGB+vZ+9ifE cDI52hfRSFhOIQKjbjk4LpHVYGBG6Ut+qB06pokFvT+RtDIMc3QocAif0PUzHY/rfwAf Wo3AtZ/9xVn4R6O2WdtiHpXngJHnBDST0FwF6OoEQbFWB5MzFiRu9NCakj/YcTbeugla 9pQBWSH8nrCE2PIavIss+3hx7f8H3Ip4j+rhYlVHlAhcZSvUAGDaBuxfJVwvYEn8X6TU 9acYEqxEXNLLB0uKTI3JwYKe6LYAwXIggm9cxrzlAuHCihDDXdLVkFXpralc92uuaNak QaTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=kv2PxzF7; 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 ha20-20020a170906a89400b0096597c66573si1374224ejb.353.2023.06.09.04.14.42; Fri, 09 Jun 2023 04:14:43 -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=@foxmail.com header.s=s201512 header.b=kv2PxzF7; 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 AEE5468C2F8; Fri, 9 Jun 2023 14:14:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-58-216.mail.qq.com (out162-62-58-216.mail.qq.com [162.62.58.216]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3BD66680BF6 for ; Fri, 9 Jun 2023 14:14:31 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1686309262; bh=vTWXSnewyLs4pbtqjUDdaYoJ0pI3bA4W26CXA66dN/g=; h=From:To:Cc:Subject:Date; b=kv2PxzF7rDD4D4hj7Bo5SsxD+okhA0vJtEjrxKMfcnMMuO9WHotcsDI4bhg2AKQDE jLAA6hfaZh0cwZKxUeuh3D4gksku6wVePI7232rM5EecIolC0kvkwRNKdEDz0NnlWx 6XYgCMu1Bt1eZVTsFNCDJqMjDM8VJ2tpe9f+PMDg= Received: from localhost.localdomain ([113.108.77.73]) by newxmesmtplogicsvrszc2-1.qq.com (NewEsmtp) with SMTP id 395B6AA7; Fri, 09 Jun 2023 19:14:21 +0800 X-QQ-mid: xmsmtpt1686309261tw4e83cbw Message-ID: X-QQ-XMAILINFO: OKkKo7I1HxIehbgjPjOL/JAYQqyHJYOGnajJi9HIGCXatWNR7L90iLmw56gU4k E+MvFW3AnAtSsEm7PnntyKdmcxlXmMz9tBPwC/HtEAB7wknXJV5IccmgUBYOMn7Mwt+pG/nwuWYV Bk7xV0Hi+sFLa4qgALzjHFQPW/5WIlPskMIKiR6khYvbN+qn2EsNqKXUC0IJNC4YymQsI7wXIIx4 9G4jbTcJk0RbtSAJlG8MA5DVy7vOm95QcsFFCIhlfrxZbCQsoFpdGKraHp7VOHxJOGbvmblR1Z7I vEYrMKzF5vtV0ReY1DOPmB868tgQdBuUZgAXSAb2AbBtgkZswBKrGWEol9pM0/rciTvn9I7Rvwm2 nvkAewsZ7Urxj9PLgxMBLdPrmiRVgIOsHNDjWTs/5k4xA/4gNmCo+vrEiTbT6bYc+SpJHWYYdoMG xwpCsK5XljMSsOLCOGhFQBfKmQlaiyYaftuBX5cHrLS3XcJoOZx2nE06RzT9I4cUzzDz+jqCUnB1 CPDU5biBrUV5IQiaeW7Q7gB1lSREPDk22iWtQ6RYy46OxKmi7BZE0T+Idp73x81722FYuV8uCG8r RRXlLmpy2Lslyk21NLIoTcwfDTYdWUh4YDwmlQj9puIGHRw+bX4b1lb/8F2ERezXJ5tuTAkul1Dt yrHzwyaUP09fhf8aeJ4uC6TCK9KGwoQhn80UAv2+2EeOaGYuyW/KvmakR3Iuvj6qVYXMZyE7zCA4 +PACy6XgOe2nIuVP7N2OyO2Aoc87b1afu6RN6t2NG6TlfM2/YGUG4t5F5aLVscMOOyfYEmEkX0XO FzZzBxUY5DDiXDuWw/S5nNiyMA/1+jhGqwsGsJA9nGPSGrILBTHUsFOwclk+i10tBkVcccabSn7c uEPJqsiWi4Cwz4mouhoQ5mXU3oUoXHcb3Il+WPvpOsJT1tRwmIBWJeJo3GzdxbQHVgkLA/1clURe 0bJRebnc00uk8qJ+6rbLjwIO7bqmYekTVN5hr7A7wpgfJon5mSOg== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Jun 2023 19:14:24 +0800 X-OQ-MSGID: <20230609111424.2323528-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/mediacodecenc: add profile names to options 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: VS1CFu8/CTF9 From: Zhao Zhili H.264 high10/high422/high44 are unlikely supported by devices. It's there for developers to do the experiment. H.265 main10 works on my device with AV_PIX_FMT_MEDIACODEC. OMX_COLOR_FormatYUV420Planar16 doesn't work. Signed-off-by: Zhao Zhili --- libavcodec/mediacodecenc.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index d23745c1c1..1da705d113 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -36,6 +36,7 @@ #include "mediacodec.h" #include "mediacodec_wrapper.h" #include "mediacodecdec_common.h" +#include "profiles.h" #define INPUT_DEQUEUE_TIMEOUT_US 8000 #define OUTPUT_DEQUEUE_TIMEOUT_US 8000 @@ -658,6 +659,16 @@ enum MediaCodecAvcLevel { static const AVOption h264_options[] = { COMMON_OPTION + + FF_AVCTX_PROFILE_OPTION("baseline", NULL, VIDEO, FF_PROFILE_H264_BASELINE) + FF_AVCTX_PROFILE_OPTION("constrained_baseline", NULL, VIDEO, FF_PROFILE_H264_CONSTRAINED_BASELINE) + FF_AVCTX_PROFILE_OPTION("main", NULL, VIDEO, FF_PROFILE_H264_MAIN) + FF_AVCTX_PROFILE_OPTION("extended", NULL, VIDEO, FF_PROFILE_H264_EXTENDED) + FF_AVCTX_PROFILE_OPTION("high", NULL, VIDEO, FF_PROFILE_H264_HIGH) + FF_AVCTX_PROFILE_OPTION("high10", NULL, VIDEO, FF_PROFILE_H264_HIGH_10) + FF_AVCTX_PROFILE_OPTION("high422", NULL, VIDEO, FF_PROFILE_H264_HIGH_422) + FF_AVCTX_PROFILE_OPTION("high444", NULL, VIDEO, FF_PROFILE_H264_HIGH_444) + { "level", "Specify level", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, { "1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel1 }, 0, 0, VE, "level" }, @@ -720,6 +731,10 @@ enum MediaCodecHevcLevel { static const AVOption hevc_options[] = { COMMON_OPTION + + FF_AVCTX_PROFILE_OPTION("main", NULL, VIDEO, FF_PROFILE_HEVC_MAIN) + FF_AVCTX_PROFILE_OPTION("main10", NULL, VIDEO, FF_PROFILE_HEVC_MAIN_10) + { "level", "Specify tier and level", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, { "m1", "Main tier level 1", @@ -830,6 +845,12 @@ enum MediaCodecVP9Level { static const AVOption vp9_options[] = { COMMON_OPTION + + FF_AVCTX_PROFILE_OPTION("profile0", NULL, VIDEO, FF_PROFILE_VP9_0) + FF_AVCTX_PROFILE_OPTION("profile1", NULL, VIDEO, FF_PROFILE_VP9_1) + FF_AVCTX_PROFILE_OPTION("profile2", NULL, VIDEO, FF_PROFILE_VP9_2) + FF_AVCTX_PROFILE_OPTION("profile3", NULL, VIDEO, FF_PROFILE_VP9_3) + { "level", "Specify tier and level", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, { "1", "Level 1", @@ -884,6 +905,9 @@ enum MediaCodecMpeg4Level { static const AVOption mpeg4_options[] = { COMMON_OPTION + + FF_MPEG4_PROFILE_OPTS + { "level", "Specify tier and level", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, { "0", "Level 0", @@ -944,6 +968,9 @@ enum MediaCodecAV1Level { static const AVOption av1_options[] = { COMMON_OPTION + + FF_AV1_PROFILE_OPTS + { "level", "Specify tier and level", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, { "2", "Level 2",