[PATCH v1 5/7] pipeline: rpi: Track which ISP output is configured for a stream
Naushir Patuck
naush at raspberrypi.com
Wed Aug 28 12:03:34 CEST 2024
Hi Jacopo,
On Wed, 28 Aug 2024 at 10:50, Jacopo Mondi
<jacopo.mondi at ideasonboard.com> wrote:
>
> Hi Naush
>
> On Thu, Aug 08, 2024 at 11:23:44AM GMT, Naushir Patuck wrote:
> > Add a ispIndex field to CropParams that is used to track
> > which ISP output (0/1) will be used for a given stream during
> > configuration.
> >
> > Tracking this information is required for an upcoming change where crop
> > rectangles can be specified for each configured stream. Currently, the
> > value is fixed to 0.
>
> Maybe I'm missing something, but isn't this the same value used to
> index the cropParams_ map ?
No it's not the same, and horribly tricky :)
We have 2 indexes to track - the key of the cropParams_ maps tracks
the index of the configured stream, and CropParams::ispCrop tracks the
actual ISP output channel used for that stream. Looking at the code
in the pisp pipeline handler [1] might make things clearer.
Regards,
Naush
[1] https://github.com/raspberrypi/libcamera/blob/08eb6758129788cb7e33cc1726aea40c672201b8/src/libcamera/pipeline/rpi/pisp/pisp.cpp#L1556
>
> >
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> > ---
> > src/libcamera/pipeline/rpi/common/pipeline_base.h | 6 ++++--
> > src/libcamera/pipeline/rpi/vc4/vc4.cpp | 2 +-
> > 2 files changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.h b/src/libcamera/pipeline/rpi/common/pipeline_base.h
> > index 2bed905178bc..0ccfa4e82e86 100644
> > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.h
> > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.h
> > @@ -135,8 +135,8 @@ public:
> > IPACameraSensorInfo sensorInfo_;
> >
> > struct CropParams {
> > - CropParams(Rectangle ispCrop_, Size ispMinCropSize_)
> > - : ispCrop(ispCrop_), ispMinCropSize(ispMinCropSize_)
> > + CropParams(Rectangle ispCrop_, Size ispMinCropSize_, unsigned int ispIndex_)
> > + : ispCrop(ispCrop_), ispMinCropSize(ispMinCropSize_), ispIndex(ispIndex_)
> > {
> > }
> >
> > @@ -148,6 +148,8 @@ public:
> > Rectangle ispCrop;
> > /* Minimum crop size in ISP output pixels */
> > Size ispMinCropSize;
> > + /* Index of the ISP output channel for this crop */
> > + unsigned int ispIndex;
> > };
> >
> > /* Mapping of CropParams keyed by the stream index in CameraConfiguration */
> > diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> > index d118252f02dd..ffc45653daf1 100644
> > --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> > +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> > @@ -715,7 +715,7 @@ int Vc4CameraData::platformConfigure(const RPi::RPiCameraConfiguration *rpiConfi
> > cropParams_.clear();
> > cropParams_.emplace(std::piecewise_construct,
> > std::forward_as_tuple(0),
> > - std::forward_as_tuple(scaleIspCrop(ispCrop), testCrop.size()));
> > + std::forward_as_tuple(scaleIspCrop(ispCrop), testCrop.size(), 0));
> >
> > return 0;
> > }
> > --
> > 2.34.1
> >
More information about the libcamera-devel
mailing list