Message ID | 20210131224702.8838-5-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Delegated to: | Laurent Pinchart |
Headers | show |
Series |
|
Related | show |
Hi Laurent, On Mon, Feb 01, 2021 at 12:46:46AM +0200, Laurent Pinchart wrote: > Group the configuration parameters for the converter input in a > StreamConfiguration instance. This makes the configure() function > signature cleaner, and will allow passing additional parameters (such as > stride and buffer count). > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/libcamera/pipeline/simple/converter.cpp | 12 +++++++----- > src/libcamera/pipeline/simple/converter.h | 2 +- > src/libcamera/pipeline/simple/simple.cpp | 7 +++++-- > 3 files changed, 13 insertions(+), 8 deletions(-) > > diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp > index 8f54caaca983..6f4e41db2e00 100644 > --- a/src/libcamera/pipeline/simple/converter.cpp > +++ b/src/libcamera/pipeline/simple/converter.cpp > @@ -148,15 +148,17 @@ SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat, > return std::make_tuple(format.planes[0].bpl, format.planes[0].size); > } > > -int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, > +int SimpleConverter::configure(const StreamConfiguration &inputCfg, > const StreamConfiguration &outputCfg) > { > - V4L2DeviceFormat format; > int ret; > > - V4L2PixelFormat videoFormat = m2m_->output()->toV4L2PixelFormat(inputFormat); > + V4L2PixelFormat videoFormat = > + m2m_->output()->toV4L2PixelFormat(inputCfg.pixelFormat); > + > + V4L2DeviceFormat format; > format.fourcc = videoFormat; > - format.size = inputSize; > + format.size = inputCfg.size; > > ret = m2m_->output()->setFormat(&format); > if (ret < 0) { > @@ -165,7 +167,7 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, > return ret; > } > > - if (format.fourcc != videoFormat || format.size != inputSize) { > + if (format.fourcc != videoFormat || format.size != inputCfg.size) { > LOG(SimplePipeline, Error) > << "Input format not supported"; > return -EINVAL; > diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h > index 07a632abd8f6..47a056e582d6 100644 > --- a/src/libcamera/pipeline/simple/converter.h > +++ b/src/libcamera/pipeline/simple/converter.h > @@ -38,7 +38,7 @@ public: > std::tuple<unsigned int, unsigned int> > strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size); > > - int configure(PixelFormat inputFormat, const Size &inputSize, > + int configure(const StreamConfiguration &inputCfg, > const StreamConfiguration &outputCfg); > int exportBuffers(unsigned int count, > std::vector<std::unique_ptr<FrameBuffer>> *buffers); > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp > index 4e3127814b89..0a53fa934261 100644 > --- a/src/libcamera/pipeline/simple/simple.cpp > +++ b/src/libcamera/pipeline/simple/simple.cpp > @@ -603,8 +603,11 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) > useConverter_ = config->needConversion(); > > if (useConverter_) { > - ret = converter_->configure(pipeConfig.pixelFormat, > - pipeConfig.captureSize, cfg); > + StreamConfiguration inputCfg; > + inputCfg.pixelFormat = pipeConfig.pixelFormat; > + inputCfg.size = pipeConfig.captureSize; > + > + ret = converter_->configure(inputCfg, cfg); > if (ret < 0) { > LOG(SimplePipeline, Error) > << "Unable to configure converter"; > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
On 31/01/2021 22:46, Laurent Pinchart wrote: > Group the configuration parameters for the converter input in a > StreamConfiguration instance. This makes the configure() function > signature cleaner, and will allow passing additional parameters (such as > stride and buffer count). > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Sounds good, converts one stream type to another ;-) Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > --- > src/libcamera/pipeline/simple/converter.cpp | 12 +++++++----- > src/libcamera/pipeline/simple/converter.h | 2 +- > src/libcamera/pipeline/simple/simple.cpp | 7 +++++-- > 3 files changed, 13 insertions(+), 8 deletions(-) > > diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp > index 8f54caaca983..6f4e41db2e00 100644 > --- a/src/libcamera/pipeline/simple/converter.cpp > +++ b/src/libcamera/pipeline/simple/converter.cpp > @@ -148,15 +148,17 @@ SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat, > return std::make_tuple(format.planes[0].bpl, format.planes[0].size); > } > > -int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, > +int SimpleConverter::configure(const StreamConfiguration &inputCfg, > const StreamConfiguration &outputCfg) > { > - V4L2DeviceFormat format; > int ret; > > - V4L2PixelFormat videoFormat = m2m_->output()->toV4L2PixelFormat(inputFormat); > + V4L2PixelFormat videoFormat = > + m2m_->output()->toV4L2PixelFormat(inputCfg.pixelFormat); > + > + V4L2DeviceFormat format; > format.fourcc = videoFormat; > - format.size = inputSize; > + format.size = inputCfg.size; > > ret = m2m_->output()->setFormat(&format); > if (ret < 0) { > @@ -165,7 +167,7 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, > return ret; > } > > - if (format.fourcc != videoFormat || format.size != inputSize) { > + if (format.fourcc != videoFormat || format.size != inputCfg.size) { > LOG(SimplePipeline, Error) > << "Input format not supported"; > return -EINVAL; > diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h > index 07a632abd8f6..47a056e582d6 100644 > --- a/src/libcamera/pipeline/simple/converter.h > +++ b/src/libcamera/pipeline/simple/converter.h > @@ -38,7 +38,7 @@ public: > std::tuple<unsigned int, unsigned int> > strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size); > > - int configure(PixelFormat inputFormat, const Size &inputSize, > + int configure(const StreamConfiguration &inputCfg, > const StreamConfiguration &outputCfg); > int exportBuffers(unsigned int count, > std::vector<std::unique_ptr<FrameBuffer>> *buffers); > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp > index 4e3127814b89..0a53fa934261 100644 > --- a/src/libcamera/pipeline/simple/simple.cpp > +++ b/src/libcamera/pipeline/simple/simple.cpp > @@ -603,8 +603,11 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) > useConverter_ = config->needConversion(); > > if (useConverter_) { > - ret = converter_->configure(pipeConfig.pixelFormat, > - pipeConfig.captureSize, cfg); > + StreamConfiguration inputCfg; > + inputCfg.pixelFormat = pipeConfig.pixelFormat; > + inputCfg.size = pipeConfig.captureSize; > + > + ret = converter_->configure(inputCfg, cfg); > if (ret < 0) { > LOG(SimplePipeline, Error) > << "Unable to configure converter"; >
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp index 8f54caaca983..6f4e41db2e00 100644 --- a/src/libcamera/pipeline/simple/converter.cpp +++ b/src/libcamera/pipeline/simple/converter.cpp @@ -148,15 +148,17 @@ SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat, return std::make_tuple(format.planes[0].bpl, format.planes[0].size); } -int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, +int SimpleConverter::configure(const StreamConfiguration &inputCfg, const StreamConfiguration &outputCfg) { - V4L2DeviceFormat format; int ret; - V4L2PixelFormat videoFormat = m2m_->output()->toV4L2PixelFormat(inputFormat); + V4L2PixelFormat videoFormat = + m2m_->output()->toV4L2PixelFormat(inputCfg.pixelFormat); + + V4L2DeviceFormat format; format.fourcc = videoFormat; - format.size = inputSize; + format.size = inputCfg.size; ret = m2m_->output()->setFormat(&format); if (ret < 0) { @@ -165,7 +167,7 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize, return ret; } - if (format.fourcc != videoFormat || format.size != inputSize) { + if (format.fourcc != videoFormat || format.size != inputCfg.size) { LOG(SimplePipeline, Error) << "Input format not supported"; return -EINVAL; diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h index 07a632abd8f6..47a056e582d6 100644 --- a/src/libcamera/pipeline/simple/converter.h +++ b/src/libcamera/pipeline/simple/converter.h @@ -38,7 +38,7 @@ public: std::tuple<unsigned int, unsigned int> strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size); - int configure(PixelFormat inputFormat, const Size &inputSize, + int configure(const StreamConfiguration &inputCfg, const StreamConfiguration &outputCfg); int exportBuffers(unsigned int count, std::vector<std::unique_ptr<FrameBuffer>> *buffers); diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 4e3127814b89..0a53fa934261 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -603,8 +603,11 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) useConverter_ = config->needConversion(); if (useConverter_) { - ret = converter_->configure(pipeConfig.pixelFormat, - pipeConfig.captureSize, cfg); + StreamConfiguration inputCfg; + inputCfg.pixelFormat = pipeConfig.pixelFormat; + inputCfg.size = pipeConfig.captureSize; + + ret = converter_->configure(inputCfg, cfg); if (ret < 0) { LOG(SimplePipeline, Error) << "Unable to configure converter";
Group the configuration parameters for the converter input in a StreamConfiguration instance. This makes the configure() function signature cleaner, and will allow passing additional parameters (such as stride and buffer count). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/libcamera/pipeline/simple/converter.cpp | 12 +++++++----- src/libcamera/pipeline/simple/converter.h | 2 +- src/libcamera/pipeline/simple/simple.cpp | 7 +++++-- 3 files changed, 13 insertions(+), 8 deletions(-)