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>
This commit is contained in:
parent
4502635b72
commit
fb8c63d69c
3 changed files with 9 additions and 18 deletions
|
@ -39,24 +39,16 @@ SimpleConverter::SimpleConverter(MediaDevice *media)
|
||||||
|
|
||||||
m2m_ = std::make_unique<V4L2M2MDevice>((*it)->deviceNode());
|
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_->output()->bufferReady.connect(this, &SimpleConverter::outputBufferReady);
|
||||||
m2m_->capture()->bufferReady.connect(this, &SimpleConverter::captureBufferReady);
|
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)
|
std::vector<PixelFormat> SimpleConverter::formats(PixelFormat input)
|
||||||
{
|
{
|
||||||
if (!m2m_)
|
if (!m2m_)
|
||||||
|
|
|
@ -30,8 +30,7 @@ class SimpleConverter
|
||||||
public:
|
public:
|
||||||
SimpleConverter(MediaDevice *media);
|
SimpleConverter(MediaDevice *media);
|
||||||
|
|
||||||
int open();
|
bool isValid() const { return m2m_ != nullptr; }
|
||||||
void close();
|
|
||||||
|
|
||||||
std::vector<PixelFormat> formats(PixelFormat input);
|
std::vector<PixelFormat> formats(PixelFormat input);
|
||||||
SizeRange sizes(const Size &input);
|
SizeRange sizes(const Size &input);
|
||||||
|
|
|
@ -763,9 +763,9 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator)
|
||||||
/* Open the converter, if any. */
|
/* Open the converter, if any. */
|
||||||
if (converter) {
|
if (converter) {
|
||||||
converter_ = std::make_unique<SimpleConverter>(converter);
|
converter_ = std::make_unique<SimpleConverter>(converter);
|
||||||
if (converter_->open() < 0) {
|
if (!converter_->isValid()) {
|
||||||
LOG(SimplePipeline, Warning)
|
LOG(SimplePipeline, Warning)
|
||||||
<< "Failed to open converter, disabling format conversion";
|
<< "Failed to create converter, disabling format conversion";
|
||||||
converter_.reset();
|
converter_.reset();
|
||||||
} else {
|
} else {
|
||||||
converter_->bufferReady.connect(this, &SimplePipelineHandler::converterDone);
|
converter_->bufferReady.connect(this, &SimplePipelineHandler::converterDone);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue