[libcamera-devel] [PATCH v6 00/15] Raspberry Pi: Platform configuration and buffer allocation improvements

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Jan 30 15:04:42 CET 2023


Quoting Naushir Patuck via libcamera-devel (2023-01-27 15:43:07)
> Hi,
> 
> Version 6 of this series addresses the following:
> 
> - Switch the sense of the hint back to how it was in v4.  This hint is now called MandatorySteam.
> - Move the MandatorySteam hint validation into Camera::queueRequest.
> - Remove the "return_newest_frames" config option.  As discussed in the discussion for v5, it's a bit redundant.
> - Added a bit more documentation for the Unicam buffer config options.
> - The biggest changes come in patches 12/15 - 15/15 where I've added multi-stream support to lc-compliance.  With that, I've added tests for dual stream captures, optional streams, and use of stream hints.
> 
> Hopefully I've captured all the changes from the feedback, but if I've missed anything, please do let me know.

Several of these patches could already apply, but that's breaking the
series apart:

As I'm aiming to make a release tomorrow - would you prefer to keep this
whole series together? or cherry-pick suitable commits (which helps
reduce this series anyway?)

I think already these could be applied:

 [v6,02/15] libcamera: pipeline: Add a platform configuration file helper 
 [v6,03/15] pipeline: raspberrypi: Add a pipeline config structure 
 [v6,04/15] pipeline: raspberrypi: Reorder startup drop frame initialisation 
 ...
 [v6,06/15] libcamera: pipeline: build: Add pipeline_data_dir variable 
 [v6,07/15] pipeline: raspberrypi: Read config parameters from a file 
 ...
 [v6,10/15] pipeline: raspberrypi: Add a parameter to disable startup drop frames

?

> 
> One thing to note - lc-compliance does not run correctly on the Raspberry Pi platform.  The reason for this is detailed in [1].  In order to test the lc-compliance app you need to make the following change:
> 

This certainly needs some more consideration and whatever we do -
lc-compliance should be updated (or left) to make sure that the correct
behaviour is validated.



> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index 9920f6bb01a7..656e0f623c44 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -1135,6 +1135,8 @@ void PipelineHandlerRPi::stopDevice(Camera *camera)
>         data->bayerQueue_ = {};
>         data->embeddedQueue_ = {};
> 
> +       data->freeBuffers();
> +
>         /* Stop the IPA. */
>         data->ipa_->stop();
> 
> This is something that we do need to address at some point...
> 
> Regards,
> Naush
> 
> [1] https://lists.libcamera.org/pipermail/libcamera-devel/2022-December/036136.html
> 
> Naushir Patuck (15):
>   libcamera: stream: Add stream hints to StreamConfiguration
>   libcamera: pipeline: Add a platform configuration file helper
>   pipeline: raspberrypi: Add a pipeline config structure
>   pipeline: raspberrypi: Reorder startup drop frame initialisation
>   pipeline: raspberrypi: Handle MandatoryStream hints for Unicam Image
>   libcamera: pipeline: build: Add pipeline_data_dir variable
>   pipeline: raspberrypi: Read config parameters from a file
>   pipeline: raspberrypi: Handle MandatoryStream hints for ISP Output0
>   libcamera: camera: Validate MandatoryStream in queueRequest()
>   pipeline: raspberrypi: Add a parameter to disable startup drop frames
>   pipeline: raspberrypi: Add minimal memory usage config file
>   libcamera: apps: lcc: Make rolesMap global
>   libcamera: apps: lcc: Add multi-stream capture test framework
>   libcamera: apps: lcc: Add optional stream tests
>   libcamera: apps: lcc: Add stream hints test
> 
>  Documentation/environment_variables.rst       |   5 +
>  include/libcamera/internal/pipeline_handler.h |   3 +
>  include/libcamera/stream.h                    |   8 +
>  src/apps/lc-compliance/capture_test.cpp       | 136 ++++++++-
>  src/apps/lc-compliance/meson.build            |   1 +
>  src/apps/lc-compliance/multi_capture.cpp      | 288 ++++++++++++++++++
>  src/apps/lc-compliance/multi_capture.h        |  87 ++++++
>  src/libcamera/camera.cpp                      |  12 +
>  src/libcamera/pipeline/meson.build            |   3 +
>  .../pipeline/raspberrypi/data/example.yaml    |  37 +++
>  .../pipeline/raspberrypi/data/meson.build     |   9 +
>  .../raspberrypi/data/minimal_mem.yaml         |  37 +++
>  .../pipeline/raspberrypi/meson.build          |   2 +
>  .../pipeline/raspberrypi/raspberrypi.cpp      | 190 ++++++++++--
>  src/libcamera/pipeline_handler.cpp            |  57 ++++
>  src/libcamera/stream.cpp                      |  25 ++
>  16 files changed, 862 insertions(+), 38 deletions(-)
>  create mode 100644 src/apps/lc-compliance/multi_capture.cpp
>  create mode 100644 src/apps/lc-compliance/multi_capture.h
>  create mode 100644 src/libcamera/pipeline/raspberrypi/data/example.yaml
>  create mode 100644 src/libcamera/pipeline/raspberrypi/data/meson.build
>  create mode 100644 src/libcamera/pipeline/raspberrypi/data/minimal_mem.yaml
> 
> -- 
> 2.25.1
>


More information about the libcamera-devel mailing list