[PATCH v4 00/15] Add global configuration file

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Sep 25 13:57:45 CEST 2024


Quoting Milan Zamazal (2024-09-25 10:58:32)
> This patch series introduces global configuration file for libcamera, to
> provide runtime configuration means other than environment variables.
> Instead of, or in addition to, the growing list of configuration
> environment variables, the whole configuration can be specified in a
> single configuration file.  This is both simpler and more flexible.
> 
> This is not a replacement for specific configuration files already
> present in libcamera.
> 
> The patches implement what is needed to introduce a configuration file
> that can handle the current environment variables and software ISP
> TODOs.  They demonstrate how to deal with the key points that must be
> considered.  See commit messages for more details.
> 
> The configuration file is a YAML file.  It is looked up in user’s home
> directory or, if not present, in system-wide libcamera directories.
> Environment variables, if set, still take precedence.
> 
> This patch series is not exhaustive, there can be future enhancements,
> most notably configuration file validation to avoid confusions caused by
> typos etc.
> 
> Not everything has been tested because some of the patches are related
> to specific hardware.

It looks like this breaks on the unit tests:

 - https://gitlab.freedesktop.org/camera/libcamera/-/jobs/64126236

And I re-ran incase it was spurious, but that looks like it's going to
fail too:

 - https://gitlab.freedesktop.org/camera/libcamera/-/jobs/64131685

Could you check/take a look please?

--
Kieran


> 
> Changes in v4:
> - Rebased on current master.
> - Configuration option for LIBCAMERA_IPA_PROXY_PATH added.
> - Added a patch to include stdlib.h instead of cstdlib in yaml_parser.cpp.
> 
> Changes in v3:
> - Added a configuration item for the newly introduced
>   LIBCAMERA_PIPELINES_MATCH_LIST variable.
> - A minor indentation fix.
> - Fixed `pipelines.' x `pipeline.' configuration item naming mismatch.
> - Tuning files are looked up now by particular cameras attached rather than
>   being specified for the whole pipeline.
> - Helpers use std::string& instead of char* for confPath arguments.
> - Protection against returning YamlObject::empty as a regular value (the
>   problem has been probably exposed by addition of
>   LIBCAMERA_PIPELINES_MATCH_LIST).
> 
> Changes in v2:
> - Rebased on master.
> - Various cleanups, documentation improvements and minor fixes.
> - Configuration option for LIBCAMERA_RPI_TUNING_FILE added (Naush).
> - Two more patches for software ISP configuration added.
> 
> Milan Zamazal (15):
>   config: Introduce global runtime configuration
>   yaml: Include stdlib.h instead of cstdlib
>   config: Move global configuration to base
>   config: Look up logging levels in the configuration file
>   config: Add configuration retrieval helpers
>   config: Look up log file in configuration file
>   config: Look up log color configuration in configuration file
>   config: Look up rpi paths in configuration file
>   config: Look up IPA configurables in configuration file
>   config: Look up RkISP1 tuning file in configuration file
>   config: Look up pipelines match list in configuration file
>   config: Allow enabling software ISP in runtime
>   config: Add global configuration file documentation
>   libcamera: software_isp: Make input buffer copying configurable
>   libcamera: software_isp: Make measurement configurable
> 
>  Documentation/documentation-contents.rst      |   2 +-
>  Documentation/index.rst                       |   4 +-
>  Documentation/meson.build                     |   2 +-
>  ...ariables.rst => runtime_configuration.rst} | 119 ++++++++--
>  .../libcamera/internal/global_configuration.h |  67 ++++++
>  include/libcamera/internal/meson.build        |   1 +
>  src/libcamera/base/global_configuration.cpp   | 219 ++++++++++++++++++
>  src/libcamera/base/log.cpp                    |  24 +-
>  src/libcamera/base/meson.build                |  15 ++
>  src/libcamera/{ => base}/yaml_parser.cpp      |   2 +-
>  src/libcamera/camera_manager.cpp              |  19 +-
>  src/libcamera/ipa_manager.cpp                 |  23 +-
>  src/libcamera/ipa_proxy.cpp                   |  16 +-
>  src/libcamera/meson.build                     |  14 --
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  20 +-
>  .../pipeline/rpi/common/pipeline_base.cpp     |  18 +-
>  src/libcamera/pipeline/simple/simple.cpp      |  12 +
>  src/libcamera/process.cpp                     |  11 +-
>  src/libcamera/software_isp/TODO               |  36 ---
>  src/libcamera/software_isp/debayer_cpu.cpp    |  30 ++-
>  src/libcamera/software_isp/debayer_cpu.h      |   7 +-
>  21 files changed, 549 insertions(+), 112 deletions(-)
>  rename Documentation/{environment_variables.rst => runtime_configuration.rst} (61%)
>  create mode 100644 include/libcamera/internal/global_configuration.h
>  create mode 100644 src/libcamera/base/global_configuration.cpp
>  rename src/libcamera/{ => base}/yaml_parser.cpp (99%)
> 
> -- 
> 2.44.1
>


More information about the libcamera-devel mailing list