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

Naushir Patuck naush at raspberrypi.com
Tue Jan 31 10:05:43 CET 2023


Hi Kieran,

On Mon, 30 Jan 2023 at 14:04, Kieran Bingham
<kieran.bingham at ideasonboard.com> wrote:
>
> 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?)

Sorry to not reply earlier, I'm away from the office this week.

If you have not yet made the release, I am happy to split up the
series and get a few things in earlier.

>
> 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.

Indeed.  I have a "fix" for lc-compliance to work with the RPi
pipeline handler correctly, but of course this will (likely) break
ipu3 and rkisp so I cannot check it in.

Regards,
Naush

>
>
>
> > 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