[libcamera-devel] [PATCH 12/20] pipeline: rpi: Add SW downscale status to RPi::Stream
Jacopo Mondi
jacopo.mondi at ideasonboard.com
Thu Oct 12 11:36:29 CEST 2023
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 ?
>
> 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