[libcamera-devel] [PATCH 0/9] Introduce Pipeline configuration preference for IPU3

Han-Lin Chen hanlinchen at chromium.org
Wed Feb 9 08:19:08 CET 2022


Hello,

This patch series is to introduce the pipeline configuration preference
for IPU3. Before the series, IPU3 calculates the ImgU configuration
based on the algorithm from Intel:
https://github.com/intel/intel-ipu3-pipecfg

However, IPU3 seems not well defined with the limitation on ImgU and
leading to configuration failure in some cases. See:
https://bugs.libcamera.org/show_bug.cgi?id=67

Due to this, on ChromeOS, Intel made manual adjusts on the validated
setting for each camera module. The patch series is to introduce the
feature for IPU3, and possibly other platforms with similar issues.

The patch 1-2 is to introduce Option control for user to enable features
which need to be selected before querying capabilities of a camera.

The patch 3 Adds helper class to wrap libyaml for easier reading yaml
files.

The patch 4-9 Supports the Pipeline configuration preference of IPU3 and
default to be enabled on ChromeOS is it's specified on hal_config.yaml.

Han-Lin Chen (9):
  libcamera: Introduce option to customize behavior for a camera module
  libcamera: Add options() and setOptions() operations to Camera
  libcamera: Introduce YamlParser as a helper to parse yaml files
  android: camera_hal_config: Use YamlParser to parse android hal config
  android: Add pipeline_config_file parameter for camera_hal.yaml
  android: Set PipelineConfigFile option if it's supported by the camera
  libcamera: ipu3: Add helper class PipeConfigPreference
  libcamera: ipu3: Support PipelineConfigFile option
  android: Elevate min duration to 30 FPS if it's lower within 2%

 README.rst                                    |   2 +-
 include/libcamera/camera.h                    |   3 +
 include/libcamera/geometry.h                  |   4 +
 include/libcamera/internal/camera.h           |   2 +
 include/libcamera/internal/meson.build        |   1 +
 include/libcamera/internal/pipeline_handler.h |   2 +
 include/libcamera/internal/yaml_parser.h      |  82 ++
 include/libcamera/ipa/ipa_controls.h          |   1 +
 include/libcamera/meson.build                 |   3 +-
 include/libcamera/option_ids.h.in             |  36 +
 src/android/camera_capabilities.cpp           |  31 +-
 src/android/camera_device.cpp                 |  19 +
 src/android/camera_hal_config.cpp             | 344 ++------
 src/android/camera_hal_config.h               |   1 +
 src/android/data/nautilus/camera_hal.yaml     |   2 +
 src/android/data/nautilus/imx258.yaml         | 248 ++++++
 src/android/data/soraka/camera_hal.yaml       |   2 +
 src/android/data/soraka/ov13858.yaml          | 236 ++++++
 src/android/data/soraka/ov5670.yaml           | 242 ++++++
 src/libcamera/camera.cpp                      |  59 ++
 src/libcamera/control_serializer.cpp          |  12 +
 src/libcamera/geometry.cpp                    |  20 +
 src/libcamera/meson.build                     |   3 +
 src/libcamera/option_ids.cpp.in               |  58 ++
 src/libcamera/option_ids.yaml                 |  16 +
 src/libcamera/pipeline/ipu3/ipu3.cpp          | 215 ++++-
 src/libcamera/pipeline/ipu3/meson.build       |   1 +
 .../pipeline/ipu3/pipe_config_pref.cpp        | 285 +++++++
 .../pipeline/ipu3/pipe_config_pref.h          |  80 ++
 src/libcamera/pipeline_handler.cpp            |  26 +
 src/libcamera/yaml_parser.cpp                 | 796 ++++++++++++++++++
 31 files changed, 2563 insertions(+), 269 deletions(-)
 create mode 100644 include/libcamera/internal/yaml_parser.h
 create mode 100644 include/libcamera/option_ids.h.in
 create mode 100644 src/android/data/nautilus/imx258.yaml
 create mode 100644 src/android/data/soraka/ov13858.yaml
 create mode 100644 src/android/data/soraka/ov5670.yaml
 create mode 100644 src/libcamera/option_ids.cpp.in
 create mode 100644 src/libcamera/option_ids.yaml
 create mode 100644 src/libcamera/pipeline/ipu3/pipe_config_pref.cpp
 create mode 100644 src/libcamera/pipeline/ipu3/pipe_config_pref.h
 create mode 100644 src/libcamera/yaml_parser.cpp

-- 
2.35.0.263.gb82422642f-goog



More information about the libcamera-devel mailing list