Patch Detail
Show a patch.
GET /api/1.1/patches/20866/?format=api
{ "id": 20866, "url": "https://patchwork.libcamera.org/api/1.1/patches/20866/?format=api", "web_url": "https://patchwork.libcamera.org/patch/20866/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20240809145304.537551-6-dan.scally@ideasonboard.com>", "date": "2024-08-09T14:53:02", "name": "[5/7] Documentation: Remove camera stack from introduction.rst", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "655de3bcb951020c98818f81bdfbc82baadd20e0", "submitter": { "id": 156, "url": "https://patchwork.libcamera.org/api/1.1/people/156/?format=api", "name": "Dan Scally", "email": "dan.scally@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/20866/mbox/", "series": [ { "id": 4507, "url": "https://patchwork.libcamera.org/api/1.1/series/4507/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4507", "date": "2024-08-09T14:52:57", "name": "Documentation improvements", "version": 1, "mbox": "https://patchwork.libcamera.org/series/4507/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/20866/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/20866/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E66B5C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 9 Aug 2024 14:53:31 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 25034633C4;\n\tFri, 9 Aug 2024 16:53:31 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 17445633BA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 9 Aug 2024 16:53:21 +0200 (CEST)", "from mail.ideasonboard.com\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CD46EA38;\n\tFri, 9 Aug 2024 16:52:26 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ckgJmYFM\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723215146;\n\tbh=fBJo0HqYis3vb+mjiBdAI4u6r784+ptV3qnZltzs5w4=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=ckgJmYFMnTmTP3nC5OGhGQLOsVJ12j+BNfJodeOgjaBf9mYhH+J7nfnoxuA2fXsC8\n\tkbmlufph0MVfJBjz9B56VYDRjDko97ujHDwE898jcEGy/S6UGVOVJRzc6fQf3p37ps\n\t+yrjZ5Bo2N19mrrCkq9k2Od1Iyy7UjpAKyNvh9Hc=", "From": "Daniel Scally <dan.scally@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Daniel Scally <dan.scally@ideasonboard.com>", "Subject": "[PATCH 5/7] Documentation: Remove camera stack from introduction.rst", "Date": "Fri, 9 Aug 2024 15:53:02 +0100", "Message-Id": "<20240809145304.537551-6-dan.scally@ideasonboard.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20240809145304.537551-1-dan.scally@ideasonboard.com>", "References": "<20240809145304.537551-1-dan.scally@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "The Camera Stack section of the introduction is largely a duplicate\nof the section broken out from docs.rst. Remove it from the\nintroduction.rst file and consolidate anything that wasn't duplicated\ninto camera_stack.rst.\n\nSigned-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n---\n Documentation/camera_stack.rst | 31 +++++++\n Documentation/guides/introduction.rst | 112 +-------------------------\n 2 files changed, 33 insertions(+), 110 deletions(-)", "diff": "diff --git a/Documentation/camera_stack.rst b/Documentation/camera_stack.rst\nindex 381385cb..6045ed91 100644\n--- a/Documentation/camera_stack.rst\n+++ b/Documentation/camera_stack.rst\n@@ -76,3 +76,34 @@ The camera stack comprises four software layers. From bottom to top:\n * The applications and upper level frameworks are based on the\n libcamera framework or libcamera adaptation, and are outside of\n the scope of the libcamera project.\n+\n+V4L2 Compatibility Layer\n+ V4L2 compatibility is achieved through a shared library that traps all\n+ accesses to camera devices and routes them to libcamera to emulate high-level\n+ V4L2 camera devices. It is injected in a process address space through\n+ ``LD_PRELOAD`` and is completely transparent for applications.\n+\n+ The compatibility layer exposes camera device features on a best-effort basis,\n+ and aims for the level of features traditionally available from a UVC camera\n+ designed for video conferencing.\n+\n+Android Camera HAL\n+ Camera support for Android is achieved through a generic Android camera HAL\n+ implementation on top of libcamera. The HAL implements features required by\n+ Android and out of scope from libcamera, such as JPEG encoding support.\n+\n+ This component is used to provide support for ChromeOS platforms\n+\n+GStreamer element (gstlibcamerasrc)\n+ A `GStreamer element`_ is provided to allow capture from libcamera supported\n+ devices through GStreamer pipelines, and connect to other elements for further\n+ processing.\n+\n+ Development of this element is ongoing and is limited to a single stream.\n+\n+Native libcamera API\n+ Applications can make use of the libcamera API directly using the C++\n+ API. An example application and walkthrough using the libcamera API can be\n+ followed in the :doc:`Application writer's guide </guides/application-developer>`\n+\n+.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html\ndiff --git a/Documentation/guides/introduction.rst b/Documentation/guides/introduction.rst\nindex 1898d5fe..e419eb9d 100644\n--- a/Documentation/guides/introduction.rst\n+++ b/Documentation/guides/introduction.rst\n@@ -26,10 +26,8 @@ desirable results from the camera.\n .. _Media Controller: https://www.linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/mediactl/media-controller.html\n \n \n-In this developers guide, we will explore the `Camera Stack`_ and how it is\n-can be visualised at a high level. The current `Platform Support`_ is\n-detailed, as well as an overview of the `Licensing`_ requirements of the\n-project.\n+In this developers guide the current `Platform Support`_ is detailed, as well as\n+an overview of the `Licensing`_ requirements of the project.\n \n This introduction is followed by a walkthrough tutorial to newcomers wishing to\n support a new platform with the `Pipeline Handler Writers Guide`_ and for those\n@@ -41,112 +39,6 @@ provides a tutorial of the key APIs exposed by libcamera.\n \n .. TODO: Correctly link to the other articles of the guide\n \n-Camera Stack\n-------------\n-\n-The libcamera library is implemented in userspace, and makes use of underlying\n-kernel drivers that directly interact with hardware.\n-\n-Applications can make use of libcamera through the native `libcamera API`_'s or\n-through an adaptation layer integrating libcamera into a larger framework.\n-\n-.. _libcamera API: https://www.libcamera.org/api-html/index.html\n-\n-::\n-\n- Application Layer\n- / +--------------+ +--------------+ +--------------+ +--------------+\n- | | Native | | Framework | | Native | | Android |\n- | | V4L2 | | Application | | libcamera | | Camera |\n- | | Application | | (gstreamer) | | Application | | Framework |\n- \\ +--------------+ +--------------+ +--------------+ +--------------+\n-\n- ^ ^ ^ ^\n- | | | |\n- | | | |\n- v v | v\n- Adaptation Layer |\n- / +--------------+ +--------------+ | +--------------+\n- | | V4L2 | | gstreamer | | | Android |\n- | | Compatibility| | element | | | Camera |\n- | | (preload) | |(libcamerasrc)| | | HAL |\n- \\ +--------------+ +--------------+ | +--------------+\n- |\n- ^ ^ | ^\n- | | | |\n- | | | |\n- v v v v\n- libcamera Framework\n- / +--------------------------------------------------------------------+\n- | | |\n- | | libcamera |\n- | | |\n- \\ +--------------------------------------------------------------------+\n-\n- ^ ^ ^\n- Userspace | | |\n- --------------------- | ---------------- | ---------------- | ---------------\n- Kernel | | |\n- v v v\n-\n- +-----------+ +-----------+ +-----------+\n- | Media | <--> | Video | <--> | V4L2 |\n- | Device | | Device | | Subdev |\n- +-----------+ +-----------+ +-----------+\n-\n-The camera stack comprises of four software layers. From bottom to top:\n-\n-* The kernel drivers control the camera hardware and expose a low-level\n- interface to userspace through the Linux kernel V4L2 family of APIs\n- (Media Controller API, V4L2 Video Device API and V4L2 Subdev API).\n-\n-* The libcamera framework is the core part of the stack. It handles all control\n- of the camera devices in its core component, libcamera, and exposes a native\n- C++ API to upper layers.\n-\n-* The libcamera adaptation layer is an umbrella term designating the components\n- that interface to libcamera in other frameworks. Notable examples are the V4L2\n- compatibility layer, the gstreamer libcamera element, and the Android camera\n- HAL implementation based on libcamera which are provided as a part of the\n- libcamera project.\n-\n-* The applications and upper level frameworks are based on the libcamera\n- framework or libcamera adaptation, and are outside of the scope of the\n- libcamera project, however example native applications (cam, qcam) are\n- provided for testing.\n-\n-\n-V4L2 Compatibility Layer\n- V4L2 compatibility is achieved through a shared library that traps all\n- accesses to camera devices and routes them to libcamera to emulate high-level\n- V4L2 camera devices. It is injected in a process address space through\n- ``LD_PRELOAD`` and is completely transparent for applications.\n-\n- The compatibility layer exposes camera device features on a best-effort basis,\n- and aims for the level of features traditionally available from a UVC camera\n- designed for video conferencing.\n-\n-Android Camera HAL\n- Camera support for Android is achieved through a generic Android camera HAL\n- implementation on top of libcamera. The HAL implements features required by\n- Android and out of scope from libcamera, such as JPEG encoding support.\n-\n- This component is used to provide support for ChromeOS platforms\n-\n-GStreamer element (gstlibcamerasrc)\n- A `GStreamer element`_ is provided to allow capture from libcamera supported\n- devices through GStreamer pipelines, and connect to other elements for further\n- processing.\n-\n- Development of this element is ongoing and is limited to a single stream.\n-\n-Native libcamera API\n- Applications can make use of the libcamera API directly using the C++\n- API. An example application and walkthrough using the libcamera API can be\n- followed in the `Application Writers Guide`_\n-\n-.. _GStreamer element: https://gstreamer.freedesktop.org/documentation/application-development/basics/elements.html\n-\n Platform Support\n ----------------\n \n", "prefixes": [ "5/7" ] }