Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp12727pxb; Wed, 30 Mar 2022 21:24:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzKe1vknFFTXSEQgr1Dh6QGGFzfh08lJ/tiLIpRkMtYHdb9mHZfHvUZXVDxKOluZ1F/M8fR X-Received: by 2002:a62:1d91:0:b0:4f6:f558:6d15 with SMTP id d139-20020a621d91000000b004f6f5586d15mr3377559pfd.79.1648700689744; Wed, 30 Mar 2022 21:24:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648700689; cv=none; d=google.com; s=arc-20160816; b=s4v5EYRYPUrTTxIOVOh187lk/HATav+Bwjs84TdSSQEynkW9mEuQYL58ITsOOkhXCI 3dCwrW73gGXCy+RCpsnaOlPCOengkjWXdrIo/lJCp5VHaGfNRp/9yQ2UINDxoUxIs4/R CcJjMijYjb7KQj2YZE+BoeBGcRa1bpXx8QUliXXi6StB6I98zJuSHAGEttyZg7skEsJi RGFVZJU8IlIb1V/Vf1k9u3yEQrh5hICir0h3wCX7LkXRxIDaMvxYuCtMOo+QcStedEqv J1DqH8u0xxAYpRL/0vzNmaJ/iS7CebngFgdtlNg6AmbXSoe1t37CLkxf2fxoyjwBD4TF 6N7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=z/1VwlYeBCJI63V9U2TlBCWTk2yE/jKnh5cytJEFDBA=; b=CptO4bK2p5t7qNnWIEe7gUmXT4ftUo8jbfWmjHE6tNDIQCkmE+0cA5V8Wa+7YKADpb Ydjl0i5zvPetLil1Ssq788NGCnv5ZDC55xPCdkV4SpTSf6nTjGAtMKd8BM+4sT6hiqO3 r2khIN0BdoKxhO+Zqk3ymn1UeXHCnmUjEEbX8eOExBZQR2eOfWSQ4bSWCCs9JhqCbbgc /HHOjX9xZqGksH1YvH6Mvm0SZqVonJwrWx5E2aUyw3Q1A5G/xQnSLv73lDqksgvOuow6 FQEs7df2Rm+/0xLCaD4nABNl3Ru8y4F4L8fXWaXv0EZhoJvgyZyhMfyHTwsrofx+SntC 1EGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=hcrLXVqp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id o12-20020a056a00214c00b004fa3a8dffd0si22192546pfk.135.2022.03.30.21.24.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Mar 2022 21:24:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=hcrLXVqp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 334EC1B9FE6; Wed, 30 Mar 2022 20:20:56 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244027AbiC3IBF (ORCPT + 99 others); Wed, 30 Mar 2022 04:01:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239731AbiC3IBE (ORCPT ); Wed, 30 Mar 2022 04:01:04 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5F78201BA; Wed, 30 Mar 2022 00:59:18 -0700 (PDT) Received: from localhost (unknown [IPv6:2a02:3030:d:7e3f:91e1:4be5:4001:fd80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: sebastianfricke) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 1F7C31F443D2; Wed, 30 Mar 2022 08:59:17 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1648627157; bh=h3tnoZejbOLZjyN2atSaobYGn8o799H2KiEzYAFUa98=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hcrLXVqpL/wTu+500y0aqOOpvuc4BCADPVrYxLySFJsZ2Jr5zJeMc6SZi8MJG5Eql 8EImGRlYtfL7z2Q6Se/E+tthQ8yYdJiPEynqsTdEnkXU2oOt5APJAldERtFqfWoo5o dpk6hIZtJfyRXBitCTgkr7KYTuQ97FCu/QwRJ9bnpsu2NVP9nHUZrafiz5UT5GLH3A Kf3SPwrQx/FjQm+1d2BKt7z8sHCAOC6s1m+j8mNZIBDTyJytj5s2gPD/B0Y97dVzbI rJP9wMYd6KjG7wCai96RwEJu8goepdIHgGnmWuZusOVFSAz8Radw7OOIP5Awdd0/Ro cL/SmHo9GVmVA== Date: Wed, 30 Mar 2022 09:59:13 +0200 From: Sebastian Fricke To: Nicolas Dufresne Cc: Ezequiel Garcia , Philipp Zabel , Mauro Carvalho Chehab , Greg Kroah-Hartman , kernel@collabora.com, Jonas Karlman , linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH v1 22/24] media: hantro: h264: Make dpb entry management more robust Message-ID: <20220330075913.wfl3prsyw5fvsv4t@basti-XPS-13-9310> References: <20220328195936.82552-1-nicolas.dufresne@collabora.com> <20220328195936.82552-23-nicolas.dufresne@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline In-Reply-To: <20220328195936.82552-23-nicolas.dufresne@collabora.com> X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hey Nicolas, On 28.03.2022 15:59, Nicolas Dufresne wrote: >From: Jonas Karlman > >The driver maintains stable slot location for reference pictures. This s/slot location/slot locations/ >change makes the code more robust by using the reference_ts as key and >by marking all entries invalid right from the start. > >Signed-off-by: Jonas Karlman >Signed-off-by: Nicolas Dufresne >--- > drivers/staging/media/hantro/hantro_h264.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > >diff --git a/drivers/staging/media/hantro/hantro_h264.c b/drivers/staging/media/hantro/hantro_h264.c >index 228629fb3cdf..7377fc26f780 100644 >--- a/drivers/staging/media/hantro/hantro_h264.c >+++ b/drivers/staging/media/hantro/hantro_h264.c >@@ -258,8 +258,7 @@ static void prepare_table(struct hantro_ctx *ctx) > static bool dpb_entry_match(const struct v4l2_h264_dpb_entry *a, > const struct v4l2_h264_dpb_entry *b) > { >- return a->top_field_order_cnt == b->top_field_order_cnt && >- a->bottom_field_order_cnt == b->bottom_field_order_cnt; >+ return a->reference_ts == b->reference_ts; > } > > static void update_dpb(struct hantro_ctx *ctx) >@@ -273,13 +272,13 @@ static void update_dpb(struct hantro_ctx *ctx) > > /* Disable all entries by default. */ > for (i = 0; i < ARRAY_SIZE(ctx->h264_dec.dpb); i++) >- ctx->h264_dec.dpb[i].flags &= ~V4L2_H264_DPB_ENTRY_FLAG_ACTIVE; >+ ctx->h264_dec.dpb[i].flags = 0; Ehm ... we just remove all flags? Can't this have any unwanted side effects like removing a flag that we actually wanted to keep? (Like long term or the field flags?) If we just want to set the DPB entry inactive, then removing the ACTIVE flag seems like the correct approach to me. If we want to get rid of the VALID flag as well, then we could just do: ctx->h264_dec.dpb[i].flags &= ~(V4L2_H264_DPB_ENTRY_FLAG_ACTIVE | V4L2_H264_DPB_ENTRY_FLAG_VALID); In case we really want to reset all flags, I'd say adjust the comment above it: ``` - /* Disable all entries by default. */ + /* Reset the flags for all entries by default. */ ``` Greetings, Sebastian > > /* Try to match new DPB entries with existing ones by their POCs. */ > for (i = 0; i < ARRAY_SIZE(dec_param->dpb); i++) { > const struct v4l2_h264_dpb_entry *ndpb = &dec_param->dpb[i]; > >- if (!(ndpb->flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE)) >+ if (!(ndpb->flags & V4L2_H264_DPB_ENTRY_FLAG_VALID)) > continue; > > /* >@@ -290,8 +289,7 @@ static void update_dpb(struct hantro_ctx *ctx) > struct v4l2_h264_dpb_entry *cdpb; > > cdpb = &ctx->h264_dec.dpb[j]; >- if (cdpb->flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE || >- !dpb_entry_match(cdpb, ndpb)) >+ if (!dpb_entry_match(cdpb, ndpb)) > continue; > > *cdpb = *ndpb; >-- >2.34.1 >