From patchwork Thu Aug 1 15:54:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 1721 Return-Path: Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 76C13615DF for ; Thu, 1 Aug 2019 17:53:04 +0200 (CEST) X-Originating-IP: 82.58.19.211 Received: from uno.homenet.telecomitalia.it (host211-19-dynamic.58-82-r.retail.telecomitalia.it [82.58.19.211]) (Authenticated sender: jacopo@jmondi.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id CAD0CE0009; Thu, 1 Aug 2019 15:53:03 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Thu, 1 Aug 2019 17:54:15 +0200 Message-Id: <20190801155420.24694-1-jacopo@jmondi.org> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 0/5] android: Add initial Camera HAL implementation X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Aug 2019 15:53:04 -0000 Hello, this series adds an initial implementation of an Android compatbile HAL module that wraps libcamera. The series adds by exposing the Camera state to have it accessible to the HAL and continues tweaking the build system to add a condtional 'android' option. Patches 3 and 4 import from Chrome OS the Android camera HALv3 headers and the Android metadata library, which is linked against then newly created HAL. The last patch finally implements the HAL module itself, split between an HAL module that is used by the Android/Cros camera stack to load the .so file and setup callbacks and a CameraModule and CameraProxy modules, that realize the Android camera HALv3 APIs. The HAL implementation is still immature and incomplete, as it provides only basic functionalities, but it is enough to test capture of a single video stream using Chromium OS camera applications. Thanks j Jacopo Mondi (5): libcamera: camera: Make camera state accessible meson: options: Add 'android' configuration option include: android: Add Android headers from Cros android: Add camera metadata library android: hal: Add Camera3 HAL .../libhardware/include/hardware/camera3.h | 3093 +++++++++++++++++ .../include/hardware/camera_common.h | 916 +++++ .../libhardware/include/hardware/fb.h | 173 + .../libhardware/include/hardware/gralloc.h | 384 ++ .../libhardware/include/hardware/hardware.h | 238 ++ .../android/metadata/camera_metadata_hidden.h | 100 + .../android/metadata/system/camera_metadata.h | 580 ++++ .../metadata/system/camera_metadata_tags.h | 1005 ++++++ .../metadata/system/camera_vendor_tags.h | 158 + .../android/system/core/include/android/log.h | 144 + .../system/core/include/cutils/compiler.h | 44 + .../core/include/cutils/native_handle.h | 69 + .../system/core/include/system/camera.h | 298 ++ .../system/core/include/system/graphics.h | 763 ++++ .../system/core/include/system/window.h | 954 +++++ include/libcamera/camera.h | 16 +- meson.build | 5 + meson_options.txt | 5 + src/android/camera3_hal.cpp | 130 + src/android/camera_hal_manager.cpp | 173 + src/android/camera_hal_manager.h | 56 + src/android/camera_module.cpp | 795 +++++ src/android/camera_module.h | 69 + src/android/camera_proxy.cpp | 181 + src/android/camera_proxy.h | 41 + src/android/meson.build | 18 + src/android/metadata/camera_metadata.c | 1204 +++++++ .../metadata/camera_metadata_tag_info.c | 2811 +++++++++++++++ src/android/tags | 424 +++ src/android/thread_rpc.cpp | 41 + src/android/thread_rpc.h | 56 + src/libcamera/camera.cpp | 33 +- src/libcamera/meson.build | 22 +- src/meson.build | 4 + 34 files changed, 14985 insertions(+), 18 deletions(-) create mode 100644 include/android/hardware/libhardware/include/hardware/camera3.h create mode 100644 include/android/hardware/libhardware/include/hardware/camera_common.h create mode 100644 include/android/hardware/libhardware/include/hardware/fb.h create mode 100644 include/android/hardware/libhardware/include/hardware/gralloc.h create mode 100644 include/android/hardware/libhardware/include/hardware/hardware.h create mode 100644 include/android/metadata/camera_metadata_hidden.h create mode 100644 include/android/metadata/system/camera_metadata.h create mode 100644 include/android/metadata/system/camera_metadata_tags.h create mode 100644 include/android/metadata/system/camera_vendor_tags.h create mode 100644 include/android/system/core/include/android/log.h create mode 100644 include/android/system/core/include/cutils/compiler.h create mode 100644 include/android/system/core/include/cutils/native_handle.h create mode 100644 include/android/system/core/include/system/camera.h create mode 100644 include/android/system/core/include/system/graphics.h create mode 100644 include/android/system/core/include/system/window.h create mode 100644 src/android/camera3_hal.cpp create mode 100644 src/android/camera_hal_manager.cpp create mode 100644 src/android/camera_hal_manager.h create mode 100644 src/android/camera_module.cpp create mode 100644 src/android/camera_module.h create mode 100644 src/android/camera_proxy.cpp create mode 100644 src/android/camera_proxy.h create mode 100644 src/android/meson.build create mode 100644 src/android/metadata/camera_metadata.c create mode 100644 src/android/metadata/camera_metadata_tag_info.c create mode 100644 src/android/tags create mode 100644 src/android/thread_rpc.cpp create mode 100644 src/android/thread_rpc.h --- 2.22.0