17#include <libcamera/base/span.h>
33class SensorConfiguration;
37struct IPACameraSensorInfo;
44 virtual const std::string &
model()
const = 0;
45 virtual const std::string &
id()
const = 0;
52 virtual const std::vector<unsigned int> &
mbusCodes()
const = 0;
53 virtual std::vector<Size>
sizes(
unsigned int mbusCode)
const = 0;
58 const Size &size,
const Size maxSize =
Size())
const = 0;
82 virtual const std::vector<controls::draft::TestPatternModeEnum> &
96 const std::string &
name()
const {
return name_; }
102 static std::vector<CameraSensorFactoryBase *> &factories();
106 virtual std::variant<std::unique_ptr<CameraSensor>,
int>
113template<
typename _CameraSensor>
123 std::variant<std::unique_ptr<CameraSensor>,
int>
126 return _CameraSensor::match(entity);
130#define REGISTER_CAMERA_SENSOR(sensor, priority) \
131static CameraSensorFactory<sensor> global_##sensor##Factory{ #sensor, priority };
Database of camera sensor properties.
Utilities to help constructing class interfaces.
#define LIBCAMERA_DISABLE_COPY_AND_MOVE(klass)
Disable copy and move construction and assignment of the klass.
Definition class.h:29
A camera lens based on V4L2 subdevices.
Definition camera_lens.h:24
Base class for camera sensor factories.
Definition camera_sensor.h:89
const std::string & name() const
Retrieve the camera sensor factory name.
Definition camera_sensor.h:96
static std::unique_ptr< CameraSensor > create(MediaEntity *entity)
Create an instance of the CameraSensor corresponding to a media entity.
Definition camera_sensor.cpp:466
int priority() const
Retrieve the priority value for the factory.
Definition camera_sensor.h:97
Registration of CameraSensorFactory classes and creation of instances.
Definition camera_sensor.h:115
CameraSensorFactory(const char *name, int priority)
Construct a camera sensor factory.
Definition camera_sensor.h:117
A camera sensor based on V4L2 subdevices.
Definition camera_sensor.h:40
virtual V4L2Subdevice::Stream imageStream() const
Retrieve the image source stream.
Definition camera_sensor.cpp:212
virtual std::vector< Size > sizes(unsigned int mbusCode) const =0
Retrieve the supported frame sizes for a media bus code.
Definition camera_sensor.cpp:600
virtual int tryFormat(V4L2SubdeviceFormat *format) const =0
Try the sensor output format.
Definition camera_sensor.cpp:832
virtual const ControlInfoMap & controls() const =0
Retrieve the supported V4L2 controls and their information.
Definition camera_sensor.cpp:933
virtual ControlList getControls(Span< const uint32_t > ids)=0
Read V4L2 controls from the sensor.
Definition camera_sensor.cpp:956
virtual int applyConfiguration(const SensorConfiguration &config, Transform transform=Transform::Identity, V4L2SubdeviceFormat *sensorFormat=nullptr)=0
Apply a sensor configuration to the camera sensor.
Definition camera_sensor.cpp:853
virtual const std::vector< unsigned int > & mbusCodes() const =0
Retrieve the media bus codes supported by the camera sensor.
virtual const ControlList & properties() const =0
Retrieve the camera sensor properties.
virtual ~CameraSensor()
Destroy a CameraSensor.
Definition camera_sensor.cpp:68
virtual const MediaEntity * entity() const =0
Retrieve the sensor media entity.
virtual BayerFormat::Order bayerOrder(Transform t) const =0
Compute the Bayer order that results from the given Transform.
virtual V4L2SubdeviceFormat getFormat(Span< const unsigned int > mbusCodes, const Size &size, const Size maxSize=Size()) const =0
Retrieve the best sensor format for a desired output.
Definition camera_sensor.cpp:729
virtual CameraLens * focusLens()=0
Retrieve the focus lens controller.
virtual Orientation mountingOrientation() const =0
Fetch the mounting orientation of the sensor.
virtual int setTestPatternMode(controls::draft::TestPatternModeEnum mode)=0
Set the test pattern mode for the camera sensor.
Definition camera_sensor.cpp:651
virtual std::optional< V4L2Subdevice::Stream > embeddedDataStream() const
Retrieve the embedded data source stream.
Definition camera_sensor.cpp:227
virtual Transform computeTransform(Orientation *orientation) const =0
Compute the Transform that gives the requested orientation.
Definition camera_sensor.cpp:1140
virtual V4L2Subdevice * device()=0
Retrieve the camera sensor device.
virtual int setEmbeddedDataEnabled(bool enable)
Enable or disable the embedded data stream.
Definition camera_sensor.cpp:264
virtual Size resolution() const =0
Retrieve the camera sensor resolution.
Definition camera_sensor.cpp:630
virtual int setControls(ControlList *ctrls)=0
Write V4L2 controls to the sensor.
Definition camera_sensor.cpp:986
virtual int setFormat(V4L2SubdeviceFormat *format, Transform transform=Transform::Identity)=0
Set the sensor output format.
Definition camera_sensor.cpp:796
virtual const std::string & id() const =0
Retrieve the sensor ID.
virtual int sensorInfo(IPACameraSensorInfo *info) const =0
Assemble and return the camera sensor info.
Definition camera_sensor.cpp:1022
virtual const std::string & model() const =0
Retrieve the sensor model name.
virtual const CameraSensorProperties::SensorDelays & sensorDelays()=0
Fetch the sensor delay values.
virtual const std::vector< controls::draft::TestPatternModeEnum > & testPatternModes() const =0
Retrieve all the supported test pattern modes of the camera sensor The test pattern mode values corre...
virtual V4L2SubdeviceFormat embeddedDataFormat() const
Retrieve the format on the embedded data stream.
Definition camera_sensor.cpp:245
A map of ControlId to ControlInfo.
Definition controls.h:365
Associate a list of ControlId with their values for an object.
Definition controls.h:409
Camera sensor configuration.
Definition camera.h:36
Describe a two-dimensional size.
Definition geometry.h:51
A V4L2 subdevice as exposed by the Linux kernel.
Definition v4l2_subdevice.h:76
Camera controls identifiers.
Framework to manage controls related to an object.
Data structures related to geometric objects.
TestPatternModeEnum
Supported TestPatternMode values.
Definition control_ids.h:406
Top-level libcamera namespace.
Definition backtrace.h:17
Transform
Enum to represent a 2D plane transform.
Definition transform.h:14
Orientation
The image orientation in a memory buffer.
Definition orientation.h:14
Image orientation definition.
Sensor control application delay values.
Definition camera_sensor_properties.h:20
Report the image sensor characteristics.
Definition core_ipa_interface.h:31
V4L2 subdevice stream.
Definition v4l2_subdevice.h:85