libcamera
v0.3.2+116-83c5ad0f
Supporting cameras in Linux since 2019
|
Top-level libcamera namespace. More...
Namespaces | |
controls | |
Namespace for libcamera controls. | |
properties | |
Namespace for libcamera properties. | |
Classes | |
class | Camera |
Camera device. More... | |
class | CameraConfiguration |
Hold configuration for streams of the camera. More... | |
class | CameraManager |
Provide access and manage all cameras in the system. More... | |
class | ColorSpace |
Class to describe a color space. More... | |
class | Control |
Describe a control and its intrinsic properties. More... | |
class | ControlId |
Control static metadata. 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 | ControlValue |
Abstract type representing the value of a control. More... | |
class | Fence |
Synchronization primitive to manage resources. More... | |
class | Flags |
Type-safe container for enum-based bitfields. More... | |
class | FrameBuffer |
Frame buffer data and its associated dynamic metadata. More... | |
class | FrameBufferAllocator |
FrameBuffer allocator for applications. More... | |
struct | FrameMetadata |
Metadata related to a captured frame. More... | |
class | PixelFormat |
libcamera image pixel format More... | |
class | Point |
Describe a point in two-dimensional space. More... | |
class | Rectangle |
Describe a rectangle's position and dimensions. More... | |
class | Request |
A frame capture request. More... | |
class | SensorConfiguration |
Camera sensor configuration. More... | |
class | SharedFD |
RAII-style wrapper for file descriptors. More... | |
class | Signal |
Generic signal and slot communication mechanism. More... | |
class | Size |
Describe a two-dimensional size. More... | |
class | SizeRange |
Describe a range of sizes. More... | |
class | Stream |
Video stream for a camera. More... | |
struct | StreamConfiguration |
Configuration parameters for a stream. More... | |
class | StreamFormats |
Hold information about supported stream formats. More... | |
class | UniqueFD |
unique_ptr-like wrapper for a file descriptor More... | |
Typedefs | |
using | ControlIdMap = std::unordered_map< unsigned int, const ControlId * > |
A map of numerical control ID to ControlId. More... | |
Functions | |
bool | operator== (const ColorSpace &lhs, const ColorSpace &rhs) |
Compare color spaces for equality. More... | |
bool | operator== (const Point &lhs, const Point &rhs) |
Compare points for equality. More... | |
std::ostream & | operator<< (std::ostream &out, const Point &p) |
Insert a text representation of a Point into an output stream. More... | |
bool | operator== (const Size &lhs, const Size &rhs) |
Compare sizes for equality. More... | |
bool | operator< (const Size &lhs, const Size &rhs) |
Compare sizes for smaller than order. More... | |
std::ostream & | operator<< (std::ostream &out, const Size &s) |
Insert a text representation of a Size into an output stream. More... | |
bool | operator== (const SizeRange &lhs, const SizeRange &rhs) |
Compare size ranges for equality. More... | |
std::ostream & | operator<< (std::ostream &out, const SizeRange &sr) |
Insert a text representation of a SizeRange into an output stream. More... | |
bool | operator== (const Rectangle &lhs, const Rectangle &rhs) |
Compare rectangles for equality. More... | |
std::ostream & | operator<< (std::ostream &out, const Rectangle &r) |
Insert a text representation of a Rectangle into an output stream. More... | |
Orientation | orientationFromRotation (int angle, bool *success) |
Return the orientation representing a rotation of the given angle clockwise. More... | |
std::ostream & | operator<< (std::ostream &out, const Orientation &orientation) |
Prints human-friendly names for Orientation items. More... | |
std::ostream & | operator<< (std::ostream &out, const PixelFormat &f) |
Insert a text representation of a PixelFormat into an output stream. More... | |
std::ostream & | operator<< (std::ostream &out, const Request &r) |
Insert a text representation of a Request into an output stream. More... | |
std::ostream & | operator<< (std::ostream &out, StreamRole role) |
Insert a text representation of a StreamRole into an output stream. More... | |
constexpr Transform | operator & (Transform t0, Transform t1) |
Apply bitwise AND operator between the bits in the two transforms. More... | |
constexpr Transform | operator| (Transform t0, Transform t1) |
Apply bitwise OR operator between the bits in the two transforms. More... | |
constexpr Transform | operator^ (Transform t0, Transform t1) |
Apply bitwise XOR operator between the bits in the two transforms. More... | |
constexpr Transform & | operator &= (Transform &t0, Transform t1) |
Apply bitwise AND-assignment operator between the bits in the two transforms. More... | |
constexpr Transform & | operator|= (Transform &t0, Transform t1) |
Apply bitwise OR-assignment operator between the bits in the two transforms. More... | |
constexpr Transform & | operator^= (Transform &t0, Transform t1) |
Apply bitwise XOR-assignment operator between the bits in the two transforms. More... | |
Transform | operator* (Transform t0, Transform t1) |
Compose two transforms by applying t0 first then t1. More... | |
Transform | operator- (Transform t) |
Invert a transform. More... | |
constexpr bool | operator! (Transform t) |
Return true if the transform is the Identity , otherwise false More... | |
constexpr Transform | operator~ (Transform t) |
Return the transform with all the bits inverted individually. More... | |
Transform | transformFromRotation (int angle, bool *success) |
Return the transform representing a rotation of the given angle clockwise. More... | |
Transform | operator/ (const Orientation &o1, const Orientation &o2) |
Return the Transform that applied to o2 gives o1. More... | |
Orientation | operator* (const Orientation &o, const Transform &t) |
Apply the Transform t on the orientation o. More... | |
const char * | transformToString (Transform t) |
Return a character string describing the transform. More... | |
Top-level libcamera namespace.
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.
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().
Define the data type of a Control.
|
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 |
|
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.
|
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:
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.
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 |
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). |
Apply bitwise AND operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
Apply bitwise AND-assignment operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
libcamera::operator! | ( | Transform | t | ) |
Return true
if the transform is the Identity
, otherwise false
[in] | t | The transform to be tested |
Compose two transforms by applying t0 first then t1.
[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.
Note that composition is generally non-commutative for Transforms, and not the same as XOR-ing the underlying bit representations.
Orientation libcamera::operator* | ( | const Orientation & | o, |
const Transform & | t | ||
) |
Apply the Transform t on the orientation o.
o | The orientation |
t | The transform to apply on o |
Invert a transform.
[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.
Transform libcamera::operator/ | ( | const Orientation & | o1, |
const Orientation & | o2 | ||
) |
Return the Transform that applied to o2 gives o1.
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.
Compare sizes for smaller than order.
Sizes are compared on three criteria, in the following order.
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const Orientation & | orientation | ||
) |
Prints human-friendly names for Orientation items.
[in] | out | The output stream |
[in] | orientation | The Orientation item |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const PixelFormat & | f | ||
) |
Insert a text representation of a PixelFormat into an output stream.
[in] | out | The output stream |
[in] | f | The PixelFormat |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const Point & | p | ||
) |
Insert a text representation of a Point into an output stream.
[in] | out | The output stream |
[in] | p | The point |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
StreamRole | role | ||
) |
Insert a text representation of a StreamRole into an output stream.
[in] | out | The output stream |
[in] | role | The StreamRole |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const Request & | r | ||
) |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const Size & | s | ||
) |
Insert a text representation of a Size into an output stream.
[in] | out | The output stream |
[in] | s | The size |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const SizeRange & | sr | ||
) |
Insert a text representation of a SizeRange into an output stream.
[in] | out | The output stream |
[in] | sr | The size range |
std::ostream & libcamera::operator<< | ( | std::ostream & | out, |
const Rectangle & | r | ||
) |
Insert a text representation of a Rectangle into an output stream.
[in] | out | The output stream |
[in] | r | The rectangle |
Compare points for equality.
bool libcamera::operator== | ( | const ColorSpace & | lhs, |
const ColorSpace & | rhs | ||
) |
Compare color spaces for equality.
Compare sizes for equality.
Compare size ranges for equality.
Compare rectangles for equality.
Apply bitwise XOR operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
Apply bitwise XOR-assignment operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
Apply bitwise OR operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
Apply bitwise OR-assignment operator between the bits in the two transforms.
[in] | t0 | The first transform |
[in] | t1 | The second transform |
libcamera::operator~ | ( | Transform | t | ) |
Return the transform with all the bits inverted individually.
[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-).
Orientation libcamera::orientationFromRotation | ( | int | angle, |
bool * | success | ||
) |
Return the orientation representing a rotation of the given angle clockwise.
[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 |
true
, otherwise the Rotate0
orientation Transform libcamera::transformFromRotation | ( | int | angle, |
bool * | success | ||
) |
Return the transform representing a rotation of the given angle clockwise.
[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 |
true
, otherwise the Identity
transform const char * libcamera::transformToString | ( | Transform | t | ) |
Return a character string describing the transform.
[in] | t | The transform to be described. |