From patchwork Thu Jan 23 00:08:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 17479 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 6CA0E448582 for ; Thu, 23 Jan 2020 12:26:13 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E27C68B12C; Thu, 23 Jan 2020 12:26:13 +0200 (EET) 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 BB49368A75D for ; Thu, 23 Jan 2020 02:39:54 +0200 (EET) Received: by mail-qv1-f68.google.com with SMTP id l14so677559qvu.12 for ; Wed, 22 Jan 2020 16:39:54 -0800 (PST) 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=RmnVe7Gk+cZp4gMCPSna+l+cQd/MBZUJITztkGxJHno=; b=GdL21I/xniOMrfKV/BDU0U/7JasRggTaVaPtfydpfGZDQDVc7leTzaV4dsFkc6RAtU e1Z31IG9fHTFunZA28hx2Be3dSO/Yl6L/wS8Az92Onlx6C30cHfebGgGmO3ovXm2T8jk kW4kiTDNGBgIk5KNkLm6jawgn3qFxRgp1R3Uz5I5bJScEUrOlVvMMkrb7TfLRVvEqvLq NlOqPijStFVjz+dvdKtJlGK+cY7EIw2bP8HT5oYMTwFGPK4J7o8a3MbKXtwbH5f1oeSh JGxVeJDEYSKqAuEmZDsSDDj+21Lqb27Qv/kEEz/D7D1jrvVbup+3P8AJ3IiNLNJCZu+q Sd9A== 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=RmnVe7Gk+cZp4gMCPSna+l+cQd/MBZUJITztkGxJHno=; b=Qup5xLVrqZ6zOS9VfT6U1/MNw8A4uF5Puk4zxpnt0zRzc0KonY0BcWcy6R4OWsQtyp PCxGgR9nsMS4BJs3JeRF9oWi9Z8wFJK4F6tZ5BWXflAyuOET/xPRpXK0xa5sy4YXMg1A 8fMJV+7rNllWfntO04jP4BIVSt0+h7MkYaLBcqsbsRh/juRNUAk/At3smOgX6R7KYlJ3 NMkPoc+gSPTeXBdRIt6fd44rInCU7wqdWwt8SnGj6Xt4ATir60MM7oG6wNChkMgvKH7z N/dIFq/o8DDGQvwHxURf7b0ULcKJe9EiuIXNB+VBWckkZlX5FykMo56YBz446aFnujhd PEOA== X-Gm-Message-State: APjAAAVPGx8yNOAOdtZVEbsfrf2cgumm+bitrAF+JGgt0jNaMXfrWAyR Oy8vBcckfWMLwSToQuxdtHfWHian X-Google-Smtp-Source: APXvYqzuIsztZMqITjpYzKng6tXpgYU+c3H5wRx2idr9Fpe0HY/0FRatWA1JSO6OOkjQZsX1+zhWaQ== X-Received: by 2002:a0c:ebcf:: with SMTP id k15mr13634618qvq.217.1579738208816; Wed, 22 Jan 2020 16:10:08 -0800 (PST) Received: from localhost.localdomain ([191.83.216.198]) by smtp.gmail.com with ESMTPSA id d9sm133917qth.34.2020.01.22.16.10.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jan 2020 16:10:08 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Jan 2020 21:08:43 -0300 Message-Id: <20200123000843.377-1-jamrial@gmail.com> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/libaomenc: add an option to set the encoder "usage" 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" This allows the user enable the realtime encoding speed mode Signed-off-by: James Almer --- The g_usage field is present since 1.0.0, but the AOM_USAGE_* defines were introduced with the real time mode about a year ago. Builds before that addition simply ignore the field. libavcodec/libaomenc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index c36313bf9d..096aadbe1c 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -93,6 +93,7 @@ typedef struct AOMEncoderContext { int enable_global_motion; int enable_intrabc; int enable_restoration; + int usage; } AOMContext; static const char *const ctlidstr[] = { @@ -551,6 +552,8 @@ static av_cold int aom_init(AVCodecContext *avctx, enccfg.g_threads = FFMIN(avctx->thread_count ? avctx->thread_count : av_cpu_count(), 64); + enccfg.g_usage = ctx->usage; + if (ctx->lag_in_frames >= 0) enccfg.g_lag_in_frames = ctx->lag_in_frames; @@ -1090,6 +1093,9 @@ static const AVOption options[] = { { "enable-global-motion", "Enable global motion", OFFSET(enable_global_motion), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, { "enable-intrabc", "Enable intra block copy prediction mode", OFFSET(enable_intrabc), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, { "enable-restoration", "Enable Loop Restoration filtering", OFFSET(enable_restoration), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, + { "usage", "Quality and compression efficiency vs speed tradeof", OFFSET(usage), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "usage"}, + { "good", "Good quality", 0, AV_OPT_TYPE_CONST, {.i64 = 0 /* AOM_USAGE_GOOD_QUALITY */}, 0, 0, VE, "usage"}, + { "realtime", "Realtime encoding", 0, AV_OPT_TYPE_CONST, {.i64 = 1 /* AOM_USAGE_REALTIME */}, 0, 0, VE, "usage"}, { NULL }, };