[libcamera-devel] [PATCH v5 03/23] libcamera: StreamConfiguration: Add frameSize field
paul.elder at ideasonboard.com
paul.elder at ideasonboard.com
Fri Jul 10 07:23:52 CEST 2020
Hi Kieran,
On Thu, Jul 09, 2020 at 03:42:22PM +0100, Kieran Bingham wrote:
> Hi Paul,
>
> On 09/07/2020 14:28, Paul Elder wrote:
> > In addition to the stride field, we want the pipeline handler to be able
> > to declare the frame size for the configuration. Add a frameSize field
> > to StreamConfiguration for this purpose.
> >
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> >
> > ---
> > No change in v5
> >
> > No change in v4
> >
> > New in v3
> > ---
> > include/libcamera/stream.h | 1 +
> > src/libcamera/stream.cpp | 17 ++++++++++++++---
> > 2 files changed, 15 insertions(+), 3 deletions(-)
> >
> > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
> > index 1a68bd2..f502b35 100644
> > --- a/include/libcamera/stream.h
> > +++ b/include/libcamera/stream.h
> > @@ -43,6 +43,7 @@ struct StreamConfiguration {
> > PixelFormat pixelFormat;
> > Size size;
> > unsigned int stride;
> > + unsigned int frameSize;
> >
> > unsigned int bufferCount;
> >
> > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
> > index 6df5882..6d6e279 100644
> > --- a/src/libcamera/stream.cpp
> > +++ b/src/libcamera/stream.cpp
> > @@ -279,7 +279,8 @@ SizeRange StreamFormats::range(const PixelFormat &pixelformat) const
> > * handlers provide StreamFormats.
> > */
> > StreamConfiguration::StreamConfiguration()
> > - : pixelFormat(0), stride(0), bufferCount(0), stream_(nullptr)
> > + : pixelFormat(0), stride(0), frameSize(0), bufferCount(0),
> > + stream_(nullptr)
> > {
> > }
> >
> > @@ -287,8 +288,8 @@ StreamConfiguration::StreamConfiguration()
> > * \brief Construct a configuration with stream formats
> > */
> > StreamConfiguration::StreamConfiguration(const StreamFormats &formats)
> > - : pixelFormat(0), stride(0), bufferCount(0), stream_(nullptr),
> > - formats_(formats)
> > + : pixelFormat(0), stride(0), frameSize(0), bufferCount(0),
> > + stream_(nullptr), formats_(formats)
> > {
> > }
> >
> > @@ -315,6 +316,16 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats)
> > * the camera is configured.
> > */
> >
> > +/**
> > + * \var StreamConfiguration::frameSize
> > + * \brief Frame size for the stream, in bytes
> > + *
> > + * The frameSize value reports the number of bytes necessary to contain one
> > + * frame of an image buffer for this stream. The value is valid after
> > + * successfully validating the configuration with a call to
> > + * CameraConfiguration::validate().
>
> How will we handle multi-planar formats? Will this always be the total
> of all planes?
Yeah, this is the total of all planes.
> Should we state if this total includes bytes required for
> all image planes explicitly?
I'll add it for clarity.
> In fact, will there be a planeSize function too?
There doesn't seem to be demand for it at the moment. It's not that
difficult for pipeline handlers to do height * stride(format, plane
index).
> Still, that can be later either way.
>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
>
> Though, should this be squashed with "libcamera: PixelFormatInfo: Add
> functions stride and frameSize" ? Otherwise this value becomes available
> at this point but always zero.
Even if it's squashed, the values will be zero until the pipeline
handlers fill it, so I think it's fine not to.
> It's only used first in that patch, so I'd at least put this patch
> directly before so that the closely-related patches are adjacent.
But this would be good, yes.
> > + */
> > +
> > /**
> > * \var StreamConfiguration::bufferCount
> > * \brief Requested number of buffers to allocate for the stream
> >
Thanks,
Paul
More information about the libcamera-devel
mailing list