<div dir="ltr"><div dir="ltr">Hi Kieran,<div><br></div><div>Thanks for looking into this!</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 26, 2024 at 6:56 PM Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com">kieran.bingham@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Harvey,<br>
<br>
Quoting Harvey Yang (2024-07-26 10:54:21)<br>
> Hi folks,<br>
> <br>
> Sorry for the super late update. It's been a while since the last series<br>
> of patches, as we were busy with mtkisp7's bringup & migration.<br>
> <br>
> Thanks to Hans de Goede's work on DmaBufAllocator, the prerequisites of<br>
> VirtualPipelineHandler are almost landed. Only a helper function added<br>
> in the first patch.<br>
<br>
Excellent, Yes - I had this virtual pipeline work in mind as well when<br>
the buffer allocator landed!<br>
<br>
I've just tried to run this and built locally then tried to run but I<br>
get:<br>
<br>
kbingham@Monstersaurus:~/iob/libcamera/libcamera$ ./build/gcc/src/apps/cam/cam --list<br>
[686:32:50.927990678] [2690143]  INFO IPAManager ipa_manager.cpp:143 libcamera is not installed. Adding '/home/kbingham/iob/libcamera/libcamera/build/gcc/src/ipa' to the IPA search path<br>
[686:32:50.933827146] [2690143]  INFO Camera camera_manager.cpp:313 libcamera v0.3.1+7-e4713a22<br>
[686:32:51.016903716] [2690146]  WARN CameraSensorProperties camera_sensor_properties.cpp:283 No static properties available for 'Sensor B'<br>
[686:32:51.016924335] [2690146]  WARN CameraSensorProperties camera_sensor_properties.cpp:285 Please consider updating the camera sensor properties database<br>
[686:32:51.016941437] [2690146]  WARN CameraSensor camera_sensor.cpp:479 'Sensor B': Failed to retrieve the camera location<br>
[686:32:51.016953209] [2690146]  WARN CameraSensor camera_sensor.cpp:501 'Sensor B': Rotation control not available, default to 0 degrees<br>
[686:32:51.019533566] [2690146]  INFO IPAProxy ipa_proxy.cpp:130 libcamera is not installed. Loading IPA configuration from '/home/kbingham/iob/libcamera/libcamera/src/ipa/vimc/data'<br>
[686:32:51.019729155] [2690146] ERROR DmaBufAllocator dma_buf_allocator.cpp:121 Could not open any dma-buf provider<br></blockquote><div><br></div><div>JFYI, currently virtual pipeline handler uses the default type `DmaBufAllocatorFlag::CmaHeap`. If none of the dma heaps or udmabuf are available, we can use memfd_create [1] to allocate local memory.</div><div><br></div><div>[1]: <a href="https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/4739525/2">https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/4739525/2</a><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
[686:32:51.020135800] [2690146]  INFO Pipeline pipeline_handler.cpp:575 libcamera is not installed. Loading platform configuration file from '/home/kbingham/iob/libcamera/libcamera/src/libcamera/pipeline/virtual/data/virtual.yaml'<br>
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'<br>
  what():  filesystem error: directory iterator cannot open directory: No such file or directory [files/libcamera_short_anime/]<br>
Aborted (core dumped)</blockquote><div><br></div><div>The virtual pipeline handler has a config file `src/libcamera/pipeline/virtual/data/virtual.yaml` to load and config the cameras listed. In the current default yaml (We can discuss what should be the default config file though) expects `files/libcamera_short_anime/` (I believe it's the relative path from which you run libcamera) to contain at least one `0.jpg` (and `1.jpg`, `2.jpg`, ...) to support camera `Virtual0`; `files/bike-min.jpg` to support camera `Virtual1`; `files/chrome_anniversary.jpg` to support camera `Virtual5`. For the formats and details, please check `src/libcamera/pipeline/virtual/README.md`.</div><div><br></div><div>I also need your opinions: maybe we should upload some images used in the sample yaml config file in the patch?</div><div> </div><div>BR,</div><div>Harvey</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Does it have to be installed to run? Is there anything else missing?<br>
<br>
--<br>
Kieran<br>
<br>
<br>
> <br>
> Konami, our intern in 2023, helped to add test patterns and real image<br>
> loading into VirtualPipelineHandler.<br>
> <br>
> I tried to address the previous comments, while it's very likely that I<br>
> left some behind. Please leave the comments again if I do. Many thanks!<br>
> <br>
> <br>
> BR,<br>
> Harvey<br>
> <br>
> Harvey Yang (3):<br>
>   Add a helper function exportFrameBuffers in DmaBufAllocator to make it<br>
>     easier to use.<br>
>   The Fatal check of having at least one MediaDevice was to prevent<br>
>     pipeline handler implementations searching and owning media devices<br>
>     with custom conventions, instead of using the base function<br>
>     |acquireMediaDevice|. It also has the assumption that there's at<br>
>     least one media device to make a camera work.<br>
>   libcamera: pipeline: Add VirtualPipelineHandler<br>
> <br>
> Konami Shu (4):<br>
>   libcamera: pipeline: Add test pattern for VirtualPipelineHandler<br>
>   libcamera: pipeline: Read config and register cameras based on the<br>
>     config<br>
>   libcamera: pipeline: Shift test pattern by 1 pixel left every frame<br>
>   libcamera: pipeline: Load images<br>
> <br>
>  .../libcamera/internal/dma_buf_allocator.h    |  10 +<br>
>  meson.build                                   |   1 +<br>
>  meson_options.txt                             |   3 +-<br>
>  src/libcamera/dma_buf_allocator.cpp           |  57 +++-<br>
>  src/libcamera/pipeline/virtual/README.md      |  76 +++++<br>
>  .../pipeline/virtual/common_functions.cpp     |  27 ++<br>
>  .../pipeline/virtual/common_functions.h       |  18 ++<br>
>  .../pipeline/virtual/data/virtual.yaml        |  51 ++++<br>
>  .../pipeline/virtual/frame_generator.h        |  33 +++<br>
>  .../virtual/image_frame_generator.cpp         | 154 ++++++++++<br>
>  .../pipeline/virtual/image_frame_generator.h  |  65 ++++<br>
>  src/libcamera/pipeline/virtual/meson.build    |  32 ++<br>
>  src/libcamera/pipeline/virtual/parser.cpp     | 243 +++++++++++++++<br>
>  src/libcamera/pipeline/virtual/parser.h       |  48 +++<br>
>  .../virtual/test_pattern_generator.cpp        | 148 ++++++++++<br>
>  .../pipeline/virtual/test_pattern_generator.h |  58 ++++<br>
>  src/libcamera/pipeline/virtual/virtual.cpp    | 279 ++++++++++++++++++<br>
>  src/libcamera/pipeline/virtual/virtual.h      |  96 ++++++<br>
>  src/libcamera/pipeline_handler.cpp            |  11 +-<br>
>  19 files changed, 1404 insertions(+), 6 deletions(-)<br>
>  create mode 100644 src/libcamera/pipeline/virtual/README.md<br>
>  create mode 100644 src/libcamera/pipeline/virtual/common_functions.cpp<br>
>  create mode 100644 src/libcamera/pipeline/virtual/common_functions.h<br>
>  create mode 100644 src/libcamera/pipeline/virtual/data/virtual.yaml<br>
>  create mode 100644 src/libcamera/pipeline/virtual/frame_generator.h<br>
>  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.cpp<br>
>  create mode 100644 src/libcamera/pipeline/virtual/image_frame_generator.h<br>
>  create mode 100644 src/libcamera/pipeline/virtual/meson.build<br>
>  create mode 100644 src/libcamera/pipeline/virtual/parser.cpp<br>
>  create mode 100644 src/libcamera/pipeline/virtual/parser.h<br>
>  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.cpp<br>
>  create mode 100644 src/libcamera/pipeline/virtual/test_pattern_generator.h<br>
>  create mode 100644 src/libcamera/pipeline/virtual/virtual.cpp<br>
>  create mode 100644 src/libcamera/pipeline/virtual/virtual.h<br>
> <br>
> -- <br>
> 2.46.0.rc1.232.g9752f9e123-goog<br>
><br>
</blockquote></div></div>