[{"id":35297,"web_url":"https://patchwork.libcamera.org/comment/35297/","msgid":"<175457391037.2641331.9245162704239604161@ping.linuxembedded.co.uk>","date":"2025-08-07T13:38:30","subject":"Re: [PATCH] test: camera: Use Request::ReuseBuffers flag","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Umang Jain (2025-08-07 14:20:52)\n> Pass Request::ReuseBuffers flag to request->reuse()\n> where the same buffers are added to the request, as the flag\n> exists precisely for such use cases.\n> \n> Signed-off-by: Umang Jain <uajain@igalia.com>\n> ---\n>  test/camera/buffer_import.cpp      | 8 +-------\n>  test/camera/camera_reconfigure.cpp | 8 +-------\n>  test/camera/capture.cpp            | 8 +-------\n>  3 files changed, 3 insertions(+), 21 deletions(-)\n> \n> diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp\n> index 815d1cae..d6feee79 100644\n> --- a/test/camera/buffer_import.cpp\n> +++ b/test/camera/buffer_import.cpp\n> @@ -52,16 +52,10 @@ protected:\n>                 if (request->status() != Request::RequestComplete)\n>                         return;\n>  \n> -               const Request::BufferMap &buffers = request->buffers();\n> -\n>                 completeRequestsCount_++;\n>  \n>                 /* Create a new request. */\n> -               const Stream *stream = buffers.begin()->first;\n> -               FrameBuffer *buffer = buffers.begin()->second;\n> -\n> -               request->reuse();\n> -               request->addBuffer(stream, buffer);\n> +               request->reuse(Request::ReuseBuffers);\n>                 camera_->queueRequest(request);\n>  \n>                 dispatcher_->interrupt();\n> diff --git a/test/camera/camera_reconfigure.cpp b/test/camera/camera_reconfigure.cpp\n> index 06c87730..ae9941c1 100644\n> --- a/test/camera/camera_reconfigure.cpp\n> +++ b/test/camera/camera_reconfigure.cpp\n> @@ -46,14 +46,8 @@ private:\n>                 if (request->status() != Request::RequestComplete)\n>                         return;\n>  \n> -               const Request::BufferMap &buffers = request->buffers();\n> -\n> -               const Stream *stream = buffers.begin()->first;\n> -               FrameBuffer *buffer = buffers.begin()->second;\n> -\n>                 /* Reuse the request and re-queue it with the same buffers. */\n> -               request->reuse();\n> -               request->addBuffer(stream, buffer);\n> +               request->reuse(Request::ReuseBuffers);\n>                 camera_->queueRequest(request);\n>         }\n>  \n> diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp\n> index 8766fb19..a4168661 100644\n> --- a/test/camera/capture.cpp\n> +++ b/test/camera/capture.cpp\n> @@ -48,16 +48,10 @@ protected:\n>                 if (request->status() != Request::RequestComplete)\n>                         return;\n>  \n> -               const Request::BufferMap &buffers = request->buffers();\n> -\n>                 completeRequestsCount_++;\n>  \n>                 /* Create a new request. */\n\nSomething about this comment stands out ...\n\n> -               const Stream *stream = buffers.begin()->first;\n> -               FrameBuffer *buffer = buffers.begin()->second;\n> -\n> -               request->reuse();\n> -               request->addBuffer(stream, buffer);\n> +               request->reuse(Request::ReuseBuffers);\n>                 camera_->queueRequest(request);\n>  \n>                 dispatcher_->interrupt();\n> -- \n> 2.50.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 4927FBE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  7 Aug 2025 13:38:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 339486921A;\n\tThu,  7 Aug 2025 15:38:35 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 718D569052\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  7 Aug 2025 15:38:33 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 34914C78;\n\tThu,  7 Aug 2025 15:37:44 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"kQRVH8PE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1754573864;\n\tbh=dqF7RZJOO+WmtXio+j5NBsGKGmp6WSXayiD5NjaI2sc=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=kQRVH8PEaQJCIBUy2snCM05QgWDs40xhL0AUXdrBGwyK/cwf25kQi2VQN5/TLypPG\n\ttPl9oPLPWHDfe8nDNxBlnz7PddTWHhD3HeRUgihGy3b+DVdyJNVl0YEfgdngn8GpEe\n\tvuBX0IiReMwQq/9n0oFXWvUs0/uieJiOIChDpr1k=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250807132052.84591-1-uajain@igalia.com>","References":"<20250807132052.84591-1-uajain@igalia.com>","Subject":"Re: [PATCH] test: camera: Use Request::ReuseBuffers flag","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <uajain@igalia.com>","To":"Umang Jain <uajain@igalia.com>, libcamera-devel@lists.libcamera.org","Date":"Thu, 07 Aug 2025 14:38:30 +0100","Message-ID":"<175457391037.2641331.9245162704239604161@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":35298,"web_url":"https://patchwork.libcamera.org/comment/35298/","msgid":"<dd5ab2837e18ed23303bcaec83eec674@igalia.com>","date":"2025-08-07T13:47:01","subject":"Re: [PATCH] test: camera: Use Request::ReuseBuffers flag","submitter":{"id":232,"url":"https://patchwork.libcamera.org/api/people/232/","name":"Umang Jain","email":"uajain@igalia.com"},"content":"On 2025-08-07 19:08, Kieran Bingham wrote:\n> Quoting Umang Jain (2025-08-07 14:20:52)\n>> Pass Request::ReuseBuffers flag to request->reuse()\n>> where the same buffers are added to the request, as the flag\n>> exists precisely for such use cases.\n>> \n>> Signed-off-by: Umang Jain <uajain@igalia.com>\n>> ---\n>>  test/camera/buffer_import.cpp      | 8 +-------\n>>  test/camera/camera_reconfigure.cpp | 8 +-------\n>>  test/camera/capture.cpp            | 8 +-------\n>>  3 files changed, 3 insertions(+), 21 deletions(-)\n>> \n>> diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp\n>> index 815d1cae..d6feee79 100644\n>> --- a/test/camera/buffer_import.cpp\n>> +++ b/test/camera/buffer_import.cpp\n>> @@ -52,16 +52,10 @@ protected:\n>>                 if (request->status() != Request::RequestComplete)\n>>                         return;\n>>  \n>> -               const Request::BufferMap &buffers = request->buffers();\n>> -\n>>                 completeRequestsCount_++;\n>>  \n>>                 /* Create a new request. */\n>> -               const Stream *stream = buffers.begin()->first;\n>> -               FrameBuffer *buffer = buffers.begin()->second;\n>> -\n>> -               request->reuse();\n>> -               request->addBuffer(stream, buffer);\n>> +               request->reuse(Request::ReuseBuffers);\n>>                 camera_->queueRequest(request);\n>>  \n>>                 dispatcher_->interrupt();\n>> diff --git a/test/camera/camera_reconfigure.cpp b/test/camera/camera_reconfigure.cpp\n>> index 06c87730..ae9941c1 100644\n>> --- a/test/camera/camera_reconfigure.cpp\n>> +++ b/test/camera/camera_reconfigure.cpp\n>> @@ -46,14 +46,8 @@ private:\n>>                 if (request->status() != Request::RequestComplete)\n>>                         return;\n>>  \n>> -               const Request::BufferMap &buffers = request->buffers();\n>> -\n>> -               const Stream *stream = buffers.begin()->first;\n>> -               FrameBuffer *buffer = buffers.begin()->second;\n>> -\n>>                 /* Reuse the request and re-queue it with the same buffers. */\n>> -               request->reuse();\n>> -               request->addBuffer(stream, buffer);\n>> +               request->reuse(Request::ReuseBuffers);\n>>                 camera_->queueRequest(request);\n>>         }\n>>  \n>> diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp\n>> index 8766fb19..a4168661 100644\n>> --- a/test/camera/capture.cpp\n>> +++ b/test/camera/capture.cpp\n>> @@ -48,16 +48,10 @@ protected:\n>>                 if (request->status() != Request::RequestComplete)\n>>                         return;\n>>  \n>> -               const Request::BufferMap &buffers = request->buffers();\n>> -\n>>                 completeRequestsCount_++;\n>>  \n>>                 /* Create a new request. */\n> \n> Something about this comment stands out ...\n\nIt was meant to be removed from c753223a libcamera, android, cam,\ngstreamer, qcam, v4l2: Reuse Request I believe.\n\nI can remove as part of this patch though with a comment in commit\nmessage.\n> \n>> -               const Stream *stream = buffers.begin()->first;\n>> -               FrameBuffer *buffer = buffers.begin()->second;\n>> -\n>> -               request->reuse();\n>> -               request->addBuffer(stream, buffer);\n>> +               request->reuse(Request::ReuseBuffers);\n>>                 camera_->queueRequest(request);\n>>  \n>>                 dispatcher_->interrupt();\n>> -- \n>> 2.50.0\n>>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 54D23BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  7 Aug 2025 13:47:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7B5476921A;\n\tThu,  7 Aug 2025 15:47:06 +0200 (CEST)","from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7970A69052\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  7 Aug 2025 15:47:04 +0200 (CEST)","from maestria.local.igalia.com ([192.168.10.14]\n\thelo=mail.igalia.com) by fanzine2.igalia.com with esmtps \n\t(Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)\n\t(Exim) id 1uk0xT-00B1Yj-I3; Thu, 07 Aug 2025 15:47:03 +0200","from webmail.service.igalia.com ([192.168.21.45])\n\tby mail.igalia.com with esmtp (Exim)\n\tid 1uk0xR-00D6Y1-C4; Thu, 07 Aug 2025 15:47:03 +0200","from localhost ([127.0.0.1] helo=webmail.igalia.com)\n\tby webmail with esmtp (Exim 4.96) (envelope-from <uajain@igalia.com>)\n\tid 1uk0xQ-001hZn-2b; Thu, 07 Aug 2025 15:47:01 +0200"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=igalia.com header.i=@igalia.com\n\theader.b=\"eJSfrE99\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;\n\ts=20170329;\n\th=Content-Transfer-Encoding:Content-Type:Message-ID:References:\n\tIn-Reply-To:Subject:Cc:To:From:Date:MIME-Version:Sender:Reply-To:Content-ID:\n\tContent-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n\t:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n\tList-Post:List-Owner:List-Archive;\n\tbh=XumAYdbqhmkMms1+Lo8HUPFpx9BIv4T0QSrooinZEPk=;\n\tb=eJSfrE99H/SxayCtWT0VfhRJMi\n\tNV7jzfR2y8qTIiP/FntQ29NgtGo5UM5q9SiBEiWkZ0xEyh4GOvVImfAdj3sZLgkSJ8nuQ9VaXRA4a\n\t7Y/9/7Foe9ZiXs87ZjkWLW9h+LvxDxZg9Acn90F7TJdlTs+6kAeb7/dp7rsYGFqKKaKnXZ2LgS12o\n\tuVjzh2o3Z3GB4xYY4Gj8WcyTVpgoHtwigLMmxAVByc6XNaLkYm5t72gcfdODjobz+ZvibYC7nes/l\n\tr5rUFfOtWWq12QcBpFAs2Ap6lTFJhKOjHNOD9zMQI0RC0PuXwYLNPMc5jtIWZordNfpHyDIe0/pQ4\n\t0eAy+4jg==;","MIME-Version":"1.0","Date":"Thu, 07 Aug 2025 19:17:01 +0530","From":"uajain <uajain@igalia.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] test: camera: Use Request::ReuseBuffers flag","In-Reply-To":"<175457391037.2641331.9245162704239604161@ping.linuxembedded.co.uk>","References":"<20250807132052.84591-1-uajain@igalia.com>\n\t<175457391037.2641331.9245162704239604161@ping.linuxembedded.co.uk>","Message-ID":"<dd5ab2837e18ed23303bcaec83eec674@igalia.com>","X-Sender":"uajain@igalia.com","Content-Type":"text/plain; charset=US-ASCII","Content-Transfer-Encoding":"7bit","X-Spam-Report":"NO, Score=-1.2, Tests=ALL_TRUSTED=-3, AWL=1.030, BAYES_50=0.8,\n\tURIBL_BLOCKED=0.001","X-Spam-Score":"-11","X-Spam-Bar":"-","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]