mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-12 14:59:44 +03:00
libcamera: camera_sensor: Introduce CameraSensorFactory
Introduce a factory to create CameraSensor derived classes instances by inspecting the sensor media entity name and provide a convenience macro to register specialized sensor handlers. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
27cece6653
commit
6ba23735b9
12 changed files with 233 additions and 40 deletions
|
@ -52,8 +52,8 @@ protected:
|
|||
return TestFail;
|
||||
}
|
||||
|
||||
sensor_ = new CameraSensor(entity);
|
||||
if (sensor_->init() < 0) {
|
||||
sensor_ = CameraSensorFactoryBase::create(entity);
|
||||
if (!sensor_) {
|
||||
cerr << "Unable to initialise camera sensor" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
@ -118,13 +118,12 @@ protected:
|
|||
|
||||
void cleanup()
|
||||
{
|
||||
delete sensor_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<DeviceEnumerator> enumerator_;
|
||||
std::shared_ptr<MediaDevice> media_;
|
||||
CameraSensor *sensor_;
|
||||
std::unique_ptr<CameraSensor> sensor_;
|
||||
CameraLens *lens_;
|
||||
};
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ int V4L2VideoDeviceTest::init()
|
|||
format.size.height = 480;
|
||||
|
||||
if (driver_ == "vimc") {
|
||||
sensor_ = new CameraSensor(media_->getEntityByName("Sensor A"));
|
||||
if (sensor_->init())
|
||||
sensor_ = CameraSensorFactoryBase::create(media_->getEntityByName("Sensor A"));
|
||||
if (!sensor_)
|
||||
return TestFail;
|
||||
|
||||
debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer A"));
|
||||
|
@ -98,6 +98,5 @@ void V4L2VideoDeviceTest::cleanup()
|
|||
capture_->close();
|
||||
|
||||
delete debayer_;
|
||||
delete sensor_;
|
||||
delete capture_;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ protected:
|
|||
std::string entity_;
|
||||
std::unique_ptr<libcamera::DeviceEnumerator> enumerator_;
|
||||
std::shared_ptr<libcamera::MediaDevice> media_;
|
||||
libcamera::CameraSensor *sensor_;
|
||||
std::unique_ptr<libcamera::CameraSensor> sensor_;
|
||||
libcamera::V4L2Subdevice *debayer_;
|
||||
libcamera::V4L2VideoDevice *capture_;
|
||||
std::vector<std::unique_ptr<libcamera::FrameBuffer>> buffers_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue