[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