[libcamera-devel] libcamera v0.2.0

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Jan 9 18:37:50 CET 2024


libcamera v0.2.0 release has been tagged and pushed:

Please note that this contains ABI, and API changes that will need
attention for anyone migrating to this new version.

Archives are available from:

 - https://gitlab.freedesktop.org/camera/libcamera/-/releases/v0.2.0

## ABI Compliance

abi-compliance-checker reports  94.6% binary compatibilty and 97.6%
source compatibility between 0.1.0 and 0.2.0. The SONAME has been
updated accordingly and applications must be relinked against this
version of libcamera.

 - Binary compatibility: 94.6%
 - Source compatibility: 97.6%
 - Total binary compatibility problems: 5, warnings: 2
 - Total source compatibility problems: 3, warnings: 3

The key ABI/API differences here are:

 - AeFlicker

   The control "SceneFlicker" has been removed and replaced by
   AeFlickerMode, AeFlickerDetected and AeFlickerPeriod.

 - struct CameraConfiguration

   - Field transform has been removed from the middle position of this
     structural type.
   - Field orientation has been added at the middle position of this
     structural type.
   - Field sensorConfig has been added at the middle position of this
     structural type.
   - Size of this type has been changed from 40 bytes to 96 bytes.

## Bugs

The following bugs are resolved with this release:

https://bugs.libcamera.org:
 - Bug 91 - libcamerasrc is missing EOS handling
 - Bug 199 - Install error on Ubuntu for Orange Pi 5
 - Bug 205 - ipa_proxy_worker.cpp fails to compile if an interface
             function has two arguments of SharedFD type
 - Bug 206 - Fails to build with Python 3.12

 https://github.com/raspberrypi/libcamera/issues:

 - Assertion '!this->empty()' failed in libcamera::utils::Duration -
   libcamera-tools 0.0.5-1 #64


## Integration overview

core:
 - utils: checkstyle.py: Treat Malformed trailers as a CommitIssue
 - utils: checkstyle.py: Initialise staged trailers
 - utils: checkstyle.py: Derive Amendment from Commit
 - utils: checkstyle.py: Check trailers for Amendment commits
 - libcamera: controls: Add controls for AEC/AGC flicker avoidance
 - libcamera: yaml: Increase the YAML parser limit
 - utils: checkstyle.py: Extract title and trailers with one command
 - meson: Correctly locate libc++
 - Documentation: theme: Fix compilation with Sphinx >= 7.0.0
 - libcamera: Remove duplicated SortIncludes in `.clang-format`
 - libcamera: stream: Document stride will be 0 for compressed formats
 - README.rst: Drop recommendation to install meson using pip3
 - meson: Don't set _FORTIFY_SOURCE for ChromeOS
 - meson: Simplify check for _FORTIFY_SOURCE
 - libcamera: formats: Fix typo in YV444 V4L2PixelFormat listing
 - Documentation: Introduce Camera Sensor Model
 - libcamera: camera: Introduce SensorConfiguration
 - libcamera: camera_sensor: Support SensorConfiguration
 - libcamera: converter: A few fixes to ConverterFactoryBase documentation
 - libcamera: converter: drop unnecessary #include directive
 - utils: update-kernel-headers: Support git worktrees
 - libcamera: camera_sensor: Cache rotationTransform_
 - libcamera: camera: Introduce Orientation
 - Documentation: Add figures to document Orientation
 - libcamera: properties: Make 'Rotation' the mounting rotation
 - libcamera: transform: Add functions to convert Orientation
 - libcamera: transform: Invert operator*() operands
 - libcamera: transform: Add operations with Orientation
 - test: Add unit test for Transform and Orientation
 - libcamera: Use CameraConfiguration::orientation
 - libcamera: camera_sensor: Cache mounting orientation instead of transform
 - libcamera: transform: Fold transformToOrientation() in its only caller
 - libcamera: transform: Make the transformFromOrientation() function static
 - libcamera: controls: Add controls for HDR
 - libcamera: camera_sensor: Only access V4L_CID_HBLANK if existing
 - Documentation: Add code of conduct
 - Documentation: code-of-conduct: Convert to reStructuredText
 - Documentation: code-of-conduct: Add license information
 - Documentation: code-of-conduct: Add contact information
 - Documentation: contributing: Integrate the code of conduct
 - README.rst: Use code directive for all code examples
 - Documentation: Fix list indentation
 - controls: Add vendor control/property support to generation scripts
 - controls: Update argument handling for controls generation scripts
 - build: controls: Rework how controls and properties are generated
 - libcamera: control: Add vendor control id range reservation
 - libcamera: controls: Use vendor tags for draft controls and properties
 - documentation: Document vendor specific controls and properties handling
 - README.rst: Drop indirect dependencies on Qt5 packages
 - README.rst: Document dependencies for the Python bindings
 - meson_options: Sort options alphabetically
 - meson: Tag all installed files
 - test: log: log_process: Log an error when failing due to incorrect message
 - test: log: log_process: Fix uninitialized variable on process exit failure
 - test: log: log_process: Improve debugging on process exit failures
 - test: log: log_process: Increase process exit timeout
 - test: ipc: unixsocket: Increase process exit timeout
 - test: gstreamer: Remove videoconvert element from pipeline
 - README.rst: Add missing libgtest-dev dependency for lc-compliance
 - meson: Replace hack with usage of '@BASENAME@'
 - libcamera: camera: Fix unused variable compiler warning
 - Documentation: camera-sensor-model: Support Sphinx < 2.0
 - libcamera: camera_sensor: Add OV64A40 sensor properties
 - utils: ipc: Fix deserialization of multiple fd parameters
 - libcamera: device_enumerator: ensure deviceNode is not empty
 - utils: ipc: mojom_libcamera_generator.py: Fix Python warning
 - libcamera: framebuffer_allocator: Remove unnecessary `clear()`
 - hooks: pre-push: Disable interpretation of escape sequences
 - libcamera: geometry: Correct doxygen reference to classes
 - utils: update-mojo.sh: Properly remove old sources
 - utils: update-mojo.sh: Exit immediately on error
 - utils: update-mojo.sh: Change to the libcamera source directory
 - utils: update-mojo.sh: Reject a dirty libcamera tree
 - utils: update-mojo.sh: Commit the mojo update
 - utils: ipc: generate.py: Add bindings directory to Python path
 - utils: ipc: generate.py: Disable attributes checker
 - utils: ipc: Update mojo

pipeline:
 - libcamera: rpi: pipeline_base: Remove populateSensorFormats()
 - libcamera: rpi: pipeline_base: Move findBestFormat to CameraData
 - libcamera: rpi: pipeline_base: Cache sensor format
 - pipeline: rpi: Don't call toV4L2DeviceFormat() from validate()
 - pipeline: rpi: Increase buffer import count to 32
 - pipeline: rpi: Remove additional external dma buf handling logic
 - pipeline: rpi: Rename RPi::Stream::setExternalBuffer()
 - pipeline: rpi: Simplify buffer id generation
 - pipeline: rpi: Reset the frame lengths queue during configure
 - libcamera: rpi: Handle SensorConfiguration
 - libcamera: rpi: Allow platformValidate() to adjust format strides
 - libcamera: rpi: Fix wrong comment indentation
 - 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
 - pipeline: rpi: Add RequiresMmap flag to RPi::Stream
 - pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream
 - pipeline: rpi: Add SharedMemObject class
 - pipeline: rpi: Add SW downscale status to RPi::Stream
 - pipeline: rpi: Move flip handling validation code
 - pipeline: rpi: Make color space members in RPiCameraConfiguration public
 - pipeline: rpi: vc4: Allocate more embedded data buffers
 - pipeline: rpi: Remove unused variable
 - pipeline: rpi: vc4: Fix drop frame bug when no ISP streams are configured
 - pipeline: rpi: Add some useful logging messages
 - libcamera: pipeline: Fix c++20 compile warning
 - pipeline: rpi: Respect provided stride

ipa:
 - ipa: rpi: common: Handle AEC/AGC flicker controls
 - utils: raspberrypi: ctt: Improved color matrix fitting
 - ipa: rpi: vc4: data: Updated color matrices for RPi Cameras
 - utils: raspberrypi: ctt: Code tidying
 - ipa: rpi: Fix the reporting of Focus FoMs
 - ipa: rpi: imx290: Hide one frame on startup
 - ipa: rpi: agc: Fetch AWB status in process method, not prepare
 - ipa: rpi: agc: Filter exposures before dealing with digital gain
 - ipa: rpi: agc: Split AgcStatus into AgcStatus and AgcPrepareStatus
 - ipa: rpi: vc4: Make the StatisticsPtr construction clearer
 - ipa: rpi: histogram: Add interBinMean()
 - ipa: rpi: agc: Reorganise code for multi-channel AGC
 - ipa: rpi: agc: Implementation of multi-channel AGC
 - ipa: rpi: agc: Add AgcChannelConstraint class
 - ipa: rpi: agc: Use channel constraints in the AGC algorithm
 - ipa: rpi: Fix segfault when parsing invalid json file
 - ipa: rpi: Fix frame count logic when running algorithms
 - ipa: rpi: Avoid skipping IPAs on the first frame after the drop frames
 - ipa: rpi: Add IpaBase::platformStart() member function
 - mojom: pipeline: ipa: rpi: Add fields for PiSP objects
 - ipa: rpi: Add try_lock() to RPiController::Metadata
 - ipa: rpi: Add statsInline to the Controller hardware description
 - ipa: rpi: Add PiSP definitions to the Controller hardware description
 - ipa: rpi: Prepare ALSC for PiSP support
 - ipa: rpi: Prepare AWB for PiSP support
 - ipa: rpi: Add new algorithms for PiSP
 - build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file
 - ipa: rpi: agc: Add an AGC stable region
 - ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled
 - ipa: rpi: denoise: Support different denoise configurations
 - ipa: rpi: agc: Avoid overwriting caller's statistics pointer
 - ipa: rpi: agc: When AGC channels are changed, start with the 1st channel
 - ipa: rpi: hdr: Add the ability to alter the LSC table
 - ipa: rpi: alsc: Do not re-read the alsc.status metadata
 - ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation"
 - ipa: rpi: vc4: Move denoise control handling into the VC4 derived IPA
 - ipa: rpi: agc: Fetch AWB status in the prepare method
 - ipa: rpi: agc: Make AGC controls affect all channels
 - ipa: rpi: alsc: Do not allow zero colour ratio statistics
 - ipa: rpi: agc: Fix bug where AeLocked was never getting set
 - ipa: rpi: cac: Minor code improvements and tidying
 - ipa: rpi: Add hardware line rate constraints
 - ipa: rpi: Allow the mean of an empty histogram interval
 - ipa: rpi: black_level: Add an initialValues method
 - ipa: rpi: awb: Add an initialValues method
 - utils: raspberrypi: ctt: Improve the Macbeth Chart search reliability
 - build: controls: Add Raspberry Pi vendor specific controls
 - ipa: vc4: Implement the StatsOutputEnable vendor control
 - ipa: rpi: Provide a Camera Helper for the OV64A40
 - libipa: camera_sensor_helper: Add OV64A40 helper
 - ipa: rpi: vc4: Add OV64A40 tuning files
 - ipa: rpi: Implement HDR control
 - ipa: rpi: vc4: data: Update tuning files for HDR

apps:
 - android: camera_device: Fix requestedStream handling
 - py: Add the SensorConfiguration class
 - py: gen-py-controls: Remove SceneFlicker workaround
 - apps: qcam: Add support for RGB565
 - py: libcamera: Define and use Orientation
 - apps: cam: Add option to set stream orientation
 - py: cam: Add option to set stream orientation
 - gstreamer: Implement element EOS handling
 - gstreamer: Fix unused variable error
 - test: gstreamer: Fix indentation in comments
 - gstreamer: Move negotiation logic to separate function
 - gstreamer: Add GstLibcameraSrcState::clearRequests method
 - gstreamer: Implement renegotiation
 - lc-compliance: Set minimum version for gtest dependency
 - gstreamer: Support for pre-1.16 GstEvent
 - apps: lc-compliance: Fix source file ordering in meson.build

--
Regards

Kieran Bingham


More information about the libcamera-devel mailing list