mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-25 01:25:08 +03:00
libcamera: pipeline: simple: converter: Use StreamConfiguration for input configuration
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> Tested-by: Phi-Bang Nguyen <pnguyen@baylibre.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
cc8da6b8c2
commit
ad12f09a62
3 changed files with 13 additions and 8 deletions
|
@ -148,15 +148,17 @@ SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat,
|
||||||
return std::make_tuple(format.planes[0].bpl, format.planes[0].size);
|
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)
|
const StreamConfiguration &outputCfg)
|
||||||
{
|
{
|
||||||
V4L2DeviceFormat format;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
V4L2PixelFormat videoFormat = m2m_->output()->toV4L2PixelFormat(inputFormat);
|
V4L2PixelFormat videoFormat =
|
||||||
|
m2m_->output()->toV4L2PixelFormat(inputCfg.pixelFormat);
|
||||||
|
|
||||||
|
V4L2DeviceFormat format;
|
||||||
format.fourcc = videoFormat;
|
format.fourcc = videoFormat;
|
||||||
format.size = inputSize;
|
format.size = inputCfg.size;
|
||||||
|
|
||||||
ret = m2m_->output()->setFormat(&format);
|
ret = m2m_->output()->setFormat(&format);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -165,7 +167,7 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (format.fourcc != videoFormat || format.size != inputSize) {
|
if (format.fourcc != videoFormat || format.size != inputCfg.size) {
|
||||||
LOG(SimplePipeline, Error)
|
LOG(SimplePipeline, Error)
|
||||||
<< "Input format not supported";
|
<< "Input format not supported";
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
std::tuple<unsigned int, unsigned int>
|
std::tuple<unsigned int, unsigned int>
|
||||||
strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size);
|
strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size);
|
||||||
|
|
||||||
int configure(PixelFormat inputFormat, const Size &inputSize,
|
int configure(const StreamConfiguration &inputCfg,
|
||||||
const StreamConfiguration &outputCfg);
|
const StreamConfiguration &outputCfg);
|
||||||
int exportBuffers(unsigned int count,
|
int exportBuffers(unsigned int count,
|
||||||
std::vector<std::unique_ptr<FrameBuffer>> *buffers);
|
std::vector<std::unique_ptr<FrameBuffer>> *buffers);
|
||||||
|
|
|
@ -603,8 +603,11 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
|
||||||
useConverter_ = config->needConversion();
|
useConverter_ = config->needConversion();
|
||||||
|
|
||||||
if (useConverter_) {
|
if (useConverter_) {
|
||||||
ret = converter_->configure(pipeConfig.pixelFormat,
|
StreamConfiguration inputCfg;
|
||||||
pipeConfig.captureSize, cfg);
|
inputCfg.pixelFormat = pipeConfig.pixelFormat;
|
||||||
|
inputCfg.size = pipeConfig.captureSize;
|
||||||
|
|
||||||
|
ret = converter_->configure(inputCfg, cfg);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
LOG(SimplePipeline, Error)
|
LOG(SimplePipeline, Error)
|
||||||
<< "Unable to configure converter";
|
<< "Unable to configure converter";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue