10#include <initializer_list>
68 using iterator = std::vector<StreamConfiguration>::iterator;
93 std::size_t
size()
const;
113class Camera final :
public Object,
public std::enable_shared_from_this<Camera>,
119 static std::shared_ptr<Camera>
create(std::unique_ptr<Private> d,
120 const std::string &
id,
121 const std::set<Stream *> &
streams);
123 const std::string &
id()
const;
135 const std::set<Stream *> &
streams()
const;
137 std::unique_ptr<CameraConfiguration>
140 std::unique_ptr<CameraConfiguration>
157 Camera(std::unique_ptr<Private> d,
const std::string &
id,
158 const std::set<Stream *> &
streams);
163 void requestComplete(
Request *request);
166 int exportFrameBuffers(
Stream *stream,
167 std::vector<std::unique_ptr<FrameBuffer>> *buffers);
Utilities to help constructing class interfaces.
#define LIBCAMERA_DECLARE_PRIVATE()
Declare private data for a public class.
Definition class.h:56
#define LIBCAMERA_DISABLE_COPY(klass)
Disable copy construction and assignment of the klass.
Definition class.h:27
Hold configuration for streams of the camera.
Definition camera.h:60
std::vector< StreamConfiguration > config_
The vector of stream configurations.
Definition camera.h:110
Status validateColorSpaces(ColorSpaceFlags flags=ColorSpaceFlag::None)
Check the color spaces requested for each stream.
Definition camera.cpp:495
ColorSpaceFlag
Specify the behaviour of validateColorSpaces.
Definition camera.h:101
@ None
No extra validation of color spaces is required.
Definition camera.h:102
@ StreamsShareColorSpace
Non-raw output streams must share the same color space.
Definition camera.h:103
Flags< ColorSpaceFlag > ColorSpaceFlags
A bitwise combination of ColorSpaceFlag values.
Definition camera.h:106
StreamConfiguration & at(unsigned int index)
Retrieve a reference to a stream configuration.
Definition camera.cpp:357
Status
Validity of a camera configuration.
Definition camera.h:62
@ Invalid
Definition camera.h:65
@ Adjusted
Definition camera.h:64
@ Valid
Definition camera.h:63
const StreamConfiguration & operator[](unsigned int index) const
Retrieve a const reference to a stream configuration.
Definition camera.h:82
bool empty() const
Check if the camera configuration is empty.
Definition camera.cpp:446
CameraConfiguration()
Create an empty camera configuration.
Definition camera.cpp:302
std::size_t size() const
Retrieve the number of stream configurations.
Definition camera.cpp:455
Orientation orientation
The desired orientation of the images produced by the camera.
Definition camera.h:96
std::vector< StreamConfiguration >::iterator iterator
Iterator for the stream configurations in the camera configuration.
Definition camera.h:68
void addConfiguration(const StreamConfiguration &cfg)
Add a stream configuration to the camera configuration.
Definition camera.cpp:315
iterator begin()
Retrieve an iterator to the first stream configuration in the sequence.
Definition camera.cpp:406
iterator end()
Retrieve an iterator pointing to the past-the-end stream configuration in the sequence.
Definition camera.cpp:426
virtual Status validate()=0
Validate and possibly adjust the camera configuration.
StreamConfiguration & operator[](unsigned int index)
Retrieve a reference to a stream configuration.
Definition camera.h:78
std::optional< SensorConfiguration > sensorConfig
The camera sensor configuration.
Definition camera.h:95
std::vector< StreamConfiguration >::const_iterator const_iterator
Const iterator for the stream configuration in the camera configuration.
Definition camera.h:69
Camera device.
Definition camera.h:115
const std::set< Stream * > & streams() const
Retrieve all the camera's stream information.
Definition camera.cpp:1089
const ControlInfoMap & controls() const
Retrieve the list of controls supported by the camera.
Definition camera.cpp:1060
const std::string & id() const
Retrieve the ID of the camera.
Definition camera.cpp:889
std::unique_ptr< CameraConfiguration > generateConfiguration(Span< const StreamRole > roles={})
Generate a default camera configuration according to stream roles.
Definition camera.cpp:1109
static std::shared_ptr< Camera > create(std::unique_ptr< Private > d, const std::string &id, const std::set< Stream * > &streams)
Create a camera instance.
Definition camera.cpp:848
int configure(CameraConfiguration *config)
Configure the camera prior to capture.
Definition camera.cpp:1177
int stop()
Stop capture from camera.
Definition camera.cpp:1389
int acquire()
Acquire the camera device for exclusive access.
Definition camera.cpp:994
int release()
Release exclusive access to the camera device.
Definition camera.cpp:1032
int start(const ControlList *controls=nullptr)
Start capture from camera.
Definition camera.cpp:1352
std::unique_ptr< Request > createRequest(uint64_t cookie=0)
Create a request object for the camera.
Definition camera.cpp:1249
Signal< Request *, FrameBuffer * > bufferCompleted
Signal emitted when a buffer for a request queued to the camera has completed.
Definition camera.h:125
std::unique_ptr< CameraConfiguration > generateConfiguration(std::initializer_list< StreamRole > roles)
Definition camera.h:141
int queueRequest(Request *request)
Queue a request to the camera.
Definition camera.cpp:1289
Signal disconnected
Signal emitted when the camera is disconnected from the system.
Definition camera.h:127
const ControlList & properties() const
Retrieve the list of properties of the camera.
Definition camera.cpp:1073
Signal< Request * > requestCompleted
Signal emitted when a request queued to the camera has completed.
Definition camera.h:126
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
Extensible(std::unique_ptr< Private > d)
Construct an instance of an Extensible class.
Definition class.cpp:154
Type-safe container for enum-based bitfields.
Definition flags.h:16
FrameBuffer allocator for applications.
Definition framebuffer_allocator.h:23
Frame buffer data and its associated dynamic metadata.
Definition framebuffer.h:49
Object(Object *parent=nullptr)
Construct an Object instance.
Definition object.cpp:69
Create and manage cameras based on a set of media devices.
Definition pipeline_handler.h:35
Describe a rectangle's position and dimensions.
Definition geometry.h:243
A frame capture request.
Definition request.h:30
Camera sensor configuration.
Definition camera.h:36
unsigned int bitDepth
The sensor image format bit depth.
Definition camera.h:38
struct libcamera::SensorConfiguration::@345224272135250135276377350006277362174110056061 skipping
The sensor skipping configuration.
unsigned int yEvenInc
Vertical increment for even columns. Default to 1.
Definition camera.h:51
struct libcamera::SensorConfiguration::@246152371134173154271257342001112340175006073137 binning
Sensor binning configuration.
bool isValid() const
Check if the sensor configuration is valid.
Definition camera.cpp:243
unsigned int binX
Horizontal binning factor.
Definition camera.h:43
Rectangle analogCrop
The analog crop rectangle.
Definition camera.h:40
unsigned int binY
Vertical binning factor.
Definition camera.h:44
unsigned int yOddInc
Vertical increment for odd columns. Default to 1.
Definition camera.h:50
unsigned int xEvenInc
Horizontal increment for even rows. Default to 1.
Definition camera.h:49
unsigned int xOddInc
Horizontal increment for odd rows. Default to 1.
Definition camera.h:48
Size outputSize
The frame output (visible) size.
Definition camera.h:54
Generic signal and slot communication mechanism.
Definition signal.h:39
Describe a two-dimensional size.
Definition geometry.h:53
Video stream for a camera.
Definition stream.h:76
Framework to manage controls related to an object.
Data structures related to geometric objects.
Namespace for libcamera controls.
Definition control_ids.h:21
Top-level libcamera namespace.
Definition backtrace.h:17
Orientation
The image orientation in a memory buffer.
Definition orientation.h:14
Base object to support automatic signal disconnection.
Image orientation definition.
Describes a frame capture request to be processed by a camera.
Signal & slot implementation.
Video stream for a Camera.
Configuration parameters for a stream.
Definition stream.h:40