[libcamera-devel,0/7] android: Add support for HAL configuration file
mbox series

Message ID 20210324112527.63701-1-jacopo@jmondi.org
Headers show
Series
  • android: Add support for HAL configuration file
Related show

Message

Jacopo Mondi March 24, 2021, 11:25 a.m. UTC
Hello
   this series add support for parsing an HAL configuration file
using libyaml.

An example configurtion file for Soraka is provided.

Thanks
  j

Jacopo Mondi (6):
  libcamera: List dependency for Android Camera3 HAL
  libcamera: android: Add libyaml dependency
  android: Add CameraHalConfig class
  android: camera_hal_manager: Use CameraHalConfig
  android: camera_device: Get properties from config
  android: soraka: Add camera HAL configuration

Kieran Bingham (1):
  src: meson: Define system paths

 README.rst                              |   3 +
 src/android/camera_device.cpp           |  71 +++--
 src/android/camera_device.h             |   8 +-
 src/android/camera_hal_config.cpp       | 385 ++++++++++++++++++++++++
 src/android/camera_hal_config.h         |  54 ++++
 src/android/camera_hal_manager.cpp      |   9 +-
 src/android/camera_hal_manager.h        |   3 +
 src/android/data/soraka/camera_hal.yaml |  14 +
 src/android/meson.build                 |   2 +
 src/ipa/meson.build                     |  17 +-
 src/meson.build                         |   9 +
 11 files changed, 532 insertions(+), 43 deletions(-)
 create mode 100644 src/android/camera_hal_config.cpp
 create mode 100644 src/android/camera_hal_config.h
 create mode 100644 src/android/data/soraka/camera_hal.yaml

--
2.30.0

Comments

Laurent Pinchart March 26, 2021, 3:18 a.m. UTC | #1
Hi Jacopo and Kieran,

Thank you for the patch.

On Wed, Mar 24, 2021 at 12:25:23PM +0100, Jacopo Mondi wrote:
> From: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> Define libcamera specific system paths for use within the library code
> base. These can be used to identify system configuration files and
> shared data.
> 
> Also, make use of the new system path variables and map the ipa paths
> upon the libcamera system path, making use of the new shorter syntax for
> join_paths().
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> ---
> v2:
>  - Add comments explaining why we can't use prefix throughout
>  - Squash src/meson and src/ipa/meson changes together
> 
> v3:
>  - Remove the config_h additions until they are needed
>  - Remove the convenience variables, and use get_option() directly
> ---
>  src/ipa/meson.build | 17 ++++++++++-------
>  src/meson.build     |  9 +++++++++
>  2 files changed, 19 insertions(+), 7 deletions(-)
> 
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index df385eae84d3..b3f24f42f8af 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -1,19 +1,19 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> -ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
> -ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
> -ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> -
>  ipa_includes = [
>      libcamera_includes,
>  ]
>  
> +ipa_install_dir = libcamera_libdir
> +ipa_data_dir = libcamera_datadir / 'ipa'
> +ipa_sysconf_dir = libcamera_sysconfdir / 'ipa'
> +
>  config_h.set('IPA_CONFIG_DIR',
> -             '"' + join_paths(get_option('prefix'), ipa_sysconf_dir) +
> -             ':' + join_paths(get_option('prefix'), ipa_data_dir) + '"')
> +             '"' + get_option('prefix') / ipa_sysconf_dir +
> +             ':' + get_option('prefix') / ipa_data_dir + '"')
>  
>  config_h.set('IPA_MODULE_DIR',
> -             '"' + join_paths(get_option('prefix'), ipa_install_dir) + '"')
> +             '"' + get_option('prefix') / ipa_install_dir + '"')
>  
>  subdir('libipa')
>  
> @@ -22,6 +22,9 @@ ipa_sign = files('ipa-sign.sh')
>  ipas = ['ipu3', 'raspberrypi', 'rkisp1', 'vimc']
>  ipa_names = []
>  
> +# The ipa-sign-install.sh script which uses the ipa_names variable will itself
> +# prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name, therefore we
> +# must not include the prefix string here.
>  foreach pipeline : pipelines
>      if ipas.contains(pipeline)
>          subdir(pipeline)
> diff --git a/src/meson.build b/src/meson.build
> index c908b0675773..208ae45b5bef 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -1,5 +1,14 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> +# Handle system paths

s/Handle/Cache/ ?

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> +libcamera_datadir = get_option('datadir') / 'libcamera'
> +libcamera_libdir = get_option('libdir') / 'libcamera'
> +libcamera_sysconfdir = get_option('sysconfdir') / 'libcamera'
> +
> +config_h.set('LIBCAMERA_DATA_DIR', '"' + get_option('prefix') / libcamera_datadir + '"')
> +config_h.set('LIBCAMERA_SYSCONF_DIR', '"' + get_option('prefix') / libcamera_sysconfdir + '"')
> +
> +# Module Signing
>  openssl = find_program('openssl', required : true)
>  if openssl.found()
>      ipa_priv_key = custom_target('ipa-priv-key',