[v2,5/7] Documentation: Remove camera stack from introduction.rst
diff mbox series

Message ID 20240815082944.170109-6-dan.scally@ideasonboard.com
State Superseded
Headers show
Series
  • Documentation improvements
Related show

Commit Message

Dan Scally Aug. 15, 2024, 8:29 a.m. UTC
The Camera Stack section of the introduction is largely a duplicate
of the section broken out from docs.rst. Remove it from the
introduction.rst file and consolidate anything that wasn't duplicated
into camera_stack.rst.

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
---
Changes since v1:

	- None

 Documentation/camera_stack.rst        |  31 +++++++
 Documentation/guides/introduction.rst | 112 +-------------------------
 2 files changed, 33 insertions(+), 110 deletions(-)

Comments

Laurent Pinchart Aug. 16, 2024, 1:16 a.m. UTC | #1
Hi Dan,

Thank you for the patch.

On Thu, Aug 15, 2024 at 09:29:42AM +0100, Daniel Scally wrote:
> The Camera Stack section of the introduction is largely a duplicate
> of the section broken out from docs.rst. Remove it from the
> introduction.rst file and consolidate anything that wasn't duplicated
> into camera_stack.rst.
> 
> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
> Changes since v1:
> 
> 	- None
> 
>  Documentation/camera_stack.rst        |  31 +++++++
>  Documentation/guides/introduction.rst | 112 +-------------------------
>  2 files changed, 33 insertions(+), 110 deletions(-)
> 
> diff --git a/Documentation/camera_stack.rst b/Documentation/camera_stack.rst
> index 381385cb..6045ed91 100644
> --- a/Documentation/camera_stack.rst
> +++ b/Documentation/camera_stack.rst
> @@ -76,3 +76,34 @@ The camera stack comprises four software layers. From bottom to top:
>  * The applications and upper level frameworks are based on the
>    libcamera framework or libcamera adaptation, and are outside of
>    the scope of the libcamera project.
> +
> +V4L2 Compatibility Layer
> +  V4L2 compatibility is achieved through a shared library that traps all
> +  accesses to camera devices and routes them to libcamera to emulate high-level
> +  V4L2 camera devices. It is injected in a process address space through
> +  ``LD_PRELOAD`` and is completely transparent for applications.
> +
> +  The compatibility layer exposes camera device features on a best-effort basis,
> +  and aims for the level of features traditionally available from a UVC camera
> +  designed for video conferencing.
> +
> +Android Camera HAL
> +  Camera support for Android is achieved through a generic Android camera HAL
> +  implementation on top of libcamera. The HAL implements features required by
> +  Android and out of scope from libcamera, such as JPEG encoding support.
> +
> +  This component is used to provide support for ChromeOS platforms
> +
> +GStreamer element (gstlibcamerasrc)
> +  A `GStreamer element`_ is provided to allow capture from libcamera supported
> +  devices through GStreamer pipelines, and connect to other elements for further
> +  processing.
> +
> +  Development of this element is ongoing and is limited to a single stream.
> +
> +Native libcamera API
> +  Applications can make use of the libcamera API directly using the C++
> +  API. An example application and walkthrough using the libcamera API can be
> +  followed in the :doc:`Application writer's guide </guides/application-developer>`
> +
> +.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html
> diff --git a/Documentation/guides/introduction.rst b/Documentation/guides/introduction.rst
> index 1898d5fe..e419eb9d 100644
> --- a/Documentation/guides/introduction.rst
> +++ b/Documentation/guides/introduction.rst
> @@ -26,10 +26,8 @@ desirable results from the camera.
>  .. _Media Controller: https://www.linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/mediactl/media-controller.html
>  
>  
> -In this developers guide, we will explore the `Camera Stack`_ and how it is
> -can be visualised at a high level. The current `Platform Support`_ is
> -detailed, as well as an overview of the `Licensing`_ requirements of the
> -project.
> +In this developers guide the current `Platform Support`_ is detailed, as well as
> +an overview of the `Licensing`_ requirements of the project.
>  
>  This introduction is followed by a walkthrough tutorial to newcomers wishing to
>  support a new platform with the `Pipeline Handler Writers Guide`_ and for those
> @@ -41,112 +39,6 @@ provides a tutorial of the key APIs exposed by libcamera.
>  
>  .. TODO: Correctly link to the other articles of the guide
>  
> -Camera Stack
> -------------
> -
> -The libcamera library is implemented in userspace, and makes use of underlying
> -kernel drivers that directly interact with hardware.
> -
> -Applications can make use of libcamera through the native `libcamera API`_'s or
> -through an adaptation layer integrating libcamera into a larger framework.
> -
> -.. _libcamera API: https://www.libcamera.org/api-html/index.html
> -
> -::
> -
> -    Application Layer
> -     /    +--------------+  +--------------+  +--------------+  +--------------+
> -     |    |    Native    |  |   Framework  |  |    Native    |  |   Android    |
> -     |    |     V4L2     |  |  Application |  |   libcamera  |  |   Camera     |
> -     |    |  Application |  |  (gstreamer) |  |  Application |  |  Framework   |
> -     \    +--------------+  +--------------+  +--------------+  +--------------+
> -
> -                 ^                 ^                 ^                 ^
> -                 |                 |                 |                 |
> -                 |                 |                 |                 |
> -                 v                 v                 |                 v
> -    Adaptation Layer                                 |
> -     /    +--------------+  +--------------+         |          +--------------+
> -     |    |    V4L2      |  |  gstreamer   |         |          |   Android    |
> -     |    | Compatibility|  |   element    |         |          |   Camera     |
> -     |    |  (preload)   |  |(libcamerasrc)|         |          |     HAL      |
> -     \    +--------------+  +--------------+         |          +--------------+
> -                                                     |
> -                 ^                 ^                 |                 ^
> -                 |                 |                 |                 |
> -                 |                 |                 |                 |
> -                 v                 v                 v                 v
> -    libcamera Framework
> -     /    +--------------------------------------------------------------------+
> -     |    |                                                                    |
> -     |    |                             libcamera                              |
> -     |    |                                                                    |
> -     \    +--------------------------------------------------------------------+
> -
> -                         ^                  ^                  ^
> -    Userspace            |                  |                  |
> -   --------------------- | ---------------- | ---------------- | ---------------
> -    Kernel               |                  |                  |
> -                         v                  v                  v
> -
> -                   +-----------+      +-----------+      +-----------+
> -                   |   Media   | <--> |   Video   | <--> |   V4L2    |
> -                   |  Device   |      |  Device   |      |  Subdev   |
> -                   +-----------+      +-----------+      +-----------+
> -
> -The camera stack comprises of four software layers. From bottom to top:
> -
> -* The kernel drivers control the camera hardware and expose a low-level
> -  interface to userspace through the Linux kernel V4L2 family of APIs
> -  (Media Controller API, V4L2 Video Device API and V4L2 Subdev API).
> -
> -* The libcamera framework is the core part of the stack. It handles all control
> -  of the camera devices in its core component, libcamera, and exposes a native
> -  C++ API to upper layers.
> -
> -* The libcamera adaptation layer is an umbrella term designating the components
> -  that interface to libcamera in other frameworks. Notable examples are the V4L2
> -  compatibility layer, the gstreamer libcamera element, and the Android camera
> -  HAL implementation based on libcamera which are provided as a part of the
> -  libcamera project.
> -
> -* The applications and upper level frameworks are based on the libcamera
> -  framework or libcamera adaptation, and are outside of the scope of the
> -  libcamera project, however example native applications (cam, qcam) are
> -  provided for testing.
> -
> -
> -V4L2 Compatibility Layer
> -  V4L2 compatibility is achieved through a shared library that traps all
> -  accesses to camera devices and routes them to libcamera to emulate high-level
> -  V4L2 camera devices. It is injected in a process address space through
> -  ``LD_PRELOAD`` and is completely transparent for applications.
> -
> -  The compatibility layer exposes camera device features on a best-effort basis,
> -  and aims for the level of features traditionally available from a UVC camera
> -  designed for video conferencing.
> -
> -Android Camera HAL
> -  Camera support for Android is achieved through a generic Android camera HAL
> -  implementation on top of libcamera. The HAL implements features required by
> -  Android and out of scope from libcamera, such as JPEG encoding support.
> -
> -  This component is used to provide support for ChromeOS platforms
> -
> -GStreamer element (gstlibcamerasrc)
> -  A `GStreamer element`_ is provided to allow capture from libcamera supported
> -  devices through GStreamer pipelines, and connect to other elements for further
> -  processing.
> -
> -  Development of this element is ongoing and is limited to a single stream.
> -
> -Native libcamera API
> -  Applications can make use of the libcamera API directly using the C++
> -  API. An example application and walkthrough using the libcamera API can be
> -  followed in the `Application Writers Guide`_
> -
> -.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html
> -
>  Platform Support
>  ----------------
>

Patch
diff mbox series

diff --git a/Documentation/camera_stack.rst b/Documentation/camera_stack.rst
index 381385cb..6045ed91 100644
--- a/Documentation/camera_stack.rst
+++ b/Documentation/camera_stack.rst
@@ -76,3 +76,34 @@  The camera stack comprises four software layers. From bottom to top:
 * The applications and upper level frameworks are based on the
   libcamera framework or libcamera adaptation, and are outside of
   the scope of the libcamera project.
+
+V4L2 Compatibility Layer
+  V4L2 compatibility is achieved through a shared library that traps all
+  accesses to camera devices and routes them to libcamera to emulate high-level
+  V4L2 camera devices. It is injected in a process address space through
+  ``LD_PRELOAD`` and is completely transparent for applications.
+
+  The compatibility layer exposes camera device features on a best-effort basis,
+  and aims for the level of features traditionally available from a UVC camera
+  designed for video conferencing.
+
+Android Camera HAL
+  Camera support for Android is achieved through a generic Android camera HAL
+  implementation on top of libcamera. The HAL implements features required by
+  Android and out of scope from libcamera, such as JPEG encoding support.
+
+  This component is used to provide support for ChromeOS platforms
+
+GStreamer element (gstlibcamerasrc)
+  A `GStreamer element`_ is provided to allow capture from libcamera supported
+  devices through GStreamer pipelines, and connect to other elements for further
+  processing.
+
+  Development of this element is ongoing and is limited to a single stream.
+
+Native libcamera API
+  Applications can make use of the libcamera API directly using the C++
+  API. An example application and walkthrough using the libcamera API can be
+  followed in the :doc:`Application writer's guide </guides/application-developer>`
+
+.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html
diff --git a/Documentation/guides/introduction.rst b/Documentation/guides/introduction.rst
index 1898d5fe..e419eb9d 100644
--- a/Documentation/guides/introduction.rst
+++ b/Documentation/guides/introduction.rst
@@ -26,10 +26,8 @@  desirable results from the camera.
 .. _Media Controller: https://www.linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/mediactl/media-controller.html
 
 
-In this developers guide, we will explore the `Camera Stack`_ and how it is
-can be visualised at a high level. The current `Platform Support`_ is
-detailed, as well as an overview of the `Licensing`_ requirements of the
-project.
+In this developers guide the current `Platform Support`_ is detailed, as well as
+an overview of the `Licensing`_ requirements of the project.
 
 This introduction is followed by a walkthrough tutorial to newcomers wishing to
 support a new platform with the `Pipeline Handler Writers Guide`_ and for those
@@ -41,112 +39,6 @@  provides a tutorial of the key APIs exposed by libcamera.
 
 .. TODO: Correctly link to the other articles of the guide
 
-Camera Stack
-------------
-
-The libcamera library is implemented in userspace, and makes use of underlying
-kernel drivers that directly interact with hardware.
-
-Applications can make use of libcamera through the native `libcamera API`_'s or
-through an adaptation layer integrating libcamera into a larger framework.
-
-.. _libcamera API: https://www.libcamera.org/api-html/index.html
-
-::
-
-    Application Layer
-     /    +--------------+  +--------------+  +--------------+  +--------------+
-     |    |    Native    |  |   Framework  |  |    Native    |  |   Android    |
-     |    |     V4L2     |  |  Application |  |   libcamera  |  |   Camera     |
-     |    |  Application |  |  (gstreamer) |  |  Application |  |  Framework   |
-     \    +--------------+  +--------------+  +--------------+  +--------------+
-
-                 ^                 ^                 ^                 ^
-                 |                 |                 |                 |
-                 |                 |                 |                 |
-                 v                 v                 |                 v
-    Adaptation Layer                                 |
-     /    +--------------+  +--------------+         |          +--------------+
-     |    |    V4L2      |  |  gstreamer   |         |          |   Android    |
-     |    | Compatibility|  |   element    |         |          |   Camera     |
-     |    |  (preload)   |  |(libcamerasrc)|         |          |     HAL      |
-     \    +--------------+  +--------------+         |          +--------------+
-                                                     |
-                 ^                 ^                 |                 ^
-                 |                 |                 |                 |
-                 |                 |                 |                 |
-                 v                 v                 v                 v
-    libcamera Framework
-     /    +--------------------------------------------------------------------+
-     |    |                                                                    |
-     |    |                             libcamera                              |
-     |    |                                                                    |
-     \    +--------------------------------------------------------------------+
-
-                         ^                  ^                  ^
-    Userspace            |                  |                  |
-   --------------------- | ---------------- | ---------------- | ---------------
-    Kernel               |                  |                  |
-                         v                  v                  v
-
-                   +-----------+      +-----------+      +-----------+
-                   |   Media   | <--> |   Video   | <--> |   V4L2    |
-                   |  Device   |      |  Device   |      |  Subdev   |
-                   +-----------+      +-----------+      +-----------+
-
-The camera stack comprises of four software layers. From bottom to top:
-
-* The kernel drivers control the camera hardware and expose a low-level
-  interface to userspace through the Linux kernel V4L2 family of APIs
-  (Media Controller API, V4L2 Video Device API and V4L2 Subdev API).
-
-* The libcamera framework is the core part of the stack. It handles all control
-  of the camera devices in its core component, libcamera, and exposes a native
-  C++ API to upper layers.
-
-* The libcamera adaptation layer is an umbrella term designating the components
-  that interface to libcamera in other frameworks. Notable examples are the V4L2
-  compatibility layer, the gstreamer libcamera element, and the Android camera
-  HAL implementation based on libcamera which are provided as a part of the
-  libcamera project.
-
-* The applications and upper level frameworks are based on the libcamera
-  framework or libcamera adaptation, and are outside of the scope of the
-  libcamera project, however example native applications (cam, qcam) are
-  provided for testing.
-
-
-V4L2 Compatibility Layer
-  V4L2 compatibility is achieved through a shared library that traps all
-  accesses to camera devices and routes them to libcamera to emulate high-level
-  V4L2 camera devices. It is injected in a process address space through
-  ``LD_PRELOAD`` and is completely transparent for applications.
-
-  The compatibility layer exposes camera device features on a best-effort basis,
-  and aims for the level of features traditionally available from a UVC camera
-  designed for video conferencing.
-
-Android Camera HAL
-  Camera support for Android is achieved through a generic Android camera HAL
-  implementation on top of libcamera. The HAL implements features required by
-  Android and out of scope from libcamera, such as JPEG encoding support.
-
-  This component is used to provide support for ChromeOS platforms
-
-GStreamer element (gstlibcamerasrc)
-  A `GStreamer element`_ is provided to allow capture from libcamera supported
-  devices through GStreamer pipelines, and connect to other elements for further
-  processing.
-
-  Development of this element is ongoing and is limited to a single stream.
-
-Native libcamera API
-  Applications can make use of the libcamera API directly using the C++
-  API. An example application and walkthrough using the libcamera API can be
-  followed in the `Application Writers Guide`_
-
-.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html
-
 Platform Support
 ----------------