Patch Detail
Show a patch.
GET /api/1.1/patches/15223/?format=api
{ "id": 15223, "url": "https://patchwork.libcamera.org/api/1.1/patches/15223/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15223/", "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": "<20211228095153.611009-1-roman.o.stratiienko@globallogic.com>", "date": "2021-12-28T09:51:53", "name": "[libcamera-devel] android: Make libyaml dependency optional", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "0691893c1ec2d9af98993a0e3faf1b942a2128c0", "submitter": { "id": 106, "url": "https://patchwork.libcamera.org/api/1.1/people/106/?format=api", "name": "Roman Stratiienko", "email": "r.stratiienko@gmail.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/15223/mbox/", "series": [ { "id": 2867, "url": "https://patchwork.libcamera.org/api/1.1/series/2867/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2867", "date": "2021-12-28T09:51:53", "name": "[libcamera-devel] android: Make libyaml dependency optional", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2867/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15223/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15223/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 88C5DBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 28 Dec 2021 09:52:02 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BA42B6090D;\n\tTue, 28 Dec 2021 10:52:01 +0100 (CET)", "from mail-lj1-x230.google.com (mail-lj1-x230.google.com\n\t[IPv6:2a00:1450:4864:20::230])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 87578604F8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Dec 2021 10:52:00 +0100 (CET)", "by mail-lj1-x230.google.com with SMTP id h21so17894482ljh.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Dec 2021 01:52:00 -0800 (PST)", "from hrk1-lhp-A00621.synapse.com ([195.234.75.141])\n\tby smtp.gmail.com with ESMTPSA id\n\te4sm1491069lfr.221.2021.12.28.01.51.58\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 28 Dec 2021 01:51:59 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"LVBtHRjV\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;\n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=wXXSfJXgmnIcH2zJ7nLde5+GKaQ+HsqVyVby3nVFrJU=;\n\tb=LVBtHRjVvKzYfuyLtNCaEhXQuowEUERSo2FN70+35vEuXmQGSq6bRrgjbkvr1Rs6zl\n\tuQu0COgJhfNd7YCypC0dU0VU6NgsbEAuU7jtcupSDImCGs/OIPz44X7I64SriiiB7gnW\n\t2YYbotuA6j39ePIHS2NtfpCgjgGGm+R8QpgXhB+tZcBqjPtSsSFIZnuXQ3AWr7uQxzgt\n\tqTBP7aDuISdqfgql0vrasfVkjZcIGlN5SYPPHfrptHnmNygR90pePjEk6QLri9UHLJtf\n\t1c3Qc0TNaSlcQPyK4Vww89B0CO6WEWpX7KVDoSeZ/+S37uliF2k+hXMAAil/cgayTrFN\n\tjmzQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=wXXSfJXgmnIcH2zJ7nLde5+GKaQ+HsqVyVby3nVFrJU=;\n\tb=erZy4LxGjWtlcEM+URiH2Kq5Wtp+d3hu8FFlDnPZ7/g+apffyL02yPv5eechdXH4fO\n\tH5m/UCa+CFgnc6ztaNouYGcN1VkzAazl0LCGtqPXz2MdXsUdr8cVWD5ch2UhiFGQGYMU\n\twyCJSrLwb6Bb1CfL2khpIScc7vvTtb0FPeAUu02stLa+msmjkN3/h3G+jHWlq61JKe82\n\tU6JjtNX7SVz0puRuB0McdimCPAozAnl+cnOLhLEyMwtLzTRG8IsXoSgREmenZSXZWTaG\n\t41lfw9DZ0N4mSZx0vHtL6MMvyd/GEQN1vF2IxDcHfc4hE5oe8682CVZk73NK0G4YRcrL\n\tGz/g==", "X-Gm-Message-State": "AOAM5318TEXpBr2U18REeOnepFDdvCqki/U4f/UT9YMIubxvRmfdSkd2\n\tIkTktSQ/YuOhT1cnOF19jmaqRnGmQhg=", "X-Google-Smtp-Source": "ABdhPJyPukBrSmChtCDpqDF8zG4V047IzQddz7vr6ep9Hs7IudJKwLyMxHPOI7vKJjGMTafHsKcXGw==", "X-Received": "by 2002:a2e:8045:: with SMTP id\n\tp5mr11025567ljg.127.1640685119461; \n\tTue, 28 Dec 2021 01:51:59 -0800 (PST)", "From": "Roman Stratiienko <r.stratiienko@gmail.com>", "X-Google-Original-From": "Roman Stratiienko\n\t<roman.o.stratiienko@globallogic.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Tue, 28 Dec 2021 11:51:53 +0200", "Message-Id": "<20211228095153.611009-1-roman.o.stratiienko@globallogic.com>", "X-Mailer": "git-send-email 2.30.2", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH] android: Make libyaml dependency optional", "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>", "Cc": "Roman Stratiienko <roman.o.stratiienko@globallogic.com>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Mainline Android has no libyaml in-tree. Moreover camera_hal_config.cpp\nuses std::filesystem class that is not permitted for AOSP VNDK vendor\nlibraries.\n\nExternal configuration file is no longer mandatory and DTS overlays can\nbe used to specify camera location and rotation.\n\nDo not require external configuration file for cases where meson.build\ncan't find libyaml. Assume that cameras without location specified\nby V4L2 properties are always external.\n\nSigned-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>\n---\n src/android/camera_hal_manager.cpp | 13 +++++++++++++\n src/android/camera_hal_manager.h | 2 ++\n src/android/meson.build | 10 ++++++++--\n 3 files changed, 23 insertions(+), 2 deletions(-)", "diff": "diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp\nindex 5f7bfe265c71b..9e575bfa5204a 100644\n--- a/src/android/camera_hal_manager.cpp\n+++ b/src/android/camera_hal_manager.cpp\n@@ -48,6 +48,7 @@ int CameraHalManager::init()\n {\n \tcameraManager_ = std::make_unique<CameraManager>();\n \n+#ifdef HAVE_LIBYAML\n \t/*\n \t * If the configuration file is not available the HAL only supports\n \t * external cameras. If it exists but it's not valid then error out.\n@@ -56,6 +57,7 @@ int CameraHalManager::init()\n \t\tLOG(HAL, Error) << \"HAL configuration file is not valid\";\n \t\treturn -EINVAL;\n \t}\n+#endif\n \n \t/* Support camera hotplug. */\n \tcameraManager_->cameraAdded.connect(this, &CameraHalManager::cameraAdded);\n@@ -133,6 +135,7 @@ void CameraHalManager::cameraAdded(std::shared_ptr<Camera> cam)\n \t\t}\n \t}\n \n+#ifdef HAVE_LIBYAML\n \t/*\n \t * The configuration file must be valid, and contain a corresponding\n \t * entry for internal cameras. External cameras can be initialized\n@@ -145,6 +148,16 @@ void CameraHalManager::cameraAdded(std::shared_ptr<Camera> cam)\n \t}\n \n \tconst CameraConfigData *cameraConfigData = halConfig_.cameraConfigData(cam->id());\n+#else\n+\t/*\n+\t * Assume that cameras without properties::Location specified are external.\n+\t */\n+\tconst CameraConfigData *cameraConfigData = nullptr;\n+\tif (!isCameraExternal && cameraLocation(cam.get()) < 0) {\n+\t\tisCameraExternal = true;\n+\t\tid = nextExternalCameraId_;\n+\t}\n+#endif\n \n \t/*\n \t * Some cameras whose location is reported by libcamera as external may\ndiff --git a/src/android/camera_hal_manager.h b/src/android/camera_hal_manager.h\nindex a5f8b933a7902..056abbb0d4e54 100644\n--- a/src/android/camera_hal_manager.h\n+++ b/src/android/camera_hal_manager.h\n@@ -56,7 +56,9 @@ private:\n \tCameraDevice *cameraDeviceFromHalId(unsigned int id) LIBCAMERA_TSA_REQUIRES(mutex_);\n \n \tstd::unique_ptr<libcamera::CameraManager> cameraManager_;\n+#ifdef HAVE_LIBYAML\n \tCameraHalConfig halConfig_;\n+#endif\n \n \tconst camera_module_callbacks_t *callbacks_;\n \tstd::vector<std::unique_ptr<CameraDevice>> cameras_ LIBCAMERA_TSA_GUARDED_BY(mutex_);\ndiff --git a/src/android/meson.build b/src/android/meson.build\nindex 75b4bf2070851..1e471c291a1e4 100644\n--- a/src/android/meson.build\n+++ b/src/android/meson.build\n@@ -3,7 +3,6 @@\n android_deps = [\n dependency('libexif', required : get_option('android')),\n dependency('libjpeg', required : get_option('android')),\n- dependency('yaml-0.1', required : get_option('android')),\n libcamera_private,\n ]\n \n@@ -41,7 +40,6 @@ android_hal_sources = files([\n 'camera3_hal.cpp',\n 'camera_capabilities.cpp',\n 'camera_device.cpp',\n- 'camera_hal_config.cpp',\n 'camera_hal_manager.cpp',\n 'camera_metadata.cpp',\n 'camera_ops.cpp',\n@@ -56,6 +54,14 @@ android_hal_sources = files([\n \n android_cpp_args = []\n \n+libyaml_dep = dependency('yaml-0.1', required : false)\n+if libyaml_dep.found()\n+ config_h.set('HAVE_LIBYAML', 1)\n+ android_hal_sources += files([\n+ 'camera_hal_config.cpp',\n+ ])\n+endif\n+\n subdir('cros')\n subdir('mm')\n \n", "prefixes": [ "libcamera-devel" ] }