From patchwork Mon Nov 28 18:34:03 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Converse X-Patchwork-Id: 1584 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp1992167vsb; Mon, 28 Nov 2016 10:34:30 -0800 (PST) X-Received: by 10.28.154.86 with SMTP id c83mr19864570wme.23.1480358070199; Mon, 28 Nov 2016 10:34:30 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 67si27065321wmt.21.2016.11.28.10.34.29; Mon, 28 Nov 2016 10:34:30 -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=@gmail.com; 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 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 70698689B4A; Mon, 28 Nov 2016 20:34:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f196.google.com (mail-pf0-f196.google.com [209.85.192.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CE558680D52 for ; Mon, 28 Nov 2016 20:34:14 +0200 (EET) Received: by mail-pf0-f196.google.com with SMTP id 144so6863355pfv.0 for ; Mon, 28 Nov 2016 10:34:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gMuvCuXcSWuUeymhjPslFnk4TXzdC1Xd2XROrW1mQFA=; b=CJDTUTVFkfWF2si2DdpzEghITKZmDKwmg1FNtxbH15pWqJPGs3yFSQERPKN5P4QRmB v17I08omcqnXXZQFj1NDwVhaDl8Rhpnx8rZlbNx0hSrw6sKmJc2CecS0l5R1RO8xtIms 6novC6rCSktlwG3/yV9TUG/QSHtZXu6TO75OknSAoiydOOclHA+O1EKQZoGja0h7whnd rxmlvcVr6HVqNctbGPjLTdH1SxaBXdnmA5U8jBdwuG+6ptJaUcIG3jducKPDO9bez8hl j1X/RXRIwGyKazr3b84e4JzASVa4I72YXP/Hgu18XlV7zGW52fEQAS60CzY27ejUIYTc +JtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=gMuvCuXcSWuUeymhjPslFnk4TXzdC1Xd2XROrW1mQFA=; b=W8zwBQAYQMTMULWRP+EZwbzwOC/DQECiau+vRoJ6TY3OPVUNKe8udo8LeuIh9ZuFw/ E9bKZyMbfguCG91hTLTw97Agvk/ffBa1VwDwFf4cKg3GVIDFcI3gX2aB8V6A2uwLE0AE eC6R+Z/tCT+LmoK6K0F+qCdcl4G4i2Z/bG/Co7QtQyv9lDdM9rHzWPrCaSqZdgxRIMaR w6TU3z119ml4lyVS2KEa5fQzUOePehr17FRQ7U8pd9qiiKA2QCHwumfcP96TcnTtABiV pY3ntLu66laBgc7GfCKIUUNjUZ5W2mx3nYY7KcgSR7qHiIPqIvPZdNKXf1lDVfrOH2gM SX5A== X-Gm-Message-State: AKaTC00R90yeJlggS8HgzbP+7MrmK+Pgtre4AEiat4cs2R0xSZjV0ahRwFs8Ob6rSWjNUA== X-Received: by 10.99.116.25 with SMTP id p25mr42159075pgc.161.1480358058679; Mon, 28 Nov 2016 10:34:18 -0800 (PST) Received: from terok.mtv.corp.google.com ([172.22.116.121]) by smtp.gmail.com with ESMTPSA id b126sm88961181pfg.90.2016.11.28.10.34.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 28 Nov 2016 10:34:17 -0800 (PST) From: Alex Converse To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Nov 2016 10:34:03 -0800 Message-Id: <1480358043-24521-1-git-send-email-alex.converse@gmail.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: References: Subject: [FFmpeg-devel] [PATCH] libvpxenc: Report encoded VP9 level 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: Alex Converse MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Report the actual level of the encoded output if a level is targeted or the level is passively tracked with a target of 0. --- libavcodec/libvpxenc.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 51f423a..1325199 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -137,6 +137,7 @@ static const char *const ctlidstr[] = { #endif #if VPX_ENCODER_ABI_VERSION >= 12 [VP9E_SET_TARGET_LEVEL] = "VP9E_SET_TARGET_LEVEL", + [VP9E_GET_LEVEL] = "VP9E_GET_LEVEL", #endif #endif }; @@ -264,10 +265,41 @@ static av_cold int codecctl_int(AVCodecContext *avctx, return res == VPX_CODEC_OK ? 0 : AVERROR(EINVAL); } +#if VPX_ENCODER_ABI_VERSION >= 12 +static av_cold int codecctl_intp(AVCodecContext *avctx, + enum vp8e_enc_control_id id, int *val) +{ + VPxContext *ctx = avctx->priv_data; + char buf[80]; + int width = -30; + int res; + + snprintf(buf, sizeof(buf), "%s:", ctlidstr[id]); + av_log(avctx, AV_LOG_DEBUG, " %*s%d\n", width, buf, *val); + + res = vpx_codec_control(&ctx->encoder, id, val); + if (res != VPX_CODEC_OK) { + snprintf(buf, sizeof(buf), "Failed to set %s codec control", + ctlidstr[id]); + log_encoder_error(avctx, buf); + } + + return res == VPX_CODEC_OK ? 0 : AVERROR(EINVAL); +} +#endif + static av_cold int vpx_free(AVCodecContext *avctx) { VPxContext *ctx = avctx->priv_data; +#if VPX_ENCODER_ABI_VERSION >= 12 + if (ctx->level >= 0 && !(avctx->flags & AV_CODEC_FLAG_PASS1)) { + int level_out = 0; + if (!codecctl_intp(avctx, VP9E_GET_LEVEL, &level_out)) + av_log(avctx, AV_LOG_INFO, "Encoded level %.1f\n", level_out * 0.1); + } +#endif + vpx_codec_destroy(&ctx->encoder); if (ctx->is_alpha) vpx_codec_destroy(&ctx->encoder_alpha);