summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-04-14 21:26:07 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-04-18 18:13:16 +0300
commit05b0e5ed531553ad20c4c787de3c337425e6b907 (patch)
tree8b4bcabdd60d5cdf162cce99bc729d7d8cfcc89e
parentd97cafdf3c60afb75fa38d8b2f17b816c934ad9d (diff)
libcamera: v4l2_subdevice: Add method to retrieve the media entity
Add a method to retrieve the media entity associated with a subdevice. The entityName() and deviceNode() methods are not needed anymore as they can be accessed through the media entity, remove them. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--src/libcamera/include/v4l2_subdevice.h3
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp4
-rw-r--r--src/libcamera/v4l2_subdevice.cpp22
-rw-r--r--test/v4l2_subdevice/list_formats.cpp6
-rw-r--r--test/v4l2_subdevice/v4l2_subdevice_test.cpp2
5 files changed, 14 insertions, 23 deletions
diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h
index e592d67d..c7b0b4cb 100644
--- a/src/libcamera/include/v4l2_subdevice.h
+++ b/src/libcamera/include/v4l2_subdevice.h
@@ -41,8 +41,7 @@ public:
bool isOpen() const;
void close();
- const std::string &deviceNode() const { return entity_->deviceNode(); }
- const std::string &entityName() const { return entity_->name(); }
+ const MediaEntity *entity() const { return entity_; }
int setCrop(unsigned int pad, Rectangle *rect);
int setCompose(unsigned int pad, Rectangle *rect);
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index fb9ee0af..f4396909 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -590,7 +590,7 @@ int PipelineHandlerIPU3::registerCameras()
&IPU3CameraData::imguOutputBufferReady);
/* Create and register the Camera instance. */
- std::string cameraName = cio2->sensor_->entityName() + " "
+ std::string cameraName = cio2->sensor_->entity()->name() + " "
+ std::to_string(id);
std::shared_ptr<Camera> camera = Camera::create(this,
cameraName,
@@ -1066,7 +1066,7 @@ int CIO2Device::init(const MediaDevice *media, unsigned int index)
}
}
if (maxSize_.width == 0) {
- LOG(IPU3, Info) << "Sensor '" << sensor_->entityName()
+ LOG(IPU3, Info) << "Sensor '" << sensor_->entity()->name()
<< "' detected, but no supported image format "
<< " found: skip camera creation";
return -ENODEV;
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index a03fadfd..5d5b168f 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -131,12 +131,12 @@ int V4L2Subdevice::open()
return -EBUSY;
}
- ret = ::open(deviceNode().c_str(), O_RDWR);
+ ret = ::open(entity_->deviceNode().c_str(), O_RDWR);
if (ret < 0) {
ret = -errno;
LOG(V4L2Subdev, Error)
- << "Failed to open V4L2 subdevice '" << deviceNode()
- << "': " << strerror(-ret);
+ << "Failed to open V4L2 subdevice '"
+ << entity_->deviceNode() << "': " << strerror(-ret);
return ret;
}
fd_ = ret;
@@ -166,17 +166,9 @@ void V4L2Subdevice::close()
}
/**
- * \fn V4L2Subdevice::deviceNode()
- * \brief Retrieve the path of the device node associated with the subdevice
- *
- * \return The subdevice's device node system path
- */
-
-/**
- * \fn V4L2Subdevice::entityName()
- * \brief Retrieve the name of the media entity associated with the subdevice
- *
- * \return The name of the media entity the subdevice is associated to
+ * \fn V4L2Subdevice::entity()
+ * \brief Retrieve the media entity associated with the subdevice
+ * \return The subdevice's associated media entity.
*/
/**
@@ -343,7 +335,7 @@ V4L2Subdevice *V4L2Subdevice::fromEntityName(const MediaDevice *media,
std::string V4L2Subdevice::logPrefix() const
{
- return "'" + entityName() + "'";
+ return "'" + entity_->name() + "'";
}
int V4L2Subdevice::enumPadSizes(unsigned int pad,unsigned int code,
diff --git a/test/v4l2_subdevice/list_formats.cpp b/test/v4l2_subdevice/list_formats.cpp
index 09dec9ab..18dd8761 100644
--- a/test/v4l2_subdevice/list_formats.cpp
+++ b/test/v4l2_subdevice/list_formats.cpp
@@ -52,7 +52,7 @@ int ListFormatsTest::run()
formats = scaler_->formats(0);
if (formats.empty()) {
cerr << "Failed to list formats on pad 0 of subdevice "
- << scaler_->entityName() << endl;
+ << scaler_->entity()->name() << endl;
return TestFail;
}
for (auto it = formats.begin(); it != formats.end(); ++it)
@@ -61,7 +61,7 @@ int ListFormatsTest::run()
formats = scaler_->formats(1);
if (formats.empty()) {
cerr << "Failed to list formats on pad 1 of subdevice "
- << scaler_->entityName() << endl;
+ << scaler_->entity()->name() << endl;
return TestFail;
}
for (auto it = formats.begin(); it != formats.end(); ++it)
@@ -71,7 +71,7 @@ int ListFormatsTest::run()
formats = scaler_->formats(2);
if (!formats.empty()) {
cerr << "Listing formats on non-existing pad 2 of subdevice "
- << scaler_->entityName()
+ << scaler_->entity()->name()
<< " should return an empty format list" << endl;
return TestFail;
}
diff --git a/test/v4l2_subdevice/v4l2_subdevice_test.cpp b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
index 06582969..dfcf779a 100644
--- a/test/v4l2_subdevice/v4l2_subdevice_test.cpp
+++ b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
@@ -66,7 +66,7 @@ int V4L2SubdeviceTest::init()
ret = scaler_->open();
if (ret) {
cerr << "Unable to open video subdevice "
- << scaler_->deviceNode() << endl;
+ << scaler_->entity()->deviceNode() << endl;
media_->release();
return TestSkip;
}