32class SensorConfiguration;
36struct IPACameraSensorInfo;
43 virtual const std::string &
model()
const = 0;
44 virtual const std::string &
id()
const = 0;
51 virtual const std::vector<unsigned int> &
mbusCodes()
const = 0;
52 virtual std::vector<Size>
sizes(
unsigned int mbusCode)
const = 0;
57 const Size &size,
const Size maxSize =
Size())
const = 0;
80 virtual const std::vector<controls::draft::TestPatternModeEnum> &
94 const std::string &
name()
const {
return name_; }
100 static std::vector<CameraSensorFactoryBase *> &factories();
104 virtual std::variant<std::unique_ptr<CameraSensor>,
int>
111template<
typename _CameraSensor>
121 std::variant<std::unique_ptr<CameraSensor>,
int>
124 return _CameraSensor::match(entity);
128#define REGISTER_CAMERA_SENSOR(sensor, priority) \
129static 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:87
const std::string & name() const
Retrieve the camera sensor factory name.
Definition camera_sensor.h:94
static std::unique_ptr< CameraSensor > create(MediaEntity *entity)
Create an instance of the CameraSensor corresponding to a media entity.
Definition camera_sensor.cpp:459
int priority() const
Retrieve the priority value for the factory.
Definition camera_sensor.h:95
Registration of CameraSensorFactory classes and creation of instances.
Definition camera_sensor.h:113
CameraSensorFactory(const char *name, int priority)
Construct a camera sensor factory.
Definition camera_sensor.h:115
A abstract camera sensor.
Definition camera_sensor.h:39
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.
virtual int tryFormat(V4L2SubdeviceFormat *format) const =0
Try the sensor output format.
virtual const ControlInfoMap & controls() const =0
Retrieve the supported V4L2 controls and their information.
virtual V4L2SubdeviceFormat getFormat(const std::vector< unsigned int > &mbusCodes, const Size &size, const Size maxSize=Size()) const =0
Retrieve the best sensor format for a desired output.
virtual int applyConfiguration(const SensorConfiguration &config, Transform transform=Transform::Identity, V4L2SubdeviceFormat *sensorFormat=nullptr)=0
Apply a sensor configuration to the camera sensor.
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.
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 CameraLens * focusLens()=0
Retrieve the focus lens controller.
virtual int setTestPatternMode(controls::draft::TestPatternModeEnum mode)=0
Set the test pattern mode for the camera sensor.
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.
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.
virtual ControlList getControls(const std::vector< uint32_t > &ids)=0
Read V4L2 controls from the sensor.
virtual int setControls(ControlList *ctrls)=0
Write V4L2 controls to the sensor.
virtual int setFormat(V4L2SubdeviceFormat *format, Transform transform=Transform::Identity)=0
Set the sensor output format.
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.
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:367
Associate a list of ControlId with their values for an object.
Definition controls.h:411
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:75
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:326
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:29
V4L2 subdevice stream.
Definition v4l2_subdevice.h:84