summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libcamera/pipeline/simple/converter.cpp9
-rw-r--r--src/libcamera/pipeline/simple/converter.h5
-rw-r--r--src/libcamera/pipeline/simple/simple.cpp3
3 files changed, 12 insertions, 5 deletions
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
index 550b2bcf..6b3249ea 100644
--- a/src/libcamera/pipeline/simple/converter.cpp
+++ b/src/libcamera/pipeline/simple/converter.cpp
@@ -195,6 +195,9 @@ int SimpleConverter::configure(const StreamConfiguration &inputCfg,
return -EINVAL;
}
+ inputBufferCount_ = inputCfg.bufferCount;
+ outputBufferCount_ = outputCfg.bufferCount;
+
return 0;
}
@@ -204,13 +207,13 @@ int SimpleConverter::exportBuffers(unsigned int count,
return m2m_->capture()->exportBuffers(count, buffers);
}
-int SimpleConverter::start(unsigned int count)
+int SimpleConverter::start()
{
- int ret = m2m_->output()->importBuffers(count);
+ int ret = m2m_->output()->importBuffers(inputBufferCount_);
if (ret < 0)
return ret;
- ret = m2m_->capture()->importBuffers(count);
+ ret = m2m_->capture()->importBuffers(outputBufferCount_);
if (ret < 0) {
stop();
return ret;
diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h
index 8d2afe36..d9ace52d 100644
--- a/src/libcamera/pipeline/simple/converter.h
+++ b/src/libcamera/pipeline/simple/converter.h
@@ -44,7 +44,7 @@ public:
int exportBuffers(unsigned int count,
std::vector<std::unique_ptr<FrameBuffer>> *buffers);
- int start(unsigned int count);
+ int start();
void stop();
int queueBuffers(FrameBuffer *input, FrameBuffer *output);
@@ -59,6 +59,9 @@ private:
std::queue<FrameBuffer *> captureDoneQueue_;
std::queue<FrameBuffer *> outputDoneQueue_;
+
+ unsigned int inputBufferCount_;
+ unsigned int outputBufferCount_;
};
} /* namespace libcamera */
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 2f6dff16..4a1f2052 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -607,6 +607,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
inputCfg.pixelFormat = pipeConfig.pixelFormat;
inputCfg.size = pipeConfig.captureSize;
inputCfg.stride = captureFormat.planes[0].bpl;
+ inputCfg.bufferCount = cfg.bufferCount;
ret = converter_->configure(inputCfg, cfg);
if (ret < 0) {
@@ -660,7 +661,7 @@ int SimplePipelineHandler::start(Camera *camera, [[maybe_unused]] const ControlL
}
if (useConverter_) {
- ret = converter_->start(count);
+ ret = converter_->start();
if (ret < 0) {
stop(camera);
return ret;