[libcamera-devel,v5,00/13] libcamera: Introduce SensorConfiguration
mbox series

Message ID 20230921165550.50956-1-jacopo.mondi@ideasonboard.com
Headers show
Series
  • libcamera: Introduce SensorConfiguration
Related show

Message

Jacopo Mondi Sept. 21, 2023, 4:55 p.m. UTC
Hello,
  the series introduces a slightly more formally defined camera sensor model
used to model a SensorConfiguration class, an instance of which is added to
the CameraConfiguration class. The newly introduced class allows to control the
sensor configuration without abusing the RAW stream configuration, reason
being some platforms do not allow to capture RAW frames as they get produced
by the sensor.

Introduce a model for the SensorConfiguration class and implement its handling
on the RaspberryPi pipeline handler as a proof of concept.

Tested with an imx219, configured to capture frames with different sensor
configurations, without using any RAW stream.

On top of the previously sent patches a series from Naush that simplifies the
RaspberryPi validatation and configuration code.

v4->v5:
- Address Laurent's comment on documentation
- Use std::optional<> for CameraConfiguration::sensorConfig
- Add a patch for the cam test application to allow setting a sensor
  configuration

v3->v4:
- Address Laurent's comment on documentation:
  - Replace images from CCS specs with custom ones
  - use .svg instead than .png
  - Describe the model before the parameters
  - Move part of the documentation to doxygen
- Add SensorConfig::populated() to replace operator bool()

v2->v3:
- Address Kieran's comments on documentation
- Add Naush's patches on top

v1->v2:
- Fix spelling in 2/4 as suggested by Naush
- Add Naush's tags

Jacopo Mondi (6):
  documentation: Introduce Camera Sensor Model
  libcamera: camera: Introduce SensorConfiguration
  libcamera: camera_sensor: Support SensorConfiguration
  libcamera: rpi: Handle SensorConfiguration
  libcamera: rpi: Fix wrong comment indentation
  apps: cam: Add option to configure sensor

Naushir Patuck (7):
  libcamera: rpi: Allow platformValidate() to adjust format strides
  libcamera: rpi: Make isRaw/isYuv/isRgb static functions
  libcamera: rpi: Cache rawStreams and outStreams
  libcamera: rpi: Add some helpers to PipelineHandlerBase
  libcamera: rpi: Simplify validate() and configure() for RAW streams
  libcamera: rpi: Change default stream formats
  libcamera: rpi: Simplify validate() and configure() for YUV/RGB
    streams

 .reuse/dep5                                   |    6 +
 Documentation/binning.svg                     | 5053 +++++++++++++++++
 Documentation/camera-sensor-model.rst         |  174 +
 Documentation/index.rst                       |    1 +
 Documentation/meson.build                     |    1 +
 Documentation/sensor_model.svg                | 4870 ++++++++++++++++
 Documentation/skipping.svg                    | 1720 ++++++
 include/libcamera/camera.h                    |   27 +
 include/libcamera/internal/camera_sensor.h    |    5 +
 src/apps/cam/camera_session.cpp               |    7 +
 src/apps/cam/main.cpp                         |    4 +
 src/apps/cam/main.h                           |    1 +
 src/apps/common/stream_options.cpp            |   42 +
 src/apps/common/stream_options.h              |    8 +
 src/libcamera/camera.cpp                      |  144 +
 src/libcamera/camera_sensor.cpp               |   86 +
 .../pipeline/rpi/common/pipeline_base.cpp     |  285 +-
 .../pipeline/rpi/common/pipeline_base.h       |   55 +-
 src/libcamera/pipeline/rpi/vc4/vc4.cpp        |   86 +-
 19 files changed, 12392 insertions(+), 183 deletions(-)
 create mode 100644 Documentation/binning.svg
 create mode 100644 Documentation/camera-sensor-model.rst
 create mode 100644 Documentation/sensor_model.svg
 create mode 100644 Documentation/skipping.svg

--
2.42.0