[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