From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4DDE042F80 for ; Mon, 16 May 2022 20:49:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78DEA68B417; Mon, 16 May 2022 23:49:40 +0300 (EEST) Received: from mail-yb1-f171.google.com (mail-yb1-f171.google.com [209.85.219.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2925868B3BB for ; Mon, 16 May 2022 23:49:34 +0300 (EEST) Received: by mail-yb1-f171.google.com with SMTP id o80so9337073ybg.1 for ; Mon, 16 May 2022 13:49:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=HUjTiklpK1AnU+foZ8URrA9FyZCcLr9yGa/vnQHLhMM=; b=owdETmEFlwwyHXdXGfcNXPNTUK8HAVlaXP/J4TckCqYfDxcWGhSqt2NaGUA+1KjJ8m LDWSQ5nOolTS4CbNY12yxOj9HQn/CjP9EYGzMez0Jt19CJ6KTzdhKMQX82KQVl/Vc3YB KXrUbffrGArWcxV1fk6mbKspfSIjaUt+f26u7I4wg5diZVeZsV45A+sTArgjbpam4V52 cRup/QIKL7K1ksW+YydEiU0ny7HR8uoDLkcpJ8muKYV4bjuOM+0VY1m3eZrAlj6j/YYk NjYfs4NQ/5I7hDpeBwPZV7weGPqDRfrF3J4njwGt4rxoNXODEDwwHABkpud4rQGGn072 mA3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=HUjTiklpK1AnU+foZ8URrA9FyZCcLr9yGa/vnQHLhMM=; b=JrnNg3WETTKEG+pjv4QKhbmNhR3VglV+L+ABBlWmcWzXybZHh9L4k7n8QMgVt20zLR bpS7XSUAKTHj8Eq1CQIr/p40KnVz59uasnAF/kycMmgT/W+6k0w1DFZRyEfvUvtNvyBr P3JvFKSOKAF+bhtTSQvpVYLagN2JZhLs2i+QBta8a+QYlG/1GXfZnrd6welUNMSQiYhl X/DOKPBsT00tmlS6X2Rf2C89ZKkn95mamNt0t385K/HUdzTslH6nwANoXT/HFYqx1F+i PbF+Q+53Aio1sSW5J4mCMcorSOu4jo5VL2KhKY6MIF6hjCXKObUCOOdrKli+WK+byGL+ knPA== X-Gm-Message-State: AOAM5315cYQhuwUjmjth1CCci5XCtC2AMAlEbw19DbmywdJwiiRh3Rpn YBNhxKSNsb5cwjV00znqDMoq7MDQ6dTH8+RCLTElNAjupL0= X-Google-Smtp-Source: ABdhPJw68IcHGBbSzUd1rBhBjwQoeVQE+SG1iEQ7tAy0mYuFo1x6hcxN7clASaG4JBP1TMABK0ao7ulu0GhxekRnij8= X-Received: by 2002:a25:e6ce:0:b0:64d:731f:7c14 with SMTP id d197-20020a25e6ce000000b0064d731f7c14mr11103495ybh.436.1652734171935; Mon, 16 May 2022 13:49:31 -0700 (PDT) MIME-Version: 1.0 References: <20220419170324.3342219-1-bohanli@google.com> <20220419181850.3392814-1-bohanli@google.com> In-Reply-To: From: Bohan Li Date: Mon, 16 May 2022 13:48:56 -0700 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v2] avcodec/libaomenc: Add unmet target level warning X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Another ping :) On Fri, Apr 29, 2022 at 2:46 PM Bohan Li wrote: > Gentle ping on this :) > > On Tue, Apr 19, 2022 at 11:20 AM Bohan Li wrote: > >> When target levels are set, this patch checks whether they are >> satisfied by libaom. If not, a warning is shown. Otherwise the output >> levels are also logged. >> >> This patch applies basically the same approach used for libvpx. >> >> Signed-off-by: Bohan Li >> --- >> libavcodec/libaomenc.c | 64 ++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 64 insertions(+) >> >> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c >> index 054903e6e2..77be56fa51 100644 >> --- a/libavcodec/libaomenc.c >> +++ b/libavcodec/libaomenc.c >> @@ -198,6 +198,12 @@ static const char *const ctlidstr[] = { >> [AV1E_SET_ENABLE_SMOOTH_INTERINTRA] = >> "AV1E_SET_ENABLE_SMOOTH_INTERINTRA", >> [AV1E_SET_ENABLE_REF_FRAME_MVS] = >> "AV1E_SET_ENABLE_REF_FRAME_MVS", >> #endif >> +#ifdef AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX >> + [AV1E_GET_SEQ_LEVEL_IDX] = "AV1E_GET_SEQ_LEVEL_IDX", >> +#endif >> +#ifdef AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX >> + [AV1E_GET_TARGET_SEQ_LEVEL_IDX] = >> "AV1E_GET_TARGET_SEQ_LEVEL_IDX", >> +#endif >> }; >> >> static av_cold void log_encoder_error(AVCodecContext *avctx, const char >> *desc) >> @@ -323,10 +329,68 @@ static av_cold int codecctl_int(AVCodecContext >> *avctx, >> return 0; >> } >> >> +#if defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ >> + defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX) >> +static av_cold int codecctl_intp(AVCodecContext *avctx, >> +#ifdef UENUM1BYTE >> + aome_enc_control_id id, >> +#else >> + enum aome_enc_control_id id, >> +#endif >> + int* ptr) >> +{ >> + AOMContext *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, *ptr); >> + >> + res = aom_codec_control(&ctx->encoder, id, ptr); >> + if (res != AOM_CODEC_OK) { >> + snprintf(buf, sizeof(buf), "Failed to set %s codec control", >> + ctlidstr[id]); >> + log_encoder_error(avctx, buf); >> + return AVERROR(EINVAL); >> + } >> + >> + return 0; >> +} >> +#endif >> + >> static av_cold int aom_free(AVCodecContext *avctx) >> { >> AOMContext *ctx = avctx->priv_data; >> >> +#if defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ >> + defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX) >> + if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) { >> + int levels[32] = { 0 }; >> + int target_levels[32] = { 0 }; >> + >> + if (!codecctl_intp(avctx, AV1E_GET_SEQ_LEVEL_IDX, levels) && >> + !codecctl_intp(avctx, AV1E_GET_TARGET_SEQ_LEVEL_IDX, >> + target_levels)) { >> + for (int i = 0; i < 32; i++) { >> + if (levels[i] > target_levels[i]) { >> + // Warn when the target level was not met >> + av_log(avctx, AV_LOG_WARNING, >> + "Could not encode to target level %d.%d for " >> + "operating point %d. The output level is >> %d.%d.\n", >> + 2 + (target_levels[i] >> 2), target_levels[i] >> & 3, >> + i, 2 + (levels[i] >> 2), levels[i] & 3); >> + } else if (target_levels[i] < 31) { >> + // Log the encoded level if a target level was given >> + av_log(avctx, AV_LOG_INFO, >> + "Output level for operating point %d is >> %d.%d.\n", >> + i, 2 + (levels[i] >> 2), levels[i] & 3); >> + } >> + } >> + } >> + } >> +#endif >> + >> aom_codec_destroy(&ctx->encoder); >> av_freep(&ctx->twopass_stats.buf); >> av_freep(&avctx->stats_out); >> -- >> 2.36.0.rc0.470.gd361397f0d-goog >> >> _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".