From patchwork Wed Dec 19 18:24:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rene Claus X-Patchwork-Id: 11476 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 D806744D6FE for ; Wed, 19 Dec 2018 20:24:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 091CE68AC27; Wed, 19 Dec 2018 20:24:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3486768AC04 for ; Wed, 19 Dec 2018 20:24:33 +0200 (EET) Received: by mail-pg1-f201.google.com with SMTP id f125so17316722pgc.20 for ; Wed, 19 Dec 2018 10:24:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=W616ktvOQhkvrNTk+M+LhmMs0CN7q+z9D7CbKHyR1Ds=; b=W5jryfeO6FgTT4ZDNaMxoERBHqOxrdVdug/+1B/Dvkz9aVu5XuDeisD8IiD8QAkVew +CKSzZNqu4c6vtb2N/T91Z8DdH2iZtEeGNb4LNlJcWOzxliNs5E91ffZ9e2a4CQHY1/p IxBaQ2Q2nbLHGd+jhvWyRN2fLHLhsU3j7SqmyYSvmTPFSP1a66Ikfc3Mz2LBcgqnmFr5 uuQfQGJdZo4CMMY7y/aLeXNlPAZEpRLIFwrOVwt8Cb8ihqb857rhnjLzlQuF++2aCQqu IDTgow3negnMOkds/ktRzoRDBGyefpE8YpelYvUrvM/09YrDcr5dwHxs8lH955r4Ke+P 3l/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=W616ktvOQhkvrNTk+M+LhmMs0CN7q+z9D7CbKHyR1Ds=; b=OCtmGDKOfta9MKSKUEIbsiYa8tGYqVHb0rDyIvj1dy5nKgJPXmktlDVzycVqTTwCX4 3ehMRQHvFjn04c92y2Y4XnzMcb8EYJF7vYsHm7ZKkTV4u5wW1s5+exSs3NN6CjXJ2zYn 10ySx9WcwY9JW6XErzIR26POyxslgRbgNsHW3ide0oSEE+u2bH+4iXWysLQ5asfZMHB8 KE36MggkWb2a02N7hQf9GEI6O6DNO8YvDcG5JtL1dWY6hs9ScnnKxo+QHshDk/y4JScE /dmbbZstVDOVc4FuAOJn1cj60z3dqTc9zPLxd0slDKsgVVFPotEmmNaDkcSmDT/vrYf0 J1Bg== X-Gm-Message-State: AA+aEWbLyAOu7TCdzQTkfkr8XFfkVUYzKdqkgQeRIDYo/klpbheKUdMX 94xorea2PKT1JFuct0o/9byzj3qjdU5pbzeQSkfhaaqjliWNtFEASwBr+ihcqRIoxXjPoX96tD+ nbmt4vBVdosquBAW4Jyy9NnHYWndVpfAtVNnGffixZQ+5hqmsHzYdX5sPdLU4yAg= X-Google-Smtp-Source: AFSGD/UC/s/Q2EY29dMCx8xCg7HpOuj2wJN1Yg00+Y5mKD5A4dNRcbiwpMj36upI60wOz2ViDvuY1UVp40w= X-Received: by 2002:a63:2114:: with SMTP id h20mr12218933pgh.38.1545243873614; Wed, 19 Dec 2018 10:24:33 -0800 (PST) Date: Wed, 19 Dec 2018 10:24:29 -0800 Message-Id: <20181219182429.247347-1-rclaus@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.20.1.415.g653613c723-goog From: Rene Claus To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avcodec/libvpxenc: add VP8/9 sharpness config 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 Cc: Rene Claus Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit adds configuration options to libvpxenc.c that can be used to tune the sharpness parameter of the loop filter for VP8 and VP9. Signed-off-by: Rene Claus --- doc/encoders.texi | 4 ++++ libavcodec/libvpxenc.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index ca3892d682..4d06bbe4bf 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -1767,6 +1767,10 @@ Set number of frames to look ahead for frametype and ratecontrol. @item error-resilient Enable error resiliency features. +@item sharpness @var{integer} +Set loop filter sharpness. +The valid range is [0, 7]. Default: 0 + @item VP8-specific options @table @option @item ts-parameters diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 39af586790..174e0b9b0e 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -115,6 +115,7 @@ typedef struct VPxEncoderContext { int tune_content; int corpus_complexity; int tpl_model; + int sharpness; } VPxContext; /** String mappings for enum vp8e_enc_control_id */ @@ -130,6 +131,7 @@ static const char *const ctlidstr[] = { [VP8E_SET_TUNING] = "VP8E_SET_TUNING", [VP8E_SET_CQ_LEVEL] = "VP8E_SET_CQ_LEVEL", [VP8E_SET_MAX_INTRA_BITRATE_PCT] = "VP8E_SET_MAX_INTRA_BITRATE_PCT", + [VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS", #if CONFIG_LIBVPX_VP9_ENCODER [VP9E_SET_LOSSLESS] = "VP9E_SET_LOSSLESS", [VP9E_SET_TILE_COLUMNS] = "VP9E_SET_TILE_COLUMNS", @@ -798,6 +800,8 @@ FF_ENABLE_DEPRECATION_WARNINGS if (ctx->tpl_model >= 0) codecctl_int(avctx, VP9E_SET_TPL, ctx->tpl_model); #endif + if (ctx->sharpness >= 0) + codecctl_int(avctx, VP8E_SET_SHARPNESS, ctx->sharpness); } #endif @@ -1251,6 +1255,7 @@ static const AVOption vp9_options[] = { #ifdef VPX_CTRL_VP9E_SET_TPL { "enable-tpl", "Enable temporal dependency model", OFFSET(tpl_model), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE }, #endif + { "sharpness", "Sharpness", OFFSET(sharpness), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 7, VE}, LEGACY_OPTIONS { NULL } };