[libcamera-devel] [PATCH 12/20] pipeline: rpi: Add SW downscale status to RPi::Stream

Naushir Patuck naush at raspberrypi.com
Thu Oct 12 11:50:01 CEST 2023


Hi Jacopo,

On Thu, 12 Oct 2023 at 10:36, Jacopo Mondi
<jacopo.mondi at ideasonboard.com> wrote:
>
> Hi Naush
>
> On Fri, Oct 06, 2023 at 02:19:52PM +0100, Naushir Patuck via libcamera-devel wrote:
> > Record if additional software downscaling is needed for a particular
> > stream in the RPi::Stream class. Additional software downscaling may be
> > needed if the user required downscale factor is greater than what the
> > ISP hardware is capable of.
>
> Why this is not a flag ?

Because we need to store the downscale factor used (2/4/8...) instead
of just a boolean.

Regards,
Naush


> >
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> > Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
> > ---
> >  src/libcamera/pipeline/rpi/common/rpi_stream.cpp | 10 ++++++++++
> >  src/libcamera/pipeline/rpi/common/rpi_stream.h   | 11 +++++++++--
> >  2 files changed, 19 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > index fd6f2efc6e27..25e6a4383bf6 100644
> > --- a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > +++ b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > @@ -57,6 +57,16 @@ const std::string &Stream::name() const
> >       return name_;
> >  }
> >
> > +unsigned int Stream::swDownscale() const
> > +{
> > +     return swDownscale_;
> > +}
> > +
> > +void Stream::setSwDownscale(unsigned int swDownscale)
> > +{
> > +     swDownscale_ = swDownscale;
> > +}
> > +
> >  void Stream::resetBuffers()
> >  {
> >       /* Add all internal buffers to the queue of usable buffers. */
> > diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.h b/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > index c5e35d134926..fc2bdfe25d4a 100644
> > --- a/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > +++ b/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > @@ -86,13 +86,14 @@ public:
> >       using StreamFlags = Flags<StreamFlag>;
> >
> >       Stream()
> > -             : flags_(StreamFlag::None), id_(0)
> > +             : flags_(StreamFlag::None), id_(0), swDownscale_(0)
> >       {
> >       }
> >
> >       Stream(const char *name, MediaEntity *dev, StreamFlags flags = StreamFlag::None)
> >               : flags_(flags), name_(name),
> > -               dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(0)
> > +               dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(0),
> > +               swDownscale_(0)
> >       {
> >       }
> >
> > @@ -104,6 +105,9 @@ public:
> >       const std::string &name() const;
> >       void resetBuffers();
> >
> > +     unsigned int swDownscale() const;
> > +     void setSwDownscale(unsigned int swDownscale);
> > +
> >       void setExportedBuffers(std::vector<std::unique_ptr<FrameBuffer>> *buffers);
> >       const BufferMap &getBuffers() const;
> >       unsigned int getBufferId(FrameBuffer *buffer) const;
> > @@ -139,6 +143,9 @@ private:
> >       /* Tracks a unique id key for the bufferMap_ */
> >       unsigned int id_;
> >
> > +     /* Power of 2 greater than one if software downscaling will be required. */
> > +     unsigned int swDownscale_;
> > +
> >       /* All frame buffers associated with this device stream. */
> >       BufferMap bufferMap_;
> >
> > --
> > 2.34.1
> >


More information about the libcamera-devel mailing list