[{"id":39434,"web_url":"https://patchwork.libcamera.org/comment/39434/","msgid":"<178246812705.175457.4948279383174351637@ping.linuxembedded.co.uk>","date":"2026-06-26T10:02:07","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Robert Mader (2026-06-26 10:28:46)\n> libyuv already depends on libjpeg. The requirement for the later is only\n> needed if libyuv is build from the subproject fallback, thus move the\n> requirement accordingly. This allows the virtual pipeline to be build\n> with only libyuv development files installed - and without libjpeg ones.\n> \n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n\nLooks good to me.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> ---\n>  src/libcamera/pipeline/virtual/meson.build | 3 ---\n>  src/meson.build                            | 4 +++-\n>  2 files changed, 3 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build\n> index c84345936..19fde9cf8 100644\n> --- a/src/libcamera/pipeline/virtual/meson.build\n> +++ b/src/libcamera/pipeline/virtual/meson.build\n> @@ -7,9 +7,6 @@ libcamera_internal_sources += files([\n>      'virtual.cpp',\n>  ])\n>  \n> -libjpeg = dependency('libjpeg', required : true)\n> -\n>  libcamera_deps += [libyuv_dep]\n> -libcamera_deps += [libjpeg]\n>  \n>  subdir('data')\n> diff --git a/src/meson.build b/src/meson.build\n> index 9b63c8e84..8e23d40c3 100644\n> --- a/src/meson.build\n> +++ b/src/meson.build\n> @@ -46,6 +46,8 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>     not libyuv_dep.found()\n>      cmake = import('cmake')\n>  \n> +    libjpeg = dependency('libjpeg', required : true)\n> +\n>      libyuv_vars = cmake.subproject_options()\n>      libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})\n>      libyuv_vars.set_override_option('cpp_std', 'c++17')\n> @@ -64,7 +66,7 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>      # Work around the issue by wrapping the libyuv static library into another\n>      # static library with 'pic' set to true.\n>      libyuv_static = static_library('libyuv-static',\n> -                                   dependencies : libyuv.dependency('yuv'),\n> +                                   dependencies : [libyuv.dependency('yuv'), libjpeg],\n>                                     pic : true,\n>                                     install : false)\n>      libyuv_include = libyuv.include_directories('yuv')\n> -- \n> 2.54.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 8E079BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Jun 2026 10:02:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 49225658E8;\n\tFri, 26 Jun 2026 12:02:11 +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 D464565878\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 12:02:09 +0200 (CEST)","from monstersaurus.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 E0AA41E7;\n\tFri, 26 Jun 2026 12:01:28 +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=\"pTBcdL0J\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782468089;\n\tbh=CPSa7tFrHbiEmrR0uF97x+D+NTuD/H1ue+1d83XJ+rQ=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=pTBcdL0JEi0U874I9ygGeVpw9KbYRQQH/nJFm/9bJFaJNGUO9rxfPcRH8MWGhK1NO\n\tvN6iU5laTVvC06ZiFiOPoiYFl0e8aQMunZOqSnbnGHPr/W1/Jl0UpBD+SHPm4xdodU\n\tRl+T7STFcfyxlTkKNvd8zl3fgMqvqyet1oNRgz20=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260626092847.289764-2-robert.mader@collabora.com>","References":"<20260626092847.289764-1-robert.mader@collabora.com>\n\t<20260626092847.289764-2-robert.mader@collabora.com>","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Robert Mader <robert.mader@collabora.com>","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Fri, 26 Jun 2026 11:02:07 +0100","Message-ID":"<178246812705.175457.4948279383174351637@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":39437,"web_url":"https://patchwork.libcamera.org/comment/39437/","msgid":"<20260626104820.GC2258794@killaraus.ideasonboard.com>","date":"2026-06-26T10:48:20","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Fri, Jun 26, 2026 at 11:28:46AM +0200, Robert Mader wrote:\n> libyuv already depends on libjpeg. The requirement for the later is only\n> needed if libyuv is build from the subproject fallback, thus move the\n> requirement accordingly. This allows the virtual pipeline to be build\n> with only libyuv development files installed - and without libjpeg ones.\n> \n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> ---\n>  src/libcamera/pipeline/virtual/meson.build | 3 ---\n>  src/meson.build                            | 4 +++-\n>  2 files changed, 3 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build\n> index c84345936..19fde9cf8 100644\n> --- a/src/libcamera/pipeline/virtual/meson.build\n> +++ b/src/libcamera/pipeline/virtual/meson.build\n> @@ -7,9 +7,6 @@ libcamera_internal_sources += files([\n>      'virtual.cpp',\n>  ])\n>  \n> -libjpeg = dependency('libjpeg', required : true)\n> -\n>  libcamera_deps += [libyuv_dep]\n> -libcamera_deps += [libjpeg]\n>  \n>  subdir('data')\n> diff --git a/src/meson.build b/src/meson.build\n> index 9b63c8e84..8e23d40c3 100644\n> --- a/src/meson.build\n> +++ b/src/meson.build\n> @@ -46,6 +46,8 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>     not libyuv_dep.found()\n>      cmake = import('cmake')\n>  \n> +    libjpeg = dependency('libjpeg', required : true)\n> +\n>      libyuv_vars = cmake.subproject_options()\n>      libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})\n>      libyuv_vars.set_override_option('cpp_std', 'c++17')\n> @@ -64,7 +66,7 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>      # Work around the issue by wrapping the libyuv static library into another\n>      # static library with 'pic' set to true.\n>      libyuv_static = static_library('libyuv-static',\n> -                                   dependencies : libyuv.dependency('yuv'),\n> +                                   dependencies : [libyuv.dependency('yuv'), libjpeg],\n\nThe meson.build generated in the libyuv subproject contains the\nfollowing:\n\nyuv = static_library(\n  'yuv',\n  yuv_src,\n  build_by_default : true,\n  link_args : ['-ljpeg'],\n  link_with : [],\n  include_directories : yuv_inc,\n  install : true,\n  override_options : ['cpp_std=c++17'],\n  objects : [\n    yuv_common_objects.extract_all_objects(),\n    yuv_neon.extract_all_objects()\n  ],\n  install_dir : 'lib',\n  c_args : [],\n  pic : false\n)\nyuv_dep = declare_dependency(\n  link_with : yuv,\n  compile_args : [],\n  include_directories : yuv_inc,\n  link_args : []\n)\n\nWe then wrap yuv_dep into another static library. The -ljpeg link flag\nis lost somewhere along the way. I wonder if that's a bug in meson.\n\nFor the time being this seems a proper workaround. The commit message\ncould be improved though.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>                                     pic : true,\n>                                     install : false)\n>      libyuv_include = libyuv.include_directories('yuv')","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 5308DC3261\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Jun 2026 10:48:25 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5C38F658EE;\n\tFri, 26 Jun 2026 12:48:24 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 82CC9658DB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 12:48:22 +0200 (CEST)","from killaraus.ideasonboard.com\n\t(2001-14ba-70f3-e800--a06.rev.dnainternet.fi\n\t[IPv6:2001:14ba:70f3:e800::a06])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 706D5174;\n\tFri, 26 Jun 2026 12:47:41 +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=\"XTxH1B3X\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782470861;\n\tbh=EBZivr0/76lFyflWrxDofxS6mNHDYNGYfQqvJJ1hnWw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=XTxH1B3XMIcWokeFvLIpcl8cdsHG/NLAtWze7nMBTUzjKyj+BiK5dJCVNnVInMtL/\n\tKKxlHrJERf2BJHswc9gIwizlAGr0uPk4Zpu0ebCq7Fo3LdUTp6tD2R5AofUs0NNwmR\n\tXec9PRhAdTUaEpX2FlOFGvaek+OWiDwCI5pDYEbM=","Date":"Fri, 26 Jun 2026 13:48:20 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Robert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","Message-ID":"<20260626104820.GC2258794@killaraus.ideasonboard.com>","References":"<20260626092847.289764-1-robert.mader@collabora.com>\n\t<20260626092847.289764-2-robert.mader@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20260626092847.289764-2-robert.mader@collabora.com>","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":39451,"web_url":"https://patchwork.libcamera.org/comment/39451/","msgid":"<0253870a-708d-41c3-bd4d-93f6df1138a4@ideasonboard.com>","date":"2026-06-26T11:27:28","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 06. 26. 12:48 keltezéssel, Laurent Pinchart írta:\n> On Fri, Jun 26, 2026 at 11:28:46AM +0200, Robert Mader wrote:\n>> libyuv already depends on libjpeg. The requirement for the later is only\n>> needed if libyuv is build from the subproject fallback, thus move the\n>> requirement accordingly. This allows the virtual pipeline to be build\n>> with only libyuv development files installed - and without libjpeg ones.\n>>\n>> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n>> ---\n>>   src/libcamera/pipeline/virtual/meson.build | 3 ---\n>>   src/meson.build                            | 4 +++-\n>>   2 files changed, 3 insertions(+), 4 deletions(-)\n>>\n>> diff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build\n>> index c84345936..19fde9cf8 100644\n>> --- a/src/libcamera/pipeline/virtual/meson.build\n>> +++ b/src/libcamera/pipeline/virtual/meson.build\n>> @@ -7,9 +7,6 @@ libcamera_internal_sources += files([\n>>       'virtual.cpp',\n>>   ])\n>>   \n>> -libjpeg = dependency('libjpeg', required : true)\n>> -\n>>   libcamera_deps += [libyuv_dep]\n>> -libcamera_deps += [libjpeg]\n>>   \n>>   subdir('data')\n>> diff --git a/src/meson.build b/src/meson.build\n>> index 9b63c8e84..8e23d40c3 100644\n>> --- a/src/meson.build\n>> +++ b/src/meson.build\n>> @@ -46,6 +46,8 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>>      not libyuv_dep.found()\n>>       cmake = import('cmake')\n>>   \n>> +    libjpeg = dependency('libjpeg', required : true)\n>> +\n>>       libyuv_vars = cmake.subproject_options()\n>>       libyuv_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})\n>>       libyuv_vars.set_override_option('cpp_std', 'c++17')\n>> @@ -64,7 +66,7 @@ if (pipelines.contains('virtual') or get_option('android').allowed()) and \\\n>>       # Work around the issue by wrapping the libyuv static library into another\n>>       # static library with 'pic' set to true.\n>>       libyuv_static = static_library('libyuv-static',\n>> -                                   dependencies : libyuv.dependency('yuv'),\n>> +                                   dependencies : [libyuv.dependency('yuv'), libjpeg],\n> \n> The meson.build generated in the libyuv subproject contains the\n> following:\n> \n> yuv = static_library(\n>    'yuv',\n>    yuv_src,\n>    build_by_default : true,\n>    link_args : ['-ljpeg'],\n>    link_with : [],\n>    include_directories : yuv_inc,\n>    install : true,\n>    override_options : ['cpp_std=c++17'],\n>    objects : [\n>      yuv_common_objects.extract_all_objects(),\n>      yuv_neon.extract_all_objects()\n>    ],\n>    install_dir : 'lib',\n>    c_args : [],\n>    pic : false\n> )\n> yuv_dep = declare_dependency(\n>    link_with : yuv,\n>    compile_args : [],\n>    include_directories : yuv_inc,\n>    link_args : []\n> )\n> \n> We then wrap yuv_dep into another static library. The -ljpeg link flag\n> is lost somewhere along the way. I wonder if that's a bug in meson.\n\nThe upstream cmake files does not seem to mention libjpeg at all, so probably not. It's\nnot entirely surprising given that there files for n+1 build systems in the upstream project.\n\n\n> \n> For the time being this seems a proper workaround. The commit message\n> could be improved though.\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n>>                                      pic : true,\n>>                                      install : false)\n>>       libyuv_include = libyuv.include_directories('yuv')\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 A9C2ABF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Jun 2026 11:27:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5322F658FF;\n\tFri, 26 Jun 2026 13:27:33 +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 7AC6165878\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Jun 2026 13:27:31 +0200 (CEST)","from [192.168.33.48] (185.221.143.75.nat.pool.zt.hu\n\t[185.221.143.75])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id AB0141E6;\n\tFri, 26 Jun 2026 13:26:50 +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=\"aZl0/T0E\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782473210;\n\tbh=J9TW7F/Y+DEHWy1QE5swRjQkcYm1wlprbnkUNsXAmGY=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=aZl0/T0ElNVCvVeZVrObx9voG1y2RH/HRR3lVkc163FArrR2EzlRlqPmMUG4bROu+\n\tK6Fd73XZnfMX+50OQl0WpnKTJEvPb98UllcIk70OORyq+WTOQVrih7o5jSVnS17WNv\n\tr5arNH2+xe401LaiSShQgYNPk1p6y2tOkCyHVsLg=","Message-ID":"<0253870a-708d-41c3-bd4d-93f6df1138a4@ideasonboard.com>","Date":"Fri, 26 Jun 2026 13:27:28 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Move libjpeg requirement to\n\tlibyuv subproject","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tRobert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260626092847.289764-1-robert.mader@collabora.com>\n\t<20260626092847.289764-2-robert.mader@collabora.com>\n\t<20260626104820.GC2258794@killaraus.ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260626104820.GC2258794@killaraus.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}}]