Loading...
Searching...
No Matches
libcamera Namespace Reference

Top-level libcamera namespace. More...

## Namespaces

namespace | ipa
| The IPA (Image Processing Algorithm) namespace.
namespace | controls
| Namespace for libcamera controls.
namespace | properties
| Namespace for libcamera properties.

## Classes

class | Backtrace
| Representation of a call stack backtrace. More...
class | BoundMethodPackBase
class | BoundMethodPack
class | BoundMethodPack< void, Args... >
class | BoundMethodBase
class | BoundMethodArgs
class | BoundMethodFunctor
class | BoundMethodMember
class | BoundMethodStatic
class | Extensible
| Base class to manage private data through a d-pointer. More...
class | EventDispatcher
| Interface to manage the libcamera events and timers. More...
class | EventDispatcherPoll
| A poll-based event dispatcher. More...
class | EventNotifier
| Notify of activity on a file descriptor. More...
class | File
| Interface for I/O operations on files. More...
class | Flags
| Type-safe container for enum-based bitfields. More...
class | LogCategory
| A category of log message. More...
class | LogMessage
| Internal log message representation. More...
class | Loggable
| Base class to support log message extensions. More...
class | MemFd
| Helper class to create anonymous files. More...
class | Message
| A message that can be posted to a Thread. More...
class | InvokeMessage
| A message carrying a method invocation across threads. More...
class | Mutex
| std::mutex wrapper with clang thread safety annotation More...
class | MutexLocker
| std::unique_lock wrapper with clang thread safety annotation More...
class | ConditionVariable
| std::condition_variable wrapper integrating with MutexLocker More...
class | Signal
| Generic signal and slot communication mechanism. More...
class | Object
| Base object to support automatic signal disconnection. More...
class | Semaphore
| General-purpose counting semaphore. More...
class | SharedFD
| RAII-style wrapper for file descriptors. More...
class | SignalBase
class | Thread
| A thread of execution. More...
class | Timer
| Single-shot timer interface. More...
class | UniqueFD
| unique_ptr-like wrapper for a file descriptor More...
class | SensorConfiguration
| Camera sensor configuration. More...
class | CameraConfiguration
| Hold configuration for streams of the camera. More...
class | Camera
| Camera device. More...
class | CameraManager
| Provide access and manage all cameras in the system. More...
class | ColorSpace
| Class to describe a color space. More...
class | ControlValue
| Abstract type representing the value of a control. More...
class | ControlId
| Control static metadata. More...
class | Control
| Describe a control and its intrinsic properties. More...
class | ControlInfo
| Describe the limits of valid values for a Control. More...
class | ControlInfoMap
| A map of ControlId to ControlInfo. More...
class | ControlList
| Associate a list of ControlId with their values for an object. More...
class | Fence
| Synchronization primitive to manage resources. More...
struct | FrameMetadata
| Metadata related to a captured frame. More...
class | FrameBuffer
| Frame buffer data and its associated dynamic metadata. More...
class | FrameBufferAllocator
| FrameBuffer allocator for applications. More...
class | Point
| Describe a point in two-dimensional space. More...
class | Size
| Describe a two-dimensional size. More...
class | SizeRange
| Describe a range of sizes. More...
class | Rectangle
| Describe a rectangle's position and dimensions. More...
class | BayerFormat
| Class to represent a raw image Bayer format. More...
class | ByteStreamBuffer
| Wrap a memory buffer and provide sequential data read and write. More...
class | CameraControlValidator
| A control validator for Camera instances. More...
class | CameraLens
| A camera lens based on V4L2 subdevices. More...
class | CameraSensor
| A abstract camera sensor. More...
class | CameraSensorFactoryBase
| Base class for camera sensor factories. More...
class | CameraSensorFactory
| Registration of CameraSensorFactory classes and creation of instances. More...
struct | CameraSensorProperties
| Database of camera sensor properties. More...
class | ClockRecovery
| Recover an output clock from an input clock. More...
class | ControlSerializer
| Serializer and deserializer for control-related classes. More...
class | ControlValidator
| Interface for the control validator. More...
class | Converter
| Abstract Base Class for converter. More...
class | ConverterFactoryBase
| Base class for converter factories. More...
class | ConverterFactory
| Registration of ConverterFactory classes and creation of instances. More...
class | ConverterDW100Module
| A converter module for the dw100 dewarper. More...
class | Dw100VertexMap
| Helper class to compute dw100 vertex maps. More...
class | V4L2M2MConverter
| The V4L2 M2M converter implements the converter interface based on V4L2 M2M device. More...
class | DebugMetadata
| Helper to record metadata for later use. More...
class | DelayedControls
| Helper to deal with controls that take effect with a delay. More...
class | DeviceMatch
| Description of a media device search pattern. More...
class | DeviceEnumerator
| Enumerate, store and search media devices. More...
class | DmaBufAllocator
| Helper class for dma-buf allocations. More...
class | DmaSyncer
| Helper class for dma-buf's synchronization. More...
class | eGLImage
| Helper class for managing EGL image resources. More...
class | eGL
| Helper class for managing OpenGL ES operations. More...
class | PixelFormatInfo
| Information about pixel formats. More...
class | GlobalConfiguration
| Support for global libcamera configuration. More...
class | IPADataSerializer
| IPA Data Serializer. More...
class | IPAManager
| Manager for IPA modules. More...
class | IPAModule
| Wrapper around IPA module shared object. More...
class | IPAProxy
| IPA Proxy. More...
class | IPCMessage
| IPC message to be passed through IPC message pipe. More...
class | IPCPipe
| IPC message pipe for IPA isolation. More...
class | IPCUnixSocket
| IPC mechanism based on Unix sockets. More...
class | MappedBuffer
| Provide an interface to support managing memory mapped buffers. More...
class | MappedFrameBuffer
| Map a FrameBuffer using the MappedBuffer interface. More...
class | Matrix
| Matrix class. More...
class | MediaDevice
| The MediaDevice represents a Media Controller device with its full graph of connected objects. More...
class | MediaObject
| Base class for all media objects. More...
class | MediaLink
| The MediaLink represents a link between two pads in the media graph. More...
class | MediaPad
| The MediaPad represents a pad of an entity in the media graph. More...
class | MediaEntity
| The MediaEntity represents an entity in the media graph. More...
class | MediaPipeline
| The MediaPipeline represents a set of entities that together form a data path for stream data. More...
class | PipelineHandler
| Create and manage cameras based on a set of media devices. More...
class | PipelineHandlerFactoryBase
| Base class for pipeline handler factories. More...
class | PipelineHandlerFactory
| Registration of PipelineHandler classes and creation of instances. More...
class | Process
| Process object. More...
class | PubKey
| Public key wrapper for signature verification. More...
class | SharedMem
| Helper class to allocate and manage memory shareable between processes. More...
class | SharedMemObject
| Helper class to allocate an object in shareable memory. More...
class | Benchmark
| Simple builtin benchmark. More...
struct | DebayerParams
| Struct to hold the debayer parameters. More...
class | SoftwareIsp
| Class for the Software ISP. More...
struct | SwIspStats
| Struct that holds the statistics for the Software ISP. More...
class | SwStatsCpu
| Class for gathering statistics on the CPU. More...
class | V4L2Device
| Base class for V4L2VideoDevice and V4L2Subdevice. More...
class | V4L2PixelFormat
| V4L2 pixel format FourCC wrapper. More...
class | V4L2Request
| V4L2Request object and API. More...
class | MediaBusFormatInfo
| Information about media bus formats. More...
struct | V4L2SubdeviceCapability
| struct v4l2_subdev_capability object wrapper and helpers More...
struct | V4L2SubdeviceFormat
| The V4L2 sub-device image format and sizes. More...
class | V4L2Subdevice
| A V4L2 subdevice as exposed by the Linux kernel. More...
struct | V4L2Capability
| struct v4l2_capability object wrapper and helpers More...
class | V4L2BufferCache
| Hot cache of associations between V4L2 buffer indexes and FrameBuffer. More...
class | V4L2DeviceFormat
| The V4L2 video device image format and sizes. More...
class | V4L2VideoDevice
| V4L2VideoDevice object and API. More...
class | V4L2M2MDevice
| Memory-to-Memory video device. More...
class | Vector
| Vector class. More...
class | YamlObject
| A class representing the tree structure of the YAML content. More...
class | YamlParser
| A helper class for parsing a YAML file. More...
struct | ipa_controls_header
| Serialized control packet header. More...
struct | ipa_control_value_entry
| Description of a serialized ControlValue entry. More...
struct | ipa_control_list_entry
| Description of a serialized ControlList entry. More...
struct | ipa_control_info_entry
| Description of a serialized ControlInfo entry. More...
class | IPAInterface
| C++ Interface for IPA implementation. More...
struct | IPAModuleInfo
| Information of an IPA module. More...
class | PixelFormat
| libcamera image pixel format More...
class | Request
| A frame capture request. More...
class | StreamFormats
| Hold information about supported stream formats. More...
struct | StreamConfiguration
| Configuration parameters for a stream. More...
class | Stream
| Video stream for a camera. More...
class | LogOutput
| Log output. More...
class | Logger
| Message logger. More...
class | MessageQueue
| A queue of posted messages. More...
class | ThreadData
| Thread-local internal data. More...
class | ThreadMain
| Thread wrapper for the main thread. More...
class | Debayer
| Base debayering class. More...
class | DebayerCpu
| Class for debayering on the CPU. More...
class | DebayerEGL
| Class for debayering using an EGL Shader. More...
struct | IPACameraSensorInfo
| Report the image sensor characteristics. More...
struct | IPABuffer
| Buffer information for the IPA interface. More...
struct | IPASettings
| IPA interface initialization settings. More...
struct | IPAStream
| Stream configuration for the IPA interface. More...

## Typedefs

using | ControlIdMap = std::unordered_map<unsigned int, const ControlId *>
| A map of numerical control ID to ControlId.
template<typename T>
using | RGB = Vector<T, 3>
| A Vector of 3 elements representing an RGB pixel value.

## Enumerations

enum | ConnectionType { ConnectionTypeAuto , ConnectionTypeDirect , ConnectionTypeQueued , ConnectionTypeBlocking }
| Connection type for asynchronous communication. More...
enum | LogSeverity { LogInvalid = -1 , LogDebug = 0 , LogInfo , LogWarning , LogError , LogFatal }
enum | ControlType { ControlTypeNone , ControlTypeBool , ControlTypeByte , ControlTypeUnsigned16 , ControlTypeUnsigned32 , ControlTypeInteger32 , ControlTypeInteger64 , ControlTypeFloat , ControlTypeString , ControlTypeRectangle , ControlTypeSize , ControlTypePoint }
| Define the data type of a Control. More...
enum | ipa_controls_id_map_type { IPA_CONTROL_ID_MAP_CONTROLS , IPA_CONTROL_ID_MAP_PROPERTIES , IPA_CONTROL_ID_MAP_V4L2 }
| Enumerates the different control id map types. More...
enum | LoggingTarget { LoggingTargetNone , LoggingTargetSyslog , LoggingTargetFile , LoggingTargetStream }
| Log destination type. More...
enum class | Orientation { Rotate0 = 1 , Rotate0Mirror , Rotate180 , Rotate180Mirror , Rotate90Mirror , Rotate270 , Rotate270Mirror , Rotate90 }
| The image orientation in a memory buffer. More...
enum class | StreamRole { Raw , StillCapture , VideoRecording , Viewfinder }
| Identify the role a stream is intended to play. More...
enum class | Transform : int { Identity = 0 , Rot0 = Identity , HFlip = 1 , VFlip = 2 , HVFlip = HFlip | VFlip , Rot180 = HVFlip , Transpose = 4 , Rot270 = HFlip | Transpose , Rot90 = VFlip | Transpose , Rot180Transpose = HFlip | VFlip | Transpose }
| Enum to represent a 2D plane transform. More...

## Functions

LogMessage | _log (const LogCategory &category, LogSeverity severity, const char *fileName, unsigned int line)
| Create a temporary LogMessage object to log a message.
bool | operator== (const ColorSpace &lhs, const ColorSpace &rhs)
| Compare color spaces for equality.
bool | operator== (const Point &lhs, const Point &rhs)
| Compare points for equality.
std::ostream & | operator<< (std::ostream &out, const Point &p)
| Insert a text representation of a Point into an output stream.
bool | operator== (const Size &lhs, const Size &rhs)
| Compare sizes for equality.
bool | operator< (const Size &lhs, const Size &rhs)
| Compare sizes for smaller than order.
std::ostream & | operator<< (std::ostream &out, const Size &s)
| Insert a text representation of a Size into an output stream.
bool | operator== (const SizeRange &lhs, const SizeRange &rhs)
| Compare size ranges for equality.
std::ostream & | operator<< (std::ostream &out, const SizeRange &sr)
| Insert a text representation of a SizeRange into an output stream.
bool | operator== (const Rectangle &lhs, const Rectangle &rhs)
| Compare rectangles for equality.
std::ostream & | operator<< (std::ostream &out, const Rectangle &r)
| Insert a text representation of a Rectangle into an output stream.
bool | operator== (const BayerFormat &lhs, const BayerFormat &rhs)
| Compare two BayerFormats for equality.
std::ostream & | operator<< (std::ostream &out, const BayerFormat &f)
| Insert a text representation of a BayerFormats into an output stream.
template<typename T, typename U, unsigned int Rows, unsigned int Cols>
Matrix< U, Rows, Cols > | operator* (T d, const Matrix< U, Rows, Cols > &m)
| Multiply the matrix by a scalar.
template<typename T, typename U, unsigned int Rows, unsigned int Cols>
Matrix< U, Rows, Cols > | operator* (const Matrix< U, Rows, Cols > &m, T d)
| Multiply the matrix by a scalar.
template<typename T1, unsigned int R1, unsigned int C1, typename T2, unsigned int R2, unsigned int C2>
constexpr Matrix< std::common_type_t< T1, T2 >, R1, C2 > | operator* (const Matrix< T1, R1, C1 > &m1, const Matrix< T2, R2, C2 > &m2)
| Matrix multiplication.
template<typename T, unsigned int Rows, unsigned int Cols>
constexpr Matrix< T, Rows, Cols > | operator+ (const Matrix< T, Rows, Cols > &m1, const Matrix< T, Rows, Cols > &m2)
| Matrix addition.
std::ostream & | operator<< (std::ostream &out, const MediaLink &link)
| Insert a text representation of a Link into an output stream.
std::ostream & | operator<< (std::ostream &out, const MediaPad &pad)
| Insert a text representation of a MediaPad into an output stream.
std::ostream & | operator<< (std::ostream &out, const V4L2PixelFormat &f)
| Insert a text representation of a V4L2PixelFormat into an output stream.
std::ostream & | operator<< (std::ostream &out, const V4L2SubdeviceFormat &f)
| Insert a text representation of a V4L2SubdeviceFormat into an output stream.
bool | operator== (const V4L2Subdevice::Stream &lhs, const V4L2Subdevice::Stream &rhs)
| Compare streams for equality.
std::ostream & | operator<< (std::ostream &out, const V4L2Subdevice::Stream &stream)
| Insert a text representation of a V4L2Subdevice::Stream into an output stream.
std::ostream & | operator<< (std::ostream &out, const V4L2Subdevice::Route &route)
| Insert a text representation of a V4L2Subdevice::Route into an output stream.
std::ostream & | operator<< (std::ostream &out, const V4L2Subdevice::Routing &routing)
| Insert a text representation of a V4L2Subdevice::Routing into an output stream.
std::ostream & | operator<< (std::ostream &out, const V4L2DeviceFormat &f)
| Insert a text representation of a V4L2DeviceFormat into an output stream.
template<typename T, typename U, unsigned int Rows, unsigned int Cols>
Vector< std::common_type_t< T, U >, Rows > | operator* (const Matrix< T, Rows, Cols > &m, const Vector< U, Cols > &v)
| Multiply a matrix by a vector.
template<typename T, unsigned int Rows>
bool | operator== (const Vector< T, Rows > &lhs, const Vector< T, Rows > &rhs)
| Compare vectors for equality.
template<typename T, unsigned int Rows>
bool | operator!= (const Vector< T, Rows > &lhs, const Vector< T, Rows > &rhs)
| Compare vectors for inequality.
libcamera::IPAInterface * | ipaCreate ()
| Create an instance of the IPA interface.
int | logSetFile (const char *path, bool color)
| Direct logging to a file.
int | logSetStream (std::ostream *stream, bool color)
| Direct logging to a stream.
int | logSetTarget (LoggingTarget target)
| Set the logging target.
void | logSetLevel (const char *category, const char *level)
| Set the log level.
Orientation | orientationFromRotation (int angle, bool *success)
| Return the orientation representing a rotation of the given angle clockwise.
std::ostream & | operator<< (std::ostream &out, const Orientation &orientation)
| Prints human-friendly names for Orientation items.
std::ostream & | operator<< (std::ostream &out, const PixelFormat &f)
| Insert a text representation of a PixelFormat into an output stream.
std::ostream & | operator<< (std::ostream &out, const Request &r)
| Insert a text representation of a Request into an output stream.
std::ostream & | operator<< (std::ostream &out, const StreamConfiguration &cfg)
| Insert a text representation of a StreamConfiguration into an output stream.
std::ostream & | operator<< (std::ostream &out, StreamRole role)
| Insert a text representation of a StreamRole into an output stream.
constexpr Transform | operator& (Transform t0, Transform t1)
| Apply bitwise AND operator between the bits in the two transforms.
constexpr Transform | operator| (Transform t0, Transform t1)
| Apply bitwise OR operator between the bits in the two transforms.
constexpr Transform | operator^ (Transform t0, Transform t1)
| Apply bitwise XOR operator between the bits in the two transforms.
constexpr Transform & | operator&= (Transform &t0, Transform t1)
| Apply bitwise AND-assignment operator between the bits in the two transforms.
constexpr Transform & | operator|= (Transform &t0, Transform t1)
| Apply bitwise OR-assignment operator between the bits in the two transforms.
constexpr Transform & | operator^= (Transform &t0, Transform t1)
| Apply bitwise XOR-assignment operator between the bits in the two transforms.
Transform | operator* (Transform t0, Transform t1)
| Compose two transforms by applying t0 first then t1.
Transform | operator- (Transform t)
| Invert a transform.
constexpr bool | operator! (Transform t)
| Return true if the transform is the Identity, otherwise false.
constexpr Transform | operator~ (Transform t)
| Return the transform with all the bits inverted individually.
Transform | transformFromRotation (int angle, bool *success)
| Return the transform representing a rotation of the given angle clockwise.
Transform | operator/ (const Orientation &o1, const Orientation &o2)
| Return the Transform that applied to o2 gives o1.
Orientation | operator* (const Orientation &o, const Transform &t)
| Apply the Transform t on the orientation o.
const char * | transformToString (Transform t)
| Return a character string describing the transform.

## Variables

const struct IPAModuleInfo | ipaModuleInfo
| External IPA module interface.

## Detailed Description

Top-level libcamera namespace.

## Typedef Documentation

## ControlIdMap

using libcamera::ControlIdMap = std::unordered_map<unsigned int, const ControlId *>

A map of numerical control ID to ControlId.

The map is used by ControlList instances to access controls by numerical IDs. A global map of all libcamera controls is provided by controls::controls.

## Enumeration Type Documentation

## ConnectionType

enum libcamera::ConnectionType

Connection type for asynchronous communication.

This enumeration describes the possible types of asynchronous communication between a sender and a receiver. It applies to Signal::emit() and Object::invokeMethod().

Enumerator
ConnectionTypeAuto | If the sender and the receiver live in the same thread, ConnectionTypeDirect is used. Otherwise ConnectionTypeQueued is used.
ConnectionTypeDirect | The receiver is invoked immediately and synchronously in the sender's thread.
ConnectionTypeQueued | The receiver is invoked asynchronously. Invoke the receiver asynchronously in its thread when control returns to the thread's event loop. The sender proceeds without waiting for the invocation to complete.
ConnectionTypeBlocking | The receiver is invoked synchronously. If the sender and the receiver live in the same thread, this is equivalent to ConnectionTypeDirect. Otherwise, the receiver is invoked asynchronously in its thread when control returns to the thread's event loop. The sender blocks until the receiver signals the completion of the invocation.

## ControlType

enum libcamera::ControlType

Define the data type of a Control.

Enumerator
ControlTypeNone | Invalid type, for empty values
ControlTypeBool | The control stores a boolean value
ControlTypeByte | The control stores a byte value as an unsigned 8-bit integer
ControlTypeUnsigned16 | The control stores an unsigned 16-bit integer value
ControlTypeUnsigned32 | The control stores an unsigned 32-bit integer value
ControlTypeInteger32 | The control stores a signed 32-bit integer value
ControlTypeInteger64 | The control stores a signed 64-bit integer value
ControlTypeFloat | The control stores a 32-bit floating point value
ControlTypeString | The control stores a string value as an array of char

## ipa_controls_id_map_type

enum libcamera::ipa_controls_id_map_type

Enumerates the different control id map types.

Each ControlInfoMap and ControlList refers to a control id map that associates the ControlId references to a numerical identifier. During the serialization procedure the raw pointers to the ControlId instances cannot be transported on the wire, hence their numerical id is used to identify them in the serialized data buffer. At deserialization time it is required to associate back to the numerical id the ControlId instance it represents. This enumeration describes which ControlIdMap should be used to perform such operation.

Enumerator
IPA_CONTROL_ID_MAP_CONTROLS | The numerical control identifier are resolved to a ControlId * using the global controls::controls id map.
IPA_CONTROL_ID_MAP_PROPERTIES | The numerical control identifier are resolved to a ControlId * using the global properties::properties id map.
IPA_CONTROL_ID_MAP_V4L2 | ControlId for V4L2 defined controls are created by the video device that enumerates them, and are not available across the IPC boundaries. The deserializer shall create new ControlId instances for them as well as store them in a dedicated ControlIdMap. Only lookup by numerical id can be performed on de-serialized ControlInfoMap that represents V4L2 controls.

## LoggingTarget

enum libcamera::LoggingTarget

Log destination type.

Enumerator

LoggingTargetNone

No logging destination.

See also
  Logger::logSetTarget

LoggingTargetSyslog

Log to syslog.

See also
  Logger::logSetTarget

LoggingTargetFile

Log to file.

See also
  Logger::logSetFile

LoggingTargetStream

Log to stream.

See also
  Logger::logSetStream

## LogSeverity

enum libcamera::LogSeverity

Log message severity

Enumerator
LogDebug | Debug message
LogInfo | Informational message
LogWarning | Warning message, signals a potential issue
LogError | Error message, signals an unrecoverable issue
LogFatal | Fatal message, signals an unrecoverable issue and aborts execution

## Orientation

enum class libcamera::Orientation

strong

The image orientation in a memory buffer.

The Orientation enumeration describes the orientation of the images produced by the camera pipeline as they get received by the application inside memory buffers.

The image orientation expressed using the Orientation enumeration can be then inferred by applying to a naturally oriented image a multiple of a 90 degrees rotation in the clockwise direction from the origin and then by applying an optional horizontal mirroring.

The enumeration numerical values follow the ones defined by the EXIF Specification version 2.32, Tag 274 "Orientation", while the names of the enumerated values report the rotation and mirroring operations performed.

For example, Orientation::Rotate90Mirror describes the orientation obtained by rotating the image 90 degrees clockwise first and then applying a horizontal mirroring.

Enumerator
Rotate0 |
Rotate0Mirror |
Rotate180 |
Rotate180Mirror |
Rotate90Mirror |
Rotate270 |
Rotate270Mirror |
Rotate90 |

## StreamRole

enum class libcamera::StreamRole

strong

Identify the role a stream is intended to play.

The StreamRole describes how an application intends to use a stream. Roles are specified by applications and passed to cameras, that then select the most appropriate streams and their default configurations.

Enumerator
Raw | The stream is intended to capture raw frames from the sensor.
StillCapture | The stream is intended to capture high-resolution, high-quality still images with low frame rate. The captured frames may be exposed with flash.
VideoRecording | The stream is intended to capture video for the purpose of recording or streaming. The video stream may produce a high frame rate and may be enhanced with video stabilization.
Viewfinder | The stream is intended to capture video for the purpose of display on the local screen. Trade-offs between quality and usage of system resources are acceptable.

## Transform

enum class libcamera::Transform : int

strong

Enum to represent a 2D plane transform.

The Transform can take 8 distinct values, representing the usual 2D plane transforms listed below. Each of these transforms can be constructed out of 3 basic operations, namely a horizontal flip (mirror), a vertical flip, and a transposition (about the main diagonal). The transforms are encoded such that a single bit indicates the presence of each of the 3 basic operations:

- bit 0 - presence of a horizontal flip
- bit 1 - presence of a vertical flip
- bit 2 - presence of a transposition.

We regard these 3 basic operations as being applied in a specific order: first the two flip operations (actually they commute, so the order between them is unimportant) and finally any transpose operation.

Functions are provided to manipulate directly the bits within the transform encoding, but there are also higher-level functions to invert and compose transforms. Transforms are composed according to the usual mathematical convention such that the right transform is applied first, and the left transform is applied second.

Finally, we have a total of 8 distinct transformations, as follows (a couple of them have additional synonyms for convenience). We illustrate each with its nominal effect on a rectangle with vertices labelled A, B, C and D.

See also
  https://en.wikipedia.org/wiki/Examples_of_groups#dihedral_group_of_order_8

The set of 2D plane transforms is also known as the symmetry group of a square, described in the link. Note that the group can be generated by only 2 elements (the horizontal flip and a 90 degree rotation, for example), however, the encoding used here makes the presence of the vertical flip explicit.

Enumerator
Identity | Identity transform. A-B A-B Input image | | goes to output image | | C-D C-D Numeric value: 0 (no bits set).
Rot0 | Synonym for Transform::Identity (zero degree rotation).
HFlip | Horizontal flip. A-B B-A Input image | | goes to output image | | C-D D-C Numeric value: 1 (horizontal flip bit set only).
VFlip | Vertical flip. A-B C-D Input image | | goes to output image | | C-D A-B Numeric value: 2 (vertical flip bit set only).
HVFlip | Horizontal and vertical flip (identical to a 180 degree rotation). A-B D-C Input image | | goes to output image | | C-D B-A Numeric value: 3 (horizontal and vertical flip bits set).
Rot180 | Synonym for HVFlip (180 degree rotation).
Transpose | Transpose (about the main diagonal). A-B A-C Input image | | goes to output image | | C-D B-D Numeric value: 4 (transpose bit set only).
Rot270 | Rotation by 270 degrees clockwise (90 degrees anticlockwise). A-B B-D Input image | | goes to output image | | C-D A-C Numeric value: 5 (transpose and horizontal flip bits set).
Rot90 | Rotation by 90 degrees clockwise (270 degrees anticlockwise). A-B C-A Input image | | goes to output image | | C-D D-B Numeric value: 6 (transpose and vertical flip bits set).
Rot180Transpose | Rotation by 180 degrees followed by transpose (alternatively, transposition about the "opposite diagonal"). A-B D-B Input image | | goes to output image | | C-D C-A Numeric value: 7 (all bits set).

## Function Documentation

## _log()

LogMessage libcamera::_log | ( | const LogCategory & | category,
|  | LogSeverity | severity,
|  | const char * | fileName,
|  | unsigned int | line )

Create a temporary LogMessage object to log a message.

Parameters

  [in] | category | The log message category
  [in] | severity | The log message severity
  [in] | fileName | The file name where the message is logged from
  [in] | line | The line number where the message is logged from

This function is used as a backend by the LOG() macro to create a log message for locations not inheriting from the Loggable class.

Returns
  A log message

## ipaCreate()

IPAInterface * libcamera::ipaCreate | ( |  | ) |

Create an instance of the IPA interface.

This function is the entry point of the IPA module. It is called by the IPA manager to create an instance of the IPA interface for each camera. When matched against with a pipeline handler, the IPAManager will construct an IPA instance for each associated Camera.

## logSetFile()

int libcamera::logSetFile | ( | const char * | path,
|  | bool | color )

Direct logging to a file.

Parameters

  [in] | path | Full path to the log file
  [in] | color | True to output colored messages

This function directs the log output to the file identified by path. The previous log target, if any, is closed, and all new log messages will be written to the new log file.

color controls whether or not the messages will be colored with standard ANSI escape codes. This is done regardless of whether path refers to a standard file or a TTY, the caller is responsible for disabling coloring when not suitable for the log target.

If the function returns an error, the log target is not changed.

Returns
  Zero on success, or a negative error code otherwise

## logSetLevel()

void libcamera::logSetLevel | ( | const char * | category,
|  | const char * | level )

Set the log level.

Parameters

  [in] | category | Logging category
  [in] | level | Log level

This function sets the log level of category to level. level shall be one of the following strings:

- "DEBUG"
- "INFO"
- "WARN"
- "ERROR"
- "FATAL"

"*" is not a valid category for this function.

## logSetStream()

int libcamera::logSetStream | ( | std::ostream * | stream,
|  | bool | color )

Direct logging to a stream.

Parameters

  [in] | stream | Stream to send log output to
  [in] | color | True to output colored messages

This function directs the log output to stream. The previous log target, if any, is closed, and all new log messages will be written to the new log stream.

color controls whether or not the messages will be colored with standard ANSI escape codes. This is done regardless of whether stream refers to a standard file or a TTY, the caller is responsible for disabling coloring when not suitable for the log target.

If the function returns an error, the log file is not changed

Returns
  Zero on success, or a negative error code otherwise.

## logSetTarget()

int libcamera::logSetTarget | ( | LoggingTarget | target | ) |

Set the logging target.

Parameters

  [in] | target | Logging destination

This function sets the logging output to the target specified by target. The allowed values of target are LoggingTargetNone and LoggingTargetSyslog. LoggingTargetNone will send the log output to nowhere, and LoggingTargetSyslog will send the log output to syslog. The previous log target, if any, is closed, and all new log messages will be written to the new log destination.

LoggingTargetFile and LoggingTargetStream are not valid values for target. Use logSetFile() and logSetStream() instead, respectively.

If the function returns an error, the log file is not changed.

Returns
  Zero on success, or a negative error code otherwise.

## operator!()

bool libcamera::operator! | ( | Transform | t | ) |

constexpr

Return true if the transform is the Identity, otherwise false.

Parameters

  [in] | t | The transform to be tested

## operator!=()

template<typename T, unsigned int Rows>

bool libcamera::operator!= | ( | const Vector< T, Rows > & | lhs,
|  | const Vector< T, Rows > & | rhs )

Compare vectors for inequality.

Returns
  True if the two vectors are not equal, false otherwise

## operator&()

Transform libcamera::operator& | ( | Transform | t0,
|  | Transform | t1 )

constexpr

Apply bitwise AND operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator&=()

Transform & libcamera::operator&= | ( | Transform & | t0,
|  | Transform | t1 )

constexpr

Apply bitwise AND-assignment operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator*() [1/6]

template<typename T, typename U, unsigned int Rows, unsigned int Cols>

Vector< std::common_type_t< T, U >, Rows > libcamera::operator* | ( | const Matrix< T, Rows, Cols > & | m,
|  | const Vector< U, Cols > & | v )

Multiply a matrix by a vector.

Template Parameters

  T | Numerical type of the contents of the matrix
  U | Numerical type of the contents of the vector
  Rows | The number of rows in the matrix
  Cols | The number of columns in the matrix (= rows in the vector)

Parameters

  m | The matrix
  v | The vector

Returns
  Product of matrix m and vector v

## operator*() [2/6]

template<typename T1, unsigned int R1, unsigned int C1, typename T2, unsigned int R2, unsigned int C2>

Matrix< std::common_type_t< T1, T2 >, R1, C2 > libcamera::operator* | ( | const Matrix< T1, R1, C1 > & | m1,
|  | const Matrix< T2, R2, C2 > & | m2 )

constexpr

Matrix multiplication.

Template Parameters

  T1 | Type of numerical values in the first matrix
  R1 | Number of rows in the first matrix
  C1 | Number of columns in the first matrix
  T2 | Type of numerical values in the secont matrix
  R2 | Number of rows in the second matrix
  C2 | Number of columns in the second matrix

Parameters

  m1 | Multiplicand matrix
  m2 | Multiplier matrix

Returns
  Matrix product of matrices m1 and m2

## operator*() [3/6]

template<typename T, typename U, unsigned int Rows, unsigned int Cols>

Matrix< U, Rows, Cols > libcamera::operator* | ( | const Matrix< U, Rows, Cols > & | m,
|  | T | d )

Multiply the matrix by a scalar.

Template Parameters

  T | Type of the numerical scalar value
  U | Type of numerical values in the matrix
  Rows | Number of rows in the matrix
  Cols | Number of columns in the matrix

Parameters

  d | The scalar multiplier
  m | The matrix

Returns
  Product of scalar d and matrix m

## operator*() [4/6]

Orientation libcamera::operator* | ( | const Orientation & | o,
|  | const Transform & | t )

Apply the Transform t on the orientation o.

Parameters

  o | The orientation
  t | The transform to apply on o

Returns
  The Orientation resulting from applying t on o

## operator*() [5/6]

template<typename T, typename U, unsigned int Rows, unsigned int Cols>

Matrix< U, Rows, Cols > libcamera::operator* | ( | T | d,
|  | const Matrix< U, Rows, Cols > & | m )

Multiply the matrix by a scalar.

Template Parameters

  T | Type of the numerical scalar value
  U | Type of numerical values in the matrix
  Rows | Number of rows in the matrix
  Cols | Number of columns in the matrix

Parameters

  d | The scalar multiplier
  m | The matrix

Returns
  Product of scalar d and matrix m

## operator*() [6/6]

Transform libcamera::operator* | ( | Transform | t0,
|  | Transform | t1 )

Compose two transforms by applying t0 first then t1.

Parameters

  [in] | t0 | The first transform to apply
  [in] | t1 | The second transform to apply

Compose two transforms into a transform that is equivalent to first applying t0 and then applying t1. For example, HFlip * Transpose performs HFlip first and then the Transpose yielding Rot270, as shown below.

A-B B-A B-D
Input image | | -> HFLip -> | | -> Transpose -> | | = Rot270
C-D D-C A-C
libcamera::Transform::Transpose
@ Transpose
Definition transform.h:21
libcamera::Transform::Rot270
@ Rot270
Definition transform.h:22

Note that composition is generally non-commutative for Transforms, and not the same as XOR-ing the underlying bit representations.

Returns
  A Transform equivalent to applying t0 and then t1

## operator+()

template<typename T, unsigned int Rows, unsigned int Cols>

Matrix< T, Rows, Cols > libcamera::operator+ | ( | const Matrix< T, Rows, Cols > & | m1,
|  | const Matrix< T, Rows, Cols > & | m2 )

constexpr

Matrix addition.

Template Parameters

  T | Type of numerical values in the matrices
  Rows | Number of rows in the matrices
  Cols | Number of columns in the matrices

Parameters

  m1 | Summand matrix
  m2 | Summand matrix

Returns
  Matrix sum of matrices m1 and m2

## operator-()

Transform libcamera::operator- | ( | Transform | t | ) |

Invert a transform.

Parameters

  [in] | t | The transform to be inverted

That is, we return the transform such that t * (-t) and (-t) * t both yield the identity transform.

## operator/()

Transform libcamera::operator/ | ( | const Orientation & | o1,
|  | const Orientation & | o2 )

Return the Transform that applied to o2 gives o1.

Parameters

  o1 | The Orientation to obtain
  o2 | The base Orientation

This operation can be used to easily compute the Transform to apply to a base orientation o2 to get the desired orientation o1.

Returns
  A Transform that applied to o2 gives o1

## operator<()

bool libcamera::operator< | ( | const Size & | lhs,
|  | const Size & | rhs )

Compare sizes for smaller than order.

Sizes are compared on three criteria, in the following order.

- A size with smaller width and smaller height is smaller.
- A size with smaller area is smaller.
- A size with smaller width is smaller.

Returns
  True if lhs is smaller than rhs, false otherwise

## operator<<() [1/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const BayerFormat & | f )

Insert a text representation of a BayerFormats into an output stream.

Parameters

  [in] | out | The output stream
  [in] | f | The BayerFormat

Returns
  The output stream out

## operator<<() [2/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const MediaLink & | link )

Insert a text representation of a Link into an output stream.

Parameters

  [in] | out | The output stream
  [in] | link | The MediaLink

Returns
  The output stream out

## operator<<() [3/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const MediaPad & | pad )

Insert a text representation of a MediaPad into an output stream.

Parameters

  [in] | out | The output stream
  [in] | pad | The MediaPad

Returns
  The output stream out

## operator<<() [4/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const Orientation & | orientation )

Prints human-friendly names for Orientation items.

Parameters

  [in] | out | The output stream
  [in] | orientation | The Orientation item

Returns
  The output stream out

## operator<<() [5/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const PixelFormat & | f )

Insert a text representation of a PixelFormat into an output stream.

Parameters

  [in] | out | The output stream
  [in] | f | The PixelFormat

Returns
  The output stream out

## operator<<() [6/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const Point & | p )

Insert a text representation of a Point into an output stream.

Parameters

  [in] | out | The output stream
  [in] | p | The point

Returns
  The output stream out

## operator<<() [7/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const Rectangle & | r )

Insert a text representation of a Rectangle into an output stream.

Parameters

  [in] | out | The output stream
  [in] | r | The rectangle

Returns
  The output stream out

## operator<<() [8/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const Request & | r )

Insert a text representation of a Request into an output stream.

Parameters

  [in] | out | The output stream
  [in] | r | The Request

Returns
  The output stream out

## operator<<() [9/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const Size & | s )

Insert a text representation of a Size into an output stream.

Parameters

  [in] | out | The output stream
  [in] | s | The size

Returns
  The output stream out

## operator<<() [10/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const SizeRange & | sr )

Insert a text representation of a SizeRange into an output stream.

Parameters

  [in] | out | The output stream
  [in] | sr | The size range

Returns
  The output stream out

## operator<<() [11/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const StreamConfiguration & | cfg )

Insert a text representation of a StreamConfiguration into an output stream.

Parameters

  [in] | out | The output stream
  [in] | cfg | The StreamConfiguration

Returns
  The output stream out

## operator<<() [12/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2DeviceFormat & | f )

Insert a text representation of a V4L2DeviceFormat into an output stream.

Parameters

  [in] | out | The output stream
  [in] | f | The V4L2DeviceFormat

Returns
  The output stream out

## operator<<() [13/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2PixelFormat & | f )

Insert a text representation of a V4L2PixelFormat into an output stream.

Parameters

  [in] | out | The output stream
  [in] | f | The V4L2PixelFormat

Returns
  The output stream out

## operator<<() [14/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2Subdevice::Route & | route )

Insert a text representation of a V4L2Subdevice::Route into an output stream.

Parameters

  [in] | out | The output stream
  [in] | route | The V4L2Subdevice::Route

Returns
  The output stream out

## operator<<() [15/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2Subdevice::Routing & | routing )

Insert a text representation of a V4L2Subdevice::Routing into an output stream.

Parameters

  [in] | out | The output stream
  [in] | routing | The V4L2Subdevice::Routing

Returns
  The output stream out

## operator<<() [16/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2Subdevice::Stream & | stream )

Insert a text representation of a V4L2Subdevice::Stream into an output stream.

Parameters

  [in] | out | The output stream
  [in] | stream | The V4L2Subdevice::Stream

Returns
  The output stream out

## operator<<() [17/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | const V4L2SubdeviceFormat & | f )

Insert a text representation of a V4L2SubdeviceFormat into an output stream.

Parameters

  [in] | out | The output stream
  [in] | f | The V4L2SubdeviceFormat

Returns
  The output stream out

## operator<<() [18/18]

std::ostream & libcamera::operator<< | ( | std::ostream & | out,
|  | StreamRole | role )

Insert a text representation of a StreamRole into an output stream.

Parameters

  [in] | out | The output stream
  [in] | role | The StreamRole

Returns
  The output stream out

## operator==() [1/8]

bool libcamera::operator== | ( | const BayerFormat & | lhs,
|  | const BayerFormat & | rhs )

Compare two BayerFormats for equality.

Returns
  True if order, bitDepth and packing are equal, or false otherwise

## operator==() [2/8]

bool libcamera::operator== | ( | const ColorSpace & | lhs,
|  | const ColorSpace & | rhs )

Compare color spaces for equality.

Returns
  True if the two color spaces are identical, false otherwise

## operator==() [3/8]

bool libcamera::operator== | ( | const Point & | lhs,
|  | const Point & | rhs )

Compare points for equality.

Returns
  True if the two points are equal, false otherwise

## operator==() [4/8]

bool libcamera::operator== | ( | const Rectangle & | lhs,
|  | const Rectangle & | rhs )

Compare rectangles for equality.

Returns
  True if the two rectangles are equal, false otherwise

## operator==() [5/8]

bool libcamera::operator== | ( | const Size & | lhs,
|  | const Size & | rhs )

Compare sizes for equality.

Returns
  True if the two sizes are equal, false otherwise

## operator==() [6/8]

bool libcamera::operator== | ( | const SizeRange & | lhs,
|  | const SizeRange & | rhs )

Compare size ranges for equality.

Returns
  True if the two size ranges are equal, false otherwise

## operator==() [7/8]

bool libcamera::operator== | ( | const V4L2Subdevice::Stream & | lhs,
|  | const V4L2Subdevice::Stream & | rhs )

Compare streams for equality.

Returns
  True if the two streams are equal, false otherwise

## operator==() [8/8]

template<typename T, unsigned int Rows>

bool libcamera::operator== | ( | const Vector< T, Rows > & | lhs,
|  | const Vector< T, Rows > & | rhs )

Compare vectors for equality.

Returns
  True if the two vectors are equal, false otherwise

## operator^()

Transform libcamera::operator^ | ( | Transform | t0,
|  | Transform | t1 )

constexpr

Apply bitwise XOR operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator^=()

Transform & libcamera::operator^= | ( | Transform & | t0,
|  | Transform | t1 )

constexpr

Apply bitwise XOR-assignment operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator|()

Transform libcamera::operator| | ( | Transform | t0,
|  | Transform | t1 )

constexpr

Apply bitwise OR operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator|=()

Transform & libcamera::operator|= | ( | Transform & | t0,
|  | Transform | t1 )

constexpr

Apply bitwise OR-assignment operator between the bits in the two transforms.

Parameters

  [in] | t0 | The first transform
  [in] | t1 | The second transform

## operator~()

Transform libcamera::operator~ | ( | Transform | t | ) |

constexpr

Return the transform with all the bits inverted individually.

Parameters

  [in] | t | The transform of which the bits will be inverted

This inverts the bits that encode the transform in a bitwise manner. Note that this is not the proper inverse of transform t (for which use operator-).

## orientationFromRotation()

Orientation libcamera::orientationFromRotation | ( | int | angle,
|  | bool * | success )

Return the orientation representing a rotation of the given angle clockwise.

Parameters

  [in] | angle | The angle of rotation in a clockwise sense. Negative values can be used to represent anticlockwise rotations
  [out] | success | Set to true if the angle is a multiple of 90 degrees, otherwise false

Returns
  The orientation corresponding to the rotation if success was set to true, otherwise the Rotate0 orientation

## transformFromRotation()

Transform libcamera::transformFromRotation | ( | int | angle,
|  | bool * | success )

Return the transform representing a rotation of the given angle clockwise.

Parameters

  [in] | angle | The angle of rotation in a clockwise sense. Negative values can be used to represent anticlockwise rotations
  [out] | success | Set to true if the angle is a multiple of 90 degrees, otherwise false

Returns
  The transform corresponding to the rotation if success was set to true, otherwise the Identity transform

## transformToString()

const char * libcamera::transformToString | ( | Transform | t | ) |

Return a character string describing the transform.

Parameters

  [in] | t | The transform to be described.

## Variable Documentation

## ipaModuleInfo

const struct IPAModuleInfo libcamera::ipaModuleInfo

Initial value:
= {
IPA_MODULE_API_VERSION,
1,
"ipu3",
"ipu3",
}
IPA_MODULE_API_VERSION
#define IPA_MODULE_API_VERSION
The IPA module API version.
Definition ipa_module_info.h:12

External IPA module interface.

Information of an IPA module.

The IPAModuleInfo is required to match an IPA module construction against the intented pipeline handler with the module. The API and pipeline handler versions must match the corresponding IPA interface and pipeline handler.

See also
  struct IPAModuleInfo

An IPA module must export a struct IPAModuleInfo of this name.