Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp1018044pxb; Tue, 29 Mar 2022 15:07:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZfofr1Q5oociSszRj9dchuTrquhL1kbr9mMGNZ3nbu5zHfCuIxVXbVzjEUSvN+w/vkxqm X-Received: by 2002:a17:902:8ec3:b0:155:ff17:fb7 with SMTP id x3-20020a1709028ec300b00155ff170fb7mr15596738plo.135.1648591646637; Tue, 29 Mar 2022 15:07:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648591646; cv=none; d=google.com; s=arc-20160816; b=BvujeAkPR0+E8dL64eBh5NonCaWqG/HgdCtlRnSsmVk1qRNF213B4FYnYWF2AloXbw YSLP/0rn0JnvT3Rr+s0F8Mr/HGhNrGoK1iseGlEcjki4CsBRZpaBi/eD+/v48DOTZMmJ UvQgG5GqjIVIzI9AF8fuY4VSdo0jR1taQukZyyukwVmogb59oLV0DD9X2ng1RXkHMUA6 /nLXJoPWMvXd/9b7E1XYL0uz9+P1z6kf3O7rhC/wFIn5C5EKlbHjgbkwcZO4NCHnKdim R2DUsRd6ciEfhjlsmkwQWtwHnM6lyxUIKbgJ5+j4KtCktaY/4f5Db7Nq8reX2SdpLF7r mo5g== 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=0s4JnM4IXA/G0S5Vv0CQ2db0tmSMUXjRwmVXXlcuEps=; b=xapQTul/vxIl501xfeCReAbUyOOkwANT1SitPMSa7HVFp846P5OCzeeNsaPZSfBiZ9 YI9abACGVhS+PMbmGz/G0GyJbHMJQf8z8XSvYDMOo5XZ36JpYi5/JYuXHpSwlu+UHlpG m15BP8W8qMrgm0lfXzBTVaSzHaNQ4s2p8PqzFs24xXOOXapg9jmdTtLBdpNXKy1Krp+/ F0wQlRut7853J9bmjXtIxoxQ+DWDxwT78KaHfzl4byDPl4GwbO6lcne8B1HTAM6Tkw1Z xDWPM69MDf/tDfnm2U38XhLz+o+IK75J6VJ54JToHzpH5OimQG7O2YFrZ/2/DSHYr7+H lQ1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=Z+UVVCYa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i15-20020a170902c94f00b00153ee8b0c9dsi20602166pla.176.2022.03.29.15.07.13; Tue, 29 Mar 2022 15:07:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=Z+UVVCYa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237368AbiC2Nga (ORCPT + 99 others); Tue, 29 Mar 2022 09:36:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237361AbiC2Ng1 (ORCPT ); Tue, 29 Mar 2022 09:36:27 -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 C87EC24F1C; Tue, 29 Mar 2022 06:34:44 -0700 (PDT) Received: from localhost (unknown [IPv6:2a02:3030:a:f397:f6bc:b726:2678:839f]) (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 7287A1F43E8A; Tue, 29 Mar 2022 14:34:43 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1648560883; bh=mw2lnNcKQgzkmIX92vMYzPG0ozHkEL7vt1dPMHbwDBk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Z+UVVCYaAPDIuQO43XpFCDQB5et0nfUsweNkYyuvNPr69YNOhavC9TQQS5woGC5Pe Cx3IWQmKyGaRsihIvWXwhxrfuN79va9vfMFIsFqzEyiQhdwbpMGmjRw5NRQ9k3zMUF jC0mkKkpLwaUsXp4agzcN5UD6snCplE8xSoARnCAd2bfBRsyymsmcKeOTfA/qYfkq/ XYbiJ6l6PT3NvSbJFOz0Mj4pmlKBjOvztKOrmIQh5D2p6HucLEoPIuExSMxw2lgUX+ gHzGDSqVUtNTC6EpT5e+pgr8JgW4flNOSUwLWrOUTRHEcQsIm4ndQ6miNE9EPPs12f lIe7isnLs1GXQ== Date: Tue, 29 Mar 2022 15:34:39 +0200 From: Sebastian Fricke To: Nicolas Dufresne Cc: Mauro Carvalho Chehab , kernel@collabora.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v1 07/24] media: h264: Sort p/b reflist using frame_num Message-ID: <20220329133439.qt6bze35bppx3mne@basti-XPS-13-9310> References: <20220328195936.82552-1-nicolas.dufresne@collabora.com> <20220328195936.82552-8-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-8-nicolas.dufresne@collabora.com> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham 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: >In the reference list builder, frame_num referers to FrameNumWrap s/referers/refers/ >in the spec, which is the same as the pic_num for frame decoding. >The same applied for long_tern_pic_num and long_ter_frame_idx. s/same applied/same applies/ s/long_ter_frame_idx/long_term_frame_idx/ > >Sort all type of references by frame_num so the sort can be reused s/frame_num so the sort/frame_num, so the order/ >for field reflist were the sorting is done using frame_num instead. s/field/the field/ s/reflist were the sorting is done using frame_num instead/ reflist, which is sorted by the frame_num instead/ >In short, pic_num is never actually used for building reference >lists. > >Signed-off-by: Nicolas Dufresne Reviewed-by: Sebastian Fricke >--- > drivers/media/v4l2-core/v4l2-h264.c | 22 ++++++++++++---------- > include/media/v4l2-h264.h | 2 -- > 2 files changed, 12 insertions(+), 12 deletions(-) > >diff --git a/drivers/media/v4l2-core/v4l2-h264.c b/drivers/media/v4l2-core/v4l2-h264.c >index c9e18fd51d78..c3fad382882d 100644 >--- a/drivers/media/v4l2-core/v4l2-h264.c >+++ b/drivers/media/v4l2-core/v4l2-h264.c >@@ -50,7 +50,6 @@ v4l2_h264_init_reflist_builder(struct v4l2_h264_reflist_builder *b, > if (!(dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE)) > continue; > >- b->refs[i].pic_num = dpb[i].pic_num; > if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM) > b->refs[i].longterm = true; > >@@ -139,15 +138,18 @@ static int v4l2_h264_p_ref_list_cmp(const void *ptra, const void *ptrb, > } > > /* >- * Short term pics in descending pic num order, long term ones in >- * ascending order. >+ * For frames, short term pics are in descending pic num order and long >+ * term ones in ascending order. For field this is the same direction s/For field this is the same direction/For fields the same direction is used/ >+ * but with frame_num (wrapped). As for frame the pic_num and frame_num >+ * are the same (see formula (8-28) and (8-29)) use the frame_num and share s/As for frame the pic_num and frame_num are the same/ The fields pic_num and frame_num are the same for frames/ >+ * this funciton between frame and field reflist. s/funciton/function/ Greetings, Sebastian > */ > if (!builder->refs[idxa].longterm) > return builder->refs[idxb].frame_num < > builder->refs[idxa].frame_num ? > -1 : 1; > >- return builder->refs[idxa].pic_num < builder->refs[idxb].pic_num ? >+ return builder->refs[idxa].frame_num < builder->refs[idxb].frame_num ? > -1 : 1; > } > >@@ -173,10 +175,10 @@ static int v4l2_h264_b0_ref_list_cmp(const void *ptra, const void *ptrb, > return 1; > } > >- /* Long term pics in ascending pic num order. */ >+ /* Long term pics in ascending frame num order. */ > if (builder->refs[idxa].longterm) >- return builder->refs[idxa].pic_num < >- builder->refs[idxb].pic_num ? >+ return builder->refs[idxa].frame_num < >+ builder->refs[idxb].frame_num ? > -1 : 1; > > poca = v4l2_h264_get_poc(builder, ptra); >@@ -218,10 +220,10 @@ static int v4l2_h264_b1_ref_list_cmp(const void *ptra, const void *ptrb, > return 1; > } > >- /* Long term pics in ascending pic num order. */ >+ /* Long term pics in ascending frame num order. */ > if (builder->refs[idxa].longterm) >- return builder->refs[idxa].pic_num < >- builder->refs[idxb].pic_num ? >+ return builder->refs[idxa].frame_num < >+ builder->refs[idxb].frame_num ? > -1 : 1; > > poca = v4l2_h264_get_poc(builder, ptra); >diff --git a/include/media/v4l2-h264.h b/include/media/v4l2-h264.h >index 4cef717b3f18..0d9eaa956123 100644 >--- a/include/media/v4l2-h264.h >+++ b/include/media/v4l2-h264.h >@@ -18,7 +18,6 @@ > * @refs.top_field_order_cnt: top field order count > * @refs.bottom_field_order_cnt: bottom field order count > * @refs.frame_num: reference frame number >- * @refs.pic_num: reference picture number > * @refs.longterm: set to true for a long term reference > * @refs: array of references > * @cur_pic_order_count: picture order count of the frame being decoded >@@ -36,7 +35,6 @@ struct v4l2_h264_reflist_builder { > s32 top_field_order_cnt; > s32 bottom_field_order_cnt; > int frame_num; >- u32 pic_num; > u16 longterm : 1; > } refs[V4L2_H264_NUM_DPB_ENTRIES]; > >-- >2.34.1 >