[libcamera-devel] [PATCH 07/20] libcamera: pipeline: simple: converter: Replace open() with isValid()
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Jan 31 23:46:49 CET 2021
Simplify the SimpleConverter interface by opening the M2M device in the
constructor. The explicit call to open() is replaced by a check through
a new isValid() function, and the unused close() function is removed.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/pipeline/simple/converter.cpp | 20 ++++++--------------
src/libcamera/pipeline/simple/converter.h | 3 +--
src/libcamera/pipeline/simple/simple.cpp | 4 ++--
3 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
index 6b3249ea92b0..f782fbc63b09 100644
--- a/src/libcamera/pipeline/simple/converter.cpp
+++ b/src/libcamera/pipeline/simple/converter.cpp
@@ -39,24 +39,16 @@ SimpleConverter::SimpleConverter(MediaDevice *media)
m2m_ = std::make_unique<V4L2M2MDevice>((*it)->deviceNode());
+ int ret = m2m_->open();
+ if (ret < 0) {
+ m2m_.reset();
+ return;
+ }
+
m2m_->output()->bufferReady.connect(this, &SimpleConverter::outputBufferReady);
m2m_->capture()->bufferReady.connect(this, &SimpleConverter::captureBufferReady);
}
-int SimpleConverter::open()
-{
- if (!m2m_)
- return -ENODEV;
-
- return m2m_->open();
-}
-
-void SimpleConverter::close()
-{
- if (m2m_)
- m2m_->close();
-}
-
std::vector<PixelFormat> SimpleConverter::formats(PixelFormat input)
{
if (!m2m_)
diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h
index a1503a6099ff..780bfa8f7832 100644
--- a/src/libcamera/pipeline/simple/converter.h
+++ b/src/libcamera/pipeline/simple/converter.h
@@ -30,8 +30,7 @@ class SimpleConverter
public:
SimpleConverter(MediaDevice *media);
- int open();
- void close();
+ bool isValid() const { return m2m_ != nullptr; }
std::vector<PixelFormat> formats(PixelFormat input);
SizeRange sizes(const Size &input);
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 8c0bca36bbfb..20a4ebca94fd 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -763,9 +763,9 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator)
/* Open the converter, if any. */
if (converter) {
converter_ = std::make_unique<SimpleConverter>(converter);
- if (converter_->open() < 0) {
+ if (!converter_->isValid()) {
LOG(SimplePipeline, Warning)
- << "Failed to open converter, disabling format conversion";
+ << "Failed to create converter, disabling format conversion";
converter_.reset();
} else {
converter_->bufferReady.connect(this, &SimplePipelineHandler::converterDone);
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list