From patchwork Thu Jun 16 16:24:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wan-Teh Chang X-Patchwork-Id: 36257 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp1030157pzb; Thu, 16 Jun 2022 09:24:59 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uZT1DPEkbY8nbNUWG1fU1zKH3BNdi41pCud8D4O9o/LyPI8YGQC/AOzMR+sjpwLvx0j37i X-Received: by 2002:a05:6402:401f:b0:433:406a:82c2 with SMTP id d31-20020a056402401f00b00433406a82c2mr7539438eda.289.1655396699271; Thu, 16 Jun 2022 09:24:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655396699; cv=none; d=google.com; s=arc-20160816; b=aqxGJgKDvd7fILX3mNfd/rDSohjOL5qv5YfFy8V2BVs0A0tumO8fCa9IKq76ar13Vk VsWRHiabXJvW5AQwyJDSJ/FBzz5C0+1Zj8DjHCroV2jRNT3MR9zVCltcaIlRRLYbcAyd QzfuTR2AtWNxDW5ARB/yMhQDPz3PryX+rfxlO+yfT0ph229ipHwFr4r50mIp6uVBnkXl YOzOoOJtyzrYqG2hcs55UDIbeJbckYoYy/TV7XOei8y1eNKP+LvhF6UEwRd8hVo+h01G /lAi5fKjS1iNB6MazjyD2ZL27fYSXUc94xXSNwV3dZjC+gLiwQcOyl0PTR6q0SNtSA9G F4dQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:mime-version:message-id:date :dkim-signature:delivered-to; bh=tjAONNftHvz8HK+LTtgmH0bIfpfLQbX9hDHeCfCeo10=; b=FfvPfGe7E30FrK+NVzRmhFAvZFXJT0AVaftyNcoktCEQ1BECp7jRngOro7FCamFrha BBstktuaybnGLiXaBe0he0PXfgERKjbsPCcucILwaN7Ylg9nXTebR7h+4tb/ehzOazaB 9JQboRV52hztaZ6pcPuZUEvD8i6uPsitgfNMDB8F4cDKLYhPpb8Iigj+h9fGarlSh3k2 JtIHQE6evCXqYTvO6SIhRpnEw+1RlFOaSVgFTEhD7o3KLUVOCIrAA0IlzfhxsaIjoUfQ Uy6QmSC/+Q+s0mXmt21sVxHoOf/4TooWXjCTkthuDSBXSnO8dWC76RgvpwknoPL5VJV+ C7bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=bCeEPrjh; 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 e24-20020a170906749800b0070b92c4a2bcsi1895972ejl.218.2022.06.16.09.24.58; Thu, 16 Jun 2022 09:24:59 -0700 (PDT) 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=20210112 header.b=bCeEPrjh; 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 F40C868B7F3; Thu, 16 Jun 2022 19:24:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49F1768003A for ; Thu, 16 Jun 2022 19:24:50 +0300 (EEST) Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-31382419c22so16434497b3.18 for ; Thu, 16 Jun 2022 09:24:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc; bh=CgQOaUhx/ofxzubILEJDq7kVLciy1v4hM9bPpvD/5N8=; b=bCeEPrjh89PguB8lNEmjCSOvcXyo35D19NT8ZGCDjF0Up66GP4r3O9RLoVQ3UUbrSH FET+ylE/YlPqiBFjN6q7jTHN5y5kRpL1TXv2CnvOYFmS94K7VQ9qPpzOKIi45TYdQwia ks5hIxqP5UHdWCG52bOf1Ods+Qoufwp+/Y2tRVpJRRCQA8Tid67bpiuaX/xOyHwAAOYc c3CD7KZ6t0GQxsbj61gDtqykAM+t5woeErjIIbV5mFdimzWlTDBGmxU4VgSxZHAlWzkI sMH7/lK6cMXw0iGHDGtKJxXSxS6LfmKEpAwLHlhq83dknZRTTraalLT5OstgyEohqSrN lDNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=CgQOaUhx/ofxzubILEJDq7kVLciy1v4hM9bPpvD/5N8=; b=r5u6K9Ib1LWRa0L/cN1icOzha9XNsKNXxWa0VXy7r7hiMBt/dKHAEnv/GUcTdMuUo1 boU2NJBUX8dW6QRp8PPCsz/52L6I39WCD/tJLzVT/3MNVIsycW5icnBqwghz3lQYSv/i EwN1Nw2UmeIvIogRQqoTuyw7Od8DN2zNHuwrwuhQJwmTA/Y9VUbpOJTJTaUzqdd/a+g7 H8eQ2Nfbjd8UTnJM/dEAC9MGsTRhS1Q4sL28vxfIpxisJzBcuFzpkqfWUoIP5Z7Wz6XT vX0DBfeNfmbScJI54MGAFwqXht4tS23LDFZ0vxy9KRM3B1sntLgrrvzzmzzPp5CemGOe iBTg== X-Gm-Message-State: AJIora8asSH4HG2PI9s1Bi7U05HpUxDizf93wnidJELsXb0dn88doWR6 tfwg6n7zFtKiwypDEQj08OyjmKh8G+2mos/orQ5otoHwsSQunUwSOIooNnLxI7+6Tez9H4YJI8e 7IMHsgNZLg21pxG/KW4Oy7ohWmGWDzhnaC72adqIM8vGIXJjy7Uj7EKA= X-Received: from wtc-linux.mtv.corp.google.com ([2620:0:1000:2511:4177:e43f:e0dd:e1da]) (user=wtc job=sendgmr) by 2002:a0d:d1c3:0:b0:313:eca0:bf42 with SMTP id t186-20020a0dd1c3000000b00313eca0bf42mr6606857ywd.369.1655396688728; Thu, 16 Jun 2022 09:24:48 -0700 (PDT) Date: Thu, 16 Jun 2022 09:24:22 -0700 Message-Id: <20220616162422.683655-1-wtc@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.36.1.476.g0c4daa206d-goog From: Wan-Teh Chang To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avcodec/libaomenc: Get number of operating points 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 Cc: jzern@google.com, Wan-Teh Chang , bohanli@google.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 9D1wLPRRuAfb Use the new codec control AV1E_GET_NUM_OPERATING_POINTS to get the number of operating points. This is the size of the output arrays of AV1E_GET_SEQ_LEVEL_IDX and AV1E_GET_TARGET_SEQ_LEVEL_IDX. Signed-off-by: Wan-Teh Chang --- libavcodec/libaomenc.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index 7865ae161f..6b7e426bfd 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -199,6 +199,9 @@ 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_NUM_OPERATING_POINTS + [AV1E_GET_NUM_OPERATING_POINTS] = "AV1E_GET_NUM_OPERATING_POINTS", +#endif #ifdef AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX [AV1E_GET_SEQ_LEVEL_IDX] = "AV1E_GET_SEQ_LEVEL_IDX", #endif @@ -330,7 +333,8 @@ static av_cold int codecctl_int(AVCodecContext *avctx, return 0; } -#if defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ +#if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \ + 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 @@ -364,16 +368,20 @@ static av_cold int aom_free(AVCodecContext *avctx) { AOMContext *ctx = avctx->priv_data; -#if defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ +#if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \ + 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 }; + int num_operating_points; + int levels[32]; + int target_levels[32]; - if (!codecctl_intp(avctx, AV1E_GET_SEQ_LEVEL_IDX, levels) && + if (!codecctl_intp(avctx, AV1E_GET_NUM_OPERATING_POINTS, + &num_operating_points) && + !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++) { + for (int i = 0; i < num_operating_points; i++) { if (levels[i] > target_levels[i]) { // Warn when the target level was not met av_log(avctx, AV_LOG_WARNING,