[{"id":31550,"web_url":"https://patchwork.libcamera.org/comment/31550/","msgid":"<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","date":"2024-10-03T09:48:09","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Harvey Yang (2024-09-30 07:29:41)\n> Hi all,\n> \n> This series adds virtual pipeline handler, which doesn't depend on any\n> hardware, like camera sensor or ISP. Currently the configuration\n> supports test patterns and images.\n> \n> It passed the gitlab pipeline:\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> \n> I've also checked that it works on qcam.\n> \n> I failed to pass multi_stream_test when trying to enable multiple\n> streams though. Please give me some hints what it tests and what I\n> missed:\n> ```\n> [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> mera/build/src/ipa' to the IPA search path\n> [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> mera/build/src/ipa' to the IPA search path\n> [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> Unable to set the pipeline to the playing state.\n\nIs this the error you get when you enable multiple streams in the\nvirtual pipeline handler?\n\nI still think that looks like an issue in the configuration of the VM\nnot having udmabuf which you use.\n\n\nTo fix this, you would probably need to fork the CI scripts:\n\n - https://gitlab.freedesktop.org/camera/libcamera-ci\n\nAnd direct your local\nhttps://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\nyou work out the issue.\n\nI suspect you need to add something at \n\nhttps://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n\nto enable the uDMA config options...\n\n--\nKieran\n\n\n\n> ```\n> \n> Gitlab pipeline failure:\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> \n> Updates in v14:\n> - Refactored ImageFrames to keep a list of filepaths directly.\n> \n> Updates in v13:\n> - Returned an errno in `FrameGenerete::generateFrame()`\n> \n> Updates in v12:\n> - Added ImageFrameGenerator first, then add Parser.\n> - Removed ScaleMode argument, as only Fill is supported now.\n> - Fixed bug of Stream's configuration usage in configure().\n> \n> Updates in v11:\n> - Allowed a single value in the config file's frame_rates field.\n> \n> Updates in v10:\n> Apply fixes according to Jacopo's and Barnabás' comments.\n> - Split test_pattern and path fields in the yaml format.\n> - Let FrameGenerators control frameCount_.\n> - Fixed match() returning values.\n> \n> Updates in v9: Allocate contiguous memory for planes in the same\n> FrameBuffer.\n> \n> BR,\n> Harvey\n> \n> Harvey Yang (6):\n>   libcamera: add DmaBufAllocator::exportBuffers()\n>   libcamera: Remove PipelineHandler Fatal check of non-empty\n>     MediaDevices\n>   libcamera: virtual: Add VirtualPipelineHandler\n>   libcamera: virtual: Add ImageFrameGenerator\n>   libcamera: virtual: Read config and register cameras based on the\n>     config\n>   libcamera: software_isp: Refactor SoftwareIsp to use\n>     DmaBufAllocator::exportBuffers\n> \n> Konami Shu (1):\n>   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> \n>  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n>  meson.build                                   |   1 +\n>  meson_options.txt                             |   3 +-\n>  src/android/meson.build                       |  19 -\n>  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n>  src/libcamera/pipeline/virtual/README.md      |  48 +++\n>  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n>  .../pipeline/virtual/frame_generator.h        |  29 ++\n>  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n>  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n>  src/libcamera/pipeline/virtual/meson.build    |  13 +\n>  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n>  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n>  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n>  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n>  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n>  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n>  src/libcamera/pipeline_handler.cpp            |  11 +-\n>  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n>  src/meson.build                               |  19 +\n>  20 files changed, 1378 insertions(+), 42 deletions(-)\n>  create mode 100644 src/libcamera/pipeline/virtual/README.md\n>  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n>  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n>  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n>  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n>  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n>  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n>  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n>  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n>  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n>  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n>  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> \n> -- \n> 2.46.1.824.gd892dcdcdd-goog\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 6E0F1C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Oct 2024 09:48:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 60FD863525;\n\tThu,  3 Oct 2024 11:48:13 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2154A62C93\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2024 11:48:12 +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 CFD5D4C7;\n\tThu,  3 Oct 2024 11:46:38 +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=\"cUd8eD12\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727948798;\n\tbh=7tkm5aajWFRs+KVFbRnN8O6obJoA8QbDnZUGpqsQ3xg=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=cUd8eD12a4JuIrj+rM4Er+5O9zNkpEwxwv6I8JyV0LbwizMXRvFl96ejUwSweGH3q\n\tS4QChiJgfuV+hwxuwvFVBOggQX2wfy0LEfAKBuhfeBpWMIJvBlxJYMmhdOda52hPfu\n\t+MyItQumGG7vHHu1Ox19wnsvb6f48bKEqSVnsv0o=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240930063342.3014837-1-chenghaoyang@google.com>","References":"<20240930063342.3014837-1-chenghaoyang@google.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Harvey Yang <chenghaoyang@google.com>","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 03 Oct 2024 10:48:09 +0100","Message-ID":"<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":31554,"web_url":"https://patchwork.libcamera.org/comment/31554/","msgid":"<ggjvg6rvftxskzccooa4jlvljp6l24dheltemju5wiosihfnxn@cx76szvx6uoi>","date":"2024-10-03T10:06:25","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Harvey, Kieran\n\nWhen enabling virtual explicitly with\n\n$ meson setup -Dpipelines=virtual -Dtest=true build\n\n    Enabled pipelines        : virtual\n                               vimc\n    Enabled IPA modules      : vimc\n\n\nI see the gstreamer tests fail\n\n11/76 libcamera:gstreamer / single_stream_test                           FAIL            0.06s   (exit status 255 or signal 127 SIGinvalid)\n>>> GST_REGISTRY=libcamera/build/src/gstreamer/registry.data MALLOC_PERTURB_=174 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 LD_LIBRARY_PATH=libcamera/build/srclibcamera:libcamera/build/srclibcamera/base GST_PLUGIN_PATH=libcamera/build/src/gstreamer MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 libcamera/build/test/gstreamer/single_stream_test\n――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\nstderr:\n[11:00:27.257053299] [96636]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n[11:00:27.257480798] [96636]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n[11:00:27.266082509] [96639]  INFO Pipeline pipeline_handler.cpp:607 libcamera is not installed. Loading platform configuration file from 'libcamera/srclibcamera/pipeline/virtual/data/virtual.yaml'\n[11:00:27.268681746] [96639]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n[11:00:27.268695222] [96639]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n[11:00:27.268705582] [96639]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n[11:00:27.268712765] [96639]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n[11:00:27.270796605] [96639]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n[11:00:27.274312097] [96636]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n[11:00:27.274519725] [96636]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n[11:00:27.283135212] [96641]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n[11:00:27.283148687] [96641]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n[11:00:27.283157194] [96641]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n[11:00:27.283164107] [96641]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n[11:00:27.284783458] [96641]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\nUnable to set the pipeline to the playing state.\n\n\n14/76 libcamera:gstreamer / memory_lifetime_test                         FAIL            0.06s   (exit status 255 or signal 127 SIGinvalid)\n>>> GST_REGISTRY=libcamera/build/src/gstreamer/registry.data ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=27 LD_LIBRARY_PATH=libcamera/build/srclibcamera:libcamera/build/srclibcamera/base GST_PLUGIN_PATH=libcamera/build/src/gstreamer MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 libcamera/build/test/gstreamer/memory_lifetime_test\n――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\nstderr:\n[11:00:27.439322563] [96653]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n[11:00:27.439765441] [96653]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n[11:00:27.448559711] [96656]  INFO Pipeline pipeline_handler.cpp:607 libcamera is not installed. Loading platform configuration file from 'libcamera/srclibcamera/pipeline/virtual/data/virtual.yaml'\n[11:00:27.451117569] [96656]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n[11:00:27.451131004] [96656]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n[11:00:27.451141464] [96656]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n[11:00:27.451148768] [96656]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n[11:00:27.453229513] [96656]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n[11:00:27.456577003] [96653]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n[11:00:27.456783358] [96653]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n[11:00:27.465133517] [96658]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n[11:00:27.465147213] [96658]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n[11:00:27.465155890] [96658]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n[11:00:27.465163013] [96658]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n[11:00:27.466752627] [96658]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\nUnable to set the pipeline to the playing state.\n\nIf instead I don't specify any pipeline options but only enable test\n\n$ meson setup -Dtest=true build\n\n    Enabled pipelines        : ipu3\n                               simple\n                               uvcvideo\n                               vimc\n                               virtual\n    Enabled IPA modules      : ipu3\n                               simple\n                               vimc\nBoth tests pass\n\n11/76 libcamera:gstreamer / single_stream_test                           OK              3.84s\n14/76 libcamera:gstreamer / memory_lifetime_test                         OK              0.27s\n\nReasons are not yet clear to me, but it would be helpful if you try to\nreproduce locally and confirm it's not my local issue\n\nThanks\n  j\n\nOn Thu, Oct 03, 2024 at 10:48:09AM GMT, Kieran Bingham wrote:\n> Quoting Harvey Yang (2024-09-30 07:29:41)\n> > Hi all,\n> >\n> > This series adds virtual pipeline handler, which doesn't depend on any\n> > hardware, like camera sensor or ISP. Currently the configuration\n> > supports test patterns and images.\n> >\n> > It passed the gitlab pipeline:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> >\n> > I've also checked that it works on qcam.\n> >\n> > I failed to pass multi_stream_test when trying to enable multiple\n> > streams though. Please give me some hints what it tests and what I\n> > missed:\n> > ```\n> > [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > mera/build/src/ipa' to the IPA search path\n> > [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > mera/build/src/ipa' to the IPA search path\n> > [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > Unable to set the pipeline to the playing state.\n>\n> Is this the error you get when you enable multiple streams in the\n> virtual pipeline handler?\n>\n> I still think that looks like an issue in the configuration of the VM\n> not having udmabuf which you use.\n>\n>\n> To fix this, you would probably need to fork the CI scripts:\n>\n>  - https://gitlab.freedesktop.org/camera/libcamera-ci\n>\n> And direct your local\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\n> you work out the issue.\n>\n> I suspect you need to add something at\n>\n> https://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n>\n> to enable the uDMA config options...\n>\n> --\n> Kieran\n>\n>\n>\n> > ```\n> >\n> > Gitlab pipeline failure:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> >\n> > Updates in v14:\n> > - Refactored ImageFrames to keep a list of filepaths directly.\n> >\n> > Updates in v13:\n> > - Returned an errno in `FrameGenerete::generateFrame()`\n> >\n> > Updates in v12:\n> > - Added ImageFrameGenerator first, then add Parser.\n> > - Removed ScaleMode argument, as only Fill is supported now.\n> > - Fixed bug of Stream's configuration usage in configure().\n> >\n> > Updates in v11:\n> > - Allowed a single value in the config file's frame_rates field.\n> >\n> > Updates in v10:\n> > Apply fixes according to Jacopo's and Barnabás' comments.\n> > - Split test_pattern and path fields in the yaml format.\n> > - Let FrameGenerators control frameCount_.\n> > - Fixed match() returning values.\n> >\n> > Updates in v9: Allocate contiguous memory for planes in the same\n> > FrameBuffer.\n> >\n> > BR,\n> > Harvey\n> >\n> > Harvey Yang (6):\n> >   libcamera: add DmaBufAllocator::exportBuffers()\n> >   libcamera: Remove PipelineHandler Fatal check of non-empty\n> >     MediaDevices\n> >   libcamera: virtual: Add VirtualPipelineHandler\n> >   libcamera: virtual: Add ImageFrameGenerator\n> >   libcamera: virtual: Read config and register cameras based on the\n> >     config\n> >   libcamera: software_isp: Refactor SoftwareIsp to use\n> >     DmaBufAllocator::exportBuffers\n> >\n> > Konami Shu (1):\n> >   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> >\n> >  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n> >  meson.build                                   |   1 +\n> >  meson_options.txt                             |   3 +-\n> >  src/android/meson.build                       |  19 -\n> >  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n> >  src/libcamera/pipeline/virtual/README.md      |  48 +++\n> >  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n> >  .../pipeline/virtual/frame_generator.h        |  29 ++\n> >  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n> >  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n> >  src/libcamera/pipeline/virtual/meson.build    |  13 +\n> >  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n> >  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n> >  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n> >  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n> >  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n> >  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n> >  src/libcamera/pipeline_handler.cpp            |  11 +-\n> >  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n> >  src/meson.build                               |  19 +\n> >  20 files changed, 1378 insertions(+), 42 deletions(-)\n> >  create mode 100644 src/libcamera/pipeline/virtual/README.md\n> >  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n> >  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n> >  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> >\n> > --\n> > 2.46.1.824.gd892dcdcdd-goog\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 05A1DBD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Oct 2024 10:06:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AC58A63529;\n\tThu,  3 Oct 2024 12:06:31 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 98BA263522\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2024 12:06:30 +0200 (CEST)","from ideasonboard.com (unknown [95.131.46.93])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 855DD4C7;\n\tThu,  3 Oct 2024 12:04:57 +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=\"p+d7QCxx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727949897;\n\tbh=n1b54QB8yQwQnQ10K9Ir813OfjUe8p32bZuK/D/p0uQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=p+d7QCxxrPi/Do+YwgmV4KDz+x8jTjPtIgMro/L1zDXc3gUOH439YWQDRk0pIoZa5\n\tsW7FPV37pyD89aAroF2yxekjrnXuomQeS+PGlIdNnKsemAEeOBP+o9vufpg5iErMH+\n\tqSr08Z1I0VRdhA37btkZ32RgkOoJmDNc6/tLJKvQ=","Date":"Thu, 3 Oct 2024 12:06:25 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Harvey Yang <chenghaoyang@chromium.org>, \n\tlibcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","Message-ID":"<ggjvg6rvftxskzccooa4jlvljp6l24dheltemju5wiosihfnxn@cx76szvx6uoi>","References":"<20240930063342.3014837-1-chenghaoyang@google.com>\n\t<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","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":31555,"web_url":"https://patchwork.libcamera.org/comment/31555/","msgid":"<CAEB1ahs9M6PZ124tL4Lt6_TseWAkB5kCtw=kv542=DBt63+aQA@mail.gmail.com>","date":"2024-10-03T10:06:58","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran,\n\nOn Thu, Oct 3, 2024 at 5:48 PM Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Harvey Yang (2024-09-30 07:29:41)\n> > Hi all,\n> >\n> > This series adds virtual pipeline handler, which doesn't depend on any\n> > hardware, like camera sensor or ISP. Currently the configuration\n> > supports test patterns and images.\n> >\n> > It passed the gitlab pipeline:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> >\n> > I've also checked that it works on qcam.\n> >\n> > I failed to pass multi_stream_test when trying to enable multiple\n> > streams though. Please give me some hints what it tests and what I\n> > missed:\n> > ```\n> > [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > mera/build/src/ipa' to the IPA search path\n> > [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > mera/build/src/ipa' to the IPA search path\n> > [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > Unable to set the pipeline to the playing state.\n>\n> Is this the error you get when you enable multiple streams in the\n> virtual pipeline handler?\n\nCorrect :)\n\n>\n> I still think that looks like an issue in the configuration of the VM\n> not having udmabuf which you use.\n\nHmm, as I shared before, the pipeline unit test still fails when I\nsupport a workaround memfd_create:\nhttps://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1279655\n, which contains:\nhttps://gitlab.freedesktop.org/chenghaoyang/libcamera/-/commit/9f032290fc97dae1fbace2314420a73251169cee\n\nAt least it works on my gLinux environment.\nDoesn't that imply that it's not because of DmaBufAllocator?\n\nAlso, single_stream_test passed. I assume it also tests on the\nbuffers if multi_stream_test does?\n\nBR,\nHarvey\n\n>\n>\n> To fix this, you would probably need to fork the CI scripts:\n>\n>  - https://gitlab.freedesktop.org/camera/libcamera-ci\n>\n> And direct your local\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\n> you work out the issue.\n>\n> I suspect you need to add something at\n>\n> https://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n>\n> to enable the uDMA config options...\n>\n> --\n> Kieran\n>\n>\n>\n> > ```\n> >\n> > Gitlab pipeline failure:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> >\n> > Updates in v14:\n> > - Refactored ImageFrames to keep a list of filepaths directly.\n> >\n> > Updates in v13:\n> > - Returned an errno in `FrameGenerete::generateFrame()`\n> >\n> > Updates in v12:\n> > - Added ImageFrameGenerator first, then add Parser.\n> > - Removed ScaleMode argument, as only Fill is supported now.\n> > - Fixed bug of Stream's configuration usage in configure().\n> >\n> > Updates in v11:\n> > - Allowed a single value in the config file's frame_rates field.\n> >\n> > Updates in v10:\n> > Apply fixes according to Jacopo's and Barnabás' comments.\n> > - Split test_pattern and path fields in the yaml format.\n> > - Let FrameGenerators control frameCount_.\n> > - Fixed match() returning values.\n> >\n> > Updates in v9: Allocate contiguous memory for planes in the same\n> > FrameBuffer.\n> >\n> > BR,\n> > Harvey\n> >\n> > Harvey Yang (6):\n> >   libcamera: add DmaBufAllocator::exportBuffers()\n> >   libcamera: Remove PipelineHandler Fatal check of non-empty\n> >     MediaDevices\n> >   libcamera: virtual: Add VirtualPipelineHandler\n> >   libcamera: virtual: Add ImageFrameGenerator\n> >   libcamera: virtual: Read config and register cameras based on the\n> >     config\n> >   libcamera: software_isp: Refactor SoftwareIsp to use\n> >     DmaBufAllocator::exportBuffers\n> >\n> > Konami Shu (1):\n> >   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> >\n> >  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n> >  meson.build                                   |   1 +\n> >  meson_options.txt                             |   3 +-\n> >  src/android/meson.build                       |  19 -\n> >  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n> >  src/libcamera/pipeline/virtual/README.md      |  48 +++\n> >  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n> >  .../pipeline/virtual/frame_generator.h        |  29 ++\n> >  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n> >  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n> >  src/libcamera/pipeline/virtual/meson.build    |  13 +\n> >  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n> >  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n> >  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n> >  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n> >  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n> >  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n> >  src/libcamera/pipeline_handler.cpp            |  11 +-\n> >  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n> >  src/meson.build                               |  19 +\n> >  20 files changed, 1378 insertions(+), 42 deletions(-)\n> >  create mode 100644 src/libcamera/pipeline/virtual/README.md\n> >  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n> >  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n> >  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n> >  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n> >  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> >\n> > --\n> > 2.46.1.824.gd892dcdcdd-goog\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 32547BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Oct 2024 10:07:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C743963528;\n\tThu,  3 Oct 2024 12:07:11 +0200 (CEST)","from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com\n\t[IPv6:2a00:1450:4864:20::22c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D354263522\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2024 12:07:09 +0200 (CEST)","by mail-lj1-x22c.google.com with SMTP id\n\t38308e7fff4ca-2faccccbca7so7167561fa.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 03 Oct 2024 03:07:09 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"AIoxu/XU\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1727950029; x=1728554829;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=8n6qm6a3ysz3Jmhyl1B16UJ3QMTVKG31rEO2B5VK4AM=;\n\tb=AIoxu/XUZvQusK0ipC1DqpETI7i6mkkHBttyD8rxZXMT6CoE598v34ib10Qpx3kGju\n\tymnIG+MZEMFHvv9aVHBls7GinCahuQ1/HTEV9TR0IWo7+ZZrlj7PghY/hZd3gMe+c2LY\n\tPXfbLHEVrY4qOg5Zyy8bcObI7cs+W4wy+6kmM=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1727950029; x=1728554829;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=8n6qm6a3ysz3Jmhyl1B16UJ3QMTVKG31rEO2B5VK4AM=;\n\tb=GKPwqX4ZC9Q/+bRV82/FkkExsVP9d2nM0m6bwpSiinfuSM6/sqqdeXeaC8zpwAbNlq\n\tiEtweJREtS4txLX0JYXTgwtzFXeYgQBTC8geeONlJ+YI/ZPk1j2d+2Om/o0URw2x3URN\n\tRW/+wx2q/BvAnzJ0CcQswmASCqtDJ2Xq+964QQLpyvn1G30xybEa4nm3idP8YPjPU0eD\n\t5ujU6l3SzBJmCBYZ3PWDhQQuMpfoihv9p2BnQBvkZOzubIMUDZzimgyM7BxSbkFPrUUb\n\tOkkgVliuLcqj3iliB0GBm6+Q0vp8ib5k1qFWu0sFAmwvj70axJYckygg8nsJzcZRFE83\n\tjILA==","X-Gm-Message-State":"AOJu0YzbKV2iPjDvb4JSGK7hZ5F7tY2yDNWoHS0Bz4jGV8uy9daMW1xq\n\tH91+q1fS6FfqeH0V6oO4xaTTFzM4birFjtW+fxV4o0+su4u1qrpoonLhk/pThAw75KHBLOLDUTk\n\tAbjlkud1jngqjhKxDE5ZvNDhyts6/XAhzRxMZUgeeru2/LRjBsg==","X-Google-Smtp-Source":"AGHT+IETWjwkcTiV5b4b3Lum6fjx1WpJ5EfWG4MLE7ZoUkRDlXqr8rO1RwYsr4A2wiIz5lIM6G6stUmuWruizoJKVpI=","X-Received":"by 2002:a2e:a99b:0:b0:2f7:631a:6e0d with SMTP id\n\t38308e7fff4ca-2fae101559amr37781981fa.12.1727950028790;\n\tThu, 03 Oct 2024 03:07:08 -0700 (PDT)","MIME-Version":"1.0","References":"<20240930063342.3014837-1-chenghaoyang@google.com>\n\t<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","In-Reply-To":"<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Thu, 3 Oct 2024 18:06:58 +0800","Message-ID":"<CAEB1ahs9M6PZ124tL4Lt6_TseWAkB5kCtw=kv542=DBt63+aQA@mail.gmail.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>","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":31560,"web_url":"https://patchwork.libcamera.org/comment/31560/","msgid":"<CAEB1ahtjm3Jd2opr9jH3fOPEzfmCpEG1oA8+tXzwxEuvnNhWLg@mail.gmail.com>","date":"2024-10-03T10:33:30","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Jacopo,\n\nOn Thu, Oct 3, 2024 at 6:06 PM Jacopo Mondi\n<jacopo.mondi@ideasonboard.com> wrote:\n>\n> Hi Harvey, Kieran\n>\n> When enabling virtual explicitly with\n>\n> $ meson setup -Dpipelines=virtual -Dtest=true build\n>\n>     Enabled pipelines        : virtual\n>                                vimc\n>     Enabled IPA modules      : vimc\n>\n>\n> I see the gstreamer tests fail\n>\n> 11/76 libcamera:gstreamer / single_stream_test                           FAIL            0.06s   (exit status 255 or signal 127 SIGinvalid)\n> >>> GST_REGISTRY=libcamera/build/src/gstreamer/registry.data MALLOC_PERTURB_=174 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 LD_LIBRARY_PATH=libcamera/build/srclibcamera:libcamera/build/srclibcamera/base GST_PLUGIN_PATH=libcamera/build/src/gstreamer MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 libcamera/build/test/gstreamer/single_stream_test\n\nYeah I can reproduce this failure:\n```\n$ GST_PLUGIN_PATH=build/src/gstreamer\nGST_REGISTRY=build/src/gstreamer/registry.data MALLOC_PERTURB_=153\nLD_LIBRARY_PATH=build/src/libcamera:build/src/libcamera/base\nbuild/test/gstreamer/single_stream_test\n\n[31:51:17.514101690] [2680981]  INFO IPAManager ipa_manager.cpp:137\nlibcamera is not installed. Adding\n'/usr/local/google/home/chenghaoyang/Workspace/libcamera/build/src/ipa'\nto the IPA search path\n\n[31:51:17.517267110] [2680981]  INFO Camera camera_manager.cpp:325\nlibcamera v0.3.2+51-6f273618\n\n[31:51:17.518210970] [2680984]  INFO DmaBufAllocator\ndma_buf_allocator.cpp:99 DmaBufAllocator c'tor\n\n[31:51:17.518301870] [2680984] ERROR DmaBufAllocator\ndma_buf_allocator.cpp:122 Could not open any dma-buf provider\n\n[31:51:17.518748059] [2680984]  INFO Pipeline pipeline_handler.cpp:607\nlibcamera is not installed. Loading platform configuration file from\n'/usr/local/google/home/chenghaoyang/Workspace/libcamera/src/libcamera/pipeline/virtual/data/virtual.yaml'\n\n[31:51:17.520074039] [2680984]  INFO DmaBufAllocator\ndma_buf_allocator.cpp:99 DmaBufAllocator c'tor\n\n[31:51:17.520130179] [2680984] ERROR DmaBufAllocator\ndma_buf_allocator.cpp:122 Could not open any dma-buf provider\n\n[31:51:17.523026569] [2680981]  INFO IPAManager ipa_manager.cpp:137\nlibcamera is not installed. Adding\n'/usr/local/google/home/chenghaoyang/Workspace/libcamera/build/src/ipa'\nto the IPA search path\n\n[31:51:17.525582209] [2680981]  INFO Camera camera_manager.cpp:325\nlibcamera v0.3.2+51-6f273618\n\n[31:51:17.526380639] [2680986]  INFO DmaBufAllocator\ndma_buf_allocator.cpp:99 DmaBufAllocator c'tor\n\n[31:51:17.526479529] [2680986] ERROR DmaBufAllocator\ndma_buf_allocator.cpp:122 Could not open any dma-buf provider\n\nUnable to set the pipeline to the playing state.\n\n```\n\nNot sure why the gitlab pipeline doesn't catch this...\n\n> ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n> stderr:\n> [11:00:27.257053299] [96636]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n> [11:00:27.257480798] [96636]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n> [11:00:27.266082509] [96639]  INFO Pipeline pipeline_handler.cpp:607 libcamera is not installed. Loading platform configuration file from 'libcamera/srclibcamera/pipeline/virtual/data/virtual.yaml'\n> [11:00:27.268681746] [96639]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n> [11:00:27.268695222] [96639]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n> [11:00:27.268705582] [96639]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n> [11:00:27.268712765] [96639]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n> [11:00:27.270796605] [96639]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n> [11:00:27.274312097] [96636]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n> [11:00:27.274519725] [96636]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n> [11:00:27.283135212] [96641]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n> [11:00:27.283148687] [96641]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n> [11:00:27.283157194] [96641]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n> [11:00:27.283164107] [96641]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n> [11:00:27.284783458] [96641]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n> Unable to set the pipeline to the playing state.\n>\n>\n> 14/76 libcamera:gstreamer / memory_lifetime_test                         FAIL            0.06s   (exit status 255 or signal 127 SIGinvalid)\n> >>> GST_REGISTRY=libcamera/build/src/gstreamer/registry.data ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=27 LD_LIBRARY_PATH=libcamera/build/srclibcamera:libcamera/build/srclibcamera/base GST_PLUGIN_PATH=libcamera/build/src/gstreamer MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 libcamera/build/test/gstreamer/memory_lifetime_test\n> ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n> stderr:\n> [11:00:27.439322563] [96653]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n> [11:00:27.439765441] [96653]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n> [11:00:27.448559711] [96656]  INFO Pipeline pipeline_handler.cpp:607 libcamera is not installed. Loading platform configuration file from 'libcamera/srclibcamera/pipeline/virtual/data/virtual.yaml'\n> [11:00:27.451117569] [96656]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n> [11:00:27.451131004] [96656]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n> [11:00:27.451141464] [96656]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n> [11:00:27.451148768] [96656]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n> [11:00:27.453229513] [96656]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n> [11:00:27.456577003] [96653]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding 'libcamera/build/src/ipa' to the IPA search path\n> [11:00:27.456783358] [96653]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2+43-2024fd3c\n> [11:00:27.465133517] [96658]  WARN CameraSensorProperties camera_sensor_properties.cpp:293 No static properties available for 'Sensor B'\n> [11:00:27.465147213] [96658]  WARN CameraSensorProperties camera_sensor_properties.cpp:295 Please consider updating the camera sensor properties database\n> [11:00:27.465155890] [96658]  WARN CameraSensor camera_sensor.cpp:477 'Sensor B': Failed to retrieve the camera location\n> [11:00:27.465163013] [96658]  WARN CameraSensor camera_sensor.cpp:499 'Sensor B': Rotation control not available, default to 0 degrees\n> [11:00:27.466752627] [96658]  INFO IPAProxy ipa_proxy.cpp:134 libcamera is not installed. Loading IPA configuration from 'libcamera/src/ipa/vimc/data'\n> Unable to set the pipeline to the playing state.\n>\n> If instead I don't specify any pipeline options but only enable test\n>\n> $ meson setup -Dtest=true build\n>\n>     Enabled pipelines        : ipu3\n>                                simple\n>                                uvcvideo\n>                                vimc\n>                                virtual\n\nThis is different from mine:\n```\n$ meson setup -Dtest=true build --reconfigure\n...\n    Enabled pipelines        : virtual\n                               vimc\n...\n```\n\n\n\n>     Enabled IPA modules      : ipu3\n>                                simple\n>                                vimc\n> Both tests pass\n>\n> 11/76 libcamera:gstreamer / single_stream_test                           OK              3.84s\n> 14/76 libcamera:gstreamer / memory_lifetime_test                         OK              0.27s\n>\n> Reasons are not yet clear to me, but it would be helpful if you try to\n> reproduce locally and confirm it's not my local issue\n>\n> Thanks\n>   j\n>\n> On Thu, Oct 03, 2024 at 10:48:09AM GMT, Kieran Bingham wrote:\n> > Quoting Harvey Yang (2024-09-30 07:29:41)\n> > > Hi all,\n> > >\n> > > This series adds virtual pipeline handler, which doesn't depend on any\n> > > hardware, like camera sensor or ISP. Currently the configuration\n> > > supports test patterns and images.\n> > >\n> > > It passed the gitlab pipeline:\n> > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> > >\n> > > I've also checked that it works on qcam.\n> > >\n> > > I failed to pass multi_stream_test when trying to enable multiple\n> > > streams though. Please give me some hints what it tests and what I\n> > > missed:\n> > > ```\n> > > [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > mera/build/src/ipa' to the IPA search path\n> > > [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > mera/build/src/ipa' to the IPA search path\n> > > [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > Unable to set the pipeline to the playing state.\n> >\n> > Is this the error you get when you enable multiple streams in the\n> > virtual pipeline handler?\n> >\n> > I still think that looks like an issue in the configuration of the VM\n> > not having udmabuf which you use.\n> >\n> >\n> > To fix this, you would probably need to fork the CI scripts:\n> >\n> >  - https://gitlab.freedesktop.org/camera/libcamera-ci\n> >\n> > And direct your local\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\n> > you work out the issue.\n> >\n> > I suspect you need to add something at\n> >\n> > https://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n> >\n> > to enable the uDMA config options...\n> >\n> > --\n> > Kieran\n> >\n> >\n> >\n> > > ```\n> > >\n> > > Gitlab pipeline failure:\n> > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> > >\n> > > Updates in v14:\n> > > - Refactored ImageFrames to keep a list of filepaths directly.\n> > >\n> > > Updates in v13:\n> > > - Returned an errno in `FrameGenerete::generateFrame()`\n> > >\n> > > Updates in v12:\n> > > - Added ImageFrameGenerator first, then add Parser.\n> > > - Removed ScaleMode argument, as only Fill is supported now.\n> > > - Fixed bug of Stream's configuration usage in configure().\n> > >\n> > > Updates in v11:\n> > > - Allowed a single value in the config file's frame_rates field.\n> > >\n> > > Updates in v10:\n> > > Apply fixes according to Jacopo's and Barnabás' comments.\n> > > - Split test_pattern and path fields in the yaml format.\n> > > - Let FrameGenerators control frameCount_.\n> > > - Fixed match() returning values.\n> > >\n> > > Updates in v9: Allocate contiguous memory for planes in the same\n> > > FrameBuffer.\n> > >\n> > > BR,\n> > > Harvey\n> > >\n> > > Harvey Yang (6):\n> > >   libcamera: add DmaBufAllocator::exportBuffers()\n> > >   libcamera: Remove PipelineHandler Fatal check of non-empty\n> > >     MediaDevices\n> > >   libcamera: virtual: Add VirtualPipelineHandler\n> > >   libcamera: virtual: Add ImageFrameGenerator\n> > >   libcamera: virtual: Read config and register cameras based on the\n> > >     config\n> > >   libcamera: software_isp: Refactor SoftwareIsp to use\n> > >     DmaBufAllocator::exportBuffers\n> > >\n> > > Konami Shu (1):\n> > >   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> > >\n> > >  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n> > >  meson.build                                   |   1 +\n> > >  meson_options.txt                             |   3 +-\n> > >  src/android/meson.build                       |  19 -\n> > >  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n> > >  src/libcamera/pipeline/virtual/README.md      |  48 +++\n> > >  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n> > >  .../pipeline/virtual/frame_generator.h        |  29 ++\n> > >  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n> > >  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n> > >  src/libcamera/pipeline/virtual/meson.build    |  13 +\n> > >  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n> > >  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n> > >  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n> > >  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n> > >  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n> > >  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n> > >  src/libcamera/pipeline_handler.cpp            |  11 +-\n> > >  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n> > >  src/meson.build                               |  19 +\n> > >  20 files changed, 1378 insertions(+), 42 deletions(-)\n> > >  create mode 100644 src/libcamera/pipeline/virtual/README.md\n> > >  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n> > >  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n> > >  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> > >\n> > > --\n> > > 2.46.1.824.gd892dcdcdd-goog\n> > >\n\nBR,\nHarvey","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 66F55BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Oct 2024 10:33:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E899163528;\n\tThu,  3 Oct 2024 12:33:44 +0200 (CEST)","from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com\n\t[IPv6:2a00:1450:4864:20::22f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9765363522\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2024 12:33:42 +0200 (CEST)","by mail-lj1-x22f.google.com with SMTP id\n\t38308e7fff4ca-2fad5024b8dso9866491fa.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 03 Oct 2024 03:33:42 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"bBGx0ZZi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1727951622; x=1728556422;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=gYdZlz07tP1BmAnO1niL4zpdQogpsu7CkXYcisBAVY8=;\n\tb=bBGx0ZZipt6+/yg4UfW5apWniyD8vuGisKrUK9E6XJ57fuU/4MZhYBCnjAb6O2eYn1\n\tXKp0jeFtJURXWGDyWjbMG7LH1FUM7Q8uGLpjfIMGWtWSO4hE+ekpKLj5WdeFIeMR3g8A\n\tMCI/1tOAXaflFAq8AzRRUWBu/LSjgPdVTE4d8=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1727951622; x=1728556422;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=gYdZlz07tP1BmAnO1niL4zpdQogpsu7CkXYcisBAVY8=;\n\tb=WY/BehQBKQjI4G7hWXJIZ+A8TTGBJFP17OZuQfFaHQSdoy5vamHGQAgm2NBXVT66Vd\n\tg6oKImaj7RIevTXeGMP2K6vs2ehpjBlhgXaFM2RkoYmUO4vyl4+L3dJI/HZnTdMLh+EW\n\tgGBZ8vzU7bPi5SHEvg4sjMBLlfYeFNeuvsAjcUnwFeez1/YYovrxsFJUbOSh7xd11qgU\n\tQHRLWVojvVS/10UxaKgLOQPbxJIa0tSe7UOmSTF+bYGKbu73JInkqTXhdauuacpNV4R1\n\tLFhaDwwq3lxud3hcPmjR4UhVL75ftvYaIyyd4v7kKhIJiPb7LKKO46Xv2VOX7B9FxTFL\n\tzE6Q==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCUQDvyD/jBEOcocekzQ5OacK8puIup0dcitp+cPSpFM1Lcg/QtjQdIPHJFTWh0KV9UdP5iJAzEnO7VMjPhnapA=@lists.libcamera.org","X-Gm-Message-State":"AOJu0Yw8u8l5Gm6MIRp91vN/QvWRVg+g52sS+ZpIdjNXNqAHf+/YA2O0\n\tWQXt3kqmmOcpgjvB9GJ3JHQq0VT0vgJAG3YNpk2Dv8saZeT/g6pm2qtta4ofmYE6vdb9evps8az\n\tHG2i6nYQzxkVH2bSzJfpuRc59k3wBovkJvTmF","X-Google-Smtp-Source":"AGHT+IF9ygs/0uW0qsv+0Hkn0HQaMlPdTg6u3Sm93EGXfXRweGxue1OpyT3izRgmHunokwwOhqSZBBCmoZ2lKzwuTjE=","X-Received":"by 2002:a2e:b889:0:b0:2f5:11f6:1b24 with SMTP id\n\t38308e7fff4ca-2fae10155c5mr38326171fa.18.1727951621572;\n\tThu, 03 Oct 2024 03:33:41 -0700 (PDT)","MIME-Version":"1.0","References":"<20240930063342.3014837-1-chenghaoyang@google.com>\n\t<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>\n\t<ggjvg6rvftxskzccooa4jlvljp6l24dheltemju5wiosihfnxn@cx76szvx6uoi>","In-Reply-To":"<ggjvg6rvftxskzccooa4jlvljp6l24dheltemju5wiosihfnxn@cx76szvx6uoi>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Thu, 3 Oct 2024 18:33:30 +0800","Message-ID":"<CAEB1ahtjm3Jd2opr9jH3fOPEzfmCpEG1oA8+tXzwxEuvnNhWLg@mail.gmail.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>","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":31561,"web_url":"https://patchwork.libcamera.org/comment/31561/","msgid":"<172795186477.1619946.4404673435236890705@ping.linuxembedded.co.uk>","date":"2024-10-03T10:37:44","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Cheng-Hao Yang (2024-10-03 11:06:58)\n> Hi Kieran,\n> \n> On Thu, Oct 3, 2024 at 5:48 PM Kieran Bingham\n> <kieran.bingham@ideasonboard.com> wrote:\n> >\n> > Quoting Harvey Yang (2024-09-30 07:29:41)\n> > > Hi all,\n> > >\n> > > This series adds virtual pipeline handler, which doesn't depend on any\n> > > hardware, like camera sensor or ISP. Currently the configuration\n> > > supports test patterns and images.\n> > >\n> > > It passed the gitlab pipeline:\n> > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> > >\n> > > I've also checked that it works on qcam.\n> > >\n> > > I failed to pass multi_stream_test when trying to enable multiple\n> > > streams though. Please give me some hints what it tests and what I\n> > > missed:\n> > > ```\n> > > [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > mera/build/src/ipa' to the IPA search path\n> > > [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > mera/build/src/ipa' to the IPA search path\n> > > [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > Unable to set the pipeline to the playing state.\n> >\n> > Is this the error you get when you enable multiple streams in the\n> > virtual pipeline handler?\n> \n> Correct :)\n> \n> >\n> > I still think that looks like an issue in the configuration of the VM\n> > not having udmabuf which you use.\n> \n> Hmm, as I shared before, the pipeline unit test still fails when I\n> support a workaround memfd_create:\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1279655\n> , which contains:\n> https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/commit/9f032290fc97dae1fbace2314420a73251169cee\n\nYour patch tries to use Memfd instead. Did you check if the CI kernel\nhas support for MEMFD? Is that a configuration option in the kernel ?\n\nIsn't udmabuf constructed from a memfd ultimately ?\n\nIf you export a memfd file descriptor - will that break elsewhere\nbecause it's not a DMABuf handle? (That's the whole point of udmabuf\nright ?)\n\nI think changing to memfd to test if that's the cause of the udmabuf\nissue is just changing one set of issues for another.\n\n\n\n> \n> At least it works on my gLinux environment.\n> Doesn't that imply that it's not because of DmaBufAllocator?\n\nNo ? Maybe your gLinux environment has the appropriate / required\nfeatures enabled!\n\n\n> Also, single_stream_test passed. I assume it also tests on the\n> buffers if multi_stream_test does?\n\nI'm not sure I understand this question...\n\n--\nKieran\n\n\n> \n> BR,\n> Harvey\n> \n> >\n> >\n> > To fix this, you would probably need to fork the CI scripts:\n> >\n> >  - https://gitlab.freedesktop.org/camera/libcamera-ci\n> >\n> > And direct your local\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\n> > you work out the issue.\n> >\n> > I suspect you need to add something at\n> >\n> > https://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n> >\n> > to enable the uDMA config options...\n> >\n> > --\n> > Kieran\n> >\n> >\n> >\n> > > ```\n> > >\n> > > Gitlab pipeline failure:\n> > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> > >\n> > > Updates in v14:\n> > > - Refactored ImageFrames to keep a list of filepaths directly.\n> > >\n> > > Updates in v13:\n> > > - Returned an errno in `FrameGenerete::generateFrame()`\n> > >\n> > > Updates in v12:\n> > > - Added ImageFrameGenerator first, then add Parser.\n> > > - Removed ScaleMode argument, as only Fill is supported now.\n> > > - Fixed bug of Stream's configuration usage in configure().\n> > >\n> > > Updates in v11:\n> > > - Allowed a single value in the config file's frame_rates field.\n> > >\n> > > Updates in v10:\n> > > Apply fixes according to Jacopo's and Barnabás' comments.\n> > > - Split test_pattern and path fields in the yaml format.\n> > > - Let FrameGenerators control frameCount_.\n> > > - Fixed match() returning values.\n> > >\n> > > Updates in v9: Allocate contiguous memory for planes in the same\n> > > FrameBuffer.\n> > >\n> > > BR,\n> > > Harvey\n> > >\n> > > Harvey Yang (6):\n> > >   libcamera: add DmaBufAllocator::exportBuffers()\n> > >   libcamera: Remove PipelineHandler Fatal check of non-empty\n> > >     MediaDevices\n> > >   libcamera: virtual: Add VirtualPipelineHandler\n> > >   libcamera: virtual: Add ImageFrameGenerator\n> > >   libcamera: virtual: Read config and register cameras based on the\n> > >     config\n> > >   libcamera: software_isp: Refactor SoftwareIsp to use\n> > >     DmaBufAllocator::exportBuffers\n> > >\n> > > Konami Shu (1):\n> > >   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> > >\n> > >  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n> > >  meson.build                                   |   1 +\n> > >  meson_options.txt                             |   3 +-\n> > >  src/android/meson.build                       |  19 -\n> > >  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n> > >  src/libcamera/pipeline/virtual/README.md      |  48 +++\n> > >  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n> > >  .../pipeline/virtual/frame_generator.h        |  29 ++\n> > >  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n> > >  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n> > >  src/libcamera/pipeline/virtual/meson.build    |  13 +\n> > >  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n> > >  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n> > >  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n> > >  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n> > >  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n> > >  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n> > >  src/libcamera/pipeline_handler.cpp            |  11 +-\n> > >  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n> > >  src/meson.build                               |  19 +\n> > >  20 files changed, 1378 insertions(+), 42 deletions(-)\n> > >  create mode 100644 src/libcamera/pipeline/virtual/README.md\n> > >  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n> > >  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n> > >  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n> > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n> > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> > >\n> > > --\n> > > 2.46.1.824.gd892dcdcdd-goog\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 5399DC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Oct 2024 10:37:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 29BD363528;\n\tThu,  3 Oct 2024 12:37:49 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D007663522\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2024 12:37:47 +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 71D6B4C7;\n\tThu,  3 Oct 2024 12:36:14 +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=\"dsYEPgfE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727951774;\n\tbh=xqiq6nt0ZbMyK4AqEQ3TxovN7Yr2c6X+tIsHxPm8+qk=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=dsYEPgfEfspVjnxd60e0SJgFhWBPEYiO26WpV1B9sdVcEBdKMOtow1CTgYb2RBvg2\n\tVJcbR4/Jpc37II2YVtotkGeMCOpFe75lkprjGdAmY5XfgLeOg0Fmhcq3IyT0+/Ww9q\n\tWsaFXkkxKhPvamIhxNcOmuS+JN8Rwtc5sTyVI8ms=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEB1ahs9M6PZ124tL4Lt6_TseWAkB5kCtw=kv542=DBt63+aQA@mail.gmail.com>","References":"<20240930063342.3014837-1-chenghaoyang@google.com>\n\t<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>\n\t<CAEB1ahs9M6PZ124tL4Lt6_TseWAkB5kCtw=kv542=DBt63+aQA@mail.gmail.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>","To":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Thu, 03 Oct 2024 11:37:44 +0100","Message-ID":"<172795186477.1619946.4404673435236890705@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":31585,"web_url":"https://patchwork.libcamera.org/comment/31585/","msgid":"<CAEB1ahvja_AWgFs2w_UygsaKFrXYmoE7kmPm6GAH1wHLsqyTnw@mail.gmail.com>","date":"2024-10-04T09:47:26","subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran and Jacopo,\n\nI found the root cause:\nGstreamer tests seem to create pipeline handlers after\nthe first CameraManager does. Therefore, previously\nwe don't allow `match()` to return true after the first one.\n\nHowever, the first virtual pipeline handler is destructed\nwhen the tests are executed.\nThe next version fixes it by setting `created_` back to\nfalse when a valid virtual pipeline handler is destructed.\n\nIt's a pitfall for a pipeline handler that doesn't need to\nactually `match` MediaDevices...\n\nBR,\nHarvey\n\nOn Thu, Oct 3, 2024 at 6:37 PM Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Cheng-Hao Yang (2024-10-03 11:06:58)\n> > Hi Kieran,\n> >\n> > On Thu, Oct 3, 2024 at 5:48 PM Kieran Bingham\n> > <kieran.bingham@ideasonboard.com> wrote:\n> > >\n> > > Quoting Harvey Yang (2024-09-30 07:29:41)\n> > > > Hi all,\n> > > >\n> > > > This series adds virtual pipeline handler, which doesn't depend on any\n> > > > hardware, like camera sensor or ISP. Currently the configuration\n> > > > supports test patterns and images.\n> > > >\n> > > > It passed the gitlab pipeline:\n> > > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1280687\n> > > >\n> > > > I've also checked that it works on qcam.\n> > > >\n> > > > I failed to pass multi_stream_test when trying to enable multiple\n> > > > streams though. Please give me some hints what it tests and what I\n> > > > missed:\n> > > > ```\n> > > > [295:43:43.910237144] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > > mera/build/src/ipa' to the IPA search path\n> > > > [295:43:43.914030564] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > > [295:43:43.915493754] [1441844] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > > [295:43:43.919118835] [1441841]  INFO IPAManager ipa_manager.cpp:137 libcamera is not installed. Adding '/usr/local/google/home/chenghaoyang/Workspace/libca\n> > > > mera/build/src/ipa' to the IPA search path\n> > > > [295:43:43.922245825] [1441841]  INFO Camera camera_manager.cpp:325 libcamera v0.3.1+79-8ca4f033-dirty (2024-08-29T19:18:51UTC)\n> > > > [295:43:43.922820175] [1441846] ERROR DmaBufAllocator dma_buf_allocator.cpp:120 Could not open any dma-buf provider\n> > > > Unable to set the pipeline to the playing state.\n> > >\n> > > Is this the error you get when you enable multiple streams in the\n> > > virtual pipeline handler?\n> >\n> > Correct :)\n> >\n> > >\n> > > I still think that looks like an issue in the configuration of the VM\n> > > not having udmabuf which you use.\n> >\n> > Hmm, as I shared before, the pipeline unit test still fails when I\n> > support a workaround memfd_create:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1279655\n> > , which contains:\n> > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/commit/9f032290fc97dae1fbace2314420a73251169cee\n>\n> Your patch tries to use Memfd instead. Did you check if the CI kernel\n> has support for MEMFD? Is that a configuration option in the kernel ?\n>\n> Isn't udmabuf constructed from a memfd ultimately ?\n>\n> If you export a memfd file descriptor - will that break elsewhere\n> because it's not a DMABuf handle? (That's the whole point of udmabuf\n> right ?)\n>\n> I think changing to memfd to test if that's the cause of the udmabuf\n> issue is just changing one set of issues for another.\n>\n>\n>\n> >\n> > At least it works on my gLinux environment.\n> > Doesn't that imply that it's not because of DmaBufAllocator?\n>\n> No ? Maybe your gLinux environment has the appropriate / required\n> features enabled!\n>\n>\n> > Also, single_stream_test passed. I assume it also tests on the\n> > buffers if multi_stream_test does?\n>\n> I'm not sure I understand this question...\n>\n> --\n> Kieran\n>\n>\n> >\n> > BR,\n> > Harvey\n> >\n> > >\n> > >\n> > > To fix this, you would probably need to fork the CI scripts:\n> > >\n> > >  - https://gitlab.freedesktop.org/camera/libcamera-ci\n> > >\n> > > And direct your local\n> > > https://gitlab.freedesktop.org/chenghaoyang/libcamera to use that while\n> > > you work out the issue.\n> > >\n> > > I suspect you need to add something at\n> > >\n> > > https://gitlab.freedesktop.org/camera/libcamera-ci/-/blob/master/.gitlab-ci/build-kernel.sh?ref_type=heads#L41\n> > >\n> > > to enable the uDMA config options...\n> > >\n> > > --\n> > > Kieran\n> > >\n> > >\n> > >\n> > > > ```\n> > > >\n> > > > Gitlab pipeline failure:\n> > > > https://gitlab.freedesktop.org/chenghaoyang/libcamera/-/pipelines/1260412\n> > > >\n> > > > Updates in v14:\n> > > > - Refactored ImageFrames to keep a list of filepaths directly.\n> > > >\n> > > > Updates in v13:\n> > > > - Returned an errno in `FrameGenerete::generateFrame()`\n> > > >\n> > > > Updates in v12:\n> > > > - Added ImageFrameGenerator first, then add Parser.\n> > > > - Removed ScaleMode argument, as only Fill is supported now.\n> > > > - Fixed bug of Stream's configuration usage in configure().\n> > > >\n> > > > Updates in v11:\n> > > > - Allowed a single value in the config file's frame_rates field.\n> > > >\n> > > > Updates in v10:\n> > > > Apply fixes according to Jacopo's and Barnabás' comments.\n> > > > - Split test_pattern and path fields in the yaml format.\n> > > > - Let FrameGenerators control frameCount_.\n> > > > - Fixed match() returning values.\n> > > >\n> > > > Updates in v9: Allocate contiguous memory for planes in the same\n> > > > FrameBuffer.\n> > > >\n> > > > BR,\n> > > > Harvey\n> > > >\n> > > > Harvey Yang (6):\n> > > >   libcamera: add DmaBufAllocator::exportBuffers()\n> > > >   libcamera: Remove PipelineHandler Fatal check of non-empty\n> > > >     MediaDevices\n> > > >   libcamera: virtual: Add VirtualPipelineHandler\n> > > >   libcamera: virtual: Add ImageFrameGenerator\n> > > >   libcamera: virtual: Read config and register cameras based on the\n> > > >     config\n> > > >   libcamera: software_isp: Refactor SoftwareIsp to use\n> > > >     DmaBufAllocator::exportBuffers\n> > > >\n> > > > Konami Shu (1):\n> > > >   libcamera: pipeline: Add test pattern for VirtualPipelineHandler\n> > > >\n> > > >  .../libcamera/internal/dma_buf_allocator.h    |  13 +\n> > > >  meson.build                                   |   1 +\n> > > >  meson_options.txt                             |   3 +-\n> > > >  src/android/meson.build                       |  19 -\n> > > >  src/libcamera/dma_buf_allocator.cpp           |  57 +++\n> > > >  src/libcamera/pipeline/virtual/README.md      |  48 +++\n> > > >  .../pipeline/virtual/data/virtual.yaml        |  36 ++\n> > > >  .../pipeline/virtual/frame_generator.h        |  29 ++\n> > > >  .../virtual/image_frame_generator.cpp         | 169 ++++++++\n> > > >  .../pipeline/virtual/image_frame_generator.h  |  50 +++\n> > > >  src/libcamera/pipeline/virtual/meson.build    |  13 +\n> > > >  src/libcamera/pipeline/virtual/parser.cpp     | 260 ++++++++++++\n> > > >  src/libcamera/pipeline/virtual/parser.h       |  39 ++\n> > > >  .../virtual/test_pattern_generator.cpp        | 137 +++++++\n> > > >  .../pipeline/virtual/test_pattern_generator.h |  53 +++\n> > > >  src/libcamera/pipeline/virtual/virtual.cpp    | 382 ++++++++++++++++++\n> > > >  src/libcamera/pipeline/virtual/virtual.h      |  61 +++\n> > > >  src/libcamera/pipeline_handler.cpp            |  11 +-\n> > > >  src/libcamera/software_isp/software_isp.cpp   |  20 +-\n> > > >  src/meson.build                               |  19 +\n> > > >  20 files changed, 1378 insertions(+), 42 deletions(-)\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/README.md\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/meson.build\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/parser.h\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp\n> > > >  create mode 100644 src/libcamera/pipeline/virtual/virtual.h\n> > > >\n> > > > --\n> > > > 2.46.1.824.gd892dcdcdd-goog\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 4C826BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  4 Oct 2024 09:47:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E84BF63527;\n\tFri,  4 Oct 2024 11:47:40 +0200 (CEST)","from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com\n\t[IPv6:2a00:1450:4864:20::22d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2102863512\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  4 Oct 2024 11:47:39 +0200 (CEST)","by mail-lj1-x22d.google.com with SMTP id\n\t38308e7fff4ca-2fadb636abaso20520351fa.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 04 Oct 2024 02:47:39 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"JVjOGTfC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1728035258; x=1728640058;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=eZoG1AkeIZXOPM/g7xk0lL25O+U4MI19A478tiE38+4=;\n\tb=JVjOGTfC2An5KoDT0GvjSHGZog2SDF9a4vgxabeeeAhmZinzK8P0tPxJ8UU+oZ+8hl\n\tUt7wEiKj4kNJeG0CBRBMNB0nw1oUe20EuJowwLIRYUhGM+57lYKb+inIpwT93VhIg7f4\n\t4mvDAdCqyomel3k0ZIt0d0uG/sgoVc2SoV1Bc=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1728035258; x=1728640058;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=eZoG1AkeIZXOPM/g7xk0lL25O+U4MI19A478tiE38+4=;\n\tb=rHqFf1wm1tcmrj70KrxYjF6F625qfYwkr8QpQISTjM5IGR88GhZnVt2ZFwFkvSajFe\n\tQzNqoUe7O+kcJvL19O/ed9GmL5QLM/F0C2FrKb+K/QK/WJGE6zAHii/iA9zL6+1aEnRE\n\tryAalvxzCIU1t85bhgWNChmfe9gf1oplecxxTMZldKNcFJ1Zoo7jobFuDeVE37LSxgVL\n\tb9iPXugn6+q1ozuXmOTp0qH5m6oiTiz35ZW7jk7z1wkK/ljxVNwZ8mGP5m8NisH0kCe4\n\tEC7n3jzlkrQhVCXwfQsdxeJJNnMIcRXLeGEv1wxlHb3BCV5pY8lDib1TdH04FeFisNt+\n\tahQA==","X-Gm-Message-State":"AOJu0YzBgHSc5xAARXiPPLhhDd6exR1YkoJuE7Dg6NjHIsrbMir/Yoif\n\t5VyztZMstTy49vWzO/Ek7/Td5NzJ6hMHgPRKGkOzV55C6xH1AnuteAlDGJW0P+FDFsBAImD0Pbp\n\t6Bp1Kk/suKwRRYOnYkA90QFR55bTLR+pwoTdL","X-Google-Smtp-Source":"AGHT+IFiCENdrmHVDOQawJIKcp0PL+qbyvitDyW131fcEWAHr7PNzZnNzbA+6W8hSlHleuGtfVRcZbCXNsKqcaC+eMA=","X-Received":"by 2002:a2e:6112:0:b0:2fa:c6f5:95b6 with SMTP id\n\t38308e7fff4ca-2faf3d8a918mr7536321fa.45.1728035257995;\n\tFri, 04 Oct 2024 02:47:37 -0700 (PDT)","MIME-Version":"1.0","References":"<20240930063342.3014837-1-chenghaoyang@google.com>\n\t<172794888909.4015294.956374297480386540@ping.linuxembedded.co.uk>\n\t<CAEB1ahs9M6PZ124tL4Lt6_TseWAkB5kCtw=kv542=DBt63+aQA@mail.gmail.com>\n\t<172795186477.1619946.4404673435236890705@ping.linuxembedded.co.uk>","In-Reply-To":"<172795186477.1619946.4404673435236890705@ping.linuxembedded.co.uk>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Fri, 4 Oct 2024 17:47:26 +0800","Message-ID":"<CAEB1ahvja_AWgFs2w_UygsaKFrXYmoE7kmPm6GAH1wHLsqyTnw@mail.gmail.com>","Subject":"Re: [PATCH v14 0/7] Add VirtualPipelineHandler","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>, \n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>","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>"}}]