From patchwork Wed Oct 21 00:11:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23128 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 1203F44B911 for ; Wed, 21 Oct 2020 03:43:54 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC49A68B758; Wed, 21 Oct 2020 03:43:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 87E8B68AA4D for ; Wed, 21 Oct 2020 03:43:47 +0300 (EEST) Received: by mail-qk1-f195.google.com with SMTP id q199so221366qke.10 for ; Tue, 20 Oct 2020 17:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=I9h0OW3tbEQOwwi+3VEdKmnwFx/IdS3nqAxsUmH8/hs=; b=V0fFFrwn2I5UdAq2ek/X1mm+P+zTPA09OPIoXc55b0phA9eMpKIvUAJhuaXyMOWjl3 FEnRNnDMLXxwyqiBxbVb1gyowKyx8lqIqIu3Xy4VTwQwx/t2CtXkv2zs9Mky+cZNiChp Nd/Tgf9rZtpET1Z5LUD1R4mtII9rZj78jozVHfn15zBDuvto66PrU0VbbOlJC6VQaM3I ppylDw2/X5DnQw/sreFuaHfR5ZpXum4BlM0Is3gCWpF5KMYk7I/tLxCAwRtxWCM1aE+P rw0Unhwn1rpz9vLXjzMaYTb6pOWsPHAbzcC1AQhnI2GJza7aIiWMpVSTA47zfoi3fOhO st6A== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=I9h0OW3tbEQOwwi+3VEdKmnwFx/IdS3nqAxsUmH8/hs=; b=MBQC/XtghgFCLIPoTHfnr3hsBRMjG87ITGG/5BYPMDWw8KWe6uITsWWSD+eCNmp/2z vzrwbkkVmyTJliqfwT5NglYzF+iJmbpl62CHVRVEBFQ0seXAglM9NGLEpXFa8/mQdbaa HWFWsoVq9K+wIndmAZJT/19fJPtSfbPAMq3iGuZ7JZfFq3poBnnSA8lF4h64I3IoWZRT tG4N4mEcBc9bmA89irhzGM6ilyJ+Zd/+kj5qxchs9bf7yo/YcFg8hZrKMkjFfMGBFGjI ZTz8oioT3/iCd08/VKYowxxIqCCc2tnbXohnUsKp8X4L4nbHIVtGUqfiA5q+rmHZHhcf NQ3w== X-Gm-Message-State: AOAM532Svpn1+ofnAXwxE8KGawY2xRnp6s+teQ2X29nN79gKFGjDD/KO eXs0XSBTuzsSMlKVO6I3ghYN0S965J8= X-Google-Smtp-Source: ABdhPJyLb4BPKW2Me8J934ctUlliyUSJii1anqE3HL7FLAU+qWAoW2kFFYhRp1brUIkgnfrWKPB0rw== X-Received: by 2002:ac8:4b51:: with SMTP id e17mr699045qts.15.1603239107152; Tue, 20 Oct 2020 17:11:47 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id p21sm205528qtf.5.2020.10.20.17.11.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 17:11:46 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Oct 2020 21:11:26 -0300 Message-Id: <20201021001126.14044-3-jamrial@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201021001126.14044-1-jamrial@gmail.com> References: <20201021001126.14044-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/av1dec: don't derive loop filter delta parameters 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is now handled by CBS. Signed-off-by: James Almer --- Alternative approach to "avcodec/av1dec: always update frame loop filter deltas using bitstream values" where CBS takes care of everything so this work doesn't have to be duplicated on all the modules that require it. libavcodec/av1dec.c | 60 --------------------------------------------- libavcodec/av1dec.h | 3 --- 2 files changed, 63 deletions(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index a0a279d65b..785beb6722 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -26,54 +26,6 @@ #include "internal.h" #include "profiles.h" -static void setup_past_independence(AV1Frame *f) -{ - f->loop_filter_delta_enabled = 1; - - f->loop_filter_ref_deltas[AV1_REF_FRAME_INTRA] = 1; - f->loop_filter_ref_deltas[AV1_REF_FRAME_LAST] = 0; - f->loop_filter_ref_deltas[AV1_REF_FRAME_LAST2] = 0; - f->loop_filter_ref_deltas[AV1_REF_FRAME_LAST3] = 0; - f->loop_filter_ref_deltas[AV1_REF_FRAME_GOLDEN] = -1; - f->loop_filter_ref_deltas[AV1_REF_FRAME_BWDREF] = 0; - f->loop_filter_ref_deltas[AV1_REF_FRAME_ALTREF2] = -1; - f->loop_filter_ref_deltas[AV1_REF_FRAME_ALTREF] = -1; - - f->loop_filter_mode_deltas[0] = 0; - f->loop_filter_mode_deltas[1] = 0; -} - -static void load_previous_and_update(AV1DecContext *s) -{ - uint8_t primary_frame, prev_frame; - - primary_frame = s->raw_frame_header->primary_ref_frame; - prev_frame = s->raw_frame_header->ref_frame_idx[primary_frame]; - memcpy(s->cur_frame.loop_filter_ref_deltas, - s->ref[prev_frame].loop_filter_ref_deltas, - AV1_NUM_REF_FRAMES * sizeof(int8_t)); - memcpy(s->cur_frame.loop_filter_mode_deltas, - s->ref[prev_frame].loop_filter_mode_deltas, - 2 * sizeof(int8_t)); - - if (s->raw_frame_header->loop_filter_delta_update) { - for (int i = 0; i < AV1_NUM_REF_FRAMES; i++) { - if (s->raw_frame_header->update_ref_delta[i]) - s->cur_frame.loop_filter_ref_deltas[i] = - s->raw_frame_header->loop_filter_ref_deltas[i]; - } - - for (int i = 0; i < 2; i++) { - if (s->raw_frame_header->update_mode_delta[i]) - s->cur_frame.loop_filter_mode_deltas[i] = - s->raw_frame_header->loop_filter_mode_deltas[i]; - } - } - - s->cur_frame.loop_filter_delta_enabled = - s->raw_frame_header->loop_filter_delta_enabled; -} - static uint32_t inverse_recenter(int r, uint32_t v) { if (v > 2 * r) @@ -363,13 +315,6 @@ static int av1_frame_ref(AVCodecContext *avctx, AV1Frame *dst, const AV1Frame *s dst->spatial_id = src->spatial_id; dst->temporal_id = src->temporal_id; - dst->loop_filter_delta_enabled = src->loop_filter_delta_enabled; - memcpy(dst->loop_filter_ref_deltas, - src->loop_filter_ref_deltas, - AV1_NUM_REF_FRAMES * sizeof(int8_t)); - memcpy(dst->loop_filter_mode_deltas, - src->loop_filter_mode_deltas, - 2 * sizeof(int8_t)); memcpy(dst->gm_type, src->gm_type, AV1_NUM_REF_FRAMES * sizeof(uint8_t)); @@ -645,11 +590,6 @@ static int get_current_frame(AVCodecContext *avctx) return ret; } - if (s->raw_frame_header->primary_ref_frame == AV1_PRIMARY_REF_NONE) - setup_past_independence(&s->cur_frame); - else - load_previous_and_update(s); - global_motion_params(s); return ret; diff --git a/libavcodec/av1dec.h b/libavcodec/av1dec.h index 63c958ca53..b58bc53961 100644 --- a/libavcodec/av1dec.h +++ b/libavcodec/av1dec.h @@ -39,9 +39,6 @@ typedef struct AV1Frame { int temporal_id; int spatial_id; - uint8_t loop_filter_delta_enabled; - int8_t loop_filter_ref_deltas[AV1_NUM_REF_FRAMES]; - int8_t loop_filter_mode_deltas[2]; uint8_t gm_type[AV1_NUM_REF_FRAMES]; int32_t gm_params[AV1_NUM_REF_FRAMES][6]; } AV1Frame;