From patchwork Tue Nov 14 00:01:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Zern X-Patchwork-Id: 6035 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp2692973jah; Mon, 13 Nov 2017 16:01:27 -0800 (PST) X-Google-Smtp-Source: AGs4zMYgayu4JwpmSdAPmJpBP2qeu1stMlqYd334RpVZ2zKQ8DA4rX+pkuN3OH80ZKJIOryiGCvJ X-Received: by 10.223.187.140 with SMTP id q12mr2389686wrg.148.1510617687169; Mon, 13 Nov 2017 16:01:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510617687; cv=none; d=google.com; s=arc-20160816; b=yT2WFGF6/wSgwapzz6MksAX0yIC57loGFebc6It4JNzYKmfb7ZBoJuOSEqaTK9ornH nnmXGBm5Ry8D246Fwmm9injJWK+uyA3oIiqzKgIOa8O34WKnEGmeiwdQBsT8t4PR9cQV Jf04wkVpZ2rXJnXYteF0eqWC0yHuro/WkVCEfrbY9N4J6k6pvOIsM+RCDvPrQ77EUR/P Vl/1tOmk//AIPJAcFQOI2PIvcj/DCxaxv0gYrYh2yqqAByWdga/TDVcZPRlSbUjs76GF rHYMx0eQh73+zagL6/f9Fqr1+ktkXUaSqSoLEMH9oXchDDXZjjTp158704im1snGnWQR MFoA== 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=dO/GZrHTPmwGS+BPTXwxozqz61vrHLcgxcaRVmjy23E=; b=kfKPHzsJwY4pAloE3NOLQ2HFuZ6nThTVQqX5MK5x+dykzgb7R66lFtSDxKWdbC7gjH XS6wj+GuYSnF84eD/Za8n9knMYaIthdU8x+G28QX3wN34K2QEgUAC96olVC3KRCYNmj8 ZMjSSrLevbB01X8jMUjnHAC+z+xn9eLNtAUKtLhNG4+zQDeGQqZ6MJ3R6TQb31WFLhIX HBr3EeOdjhqQeSXOWFbGCIVnOTHSOT12faj3hoDJKEdAakgQxcySETSmTSB0YTFVAuCZ 5HQZoe2ZbvvUPdPUiQZyfnHRKVdUnQte0qQ9/02O5GEuXF4KVbcKdnZG5kGXJeJzgPRD WuZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=LvyuPWnD; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y15si14817304wry.86.2017.11.13.16.01.26; Mon, 13 Nov 2017 16:01:27 -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=@google.com header.s=20161025 header.b=LvyuPWnD; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4DEEB68A62E; Tue, 14 Nov 2017 02:01:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f195.google.com (mail-pf0-f195.google.com [209.85.192.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB01268A5C4 for ; Tue, 14 Nov 2017 02:01:03 +0200 (EET) Received: by mail-pf0-f195.google.com with SMTP id q4so4895808pfg.13 for ; Mon, 13 Nov 2017 16:01:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:subject:date:message-id; bh=IEnTP/AduysLni6VOBz4KdXhUeUJ142frCk3VcMm8dM=; b=LvyuPWnDp3/drqpTR2n2jEH2v4j0JtrUDJ+SqWUuM0EaNkE6lZ/sQl70jPdHP9IxsR jK5hv0qBdUqFr4cjS4kJGmGhlVIq+1FTmvis/0jjez+qrvawQBFK7F6wvcx57AhtmrJl +PywTR2ClyKcQxAKWp3feGaLVnyrF26XBdn+h18+0bkyabzBWZtmG09JN/c0TfR8mr0m 8gipnaC5rosZU1Tk1Anhz25ut9MOxmFRB1FSsNPYDMzWqR42BPK+CDwCTO/sgS2VSVtA 6ZS7OGv6GBUqIgXXZ/S1tLEPmkO3d/31yj4ViRQWLXZYq4vqhQeTYSMPux1xcwuCGWLi dLHg== 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=IEnTP/AduysLni6VOBz4KdXhUeUJ142frCk3VcMm8dM=; b=OKpZ5P6Fi3rsV0oyqI5GH56U4q9s9tSI1CvLP8QV/NLH0Y3m8LOb/wGXkLxsiuYaW1 oCNTa5GXlcDMIyfEcPXN6YQd9DSOotuUuEIQW3+4phG8GOHUXEhxD71PpVQ6KYtiye65 nfqsTPGSIRGiVmz9ReQR1N6T2I4ztl9JHaa8GPHqPaV40o9xVsF0XCrQjXYQz15slYvX gXPwjaI70nPyDW0/BgKq3NfrJCXGClGeTTdvo+eKqaMv13iAaX8HQWfY6TaJZ9UhErQc VzLK7h27caRm81XK8yEwQ7DUp5LZDS4EO4mCD6tcLU4Q9JDAvB8bZuKqdRywypbtoAXv 9/Ew== X-Gm-Message-State: AJaThX7Cqq5+FIAfgzn3kCeYsrF4jG+8Ca9AAawyLOf+7EOnKsND2qHJ pkPERjdlWy7sc/xIsGAWrGDc7cuNpqM= X-Received: by 10.98.36.199 with SMTP id k68mr9595365pfk.236.1510617676028; Mon, 13 Nov 2017 16:01:16 -0800 (PST) Received: from jzern.mtv.corp.google.com ([172.18.84.226]) by smtp.gmail.com with ESMTPSA id e22sm27901439pgn.28.2017.11.13.16.01.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Nov 2017 16:01:15 -0800 (PST) Received: by jzern.mtv.corp.google.com (Postfix, from userid 105886) id 85B0B8081C; Mon, 13 Nov 2017 16:01:14 -0800 (PST) From: James Zern To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Nov 2017 16:01:14 -0800 Message-Id: <20171114000114.177470-1-jzern@google.com> X-Mailer: git-send-email 2.15.0.448.gf294e3d99a-goog Subject: [FFmpeg-devel] [PATCH] lavc/libvpxenc: add tune-content option 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" Signed-off-by: James Zern --- doc/encoders.texi | 2 ++ libavcodec/libvpxenc.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index 431777c457..23451b7b92 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -1681,6 +1681,8 @@ colorspaces: @end table @item row-mt @var{boolean} Enable row based multi-threading. +@item tune-content +Set content type: default (0), screen (1), film (2). @end table @end table diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index d720301cd1..fbb842499b 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -109,6 +109,7 @@ typedef struct VPxEncoderContext { int vpx_cs; float level; int row_mt; + int tune_content; } VPxContext; /** String mappings for enum vp8e_enc_control_id */ @@ -143,6 +144,9 @@ static const char *const ctlidstr[] = { #ifdef VPX_CTRL_VP9E_SET_ROW_MT [VP9E_SET_ROW_MT] = "VP9E_SET_ROW_MT", #endif +#ifdef VPX_CTRL_VP9E_SET_TUNE_CONTENT + [VP9E_SET_TUNE_CONTENT] = "VP9E_SET_TUNE_CONTENT", +#endif #endif }; @@ -709,6 +713,10 @@ FF_ENABLE_DEPRECATION_WARNINGS #ifdef VPX_CTRL_VP9E_SET_ROW_MT if (ctx->row_mt >= 0) codecctl_int(avctx, VP9E_SET_ROW_MT, ctx->row_mt); +#endif +#ifdef VPX_CTRL_VP9E_SET_TUNE_CONTENT + if (ctx->tune_content >= 0) + codecctl_int(avctx, VP9E_SET_TUNE_CONTENT, ctx->tune_content); #endif } #endif @@ -1139,6 +1147,18 @@ static const AVOption vp9_options[] = { #endif #ifdef VPX_CTRL_VP9E_SET_ROW_MT {"row-mt", "Row based multi-threading", OFFSET(row_mt), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, +#endif +#ifdef VPX_CTRL_VP9E_SET_TUNE_CONTENT +#if VPX_ENCODER_ABI_VERSION >= 14 + { "tune-content", "Tune content type", OFFSET(tune_content), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 2, VE, "tune_content" }, +#else + { "tune-content", "Tune content type", OFFSET(tune_content), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, VE, "tune_content" }, +#endif + { "default", "Regular video content", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 0, VE, "tune_content" }, + { "screen", "Screen capture content", 0, AV_OPT_TYPE_CONST, {.i64 = 1}, 0, 0, VE, "tune_content" }, +#if VPX_ENCODER_ABI_VERSION >= 14 + { "film", "Film content; improves grain retention", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, 0, 0, VE, "tune_content" }, +#endif #endif LEGACY_OPTIONS { NULL }