Patch Detail
Show a patch.
GET /api/patches/13131/?format=api
{ "id": 13131, "url": "https://patchwork.libcamera.org/api/patches/13131/?format=api", "web_url": "https://patchwork.libcamera.org/patch/13131/", "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": "<20210727135440.53640-2-umang.jain@ideasonboard.com>", "date": "2021-07-27T13:54:39", "name": "[libcamera-devel,1/2] android: Override camera is \"Internal\" provided if found on HAL config", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "e9ed7a73b9d66218eb8a364e01ba810efafb1998", "submitter": { "id": 86, "url": "https://patchwork.libcamera.org/api/people/86/?format=api", "name": "Umang Jain", "email": "umang.jain@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/13131/mbox/", "series": [ { "id": 2284, "url": "https://patchwork.libcamera.org/api/series/2284/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2284", "date": "2021-07-27T13:54:38", "name": "android: Handle internal UVC cameras", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2284/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/13131/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/13131/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 78C79C322C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Jul 2021 13:54:54 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 320CC687C6;\n\tTue, 27 Jul 2021 15:54:54 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E080A60272\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jul 2021 15:54:52 +0200 (CEST)", "from perceval.ideasonboard.com (unknown [103.251.226.156])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0EA9CEE;\n\tTue, 27 Jul 2021 15:54:50 +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=\"I+sIJjeA\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1627394092;\n\tbh=Esmr/ZbgBa9TfiyNbTRGgozpu86UzFDE5faHND2ZG1A=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=I+sIJjeAihdazSUCTo+OV230S7rwyrNY5icmkbkKIaIYu0l+v5ATaFXL+VUr1//A/\n\thvGa1mEXp+A6AR8kxkxtaHWDtVPdEhnrwezKJVHoMe5j1QVm8IDviB0uauhb3VXVAf\n\tYl9nKjvQ3l/nIT5DkydyGec/zQoF796lL8MRZnic=", "From": "Umang Jain <umang.jain@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 27 Jul 2021 19:24:39 +0530", "Message-Id": "<20210727135440.53640-2-umang.jain@ideasonboard.com>", "X-Mailer": "git-send-email 2.31.1", "In-Reply-To": "<20210727135440.53640-1-umang.jain@ideasonboard.com>", "References": "<20210727135440.53640-1-umang.jain@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 1/2] android: Override camera is\n\t\"Internal\" provided if found on 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 marked with CameraLocationExternal [1]\nproperty, since there is no universal information or standard, to\nknow the location of these cameras. However, in the libcamera HAL layer,\nwe can make an informed decision whether its external or internal,\nsimply by checking the presence of it, in the HAL configuration file.\n\nIf the camera is found to be present on the HAL configuration file,\ntreat it as internal and assign its numerical id accordingly.\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 | 10 +++++++++-\n src/android/camera_hal_manager.cpp | 14 ++++++++++++++\n 2 files changed, 23 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 678cde23..ba4e2d15 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -330,7 +330,15 @@ 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 'internal' as found by\n+\t\t\t * CameraHalManager, use its location from\n+\t\t\t * HAL config file.\n+\t\t\t */\n+\t\t\tif (id_ < 1000 && cameraConfigData)\n+\t\t\t\tfacing_ = cameraConfigData->facing;\n+\t\t\telse\n+\t\t\t\tfacing_ = 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 4cd67544..1a9b3413 100644\n--- a/src/android/camera_hal_manager.cpp\n+++ b/src/android/camera_hal_manager.cpp\n@@ -133,6 +133,20 @@ void CameraHalManager::cameraAdded(std::shared_ptr<Camera> cam)\n \t\t}\n \t}\n \n+\t/*\n+\t * In some cases, particularly in UVC cameras, the camera location is defaulted\n+\t * to 'External'. However, if the HAL config file mentions the camera in question,\n+\t * it shall mean that the camera is integrated to the system so, override to treat\n+\t * it correctly as a 'internal' camera.\n+\t */\n+\tif (isCameraNew && isCameraExternal && halConfig_.exists()) {\n+\t\tconst CameraConfigData *configData = halConfig_.cameraConfigData(cam->id());\n+\t\tif (configData && configData->facing != CAMERA_FACING_EXTERNAL) {\n+\t\t\tisCameraExternal = false;\n+\t\t\tid = numInternalCameras_;\n+\t\t}\n+\t}\n+\n \t/* Create a CameraDevice instance to wrap the libcamera Camera. */\n \tstd::unique_ptr<CameraDevice> camera = CameraDevice::create(id, cam);\n \n", "prefixes": [ "libcamera-devel", "1/2" ] }