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>
This commit is contained in:
Laurent Pinchart 2019-04-14 21:26:07 +03:00
parent d97cafdf3c
commit 05b0e5ed53
5 changed files with 14 additions and 23 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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,

View file

@ -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;
}

View file

@ -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;
}