[{"id":30386,"web_url":"https://patchwork.libcamera.org/comment/30386/","msgid":"<87jzhr0xgt.fsf@baylibre.com>","date":"2024-07-12T09:29:54","subject":"Re: Rpi 4 & 5  Libcamera, preview streaming and image capture","submitter":{"id":153,"url":"https://patchwork.libcamera.org/api/people/153/","name":"Mattijs Korpershoek","email":"mkorpershoek@baylibre.com"},"content":"Hi Jan,\n\nOn ven., juin 07, 2024 at 15:54, <jan@radicalsystems.co.za> wrote:\n\n> Hi Laurent & Kieran\n>\n> I still have not solved my issue and I'm trying to get some insight into the process of streaming to preview and then capturing an image at the same time.\n> I'm very unfamiliar with Licamera and I'm trying to understand how the whole process is put together.\n>\n> So, what is working is the preview streaming in Android and running Google MLKIT analytics.\n> But as soon as the image capture instruction is sent, it falls over.\n> And this is the trace of what goes wrong.\n>\n> 1. Android initiate createCaptureRequest\n> 2. generic_frame_buffer_allocator.cpp => PlatformFrameBufferAllocator::Private::allocate\n> \t2.1 gralloc_open\n> \t2.2 hardwareModule_->methods->open\n> 3. camera3_hal.cpp => hal_dev_open\n> \t3.1 CameraHalManager::instance()->open\n> 4. camera_device.cpp => Camera::open\n> \t4.1 camera_->acquire\n> 5. camera.cpp => Camera::qcquire\n> \t5.1 isAccessAllowed(Private::CameraAvailabe) is where it fails, because it assumes the camera is not open I guess\n>\n> This is the stack trace:\n>\n> 06-04 13:46:54.783  3213  3296 D Camera2CaptureRequestBuilder: createCaptureRequest\n> 06-04 13:46:54.795  3324  3534 E libcamera: ERROR Camera camera.cpp:675 Camera in Running state trying acquire() requiring state Available\n> 06-04 13:46:54.795  3324  3534 E libcamera: ERROR HAL camera_device.cpp:390 '/base/axi/pcie@120000/rp1/i2c@88000/imx708@1a': Failed to acquire the camera\n> 06-04 13:46:54.795  3324  3534 E libcamera: ERROR HAL camera3_hal.cpp:81 Failed to open camera module '0'\n> 06-04 13:46:54.796  3324  3534 E libcamera: FATAL HAL generic_frame_buffer_allocator.cpp:106 gralloc_open() failed: -87\n\nThis reminds of a bug I solved long ago:\n\nHere, libcamera tries to open the camera HAL instead of the gralloc HAL.\n\nI send a patch for this here:\nhttps://patchwork.libcamera.org/patch/18655/\n\nCan you confirm the above patch is in your tree?\n\nIt should be, since it's been merged a year ago.\n\n\n> 06-04 13:46:54.796  3324  3534 D libcamera: Backtrace:\n>\n> Can you guys maybe enlighten me how this process is supposed to work when previewing a streaming and then capturing the image?\n> Because this seems to be the hiccup with this.\n> Are there two devices that must be opened or is the image capture done by the streaming instance?\n> I see /dev/media0 to 3 gets created for the camera.\n>\n> I would really appreciate it if you can give me some pointers.\n> We need the get this hardware solution going.\n>\n> Cheers\n> Jan\n>\n>\n> -----Original Message-----\n> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> \n> Sent: Tuesday, June 4, 2024 10:14 PM\n> To: jan@radicalsystems.co.za\n> Cc: libcamera-devel@lists.libcamera.org\n> Subject: Re: Rpi 4 & 5 Libcamera & Mmap permission issue on Android 14\n>\n> Hello Jan,\n>\n> On Tue, Jun 04, 2024 at 12:26:20PM +0200, jan@radicalsystems.co.za wrote:\n>> Hi Libcamera Fundis!\n>> \n>> Having a problem capturing an image on Android 14 (& 13).\n>> \n>> Tombstone looks like this:\n>> \n>> 06-03 15:13:03.880 308 578 I DMABUFHEAPS: Using : Non-legacy ION heaps\n>> 06-03 15:13:03.880 308 578 I [minigbm:gbm_mesa_internals.cpp(233)]: \n>> Found GPU v3d\n>> 06-03 15:13:04.052 308 359 E libcamera: ERROR Buffer \n>> mapped_framebuffer.cpp:230 Failed to mmap plane: Permission denied\n>> \n>> .... lots of Permission denied!\n>> \n>> 06-03 15:13:11.282 308 359 E libcamera: ERROR Buffer \n>> mapped_framebuffer.cpp:230 Failed to mmap plane: Permission denied\n>> 06-03 15:13:12.008 308 579 E libcamera: ERROR Camera camera.cpp:675 \n>> Camera in Running state trying acquire() requiring state Available\n>> 06-03 15:13:12.008 308 579 E libcamera: ERROR HAL \n>> camera_device.cpp:390 '/base/axi/pcie@120000/rp1/i2c@88000/imx708@1a': \n>> Failed to acquire the camera\n>> 06-03 15:13:12.008 308 579 E libcamera: ERROR HAL camera3_hal.cpp:81 Failed to open camera module '0'\n>> 06-03 15:13:12.008 308 579 E libcamera: FATAL HAL \n>> generic_frame_buffer_allocator.cpp:106 gralloc_open() failed: -87\n>> \n>> MLKIT Streaming & analyzing works until trying to capture an image the \n>> above happens.\n>> \n>> The various Android versions for Rpi5 I could find gave the same issue.\n>> \n>> I tried Emteria, AOSP & LineageOS 13 & 14\n>> \n>> Android built from Raspberry Vanilla and even replacing with later \n>> libcamera had the same issue.\n>> \n>> I’m not sure if this is purely a configuration problem, wrt to \n>> policies or permissions or specifically to the RPi’s architecture.\n>>\n>> Please help, I can rebuild and test.\n>> \n>> I have tried the latest code pulled into RaspVanilla, but had the same issue.\n>\n> This doesn't ring a bell, but let's see if we can debug it.\n>\n> The first step is to figure out if the mmap() parameters are right. In MappedFrameBuffer::MappedFrameBuffer(), at the location of the failure, could you print the value of fd, info.mapLength, and mmapFlags ?\n> Something like the following should do:\n>\n> diff --git a/src/libcamera/mapped_framebuffer.cpp b/src/libcamera/mapped_framebuffer.cpp\n> index b3104e0504d4..baa0587b4fcf 100644\n> --- a/src/libcamera/mapped_framebuffer.cpp\n> +++ b/src/libcamera/mapped_framebuffer.cpp\n> @@ -223,6 +223,9 @@ MappedFrameBuffer::MappedFrameBuffer(const FrameBuffer *buffer, MapFlags flags)\n>  \t\tconst int fd = plane.fd.get();\n>  \t\tauto &info = mappedBuffers[fd];\n>  \t\tif (!info.address) {\n> +\t\t\tLOG(Buffer, Info)\n> +\t\t\t\t<< \"Mapping fd: \" << fd << \", length: \"\n> +\t\t\t\t<< info.mapLength << \", flags: \" << mmapFlags;\n>  \t\t\tvoid *address = mmap(nullptr, info.mapLength, mmapFlags,\n>  \t\t\t\t\t     MAP_SHARED, fd, 0);\n>  \t\t\tif (address == MAP_FAILED) {\n>\n> (I haven't tested it though)\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 87450BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Jul 2024 09:30:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 79CFF6336F;\n\tFri, 12 Jul 2024 11:30:01 +0200 (CEST)","from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com\n\t[IPv6:2a00:1450:4864:20::32e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 67CBD63364\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Jul 2024 11:29:59 +0200 (CEST)","by mail-wm1-x32e.google.com with SMTP id\n\t5b1f17b1804b1-42793fc0a6dso11838665e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Jul 2024 02:29:59 -0700 (PDT)","from localhost ([2a01:cb19:8f40:f900:f167:cb53:a707:1347])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4279dae5a87sm12220305e9.1.2024.07.12.02.29.57\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 12 Jul 2024 02:29:57 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=baylibre-com.20230601.gappssmtp.com\n\theader.i=@baylibre-com.20230601.gappssmtp.com\n\theader.b=\"HG0n+AkE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720776599;\n\tx=1721381399; darn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:references\n\t:in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id\n\t:reply-to; bh=itHONJNXHucS14CoPqKrIwk76qIyhqL+thZgwB6jP7k=;\n\tb=HG0n+AkEDU/ZhNon0ZOmDSSRYTuI141ssv6L4mhhfKyL/VQFsRTRqZE+rIZRsdDtsh\n\t8hPnXyldFQjRcZS1kNUwUJjuICT1gBluAExkcPnTH9JHDq9swNkW7wUJ0ve1CHjgZ4up\n\t/Oncp5WfocnAezwnMOT0TAq3N/mRiPDQ27NzD4bDB8ZpuI9gMdQI8Rlt6vkKxCUVQDBx\n\tXBHDnNSc31CyMePq9QousLgQCqleHKArn+uHadcaf+4OwFwlW99NQQqkcQiLC0NXssum\n\tXpUT6QLlIeiABgI5wgXa3Hj6clDCOnxXS/4w5LZxN9EKY/H33EgVZn9X2UUGz55dGkyR\n\tY0MQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1720776599; x=1721381399;\n\th=content-transfer-encoding:mime-version:message-id:date:references\n\t:in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=itHONJNXHucS14CoPqKrIwk76qIyhqL+thZgwB6jP7k=;\n\tb=G2vi7ZL7Ajy7K6DXW2g85bvLcoZlIkL3EmJi67IJ07oUUQ5Y5PLnEJedXrjkSLtq1Q\n\tvV3+mt9j5OBQBRwaaaCkxbNSV1law6FFFiKpCYuvA7KKBlHWLKA41EjDYHVpwuu+YKnK\n\tpXvvoZSzYXanevGH24i6nkndRwWc9Xt7SSsFXwwu9EcFBuhit2unVQXK+B80407it2gL\n\tLkILcWn3YUeWbUwtIC8YF//y105a42NhiyUes3yE4ocqKpHUT1WLJeH4SzpEQiGz8qXP\n\tof1DZkE8Xlj4S9dFngcFPqpcpSJI+yMw+11xcZEKQqS7Gy79GmDNn9rzzQNQGFEAMbSj\n\t+zFQ==","X-Gm-Message-State":"AOJu0YxrdNcbTOMmTG2iRLEKuGNShqZG9ZCw5Kq/Sx3h5lKtwSaio7oL\n\tq7sAs1JUTPs6M5j/1KxFTrBNGJOYYRWcAI+sYEJuSHviXkPcWz/qW9reJI9tKPw=","X-Google-Smtp-Source":"AGHT+IG4XeOCj+qQjB3lpCBTUs9XKKFbCdLgal7g7GPVjJycZXruXtnzdagw9qma6039jIxOutyBDA==","X-Received":"by 2002:a05:600c:2284:b0:426:6416:aa73 with SMTP id\n\t5b1f17b1804b1-426707d89d9mr70112545e9.12.1720776598386; \n\tFri, 12 Jul 2024 02:29:58 -0700 (PDT)","From":"Mattijs Korpershoek <mkorpershoek@baylibre.com>","To":"jan@radicalsystems.co.za, 'Laurent Pinchart'\n\t<laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: Rpi 4 & 5  Libcamera, preview streaming and image capture","In-Reply-To":"<3cb201dab8e2$371eb550$a55c1ff0$@radicalsystems.co.za>","References":"<324c01dab669$a47715a0$ed6540e0$@radicalsystems.co.za>\n\t<20240604123223.GA879@pendragon.ideasonboard.com>\n\t<3cb201dab8e2$371eb550$a55c1ff0$@radicalsystems.co.za>","Date":"Fri, 12 Jul 2024 11:29:54 +0200","Message-ID":"<87jzhr0xgt.fsf@baylibre.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","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":30387,"web_url":"https://patchwork.libcamera.org/comment/30387/","msgid":"<02ff01dad443$e735efe0$b5a1cfa0$@radicalsystems.co.za>","date":"2024-07-12T10:11:46","subject":"RE: Rpi 4 & 5  Libcamera, preview streaming and image capture","submitter":{"id":200,"url":"https://patchwork.libcamera.org/api/people/200/","name":"","email":"jan@radicalsystems.co.za"},"content":"Hi Mattjis\n\nThank for reaching out 😊\n\nNo, this is still and ongoing saga.\n\nI think that patch was somewhere and got lost again.\nBut yes, I did test that.\nI got that fixed by moving gralloc to android libui, which adds a layer on top of that with extra checking.\n\nMy suspicion is the problem came in with Android 13 & 14.\n\nLibui code looks very similar:\nhttps://android.googlesource.com/platform/frameworks/native/+/a5529c8778c2f407f482fc12165aeb76c0f505c2/libs/ui/GraphicBufferAllocator.cpp\n\nHere I have documented the issue\nhttps://github.com/RadicalES/android_external_libcamera/issues/1\n\nAnd solution:\nhttps://github.com/RadicalES/android_external_libcamera/commit/b9aff6d3372e9702d646ec2603a90e28cef4c0c9\n\nMy next issue is a mmap permission problem detailed here:\nhttps://github.com/RadicalES/android_external_libcamera/issues/2\n\nI have tested code patched from the raspberry pi libcamera repo, Android Vanilla Repo and main libcamera repo.\nThat’s why ended up with my own repo trying to track the changes.\n\nOnce again thank you for the response!\n\nCheers\nJan\n> -----Original Message-----\n> From: Mattijs Korpershoek <mkorpershoek@baylibre.com>\n> Sent: Friday, July 12, 2024 11:30 AM\n> To: jan@radicalsystems.co.za; 'Laurent Pinchart'\n> <laurent.pinchart@ideasonboard.com>\n> Cc: libcamera-devel@lists.libcamera.org\n> Subject: Re: Rpi 4 & 5 Libcamera, preview streaming and image capture\n> \n> Hi Jan,\n> \n> On ven., juin 07, 2024 at 15:54, <jan@radicalsystems.co.za> wrote:\n> \n> > Hi Laurent & Kieran\n> >\n> > I still have not solved my issue and I'm trying to get some insight into the\n> process of streaming to preview and then capturing an image at the same\n> time.\n> > I'm very unfamiliar with Licamera and I'm trying to understand how the\n> whole process is put together.\n> >\n> > So, what is working is the preview streaming in Android and running Google\n> MLKIT analytics.\n> > But as soon as the image capture instruction is sent, it falls over.\n> > And this is the trace of what goes wrong.\n> >\n> > 1. Android initiate createCaptureRequest 2.\n> > generic_frame_buffer_allocator.cpp =>\n> PlatformFrameBufferAllocator::Private::allocate\n> > \t2.1 gralloc_open\n> > \t2.2 hardwareModule_->methods->open\n> > 3. camera3_hal.cpp => hal_dev_open\n> > \t3.1 CameraHalManager::instance()->open\n> > 4. camera_device.cpp => Camera::open\n> > \t4.1 camera_->acquire\n> > 5. camera.cpp => Camera::qcquire\n> > \t5.1 isAccessAllowed(Private::CameraAvailabe) is where it fails,\n> > because it assumes the camera is not open I guess\n> >\n> > This is the stack trace:\n> >\n> > 06-04 13:46:54.783  3213  3296 D Camera2CaptureRequestBuilder:\n> > createCaptureRequest\n> > 06-04 13:46:54.795  3324  3534 E libcamera: ERROR Camera\n> > camera.cpp:675 Camera in Running state trying acquire() requiring\n> > state Available\n> > 06-04 13:46:54.795  3324  3534 E libcamera: ERROR HAL\n> > camera_device.cpp:390\n> '/base/axi/pcie@120000/rp1/i2c@88000/imx708@1a':\n> > Failed to acquire the camera\n> > 06-04 13:46:54.795  3324  3534 E libcamera: ERROR HAL camera3_hal.cpp:81\n> Failed to open camera module '0'\n> > 06-04 13:46:54.796  3324  3534 E libcamera: FATAL HAL\n> > generic_frame_buffer_allocator.cpp:106 gralloc_open() failed: -87\n> \n> This reminds of a bug I solved long ago:\n> \n> Here, libcamera tries to open the camera HAL instead of the gralloc HAL.\n> \n> I send a patch for this here:\n> https://patchwork.libcamera.org/patch/18655/\n> \n> Can you confirm the above patch is in your tree?\n> \n> It should be, since it's been merged a year ago.\n> \n> \n> > 06-04 13:46:54.796  3324  3534 D libcamera: Backtrace:\n> >\n> > Can you guys maybe enlighten me how this process is supposed to work\n> when previewing a streaming and then capturing the image?\n> > Because this seems to be the hiccup with this.\n> > Are there two devices that must be opened or is the image capture done\n> by the streaming instance?\n> > I see /dev/media0 to 3 gets created for the camera.\n> >\n> > I would really appreciate it if you can give me some pointers.\n> > We need the get this hardware solution going.\n> >\n> > Cheers\n> > Jan\n> >\n> >\n> > -----Original Message-----\n> > From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > Sent: Tuesday, June 4, 2024 10:14 PM\n> > To: jan@radicalsystems.co.za\n> > Cc: libcamera-devel@lists.libcamera.org\n> > Subject: Re: Rpi 4 & 5 Libcamera & Mmap permission issue on Android 14\n> >\n> > Hello Jan,\n> >\n> > On Tue, Jun 04, 2024 at 12:26:20PM +0200, jan@radicalsystems.co.za wrote:\n> >> Hi Libcamera Fundis!\n> >>\n> >> Having a problem capturing an image on Android 14 (& 13).\n> >>\n> >> Tombstone looks like this:\n> >>\n> >> 06-03 15:13:03.880 308 578 I DMABUFHEAPS: Using : Non-legacy ION\n> >> heaps\n> >> 06-03 15:13:03.880 308 578 I [minigbm:gbm_mesa_internals.cpp(233)]:\n> >> Found GPU v3d\n> >> 06-03 15:13:04.052 308 359 E libcamera: ERROR Buffer\n> >> mapped_framebuffer.cpp:230 Failed to mmap plane: Permission denied\n> >>\n> >> .... lots of Permission denied!\n> >>\n> >> 06-03 15:13:11.282 308 359 E libcamera: ERROR Buffer\n> >> mapped_framebuffer.cpp:230 Failed to mmap plane: Permission denied\n> >> 06-03 15:13:12.008 308 579 E libcamera: ERROR Camera camera.cpp:675\n> >> Camera in Running state trying acquire() requiring state Available\n> >> 06-03 15:13:12.008 308 579 E libcamera: ERROR HAL\n> >> camera_device.cpp:390\n> '/base/axi/pcie@120000/rp1/i2c@88000/imx708@1a':\n> >> Failed to acquire the camera\n> >> 06-03 15:13:12.008 308 579 E libcamera: ERROR HAL camera3_hal.cpp:81\n> Failed to open camera module '0'\n> >> 06-03 15:13:12.008 308 579 E libcamera: FATAL HAL\n> >> generic_frame_buffer_allocator.cpp:106 gralloc_open() failed: -87\n> >>\n> >> MLKIT Streaming & analyzing works until trying to capture an image\n> >> the above happens.\n> >>\n> >> The various Android versions for Rpi5 I could find gave the same issue.\n> >>\n> >> I tried Emteria, AOSP & LineageOS 13 & 14\n> >>\n> >> Android built from Raspberry Vanilla and even replacing with later\n> >> libcamera had the same issue.\n> >>\n> >> I’m not sure if this is purely a configuration problem, wrt to\n> >> policies or permissions or specifically to the RPi’s architecture.\n> >>\n> >> Please help, I can rebuild and test.\n> >>\n> >> I have tried the latest code pulled into RaspVanilla, but had the same\n> issue.\n> >\n> > This doesn't ring a bell, but let's see if we can debug it.\n> >\n> > The first step is to figure out if the mmap() parameters are right. In\n> MappedFrameBuffer::MappedFrameBuffer(), at the location of the failure,\n> could you print the value of fd, info.mapLength, and mmapFlags ?\n> > Something like the following should do:\n> >\n> > diff --git a/src/libcamera/mapped_framebuffer.cpp\n> > b/src/libcamera/mapped_framebuffer.cpp\n> > index b3104e0504d4..baa0587b4fcf 100644\n> > --- a/src/libcamera/mapped_framebuffer.cpp\n> > +++ b/src/libcamera/mapped_framebuffer.cpp\n> > @@ -223,6 +223,9 @@ MappedFrameBuffer::MappedFrameBuffer(const\n> FrameBuffer *buffer, MapFlags flags)\n> >  \t\tconst int fd = plane.fd.get();\n> >  \t\tauto &info = mappedBuffers[fd];\n> >  \t\tif (!info.address) {\n> > +\t\t\tLOG(Buffer, Info)\n> > +\t\t\t\t<< \"Mapping fd: \" << fd << \", length: \"\n> > +\t\t\t\t<< info.mapLength << \", flags: \" <<\n> mmapFlags;\n> >  \t\t\tvoid *address = mmap(nullptr, info.mapLength,\n> mmapFlags,\n> >  \t\t\t\t\t     MAP_SHARED, fd, 0);\n> >  \t\t\tif (address == MAP_FAILED) {\n> >\n> > (I haven't tested it though)\n> >\n> > --\n> > Regards,\n> >\n> > Laurent Pinchart","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 3C3D8BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Jul 2024 10:11:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3995063369;\n\tFri, 12 Jul 2024 12:11:52 +0200 (CEST)","from wakko.aserv.co.za (wakko.aserv.co.za [197.242.144.103])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2AA1762E17\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Jul 2024 12:11:49 +0200 (CEST)","from [102.39.59.148] (port=51868 helo=JANDEVDELL)\n\tby wakko.aserv.co.za with esmtpsa (TLS1.2) tls\n\tTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93)\n\t(envelope-from <jan@radicalsystems.co.za>)\n\tid 1sSDFh-00095f-Vk; Fri, 12 Jul 2024 12:11:46 +0200"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=radicalsystems.co.za\n\theader.i=@radicalsystems.co.za header.b=\"xHFpuMxe\"; \n\tdkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=radicalsystems.co.za; s=default;\n\th=Content-Transfer-Encoding:Content-Type:\n\tMIME-Version:Message-ID:Date:Subject:In-Reply-To:References:Cc:To:From:Sender\n\t:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:\n\tResent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:\n\tList-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=lvCUo8InVTQVEXwfEHPObqD9qwYrpOQGQMzo3UII85k=;\n\tb=xHFpuMxe1KJdPLoGTDuR5U27hv\n\tY0wdNgupSW4ZEaakds+nWkdSv585M4Hgmby7WvvToEZBAVqFFmdtOQe0Wui4yPo2/VKWdyKL3w3ln\n\tgNXXlqmt++Dj8KMY0VdJZ0dDkgm0TKa+kSWxjsAE6gvusu4mZ5GYz2A8zQXxgGsOm9ebNxegmUkVs\n\tj4MJ0GsB51Zs/n8L9WcraNIU2GRaceFC1jNpWsNhXXK6f9DRotpQz3GV1Dev5KysSzz1kHfVRhCg/\n\tx8v8k+IBG0DZeMYldDZzjNcTwwyvCmqkglRffkQGXbQs1uqryzlS/PDAHK4TyciOThYDxMzmbUDF6\n\tS6uvOjyQ==;","From":"<jan@radicalsystems.co.za>","To":"\"'Mattijs Korpershoek'\" <mkorpershoek@baylibre.com>,\n\t\"'Laurent Pinchart'\" <laurent.pinchart@ideasonboard.com>","Cc":"<libcamera-devel@lists.libcamera.org>","References":"<324c01dab669$a47715a0$ed6540e0$@radicalsystems.co.za>\n\t<20240604123223.GA879@pendragon.ideasonboard.com>\n\t<3cb201dab8e2$371eb550$a55c1ff0$@radicalsystems.co.za>\n\t<87jzhr0xgt.fsf@baylibre.com>","In-Reply-To":"<87jzhr0xgt.fsf@baylibre.com>","Subject":"RE: Rpi 4 & 5  Libcamera, preview streaming and image capture","Date":"Fri, 12 Jul 2024 12:11:46 +0200","Message-ID":"<02ff01dad443$e735efe0$b5a1cfa0$@radicalsystems.co.za>","MIME-Version":"1.0","Content-Type":"text/plain;\n\tcharset=\"utf-8\"","Content-Transfer-Encoding":"quoted-printable","X-Mailer":"Microsoft Outlook 16.0","Thread-Index":"AQJssOmpIQmLW9Pf2jf4YWDIdygPqQIFU26JAX9eicEBLoE/H7Cpigww","Content-Language":"en-us","X-AntiAbuse":["This header was added to track abuse,\n\tplease include it with any abuse report","Primary Hostname - wakko.aserv.co.za","Original Domain - lists.libcamera.org","Originator/Caller UID/GID - [47 12] / [47 12]","Sender Address Domain - radicalsystems.co.za"],"X-Get-Message-Sender-Via":"wakko.aserv.co.za: authenticated_id:\n\tjan@radicalsystems.co.za","X-Authenticated-Sender":"wakko.aserv.co.za: jan@radicalsystems.co.za","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>"}}]