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:
Jacopo Mondi
2019-12-17 12:47:51 +01:00
parent 27cece6653
commit 6ba23735b9
12 changed files with 233 additions and 40 deletions
+3 -4
View File
@@ -1232,10 +1232,9 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)
std::make_unique<RkISP1CameraData>(this, &mainPath_,
hasSelfPath_ ? &selfPath_ : nullptr);
data->sensor_ = std::make_unique<CameraSensor>(sensor);
ret = data->sensor_->init();
if (ret)
return ret;
data->sensor_ = CameraSensorFactoryBase::create(sensor);
if (!data->sensor_)
return -ENODEV;
/* Initialize the camera properties. */
data->properties_ = data->sensor_->properties();