From patchwork Thu Mar 29 20:01:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 8226 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp2086806jad; Thu, 29 Mar 2018 13:01:39 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+abnv6FBJyP/GYQ5ztnJUk562kBZDMDBhfoEmAp/Q0DyEo7ROJqoRqQ+xUowVcQ4JNlD6z X-Received: by 10.28.63.2 with SMTP id m2mr246140wma.158.1522353699838; Thu, 29 Mar 2018 13:01:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522353699; cv=none; d=google.com; s=arc-20160816; b=TXni/73ieQOPSyZ0cxqkRLXS0YSiU6dtcpySz8usfREBDVvp5oo4IQc3TL/EAIkdB+ JbhLCZwHRrsRVduO4Gz1sUH5W2KyMDCLo8mp4W4O/vhZQfDlAsQE8b/N0TIE49uxFSIc +Eyt72VLi9nUHDxJ/ZF1AknwNlLTncr/9BCR6uIH1B2jgJuWrZDyyizG2161/B+fEQZE TPeSzkFmqqw75jZVXfV3jwQgoeSw+bebdNZXQYJgbLGJe/5KGQ9qWXyQO7r4Kt/otxTC 21zbXoetxKvfEvZl/+WPm5Dm+44VxqWXCM1uxi/4iDSlEvtP8tnhBOUBqGF7Iw7WtPq4 h8ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=XvY/UvyF5kpRk7hJ1Qzi5878UtJRlgt4HVW47gTHffA=; b=ZG44xDpFfW4NB6j9+vLR6ZKz13mPoKo7EvyovvHHFTxDueWUS9zmiPnYkshPVCa4wW gKOzWIvEkYKQYi2E6ddPkyoYXZDKFof8vskiCReh3QUqiAvBjlvPGPRvjusHg8l264+/ IcKD1Sj+UuvzMBi/SyHFPFU6ZGUqCY20pbACTXXk3udrgnmEYgc8ahnT0/AiXlDbg+5m FozmRM8tko3iHond3VazjAVFRigNvzreG/VEiV+nlwKh/rZDLdroEZd+W+Rk5OqKWYLi lxnzyaXGn4/qzuuH4f6HokQBzkp0qF6yhO9ExsXMbk420ss318bj9dd8JujtaDaoWQxx sX7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=W0Mesick; 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=QUARANTINE dis=NONE) header.from=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 r2si1763352wmc.218.2018.03.29.13.01.38; Thu, 29 Mar 2018 13:01:39 -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=@gmail.com header.s=20161025 header.b=W0Mesick; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 68372689D4F; Thu, 29 Mar 2018 23:01:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DF99A680164 for ; Thu, 29 Mar 2018 23:01:16 +0300 (EEST) Received: by mail-qt0-f196.google.com with SMTP id f8so7484088qtg.12 for ; Thu, 29 Mar 2018 13:01:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=9pMFTlgIIwmYx7S9WID6y0vbx/fn5uWZRR2nvFFrUB4=; b=W0Mesick/vaEIvnzq0HH592lQX2hB9K/Mlr0aapQGYEYdKtsYRmQCi/uhMv+ClR2Gx P0Y5DR0TyZvvWeYUhfWGodsOy4RHvSuZz/p56ZSBuUs6NndSoax7Uy5zzxYa89uFo1ft MGrUUrZJ2gjlxQZ7v/s/HTW0lx4xeV/vaUgqc4s5/+w99/QK7HDeIc27BA77yJSH33Yk Binf2G5+nP39qdbF0h2p/+NQAHMPKxtK1rWa/CI3A1HsFA+cYdzvDt5DtLkgTkdDJ99+ +bLnmj9vUHdx3d9aCRDLy6GC7J1CY3k29bAQiejTFKTF1xfQ5Tt/IIB+W41sPkaTD6Cj mgAg== 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; bh=9pMFTlgIIwmYx7S9WID6y0vbx/fn5uWZRR2nvFFrUB4=; b=DP5nm/zrhU/YKhYjrqaDJ/48lVPRu37kaay+n4aVE7ke8up1BfWiLmitXZ7sumJDDo OtYaguc/pAXaYS1dgeDdh2vjQcUrQV4qSUZOvDEj4UDsKGQtfOsTlNwbI25VoRgQ971b xdI1Wl3pknxTdKsSJOoMxVbtjMwjNxJ46I6ENsEiLRsSEtT8aXEfO+oL/hFTIJSrFJC8 jnMhXGTZz3ndrMRiQCYcFj0p5/8ThcG2cNRKQRvMrrIJsoc6oSqV6tfwd/u0XqC/Enu4 Zvl3eVcrZXoGN9QpjvkqBmZTzypVHyimxqEJSd1Jbbldkb4DwiJUU3g3Pm0LtE785NTF 7xJQ== X-Gm-Message-State: AElRT7H+VCYNntfbBjSG2qC36sjAEHVq7oj8sXWZXSwfO5cxmDytFnoJ LAyNsf6IgzFDaHqtNdx1AwfQ4g== X-Received: by 10.200.54.200 with SMTP id b8mr13089915qtc.191.1522353693817; Thu, 29 Mar 2018 13:01:33 -0700 (PDT) Received: from localhost.localdomain ([190.188.171.140]) by smtp.gmail.com with ESMTPSA id 12sm5076522qkf.64.2018.03.29.13.01.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 13:01:33 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Mar 2018 17:01:09 -0300 Message-Id: <20180329200109.9492-1-jamrial@gmail.com> X-Mailer: git-send-email 2.16.2 Subject: [FFmpeg-devel] [PATCH] avcodec/libaomenc: add support for AQ-mode setting 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Ported and adapted from the libvpx encoder wrapper. Signed-off-by: James Almer --- libavcodec/libaomenc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index f075bf4de7..67c9d5678c 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -66,6 +66,7 @@ typedef struct AOMEncoderContext { int static_thresh; int drop_threshold; int noise_sensitivity; + int aq_mode; } AOMContext; static const char *const ctlidstr[] = { @@ -73,6 +74,7 @@ static const char *const ctlidstr[] = { [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL", [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF", [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD", + [AV1E_SET_AQ_MODE] = "AV1E_SET_AQ_MODE", [AV1E_SET_COLOR_RANGE] = "AV1E_SET_COLOR_RANGE", [AV1E_SET_COLOR_PRIMARIES] = "AV1E_SET_COLOR_PRIMARIES", [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS", @@ -449,6 +451,8 @@ static av_cold int aom_init(AVCodecContext *avctx, codecctl_int(avctx, AOME_SET_STATIC_THRESHOLD, ctx->static_thresh); if (ctx->crf >= 0) codecctl_int(avctx, AOME_SET_CQ_LEVEL, ctx->crf); + if (ctx->aq_mode >= 0) + codecctl_int(avctx, AV1E_SET_AQ_MODE, ctx->aq_mode); codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries); codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace); @@ -708,6 +712,11 @@ static const AVOption options[] = { "by the bool decoder, meaning that partitions can be decoded even " "though earlier partitions have been lost. Note that intra predicition" " is still done over the partition boundary.", 0, AV_OPT_TYPE_CONST, {.i64 = AOM_ERROR_RESILIENT_PARTITIONS}, 0, 0, VE, "er"}, + { "aq-mode", "adaptive quantization mode", OFFSET(aq_mode), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 3, VE, "aq_mode"}, + { "none", "Aq not used", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 0, VE, "aq_mode" }, + { "variance", "Variance based Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 1}, 0, 0, VE, "aq_mode" }, + { "complexity", "Complexity based Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, 0, 0, VE, "aq_mode" }, + { "cyclic", "Cyclic Refresh Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 3}, 0, 0, VE, "aq_mode" }, { "crf", "Select the quality for constant quality mode", offsetof(AOMContext, crf), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 63, VE }, { "static-thresh", "A change threshold on blocks below which they will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, { "drop-threshold", "Frame drop threshold", offsetof(AOMContext, drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },