[libcamera-devel,0/5] android: Add initial Camera HAL implementation
mbox series

Message ID 20190801155420.24694-1-jacopo@jmondi.org
Headers show
Series
  • android: Add initial Camera HAL implementation
Related show

Message

Jacopo Mondi Aug. 1, 2019, 3:54 p.m. UTC
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