diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-12-26 23:45:04 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-03-03 00:59:04 +0200 |
commit | fb8c63d69cbb7a4a32b6b9c81a92af1baf6c78fa (patch) | |
tree | d81132d1da5fca3410394b616c756bd5eed9380f | |
parent | 4502635b721ae5d8c36ab98a04879ae73da51ca3 (diff) |
libcamera: pipeline: simple: converter: Replace open() with isValid()
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@ideasonboard.com>
Tested-by: Phi-Bang Nguyen <pnguyen@baylibre.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
-rw-r--r-- | src/libcamera/pipeline/simple/converter.cpp | 20 | ||||
-rw-r--r-- | src/libcamera/pipeline/simple/converter.h | 3 | ||||
-rw-r--r-- | 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 6b3249ea..f782fbc6 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 d9ace52d..6e3df553 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 4a1f2052..9ad3aa62 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); |