Show a patch.

GET /api/patches/13171/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 13171,
    "url": "https://patchwork.libcamera.org/api/patches/13171/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/13171/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20210730110154.181370-4-umang.jain@ideasonboard.com>",
    "date": "2021-07-30T11:01:53",
    "name": "[libcamera-devel,v3,3/4] android: Override camera as \"Internal\" provided found in HAL config",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "bc019e7196f12d114cab13e4baedfc2ab56f848a",
    "submitter": {
        "id": 86,
        "url": "https://patchwork.libcamera.org/api/people/86/?format=api",
        "name": "Umang Jain",
        "email": "umang.jain@ideasonboard.com"
    },
    "delegate": {
        "id": 12,
        "url": "https://patchwork.libcamera.org/api/users/12/?format=api",
        "username": "uajain",
        "first_name": "Umang",
        "last_name": "Jain",
        "email": "umang.jain@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/patch/13171/mbox/",
    "series": [
        {
            "id": 2292,
            "url": "https://patchwork.libcamera.org/api/series/2292/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2292",
            "date": "2021-07-30T11:01:50",
            "name": "android: Handle internal UVC cameras",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/2292/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/13171/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/13171/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 4A126C3230\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 30 Jul 2021 11:02:17 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D331D687C6;\n\tFri, 30 Jul 2021 13:02:16 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 11594687C2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 30 Jul 2021 13:02:15 +0200 (CEST)",
            "from perceval.ideasonboard.com (unknown [103.251.226.16])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0BD7D89B;\n\tFri, 30 Jul 2021 13:02:13 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"a2kH8pqH\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1627642934;\n\tbh=Db5/8D5FU9e30rF0XzEswne1fH4C/SxWsdukfN6bL/Y=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=a2kH8pqHicbKstmTqZVe88WW6GPtuaAZENorOhGEymRAiiXlfJPxL0XUqfO7jCaSb\n\tcCxsycdNWIdXomb4MYO1OJ5TReaMl9mSKIiY1p19Cr/8ThnD9qQJrjLQWyNWTK+GWg\n\tI5uPqcxMJbcT++cHbbBqN6FzJl809gHwV+ZzhZ5k=",
        "From": "Umang Jain <umang.jain@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Fri, 30 Jul 2021 16:31:53 +0530",
        "Message-Id": "<20210730110154.181370-4-umang.jain@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.31.1",
        "In-Reply-To": "<20210730110154.181370-1-umang.jain@ideasonboard.com>",
        "References": "<20210730110154.181370-1-umang.jain@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v3 3/4] android: Override camera as\n\t\"Internal\" provided found in HAL config",
        "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": "Currently, all UVC cameras are reported with CameraLocationExternal [1]\nby libcamera-core, since there is no universal information or standard,\nto know the location of these cameras. However, in the libcamera HAL\nlayer, we can make an informed decision whether its external or\ninternal, simply by checking the presence of it in the HAL\nconfiguration file.\n\nIf the camera is found to be present in the HAL configuration file,\ntreat it as internal. CameraHalManager will now assign the numerical id\nof the camera accordingly, based on which the facing of the camera is set\nas well (as per the HAL config file) while initializing the CameraDevice\nwrapper.\n\n[1] 76809320bb1a (\"libcamera: pipeline: uvcvideo: Treat all UVC cameras\n                   as external\")\n\nSigned-off-by: Umang Jain <umang.jain@ideasonboard.com>\n---\n src/android/camera_device.cpp      | 13 ++++++++++++-\n src/android/camera_hal_manager.cpp | 17 +++++++++++++++++\n 2 files changed, 29 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 678cde23..394ebc84 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -330,7 +330,18 @@ int CameraDevice::initialize(const CameraConfigData *cameraConfigData)\n \t\t\tfacing_ = CAMERA_FACING_BACK;\n \t\t\tbreak;\n \t\tcase properties::CameraLocationExternal:\n-\t\t\tfacing_ = CAMERA_FACING_EXTERNAL;\n+\t\t\t/*\n+\t\t\t * If the camera is reported as external, but\n+\t\t\t * the CameraHalManager has overriden it, use\n+\t\t\t * what is reported in the configuration file.\n+\t\t\t * This typically happens for UVC cameras\n+\t\t\t * reported as 'External' by libcamera but\n+\t\t\t * installed in fixed position on the device.\n+\t\t\t */\n+\t\t\tif (id_ < 1000 && cameraConfigData->facing != -1)\n+\t\t\t       facing_ = cameraConfigData->facing;\n+\t\t\telse\n+\t\t\t       facing_ = CAMERA_FACING_EXTERNAL;\n \t\t\tbreak;\n \t\t}\n \ndiff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp\nindex b364f62a..cce98fad 100644\n--- a/src/android/camera_hal_manager.cpp\n+++ b/src/android/camera_hal_manager.cpp\n@@ -145,6 +145,23 @@ void CameraHalManager::cameraAdded(std::shared_ptr<Camera> cam)\n \t}\n \n \tconst CameraConfigData *cameraConfigData = halConfig_.cameraConfigData(cam->id());\n+\n+\t/*\n+\t * Some cameras whose location is reported by libcamera as external may\n+\t * actually be internal to the device. This is common with UVC cameras\n+\t * that are integrated in a laptop. In that case the real location\n+\t * should be specified in the configuration file.\n+\t *\n+\t * If the camera location is external and a configuration\n+\t * entry exists for it, override its location.\n+\t */\n+\tif (isCameraNew && isCameraExternal) {\n+\t\tif (cameraConfigData && cameraConfigData->facing != -1) {\n+\t\t\tisCameraExternal = false;\n+\t\t\tid = numInternalCameras_;\n+\t\t}\n+\t}\n+\n \tif (!isCameraExternal && !cameraConfigData) {\n \t\tLOG(HAL, Error)\n \t\t\t<< \"HAL configuration entry for internal camera \"\n",
    "prefixes": [
        "libcamera-devel",
        "v3",
        "3/4"
    ]
}