mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 15:29:45 +03:00
Documentation: Use https instead of http
Avoid a redirection from http by using https directly. Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Cc: Quentin Schulz <foss+libcamera@0leil.net> Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
f5f1cbbf39
commit
1e4c4ad5f7
5 changed files with 68 additions and 68 deletions
|
@ -56,8 +56,8 @@ Documentation
|
||||||
Project documentation is created using `Sphinx`_. Source level documentation
|
Project documentation is created using `Sphinx`_. Source level documentation
|
||||||
uses `Doxygen`_. Please make sure to document all code during development.
|
uses `Doxygen`_. Please make sure to document all code during development.
|
||||||
|
|
||||||
.. _Sphinx: http://www.sphinx-doc.org
|
.. _Sphinx: https://www.sphinx-doc.org
|
||||||
.. _Doxygen: http://www.doxygen.nl
|
.. _Doxygen: https://www.doxygen.nl
|
||||||
|
|
||||||
Submitting Patches
|
Submitting Patches
|
||||||
------------------
|
------------------
|
||||||
|
|
|
@ -54,7 +54,7 @@ The optional `category <Log categories_>`__ is a string matching the categories
|
||||||
defined by each file in the source base using the logging infrastructure. It
|
defined by each file in the source base using the logging infrastructure. It
|
||||||
can include a wildcard ('*') character at the end to match multiple categories.
|
can include a wildcard ('*') character at the end to match multiple categories.
|
||||||
|
|
||||||
For more information refer to the `API documentation <http://libcamera.org/api-html/log_8h.html#details>`__.
|
For more information refer to the `API documentation <https://libcamera.org/api-html/log_8h.html#details>`__.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ abstracts and manages the complex pipelines that kernel drivers expose through
|
||||||
the `Linux Media Controller`_ and `Video for Linux`_ (V4L2) APIs, meaning that
|
the `Linux Media Controller`_ and `Video for Linux`_ (V4L2) APIs, meaning that
|
||||||
an application doesn't need to handle device or driver specific details.
|
an application doesn't need to handle device or driver specific details.
|
||||||
|
|
||||||
.. _CameraManager: http://libcamera.org/api-html/classlibcamera_1_1CameraManager.html
|
.. _CameraManager: https://libcamera.org/api-html/classlibcamera_1_1CameraManager.html
|
||||||
.. _Linux Media Controller: https://www.kernel.org/doc/html/latest/media/uapi/mediactl/media-controller-intro.html
|
.. _Linux Media Controller: https://www.kernel.org/doc/html/latest/media/uapi/mediactl/media-controller-intro.html
|
||||||
.. _Video for Linux: https://www.linuxtv.org/docs.php
|
.. _Video for Linux: https://www.linuxtv.org/docs.php
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ supported values.
|
||||||
The ``validate`` function returns a `Status`_ which applications shall check to
|
The ``validate`` function returns a `Status`_ which applications shall check to
|
||||||
see if the Pipeline Handler adjusted the configuration.
|
see if the Pipeline Handler adjusted the configuration.
|
||||||
|
|
||||||
.. _Status: http://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html#a64163f21db2fe1ce0a6af5a6f6847744
|
.. _Status: https://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html#a64163f21db2fe1ce0a6af5a6f6847744
|
||||||
|
|
||||||
For example, the code above set the width and height to 640x480, but if the
|
For example, the code above set the width and height to 640x480, but if the
|
||||||
camera cannot produce an image that large, it might adjust the configuration to
|
camera cannot produce an image that large, it might adjust the configuration to
|
||||||
|
@ -345,7 +345,7 @@ Event handling and callbacks
|
||||||
The libcamera library uses the concept of `signals and slots` (similar to `Qt
|
The libcamera library uses the concept of `signals and slots` (similar to `Qt
|
||||||
Signals and Slots`_) to connect events with callbacks to handle them.
|
Signals and Slots`_) to connect events with callbacks to handle them.
|
||||||
|
|
||||||
.. _signals and slots: http://libcamera.org/api-html/classlibcamera_1_1Signal.html#details
|
.. _signals and slots: https://libcamera.org/api-html/classlibcamera_1_1Signal.html#details
|
||||||
.. _Qt Signals and Slots: https://doc.qt.io/qt-5/signalsandslots.html
|
.. _Qt Signals and Slots: https://doc.qt.io/qt-5/signalsandslots.html
|
||||||
|
|
||||||
The ``Camera`` device emits two signals that applications can connect to in
|
The ``Camera`` device emits two signals that applications can connect to in
|
||||||
|
@ -418,7 +418,7 @@ in this request, and access the metadata associated to each frame.
|
||||||
The metadata buffer contains information such the capture status, a timestamp,
|
The metadata buffer contains information such the capture status, a timestamp,
|
||||||
and the bytes used, as described in the `FrameMetadata`_ documentation.
|
and the bytes used, as described in the `FrameMetadata`_ documentation.
|
||||||
|
|
||||||
.. _FrameMetaData: http://libcamera.org/api-html/structlibcamera_1_1FrameMetadata.html
|
.. _FrameMetaData: https://libcamera.org/api-html/structlibcamera_1_1FrameMetadata.html
|
||||||
|
|
||||||
.. code:: cpp
|
.. code:: cpp
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ Camera Manager
|
||||||
|
|
||||||
Read the `Camera Manager API`_ documentation for more details.
|
Read the `Camera Manager API`_ documentation for more details.
|
||||||
|
|
||||||
.. _Camera Manager API: http://libcamera.org/api-html/classlibcamera_1_1CameraManager.html
|
.. _Camera Manager API: https://libcamera.org/api-html/classlibcamera_1_1CameraManager.html
|
||||||
|
|
||||||
Camera Device
|
Camera Device
|
||||||
The Camera class represents a single item of camera hardware that is capable
|
The Camera class represents a single item of camera hardware that is capable
|
||||||
|
@ -231,7 +231,7 @@ Camera Device
|
||||||
|
|
||||||
Read the `Camera API`_ documentation for more details.
|
Read the `Camera API`_ documentation for more details.
|
||||||
|
|
||||||
.. _Camera API: http://libcamera.org/api-html/classlibcamera_1_1Camera.html
|
.. _Camera API: https://libcamera.org/api-html/classlibcamera_1_1Camera.html
|
||||||
|
|
||||||
Pipeline Handler
|
Pipeline Handler
|
||||||
The Pipeline Handler manages the complex pipelines exposed by the kernel
|
The Pipeline Handler manages the complex pipelines exposed by the kernel
|
||||||
|
@ -254,7 +254,7 @@ Pipeline Handler
|
||||||
More details can be found in the `PipelineHandler API`_ documentation, and the
|
More details can be found in the `PipelineHandler API`_ documentation, and the
|
||||||
`Pipeline Handler Writers Guide`_.
|
`Pipeline Handler Writers Guide`_.
|
||||||
|
|
||||||
.. _PipelineHandler API: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html
|
.. _PipelineHandler API: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html
|
||||||
|
|
||||||
Image Processing Algorithms
|
Image Processing Algorithms
|
||||||
An image processing algorithm (IPA) component is a loadable plugin that
|
An image processing algorithm (IPA) component is a loadable plugin that
|
||||||
|
|
|
@ -81,49 +81,49 @@ functionalities described above. Below is a brief overview of each of those:
|
||||||
.. TODO: (MediaDevice) Reference to the Media Device API (possibly with versioning requirements)
|
.. TODO: (MediaDevice) Reference to the Media Device API (possibly with versioning requirements)
|
||||||
.. TODO: (IPAInterface) refer to the IPA guide
|
.. TODO: (IPAInterface) refer to the IPA guide
|
||||||
|
|
||||||
- `MediaDevice <http://libcamera.org/api-html/classlibcamera_1_1MediaDevice.html>`_:
|
- `MediaDevice <https://libcamera.org/api-html/classlibcamera_1_1MediaDevice.html>`_:
|
||||||
Instances of this class are associated with a kernel media controller
|
Instances of this class are associated with a kernel media controller
|
||||||
device and its connected objects.
|
device and its connected objects.
|
||||||
|
|
||||||
- `DeviceEnumerator <http://libcamera.org/api-html/classlibcamera_1_1DeviceEnumerator.html>`_:
|
- `DeviceEnumerator <https://libcamera.org/api-html/classlibcamera_1_1DeviceEnumerator.html>`_:
|
||||||
Enumerates all media devices attached to the system and the media entities
|
Enumerates all media devices attached to the system and the media entities
|
||||||
registered with it, by creating instances of the ``MediaDevice`` class and
|
registered with it, by creating instances of the ``MediaDevice`` class and
|
||||||
storing them.
|
storing them.
|
||||||
|
|
||||||
- `DeviceMatch <http://libcamera.org/api-html/classlibcamera_1_1DeviceMatch.html>`_:
|
- `DeviceMatch <https://libcamera.org/api-html/classlibcamera_1_1DeviceMatch.html>`_:
|
||||||
Describes a media device search pattern using entity names, or other
|
Describes a media device search pattern using entity names, or other
|
||||||
properties.
|
properties.
|
||||||
|
|
||||||
- `V4L2VideoDevice <http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html>`_:
|
- `V4L2VideoDevice <https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html>`_:
|
||||||
Models an instance of a V4L2 video device constructed with the path to a V4L2
|
Models an instance of a V4L2 video device constructed with the path to a V4L2
|
||||||
video device node.
|
video device node.
|
||||||
|
|
||||||
- `V4L2SubDevice <http://libcamera.org/api-html/classlibcamera_1_1V4L2Subdevice.html>`_:
|
- `V4L2SubDevice <https://libcamera.org/api-html/classlibcamera_1_1V4L2Subdevice.html>`_:
|
||||||
Provides an API to the sub-devices that model the hardware components of a
|
Provides an API to the sub-devices that model the hardware components of a
|
||||||
V4L2 device.
|
V4L2 device.
|
||||||
|
|
||||||
- `CameraSensor <http://libcamera.org/api-html/classlibcamera_1_1CameraSensor.html>`_:
|
- `CameraSensor <https://libcamera.org/api-html/classlibcamera_1_1CameraSensor.html>`_:
|
||||||
Abstracts camera sensor handling by hiding the details of the V4L2 subdevice
|
Abstracts camera sensor handling by hiding the details of the V4L2 subdevice
|
||||||
kernel API and caching sensor information.
|
kernel API and caching sensor information.
|
||||||
|
|
||||||
- `Camera::Private <http://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html>`_:
|
- `Camera::Private <https://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html>`_:
|
||||||
Represents device-specific data a pipeline handler associates to each Camera
|
Represents device-specific data a pipeline handler associates to each Camera
|
||||||
instance.
|
instance.
|
||||||
|
|
||||||
- `StreamConfiguration <http://libcamera.org/api-html/structlibcamera_1_1StreamConfiguration.html>`_:
|
- `StreamConfiguration <https://libcamera.org/api-html/structlibcamera_1_1StreamConfiguration.html>`_:
|
||||||
Models the current configuration of an image stream produced by the camera by
|
Models the current configuration of an image stream produced by the camera by
|
||||||
reporting its format and sizes.
|
reporting its format and sizes.
|
||||||
|
|
||||||
- `CameraConfiguration <http://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html>`_:
|
- `CameraConfiguration <https://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html>`_:
|
||||||
Represents the current configuration of a camera, which includes a list of
|
Represents the current configuration of a camera, which includes a list of
|
||||||
stream configurations for each active stream in a capture session. When
|
stream configurations for each active stream in a capture session. When
|
||||||
validated, it is applied to the camera.
|
validated, it is applied to the camera.
|
||||||
|
|
||||||
- `IPAInterface <http://libcamera.org/api-html/classlibcamera_1_1IPAInterface.html>`_:
|
- `IPAInterface <https://libcamera.org/api-html/classlibcamera_1_1IPAInterface.html>`_:
|
||||||
The interface to the Image Processing Algorithm (IPA) module which performs
|
The interface to the Image Processing Algorithm (IPA) module which performs
|
||||||
the computation of the image processing pipeline tuning parameters.
|
the computation of the image processing pipeline tuning parameters.
|
||||||
|
|
||||||
- `ControlList <http://libcamera.org/api-html/classlibcamera_1_1ControlList.html>`_:
|
- `ControlList <https://libcamera.org/api-html/classlibcamera_1_1ControlList.html>`_:
|
||||||
A list of control items, indexed by Control<> instances or by numerical index
|
A list of control items, indexed by Control<> instances or by numerical index
|
||||||
which contains values used by application and IPA to change parameters of
|
which contains values used by application and IPA to change parameters of
|
||||||
image streams, used to return to applications and share with IPA the metadata
|
image streams, used to return to applications and share with IPA the metadata
|
||||||
|
@ -191,7 +191,7 @@ In *vivid.cpp* add the pipeline handler to the ``libcamera`` namespace, defining
|
||||||
a `PipelineHandler`_ derived class named PipelineHandlerVivid, and add stub
|
a `PipelineHandler`_ derived class named PipelineHandlerVivid, and add stub
|
||||||
implementations for the overridden class members.
|
implementations for the overridden class members.
|
||||||
|
|
||||||
.. _PipelineHandler: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html
|
.. _PipelineHandler: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html
|
||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ handler factory using the `REGISTER_PIPELINE_HANDLER`_ macro which
|
||||||
registers it and creates a global symbol to reference the class and make it
|
registers it and creates a global symbol to reference the class and make it
|
||||||
available to try and match devices.
|
available to try and match devices.
|
||||||
|
|
||||||
.. _REGISTER_PIPELINE_HANDLER: http://libcamera.org/api-html/pipeline__handler_8h.html
|
.. _REGISTER_PIPELINE_HANDLER: https://libcamera.org/api-html/pipeline__handler_8h.html
|
||||||
|
|
||||||
For debugging and testing a pipeline handler during development, you can define
|
For debugging and testing a pipeline handler during development, you can define
|
||||||
a log message category for the pipeline handler. The ``LOG_DEFINE_CATEGORY``
|
a log message category for the pipeline handler. The ``LOG_DEFINE_CATEGORY``
|
||||||
|
@ -275,7 +275,7 @@ macro and ``LIBCAMERA_LOG_LEVELS`` environment variable help you use the inbuilt
|
||||||
libcamera `logging infrastructure`_ that allow for the inspection of internal
|
libcamera `logging infrastructure`_ that allow for the inspection of internal
|
||||||
operations in a user-configurable way.
|
operations in a user-configurable way.
|
||||||
|
|
||||||
.. _logging infrastructure: http://libcamera.org/api-html/log_8h.html
|
.. _logging infrastructure: https://libcamera.org/api-html/log_8h.html
|
||||||
|
|
||||||
Add the following before the ``PipelineHandlerVivid`` class declaration:
|
Add the following before the ``PipelineHandlerVivid`` class declaration:
|
||||||
|
|
||||||
|
@ -334,8 +334,8 @@ You can specify the search further by adding specific media entities to the
|
||||||
search using the ``.add()`` function on the DeviceMatch.
|
search using the ``.add()`` function on the DeviceMatch.
|
||||||
|
|
||||||
.. _match(): https://www.libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a7cd5b652a2414b543ec20ba9dabf61b6
|
.. _match(): https://www.libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a7cd5b652a2414b543ec20ba9dabf61b6
|
||||||
.. _start(): http://libcamera.org/api-html/classlibcamera_1_1CameraManager.html#a49e322880a2a26013bb0076788b298c5
|
.. _start(): https://libcamera.org/api-html/classlibcamera_1_1CameraManager.html#a49e322880a2a26013bb0076788b298c5
|
||||||
.. _DeviceMatch: http://libcamera.org/api-html/classlibcamera_1_1DeviceMatch.html
|
.. _DeviceMatch: https://libcamera.org/api-html/classlibcamera_1_1DeviceMatch.html
|
||||||
|
|
||||||
This example uses search patterns that match vivid, but when developing a new
|
This example uses search patterns that match vivid, but when developing a new
|
||||||
pipeline handler, you should change this value to suit your device identifier.
|
pipeline handler, you should change this value to suit your device identifier.
|
||||||
|
@ -354,7 +354,7 @@ to the matching media controller device with the `acquireMediaDevice`_ function.
|
||||||
If the function attempts to acquire a device it has already matched, it returns
|
If the function attempts to acquire a device it has already matched, it returns
|
||||||
``false``.
|
``false``.
|
||||||
|
|
||||||
.. _acquireMediaDevice: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a77e424fe704e7b26094164b9189e0f84
|
.. _acquireMediaDevice: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a77e424fe704e7b26094164b9189e0f84
|
||||||
|
|
||||||
Add the following below ``dm.add("vivid-000-vid-cap");``:
|
Add the following below ``dm.add("vivid-000-vid-cap");``:
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ with the Camera.
|
||||||
Each Camera has instance-specific data represented using the `Camera::Private`_
|
Each Camera has instance-specific data represented using the `Camera::Private`_
|
||||||
class, which can be extended for the specific needs of the pipeline handler.
|
class, which can be extended for the specific needs of the pipeline handler.
|
||||||
|
|
||||||
.. _Camera::Private: http://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html
|
.. _Camera::Private: https://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html
|
||||||
|
|
||||||
|
|
||||||
To support the Camera we will later register, we need to create a Camera::Private
|
To support the Camera we will later register, we need to create a Camera::Private
|
||||||
|
@ -475,7 +475,7 @@ the `MediaDevice::getEntityByName`_ function from the MediaDevice. As our
|
||||||
example is based upon the simplistic Vivid test device, we only need to open a
|
example is based upon the simplistic Vivid test device, we only need to open a
|
||||||
single capture device named 'vivid-000-vid-cap' by the device.
|
single capture device named 'vivid-000-vid-cap' by the device.
|
||||||
|
|
||||||
.. _MediaDevice::getEntityByName: http://libcamera.org/api-html/classlibcamera_1_1MediaDevice.html#ad5d9279329ef4987ceece2694b33e230
|
.. _MediaDevice::getEntityByName: https://libcamera.org/api-html/classlibcamera_1_1MediaDevice.html#ad5d9279329ef4987ceece2694b33e230
|
||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
@ -516,8 +516,8 @@ handler and camera manager using `registerCamera`_.
|
||||||
Finally with a successful construction, we return 'true' indicating that the
|
Finally with a successful construction, we return 'true' indicating that the
|
||||||
PipelineHandler successfully matched and constructed a device.
|
PipelineHandler successfully matched and constructed a device.
|
||||||
|
|
||||||
.. _Camera::create: http://libcamera.org/api-html/classlibcamera_1_1Camera.html#a453740e0d2a2f495048ae307a85a2574
|
.. _Camera::create: https://libcamera.org/api-html/classlibcamera_1_1Camera.html#a453740e0d2a2f495048ae307a85a2574
|
||||||
.. _registerCamera: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#adf02a7f1bbd87aca73c0e8d8e0e6c98b
|
.. _registerCamera: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#adf02a7f1bbd87aca73c0e8d8e0e6c98b
|
||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
@ -590,9 +590,9 @@ processed to automatically generate documentation and interfaces. Controls are
|
||||||
defined by the src/libcamera/`control_ids.yaml`_ file and camera properties
|
defined by the src/libcamera/`control_ids.yaml`_ file and camera properties
|
||||||
are defined by src/libcamera/`properties_ids.yaml`_.
|
are defined by src/libcamera/`properties_ids.yaml`_.
|
||||||
|
|
||||||
.. _controls framework: http://libcamera.org/api-html/controls_8h.html
|
.. _controls framework: https://libcamera.org/api-html/controls_8h.html
|
||||||
.. _control_ids.yaml: http://libcamera.org/api-html/control__ids_8h.html
|
.. _control_ids.yaml: https://libcamera.org/api-html/control__ids_8h.html
|
||||||
.. _properties_ids.yaml: http://libcamera.org/api-html/property__ids_8h.html
|
.. _properties_ids.yaml: https://libcamera.org/api-html/property__ids_8h.html
|
||||||
|
|
||||||
Pipeline handlers can optionally register the list of controls an application
|
Pipeline handlers can optionally register the list of controls an application
|
||||||
can set as well as a list of immutable camera properties. Being both
|
can set as well as a list of immutable camera properties. Being both
|
||||||
|
@ -600,14 +600,14 @@ Camera-specific values, they are represented in the ``Camera::Private`` base
|
||||||
class, which provides two members for this purpose: the
|
class, which provides two members for this purpose: the
|
||||||
`Camera::Private::controlInfo_`_ and the `Camera::Private::properties_`_ fields.
|
`Camera::Private::controlInfo_`_ and the `Camera::Private::properties_`_ fields.
|
||||||
|
|
||||||
.. _Camera::Private::controlInfo_: http://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html#ab4e183eb4dabe929d1b2bbbb519b969f
|
.. _Camera::Private::controlInfo_: https://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html#ab4e183eb4dabe929d1b2bbbb519b969f
|
||||||
.. _Camera::Private::properties_: http://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html#ad31f12f5ed9c1fbe25750902f4791064
|
.. _Camera::Private::properties_: https://libcamera.org/api-html/classlibcamera_1_1Camera_1_1Private.html#ad31f12f5ed9c1fbe25750902f4791064
|
||||||
|
|
||||||
The ``controlInfo_`` field represents a map of ``ControlId`` instances
|
The ``controlInfo_`` field represents a map of ``ControlId`` instances
|
||||||
associated with the limits of valid values supported for the control. More
|
associated with the limits of valid values supported for the control. More
|
||||||
information can be found in the `ControlInfoMap`_ class documentation.
|
information can be found in the `ControlInfoMap`_ class documentation.
|
||||||
|
|
||||||
.. _ControlInfoMap: http://libcamera.org/api-html/classlibcamera_1_1ControlInfoMap.html
|
.. _ControlInfoMap: https://libcamera.org/api-html/classlibcamera_1_1ControlInfoMap.html
|
||||||
|
|
||||||
Pipeline handlers register controls to expose the tunable device and IPA
|
Pipeline handlers register controls to expose the tunable device and IPA
|
||||||
parameters to applications. Our example pipeline handler only exposes trivial
|
parameters to applications. Our example pipeline handler only exposes trivial
|
||||||
|
@ -700,7 +700,7 @@ To support validation in our example pipeline handler, Create a new class called
|
||||||
``VividCameraConfiguration`` derived from the base `CameraConfiguration`_ class
|
``VividCameraConfiguration`` derived from the base `CameraConfiguration`_ class
|
||||||
which we can implement and use within our ``PipelineHandlerVivid`` class.
|
which we can implement and use within our ``PipelineHandlerVivid`` class.
|
||||||
|
|
||||||
.. _CameraConfiguration: http://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html
|
.. _CameraConfiguration: https://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html
|
||||||
|
|
||||||
The derived ``CameraConfiguration`` class must override the base class
|
The derived ``CameraConfiguration`` class must override the base class
|
||||||
``validate()`` function, where the stream configuration inspection and
|
``validate()`` function, where the stream configuration inspection and
|
||||||
|
@ -726,8 +726,8 @@ Applications generate a ``CameraConfiguration`` instance by calling the
|
||||||
implementation of the overridden `PipelineHandler::generateConfiguration()`_
|
implementation of the overridden `PipelineHandler::generateConfiguration()`_
|
||||||
function.
|
function.
|
||||||
|
|
||||||
.. _Camera::generateConfiguration(): http://libcamera.org/api-html/classlibcamera_1_1Camera.html#a25c80eb7fc9b1cf32692ce0c7f09991d
|
.. _Camera::generateConfiguration(): https://libcamera.org/api-html/classlibcamera_1_1Camera.html#a25c80eb7fc9b1cf32692ce0c7f09991d
|
||||||
.. _PipelineHandler::generateConfiguration(): http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a7932e87735695500ce1f8c7ae449b65b
|
.. _PipelineHandler::generateConfiguration(): https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a7932e87735695500ce1f8c7ae449b65b
|
||||||
|
|
||||||
Configurations are generated by receiving a list of ``StreamRoles`` instances,
|
Configurations are generated by receiving a list of ``StreamRoles`` instances,
|
||||||
which libcamera uses as predefined ways an application intends to use a camera
|
which libcamera uses as predefined ways an application intends to use a camera
|
||||||
|
@ -735,7 +735,7 @@ which libcamera uses as predefined ways an application intends to use a camera
|
||||||
optional hints on how an application intends to use a stream, and a pipeline
|
optional hints on how an application intends to use a stream, and a pipeline
|
||||||
handler should return an ideal configuration for each role that is requested.
|
handler should return an ideal configuration for each role that is requested.
|
||||||
|
|
||||||
.. _StreamRole API: http://libcamera.org/api-html/stream_8h.html#file_a295d1f5e7828d95c0b0aabc0a8baac03
|
.. _StreamRole API: https://libcamera.org/api-html/stream_8h.html#file_a295d1f5e7828d95c0b0aabc0a8baac03
|
||||||
|
|
||||||
In the pipeline handler ``generateConfiguration`` implementation, remove the
|
In the pipeline handler ``generateConfiguration`` implementation, remove the
|
||||||
``return nullptr;``, create a new instance of the ``CameraConfiguration``
|
``return nullptr;``, create a new instance of the ``CameraConfiguration``
|
||||||
|
@ -797,7 +797,7 @@ The `StreamFormats`_ class holds information about the pixel formats and frame
|
||||||
sizes that a stream can support. The class groups size information by the pixel
|
sizes that a stream can support. The class groups size information by the pixel
|
||||||
format, which can produce it.
|
format, which can produce it.
|
||||||
|
|
||||||
.. _StreamFormats: http://libcamera.org/api-html/classlibcamera_1_1StreamFormats.html
|
.. _StreamFormats: https://libcamera.org/api-html/classlibcamera_1_1StreamFormats.html
|
||||||
|
|
||||||
The code below uses the ``StreamFormats`` class to represent all of the
|
The code below uses the ``StreamFormats`` class to represent all of the
|
||||||
supported pixel formats, associated with a list of frame sizes. It then
|
supported pixel formats, associated with a list of frame sizes. It then
|
||||||
|
@ -850,7 +850,7 @@ If changes are made, it marks the configuration as ``Adjusted``, however if the
|
||||||
requested configuration is not supported and cannot be adjusted it shall be
|
requested configuration is not supported and cannot be adjusted it shall be
|
||||||
refused and marked as ``Invalid``.
|
refused and marked as ``Invalid``.
|
||||||
|
|
||||||
.. _CameraConfiguration::validate(): http://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html#a29f8f263384c6149775b6011c7397093
|
.. _CameraConfiguration::validate(): https://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html#a29f8f263384c6149775b6011c7397093
|
||||||
|
|
||||||
The validation phase makes sure all the platform-specific constraints are
|
The validation phase makes sure all the platform-specific constraints are
|
||||||
respected by the requested configuration. The most trivial examples being making
|
respected by the requested configuration. The most trivial examples being making
|
||||||
|
@ -950,8 +950,8 @@ The `PipelineHandler::configure()`_ function receives a valid
|
||||||
parameters to prepare a device for a streaming session with the desired
|
parameters to prepare a device for a streaming session with the desired
|
||||||
properties.
|
properties.
|
||||||
|
|
||||||
.. _PipelineHandler::configure(): http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a930f2a9cdfb51dfb4b9ca3824e84fc29
|
.. _PipelineHandler::configure(): https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a930f2a9cdfb51dfb4b9ca3824e84fc29
|
||||||
.. _CameraConfiguration: http://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html
|
.. _CameraConfiguration: https://libcamera.org/api-html/classlibcamera_1_1CameraConfiguration.html
|
||||||
|
|
||||||
Replace the contents of the stubbed ``PipelineHandlerVivid::configure`` function
|
Replace the contents of the stubbed ``PipelineHandlerVivid::configure`` function
|
||||||
with the following to obtain the camera data and stream configuration. This
|
with the following to obtain the camera data and stream configuration. This
|
||||||
|
@ -973,8 +973,8 @@ node. The fourcc attribute is a `V4L2PixelFormat`_ and differs from the
|
||||||
plane configuration for multiplanar formats, so you must explicitly convert it
|
plane configuration for multiplanar formats, so you must explicitly convert it
|
||||||
using the helper ``V4L2PixelFormat::fromPixelFormat()``.
|
using the helper ``V4L2PixelFormat::fromPixelFormat()``.
|
||||||
|
|
||||||
.. _V4L2DeviceFormat: http://libcamera.org/api-html/classlibcamera_1_1V4L2DeviceFormat.html
|
.. _V4L2DeviceFormat: https://libcamera.org/api-html/classlibcamera_1_1V4L2DeviceFormat.html
|
||||||
.. _V4L2PixelFormat: http://libcamera.org/api-html/classlibcamera_1_1V4L2PixelFormat.html
|
.. _V4L2PixelFormat: https://libcamera.org/api-html/classlibcamera_1_1V4L2PixelFormat.html
|
||||||
|
|
||||||
Add the following code beneath the code from above:
|
Add the following code beneath the code from above:
|
||||||
|
|
||||||
|
@ -990,7 +990,7 @@ driver has adjusted the format, as this shows the pipeline handler has failed to
|
||||||
handle the validation stages correctly, and the configure operation shall also
|
handle the validation stages correctly, and the configure operation shall also
|
||||||
fail.
|
fail.
|
||||||
|
|
||||||
.. _V4L2VideoDevice::setFormat(): http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#ad67b47dd9327ce5df43350b80c083cca
|
.. _V4L2VideoDevice::setFormat(): https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#ad67b47dd9327ce5df43350b80c083cca
|
||||||
|
|
||||||
Continue the implementation with the following code:
|
Continue the implementation with the following code:
|
||||||
|
|
||||||
|
@ -1009,7 +1009,7 @@ Associate the configuration with the stream by using the
|
||||||
`StreamConfiguration::setStream`_ function, and set the values of individual
|
`StreamConfiguration::setStream`_ function, and set the values of individual
|
||||||
stream configuration members as required.
|
stream configuration members as required.
|
||||||
|
|
||||||
.. _StreamConfiguration::setStream: http://libcamera.org/api-html/structlibcamera_1_1StreamConfiguration.html#a74a0eb44dad1b00112c7c0443ae54a12
|
.. _StreamConfiguration::setStream: https://libcamera.org/api-html/structlibcamera_1_1StreamConfiguration.html#a74a0eb44dad1b00112c7c0443ae54a12
|
||||||
|
|
||||||
.. NOTE: the cfg.setStream() call here associates the stream to the
|
.. NOTE: the cfg.setStream() call here associates the stream to the
|
||||||
StreamConfiguration however that should quite likely be done as part of
|
StreamConfiguration however that should quite likely be done as part of
|
||||||
|
@ -1034,7 +1034,7 @@ controls at system configuration time, to make sure they are defaulted to sane
|
||||||
values. Handling of device controls is again performed using the libcamera
|
values. Handling of device controls is again performed using the libcamera
|
||||||
`controls framework`_.
|
`controls framework`_.
|
||||||
|
|
||||||
.. _Controls Framework: http://libcamera.org/api-html/controls_8h.html
|
.. _Controls Framework: https://libcamera.org/api-html/controls_8h.html
|
||||||
|
|
||||||
This section is particularly specific to Vivid as it sets the initial values of
|
This section is particularly specific to Vivid as it sets the initial values of
|
||||||
controls to match `Vivid Controls`_ defined by the kernel driver. You won't need
|
controls to match `Vivid Controls`_ defined by the kernel driver. You won't need
|
||||||
|
@ -1057,8 +1057,8 @@ come directly from the kernel sources:
|
||||||
We can now use the V4L2 control IDs to prepare a list of controls with the
|
We can now use the V4L2 control IDs to prepare a list of controls with the
|
||||||
`ControlList`_ class, and set them using the `ControlList::set()`_ function.
|
`ControlList`_ class, and set them using the `ControlList::set()`_ function.
|
||||||
|
|
||||||
.. _ControlList: http://libcamera.org/api-html/classlibcamera_1_1ControlList.html
|
.. _ControlList: https://libcamera.org/api-html/classlibcamera_1_1ControlList.html
|
||||||
.. _ControlList::set(): http://libcamera.org/api-html/classlibcamera_1_1ControlList.html#a74a1a29abff5243e6e37ace8e24eb4ba
|
.. _ControlList::set(): https://libcamera.org/api-html/classlibcamera_1_1ControlList.html#a74a1a29abff5243e6e37ace8e24eb4ba
|
||||||
|
|
||||||
In our pipeline ``configure`` function, add the following code after the format
|
In our pipeline ``configure`` function, add the following code after the format
|
||||||
has been set and checked to initialise the ControlList and apply it to the
|
has been set and checked to initialise the ControlList and apply it to the
|
||||||
|
@ -1112,16 +1112,16 @@ libcamera also provides an API to allocate and export memory to applications
|
||||||
realized through the `exportFrameBuffers`_ function and the
|
realized through the `exportFrameBuffers`_ function and the
|
||||||
`FrameBufferAllocator`_ class which will be presented later.
|
`FrameBufferAllocator`_ class which will be presented later.
|
||||||
|
|
||||||
.. _exportFrameBuffers: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a6312a69da7129c2ed41f9d9f790adf7c
|
.. _exportFrameBuffers: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a6312a69da7129c2ed41f9d9f790adf7c
|
||||||
.. _FrameBufferAllocator: http://libcamera.org/api-html/classlibcamera_1_1FrameBufferAllocator.html
|
.. _FrameBufferAllocator: https://libcamera.org/api-html/classlibcamera_1_1FrameBufferAllocator.html
|
||||||
|
|
||||||
Please refer to the V4L2VideoDevice API documentation, specifically the
|
Please refer to the V4L2VideoDevice API documentation, specifically the
|
||||||
`allocateBuffers`_, `importBuffers`_ and `exportBuffers`_ functions for a
|
`allocateBuffers`_, `importBuffers`_ and `exportBuffers`_ functions for a
|
||||||
detailed description of the video device memory management.
|
detailed description of the video device memory management.
|
||||||
|
|
||||||
.. _allocateBuffers: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a3a1a77e5e6c220ea7878e89485864a1c
|
.. _allocateBuffers: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a3a1a77e5e6c220ea7878e89485864a1c
|
||||||
.. _importBuffers: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a154f5283d16ebd5e15d63e212745cb64
|
.. _importBuffers: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a154f5283d16ebd5e15d63e212745cb64
|
||||||
.. _exportBuffers: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#ae9c0b0a68f350725b63b73a6da5a2ecd
|
.. _exportBuffers: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#ae9c0b0a68f350725b63b73a6da5a2ecd
|
||||||
|
|
||||||
Video memory buffers are represented in libcamera by the `FrameBuffer`_ class.
|
Video memory buffers are represented in libcamera by the `FrameBuffer`_ class.
|
||||||
A ``FrameBuffer`` instance has to be associated to each ``Stream`` which is part
|
A ``FrameBuffer`` instance has to be associated to each ``Stream`` which is part
|
||||||
|
@ -1130,7 +1130,7 @@ by importing the dma-buf file descriptors it needs to operate on. This operation
|
||||||
is performed by using the ``V4L2VideoDevice`` API, which provides an
|
is performed by using the ``V4L2VideoDevice`` API, which provides an
|
||||||
``importBuffers()`` function that prepares the video device accordingly.
|
``importBuffers()`` function that prepares the video device accordingly.
|
||||||
|
|
||||||
.. _FrameBuffer: http://libcamera.org/api-html/classlibcamera_1_1FrameBuffer.html
|
.. _FrameBuffer: https://libcamera.org/api-html/classlibcamera_1_1FrameBuffer.html
|
||||||
|
|
||||||
Implement the pipeline handler ``start()`` function by replacing the stub
|
Implement the pipeline handler ``start()`` function by replacing the stub
|
||||||
version with the following code:
|
version with the following code:
|
||||||
|
@ -1161,13 +1161,13 @@ and exports it as dma-buf file descriptors. From this point on, the allocated
|
||||||
imported by the pipeline hander in exactly the same fashion as if they were
|
imported by the pipeline hander in exactly the same fashion as if they were
|
||||||
allocated elsewhere.
|
allocated elsewhere.
|
||||||
|
|
||||||
.. _FrameBufferAllocator: http://libcamera.org/api-html/classlibcamera_1_1FrameBufferAllocator.html
|
.. _FrameBufferAllocator: https://libcamera.org/api-html/classlibcamera_1_1FrameBufferAllocator.html
|
||||||
|
|
||||||
Pipeline handlers support the ``FrameBufferAllocator`` operations by
|
Pipeline handlers support the ``FrameBufferAllocator`` operations by
|
||||||
implementing the `exportFrameBuffers`_ function, which will allocate memory in
|
implementing the `exportFrameBuffers`_ function, which will allocate memory in
|
||||||
the video device associated with a stream and export it.
|
the video device associated with a stream and export it.
|
||||||
|
|
||||||
.. _exportFrameBuffers: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a6312a69da7129c2ed41f9d9f790adf7c
|
.. _exportFrameBuffers: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a6312a69da7129c2ed41f9d9f790adf7c
|
||||||
|
|
||||||
Implement the ``exportFrameBuffers`` stub function with the following code to
|
Implement the ``exportFrameBuffers`` stub function with the following code to
|
||||||
handle this:
|
handle this:
|
||||||
|
@ -1199,14 +1199,14 @@ caller and the `releaseBuffers`_ function releases any buffers to leave the
|
||||||
device in a consistent state. If your pipeline handler uses any image processing
|
device in a consistent state. If your pipeline handler uses any image processing
|
||||||
algorithms, or other devices you should also stop them.
|
algorithms, or other devices you should also stop them.
|
||||||
|
|
||||||
.. _streamOn: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a588a5dc9d6f4c54c61136ac43ff9a8cc
|
.. _streamOn: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a588a5dc9d6f4c54c61136ac43ff9a8cc
|
||||||
.. _releaseBuffers: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a191619c152f764e03bc461611f3fcd35
|
.. _releaseBuffers: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a191619c152f764e03bc461611f3fcd35
|
||||||
|
|
||||||
Of course we also need to handle the corresponding actions to stop streaming on
|
Of course we also need to handle the corresponding actions to stop streaming on
|
||||||
a device, Add the following to the ``stop`` function, to stop the stream with
|
a device, Add the following to the ``stop`` function, to stop the stream with
|
||||||
the `streamOff`_ function and release all buffers.
|
the `streamOff`_ function and release all buffers.
|
||||||
|
|
||||||
.. _streamOff: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a61998710615bdf7aa25a046c8565ed66
|
.. _streamOff: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a61998710615bdf7aa25a046c8565ed66
|
||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
@ -1229,8 +1229,8 @@ This example pipeline handler identifies the buffer using the `findBuffer`_
|
||||||
helper from the only supported stream and queues it to the capture device
|
helper from the only supported stream and queues it to the capture device
|
||||||
directly with the `queueBuffer`_ function provided by the V4L2VideoDevice.
|
directly with the `queueBuffer`_ function provided by the V4L2VideoDevice.
|
||||||
|
|
||||||
.. _findBuffer: http://libcamera.org/api-html/classlibcamera_1_1Request.html#ac66050aeb9b92c64218945158559c4d4
|
.. _findBuffer: https://libcamera.org/api-html/classlibcamera_1_1Request.html#ac66050aeb9b92c64218945158559c4d4
|
||||||
.. _queueBuffer: http://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a594cd594686a8c1cf9ae8dba0b2a8a75
|
.. _queueBuffer: https://libcamera.org/api-html/classlibcamera_1_1V4L2VideoDevice.html#a594cd594686a8c1cf9ae8dba0b2a8a75
|
||||||
|
|
||||||
Replace the stubbed contents of ``queueRequestDevice`` with the following:
|
Replace the stubbed contents of ``queueRequestDevice`` with the following:
|
||||||
|
|
||||||
|
@ -1329,7 +1329,7 @@ This example pipeline handler applies controls during the `queueRequestDevice`_
|
||||||
function for each request, and applies them to the capture device through the
|
function for each request, and applies them to the capture device through the
|
||||||
capture node.
|
capture node.
|
||||||
|
|
||||||
.. _queueRequestDevice: http://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a106914cca210640c9da9ee1f0419e83c
|
.. _queueRequestDevice: https://libcamera.org/api-html/classlibcamera_1_1PipelineHandler.html#a106914cca210640c9da9ee1f0419e83c
|
||||||
|
|
||||||
In the ``queueRequestDevice`` function, replace the following:
|
In the ``queueRequestDevice`` function, replace the following:
|
||||||
|
|
||||||
|
@ -1370,7 +1370,7 @@ of the libcamera implementation is available in the `libcamera Signal and Slot`_
|
||||||
classes documentation.
|
classes documentation.
|
||||||
|
|
||||||
.. _Qt Signals and Slots: https://doc.qt.io/qt-5/signalsandslots.html
|
.. _Qt Signals and Slots: https://doc.qt.io/qt-5/signalsandslots.html
|
||||||
.. _libcamera Signal and Slot: http://libcamera.org/api-html/classlibcamera_1_1Signal.html#details
|
.. _libcamera Signal and Slot: https://libcamera.org/api-html/classlibcamera_1_1Signal.html#details
|
||||||
|
|
||||||
In order to notify applications about the availability of new frames and data,
|
In order to notify applications about the availability of new frames and data,
|
||||||
the ``Camera`` device exposes two ``Signals`` to which applications can connect
|
the ``Camera`` device exposes two ``Signals`` to which applications can connect
|
||||||
|
@ -1397,7 +1397,7 @@ the PipelineHandler base class ``completeRequest`` function. The PipelineHandler
|
||||||
class implementation makes sure the request completion notifications are
|
class implementation makes sure the request completion notifications are
|
||||||
delivered to applications in the same order as they have been submitted.
|
delivered to applications in the same order as they have been submitted.
|
||||||
|
|
||||||
.. _connecting: http://libcamera.org/api-html/classlibcamera_1_1Signal.html#aa04db72d5b3091ffbb4920565aeed382
|
.. _connecting: https://libcamera.org/api-html/classlibcamera_1_1Signal.html#aa04db72d5b3091ffbb4920565aeed382
|
||||||
|
|
||||||
Returning to the ``int VividCameraData::init()`` function, add the following
|
Returning to the ``int VividCameraData::init()`` function, add the following
|
||||||
above the closing ``return 0;`` to connect the pipeline handler ``bufferReady``
|
above the closing ``return 0;`` to connect the pipeline handler ``bufferReady``
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue