From patchwork Fri Jul 17 21:01:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 21147 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E4ECF449FDC for ; Sat, 18 Jul 2020 00:01:53 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B83F768B670; Sat, 18 Jul 2020 00:01:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f68.google.com (mail-qv1-f68.google.com [209.85.219.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6F771689AA2 for ; Sat, 18 Jul 2020 00:01:47 +0300 (EEST) Received: by mail-qv1-f68.google.com with SMTP id m8so4854226qvk.7 for ; Fri, 17 Jul 2020 14:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WgoqiIK5bAut/fN713cYdgzWUF0fqetpCdx2aNbNpBE=; b=ArTZnA05Zvskna4SwkfjfDP9g0J2Iy1tcTEnGggoYSjGDGi6Bz3UzfIY7KIQVP24Zg O7FI4qr0v//po//p3XaD+6WBiSCb1yqV94bvAPcwIxeBX/ZZ8nuACU5xZHBJ/W29MFQg gQ4jw5uWL0JHekqvInjtNSP9aPy7GQwEbGf8fjuNId9Z1lhycXPOXxG+ZtmXWin+GhK1 zyB5zBSmSQVgE3Ewo0SnZjlZKPOmF1jhU8cDKgkchCWOrsQR+Ssp+QQQ8oLhxI4cmld+ pEgkwtjGT8xUAu6cgE0q0og65l3vurWhu9sp79kGtUYrijy6d3mN0EczHgbab68m6pwk 8FDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WgoqiIK5bAut/fN713cYdgzWUF0fqetpCdx2aNbNpBE=; b=NJHw3H9kEJRBk8COdzRLInjeyRuoBwbzZv2/0dDA8SGEhkA2rAzfzSqu9QB0k2SiHg TQ40aT6y3sG/47Z+WKV9v/4cF+3ssZ195CcM7OeVWB3pWHPA5uBMVccUrT9od4Syu00O Kc7dqaMTZti8vODdeYomOgTQKxhOq86L5OU2l1Iy5SBE6AxWQtfyxNFjy2+5tDD32ojy kyDOzcMYla3480fSpc2y9W+cyqO0pkrwfRuUINhRND9xHZSBu4fMzWBoUSrd7czTUmmK blb1hlJN16Q88ahHK30u5Yg970SjaU7BLRGYS0TnKNFrv7ZX5I1cEW2aEHpvo1GAEU/S ZM7Q== X-Gm-Message-State: AOAM5309b4yMdSY/fq5wykfNLfkpogh+fCKh0ZAmXbv08CnFBtptecRk wsqvoFYd7RCLjzMWbg2sJgPN/5Gk X-Google-Smtp-Source: ABdhPJzv7xaWDTEBV1rZH1XeAESatlcJ9cGPhcbqPhdmpgPnMIM/brSrXciFFVdDwJ6SPZXX8+l24A== X-Received: by 2002:a0c:a953:: with SMTP id z19mr10678973qva.233.1595019705629; Fri, 17 Jul 2020 14:01:45 -0700 (PDT) Received: from localhost.localdomain ([191.84.229.34]) by smtp.gmail.com with ESMTPSA id d53sm12102503qtc.47.2020.07.17.14.01.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2020 14:01:44 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Jul 2020 18:01:05 -0300 Message-Id: <20200717210105.14661-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/libaomenc: use pix_fmt descriptors where useful X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: James Almer --- libavcodec/libaomenc.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index 0d6a376ef0..b65e491824 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -299,7 +299,8 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, aom_img_fmt_t *img_fmt) { AOMContext av_unused *ctx = avctx->priv_data; - enccfg->g_bit_depth = enccfg->g_input_bit_depth = 8; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); + enccfg->g_bit_depth = enccfg->g_input_bit_depth = desc->comp[0].depth; switch (avctx->pix_fmt) { case AV_PIX_FMT_YUV420P: enccfg->g_profile = FF_PROFILE_AV1_MAIN; @@ -317,8 +318,6 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, case AV_PIX_FMT_YUV420P10: case AV_PIX_FMT_YUV420P12: if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH) { - enccfg->g_bit_depth = enccfg->g_input_bit_depth = - avctx->pix_fmt == AV_PIX_FMT_YUV420P10 ? 10 : 12; enccfg->g_profile = enccfg->g_bit_depth == 10 ? FF_PROFILE_AV1_MAIN : FF_PROFILE_AV1_PROFESSIONAL; *img_fmt = AOM_IMG_FMT_I42016; @@ -329,8 +328,6 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, case AV_PIX_FMT_YUV422P10: case AV_PIX_FMT_YUV422P12: if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH) { - enccfg->g_bit_depth = enccfg->g_input_bit_depth = - avctx->pix_fmt == AV_PIX_FMT_YUV422P10 ? 10 : 12; enccfg->g_profile = FF_PROFILE_AV1_PROFESSIONAL; *img_fmt = AOM_IMG_FMT_I42216; *flags |= AOM_CODEC_USE_HIGHBITDEPTH; @@ -342,10 +339,6 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, case AV_PIX_FMT_GBRP10: case AV_PIX_FMT_GBRP12: if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH) { - enccfg->g_bit_depth = enccfg->g_input_bit_depth = 10; - if (avctx->pix_fmt == AV_PIX_FMT_YUV444P12 || - avctx->pix_fmt == AV_PIX_FMT_GBRP12) - enccfg->g_bit_depth = enccfg->g_input_bit_depth = 12; enccfg->g_profile = enccfg->g_bit_depth == 10 ? FF_PROFILE_AV1_HIGH : FF_PROFILE_AV1_PROFESSIONAL; *img_fmt = AOM_IMG_FMT_I44416; @@ -543,6 +536,7 @@ static av_cold int aom_init(AVCodecContext *avctx, const struct aom_codec_iface *iface) { AOMContext *ctx = avctx->priv_data; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); struct aom_codec_enc_cfg enccfg = { 0 }; #ifdef AOM_FRAME_IS_INTRAONLY aom_codec_flags_t flags = @@ -754,8 +748,7 @@ static av_cold int aom_init(AVCodecContext *avctx, if (ctx->tune >= 0) codecctl_int(avctx, AOME_SET_TUNING, ctx->tune); - if (avctx->pix_fmt == AV_PIX_FMT_GBRP || avctx->pix_fmt == AV_PIX_FMT_GBRP10 || - avctx->pix_fmt == AV_PIX_FMT_GBRP12) { + if (desc->flags & AV_PIX_FMT_FLAG_RGB) { codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, AVCOL_PRI_BT709); codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, AVCOL_SPC_RGB); codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, AVCOL_TRC_IEC61966_2_1);