Skip to content

v0.7.2

@kbingham kbingham tagged this 10 Jul 10:12
This release brings 113 commits, and interestingly fixes two separate
saturation handling bugs in both the SoftISP and the Raspberry Pi IPA
independently. In particular the fixes to the SoftISP mean we can look forward
to tuning cameras on laptops and mobile phones with real CCMs now.

Also on the SoftISP 12-bit formats are now supported, black level correction is
'fixed' and there are interesting performance improvements with eGL buffer
caching.

Within the IPA handling, we have added support for Sony IMX678, as well as
Omnivision OV08x40 and OV01A10, and moved to a proportional AGC algorithm for
the simple pipeline handler.

Otherwise we have lots of fixes and improvements to Raspberry Pi, and ongoing
cleanup and improvements to many areas of core. It may be noteworthy for
distributions that the virtual pipeline handler is now enabled by default from
meson.

Contributors:

    33  Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    24  Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
    12  Robert Mader <robert.mader@collabora.com>
     7  Kieran Bingham <kieran.bingham@ideasonboard.com>
     6  Bryan O'Donoghue <bryan.odonoghue@linaro.org>
     6  David Plowman <david.plowman@raspberrypi.com>
     6  Javier Tia <floss@jetm.me>
     3  Milan Zamazal <mzamazal@redhat.com>
     3  Stefan Klug <stefan.klug@ideasonboard.com>
     2  Jai Luthra <jai.luthra@ideasonboard.com>
     2  Qi Hou <qi.hou@nxp.com>
     1  Bogdan Radulescu <bogdan@nimblex.net>
     1  Daniel Scally <dan.scally@ideasonboard.com>
     1  Jacopo Mondi <jacopo.mondi@ideasonboard.com>
     1  Naushir Patuck <naush@raspberrypi.com>
     1  Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
     1  Shaunak Datar <shaunakkdatar@gmail.com>
     1  Stuart J Mackintosh <sjm@opendigital.cc>
     1  will whang <will@willwhang.com>
     1  zcy <tju_cooyun@163.com>

113 commits,  141 files changed, 5230 insertions(+), 1102 deletions(-)

Integration Overview:

ABI:

The abi-compliance checker reports 100% *binary* compatibility in this release,
so the SONAME is maintained at 0.7.

Validating ABI compatibility between v0.7.1 and v0.7.2
Preparing, please wait ...
Comparing ABIs ...
Comparing APIs ...
Creating compatibility report ...
Binary compatibility: 100%
Source compatibility: 97.9%
Total binary compatibility problems: 0, warnings: 2
Total source compatibility problems: 13, warnings: 2

These source compatibility problems are bisected to 597a5bb97bf9 ("libcamera:
bound_method: Use std::apply") and this looks to be a false positive and as far
as I can tell do not actually prevent any external application compiling
against libcamera.

The following commits in this release relate to either a bug fix or an
improvement to an existing commit.

bugs:
 - libcamera: egl: Don't depend on libdrm
   - Fixes: 7350d6cc5dd1 ("Revert "libcamera: software_isp: gbm: Add a GBM helper class for GPU surface access"")
 - libcamera: base: regex: Fix preprocessor check
   - Link: https://github.com/llvm/llvm-project/commit/568c23bbd3303518c5056d7f03444dae4fdc8a9c
 - test: controls: control_info_map: Fix libc++ warning
   - Link: https://github.com/llvm/llvm-project/commit/9a03a30706cca40b93146f379fb5faa75d417af5
 - ipa: rpi: agc: Clamp digital gain to avoid saturation issues
   - Fixes: 17f9912cff85 ("ipa: rpi: agc: Calculate digital gain in process()")
 - py: Use smart holder for `Camera` if available
   - Link: https://github.com/pybind/pybind11/issues/6064
 - pipeline: rpi: Print old color space before updating
   - Fixes: 71bbf10a2f79 ("libcamera: rpi: Add some helpers to PipelineHandlerBase")
 - libcamera: framebuffer: Reword documentation about cookie
   - Closes: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/331
 - ipa: libipa: Handle missing YAML nodes in Interpolator
   - Closes: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/323
 - software_isp: debayer_egl: Consider border for scaling
   - Fixes: f520b29fe9e6 ("libcamera: software_isp: debayer_egl: Add an eGL Debayer class")
 - py: examples: simple-continuous-capture: Fix comment
   - Fixes: d6cfb080604a ("py: examples: Add simple-continuous-capture.py")

And the following updates have been made in this release, grouped by category:

core:
 - include: linux: Move mali-c55-config.h header to correct location
 - utils: update-kernel-headers: Create destination directory
 - utils: update-kernel-headers: Add drm/drm.h and drm/drm_mode.h
 - utils: update-kernel-headers: Add linux/media/arm/mali-c55-config.h
 - include: linux: Update to Linux v7.0
 - libcamera: egl: Don't depend on libdrm
 - libcamera: base: Restore defopt
 - treewide: Use utils::defopt
 - libcamera: base: signal: Disallow rvalue references
 - libcamera: base: bound_method: Strip qualifiers in argument pack
 - libcamera: base: bound_method: Forward when invoking
 - subprojects: libpisp: Update to v1.5.0
 - libcamera: base: regex: Fix preprocessor check
 - libcamera: bound_method: Use std::apply
 - libcamera: framebuffer: Reword documentation about cookie
 - libcamera: base: log: Remove log level check for "Fatal" messages
 - libcamera: base: log: Move abort logic into separate type
 - libcamera: matrix: Rename data validation function
 - libcamera: vector: Rename data validation function
 - libcamera: Drop 'yaml' prefix from ValueNode variables
 - libcamera: global_configuration: Drop "YAML" from function documentation
 - libcamera: Replace last mentions of YAML
 - libcamera: vector: Replace class with typename
 - libcamera: vector: Swap order of arguments to apply()
 - libcamera: vector: Support multiple scalar arguments to apply()
 - libcamera: vector: Add clamp() member function
 - libcamera: vector: Replace custom lambdas with standard functions
 - libcamera: v4l2_device: setControls(): Do not return index
 - libcamera: v4l2_device: 0 is not a generic error index
 - libcamera: request: Inline `Private::hasPendingBuffers()`
 - libcamera: request: hasPendingBuffers(): Simplify
 - libcamera: camera: Add missing `span.h` include
 - meson: Build virtual pipeline by default
 - utils: Merge shader header generation scripts
 - utils: Rename and move shader header generation script
 - libcamera: egl: Replace pointer and length with span for shader sources
 - libcamera: egl: Add new helper attachTextureToFBO
 - libcamera: egl: Add createOutputTexture2D
 - libcamera: egl: Add activateBindTexture
 - libcamera: egl: Add updateTexture2D
 - libcamera: converter: converter_dw100: Refactor dewarp param handling
 - libcamera: converter: converter_dw100: Allow to transform between different camera matrices
 - include: linux: Update to Linux 7.1

softisp:
 - libcamera: software_isp: #include cleanup
 - libcamera: software_isp: Normalize statistics sums to 8-bit
 - libcamera: software_isp: Drop redundant sumShift_ guard in finishFrame
 - libcamera: software_isp: Use Vector operator>>= in finishFrame
 - debayer_egl: Include stats computation into benchmark
 - debayer_egl: Sync output buffers after processing stats
 - egl: Add GL format parameter to eGLImage constructor
 - egl: Remove some parameters from createTexture2D()
 - egl: eGLImage: Add flag to remember dmabuf import fails
 - libcamera: swstats_cpu: Take MappedFrameBuffer in processFrame()
 - debayer_egl: Implement dmabuf import for input buffers
 - libcamera: software_isp: debayer_egl: Demote unsupported format log to Info
 - libcamera: software_isp: Support 12-bit CSI2 packed raw bayer formats
 - software_isp: debayer_egl: Request input buffer alignment of 256 bytes
 - egl: Log the GL-driver
 - software_isp: debayer_egl: Consider border for scaling
 - libcamera: software_isp: Probe EGL availability before creating DebayerEGL
 - libcamera: software_isp: Fix black level application in GPU ISP
 - libcamera: software_isp: Fix black level handling in CPU ISP
 - softisp: Split AWB from Combined Matrix
 - shaders: bayer: Use native matrix multiplication
 - libcamera: software_isp: Replace open-coded buffer cancellation
 - libcamera: shaders: Move header generation to shaders directory
 - libcamera: shaders: Replace C array with std::array
 - libcamera: software_isp: debayer_egl: Pass eglImage as parameter to setShaderVariables
 - libcamera: software_isp: debayer_egl: Implement input/output frame caching mechanism

ipa:
 - ipa: simple: agc: Replace bang-bang controller with proportional
 - ipa: libipa: camera_sensor_helper: Add OV2740 black level
 - ipa: libipa: v4l2_params: Fix code example in doc
 - ipa: libipa: v4l2_params: Mention ISP in file one-line description
 - ipa: libipa: v4l2_params: Enforce uint16_t for id_type underlying type
 - ipa: libipa: v4l2_params: Move non-template code to new base class
 - libcamera: libipa: Add right-shift operators to Vector
 - ipa: rpi: agc: Clamp digital gain to avoid saturation issues
 - ipa: libipa: Handle missing YAML nodes in Interpolator
 - ipa: rkisp1: ccm: Drop unused parseYaml() function declaration
 - ipa: rkisp1: cproc: Fix brightness and contrast value handling
 - libcamera: libipa: camera_sensor: Add Sony IMX678 properties
 - ipa: rpi: Add cam_helper for Sony IMX678
 - ipa: rkisp1: awb: Utilise clamp function
 - ipa: rpi: Improve control over which sensor modes require "debinning"
 - ipa: libipa: camera_sensor_helper: Add OV01A10
 - ipa: camera_sensor_helper: Add black levels for OV5693
 - ipa: libipa: camera_sensor_helper: add ov08x40

apps:
 - android: Disable build on platforms without mbrtoc16()
 - apps: common: options: Use character literal instead of string
 - py: Use smart holder for `Camera` if available
 - apps: lc-compliance: Reduce test repetition
 - py: examples: simple-continuous-capture: Fix comment
 - py: cam: Remove unnecessary check
 - gstreamer: allocator: get_pool_size(): Fix return value
 - gstreamer: Use `FrameBuffer` cookie to associate with `GstBuffer`

pipeline:
 - pipeline: rpi: Simplify delayed controls
 - pipeline: rpi: Make control lists in requests properly atomic
 - pipeline: rpi: Fix crash when configuring timeout
 - pipeline: rpi: Print old color space before updating
 - libcamera: pipeline: imx8-isi: Use `completeBuffer()` return value
 - libcamera: pipeline: ipu3: Remove `setRequest()` calls
 - libcamera: pipeline: mali-c55: Add missing `<queue>` include
 - libcamera: pipeline: rkisp1: Simplify dewarper configuration
 - pipeline: virtual: Move libjpeg requirement to libyuv subproject
 - pipeline: rpi: pisp: Ensure we don't run our SW correction with packed
 - pipeline: rpi: pisp: Fix colours for NV21 and NV61 pixel formats
 - pipeline: rpi: pisp: Remove duplicated format entry
 - controls: rpi: Add ControlListSequence control

test:
 - test: controls: control_info_map: Fix libc++ warning

documentation:
 - Documentation: Reorganize the index of the "For Developers" section
 - Documentation: Move platform support to user documentation
 - Documentation: architecture: Detail policy on dependencies
 - Documentation: coding-style: Document rule about indirect includes

Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Assets 2
Loading