Merge remote-tracking branch 'upstream/master' * upstream/master: utils: libtuning: Correct GBRG Image parsing apps: common: dng_writer: Support RAW10 and RAW12 format apps: common: dng_writer: Add thumbnail scanline function for Raw apps: common: dng_writer: Rename packing functions apps: common: dng_writer: Support RAW16 formats libcamera: Fix maybe-uninitialized error apps: common: dng_writer: Workaround for "Unknown tag 33421" error meson: Enable warnings to flag missing declarations test: gstreamer: Include missing sanitizer/asan_interface.h header test: ipc: unixsocket: Define local function in anonymous namespace apps: Define local functions in anonymous namespace v4l2: v4l2_compat: Selectively disable -Wmissing-declarations v4l2: v4l2_compat: Include missing headers py: libcamera: Move function declarations to common header ipa: rpi: Define local functions in anonymous namespace ipa: ipa_interface: Declare ipaCreate() in libcamera namespace libcamera: base: log: Declare log categories when defining them v4l2: v4l2_compat: Move `open*()` flag check into function v4l2: v4l2_compat: Fix redirect from `__open(at)64_2()` ipa: libipa: matrix: Fix incorrect symbol namespace libcamera: yaml_parser: Add support for float types ipa: rkisp1: agc: Rename frame context update variable to updateMetering libcamera: debayer_cpu: Add 32bits/aligned output formats ipa: libipa: pwl: Drop readYaml() function ipa: rpi: controller: Replace Pwl::readYaml() with YamlObject::get() ipa: rkisp1: agc: Move AeEnable control to the AGC algorithm ipa: rkisp1: agc: Correctly clamp maximum shutter speed ipa: rkisp1: agc: Rename maxShutterSpeed to maxFrameDuration ipa: rkisp1: agc: Use mode from frame context to calculate new EV ipa: rkisp1: agc: Simplify predivider calculation ipa: rkisp1: agc: Don't update histogram parameters unnecessarily ipa: rkisp1: agc: Make size argument to computeHistogramPredivider const ipa: rkisp1: Document all AGC parameters in IPAFrameContext ipa: rkisp1: Document all AGC parameters in IPAActiveState ipa: libipa: agc_mean_luminance: Include missing header ipa: libipa: agc_mean_luminance: Fix enumerator names ipa: rkisp1: agc: Fix initialization without metering modes ipa: libipa: vector: Add matrix-vector multiplication ipa: rkisp1: algorithms: Add crosstalk algorithm ipa: libipa: Add MatrixInterpolator class ipa: libipa: Add Matrix class ipa: libipa: pwl: Specialize YamlObject getter ipa: libipa: pwl: Add a constructor that moves a Point vector ipa: libipa: pwl: Add a size() function ipa: libipa: pwl: Make the empty() function inline ipa: libipa: pwl: Suffix \param with direction ipa: libipa: vector: Drop readYaml() function ipa: libipa: vector: Specialize YamlObject getter libcamera: yaml_parser: Delegate YamlObject::get() to helper structure libcamera: yaml_parser: Drop std::enable_if_t guards for get() function utils: tuning: rkisp1: Add skeletal AGC to the rkisp1 tuning script utils: libtuning: modules: Add skeletal AGC module ipa: rkisp1: agc: Plumb mode-selection and frame duration controls ipa: rkisp1: agc: Read histogram weights from tuning file ipa: rkisp1: cproc: Drop incorrect [[maybe_unused]] ipa: rkisp1: cproc: Merge identical functions ipa: rkisp1: cproc: Use anonymous namespace to limit symbol visibility utils: raspberrypi: ctt: Add a maximum gain parameter for LSC utils: raspberrypi: ctt: Add option to convert between vc4/pisp targets utils: raspberrypi: ctt: Update tuning tool for HDR utils: raspberrypi: ctt: Changed CTT handling of VC4 and PiSP utils: raspberrypi: ctt: Added CAC support to the CTT utils: raspberrypi: ctt: Adapt tuning tool for both VC4 and PiSP pipeline: rpi: Don't validate configuration in generateConfiguration() libcamera: yaml_parser: Make default value templated in `get()` libcamera: libipa: camera_sensor: Define AR0521 helper functions inline libcamera: controls: Add missing period at end of Gamma description ipa: rkisp1: goc: Avoid use of auto for short type ipa: rkisp1: goc: Mark default gamma table as static constexpr ipa: rkisp1: goc: Use copydoc ipa: rkisp1: goc: Drop incorrect [[maybe_unused]] ipa: rkisp1: goc: Fix typographical issues in documentation. ipa: rpi: controller: Use libipa's Pwl class ipa: libipa: Copy pwl from rpi, and clean it up to match libcamera ipa: libipa: Add Vector class pipeline: rkisp1: cproc: Fix default value handling meson: Group libipa and libipa_includes in a dependency object libcamera: software_isp: Fix includes ordering in simple.cpp clang-format: Make Qt includes matching case sensitive ipa: rkisp1: Add GammaOutCorrection algorithm ipa: rkisp1: Fix algorithm controls vanish after configure libcamera: Add gamma control id test: ipa: rkisp1: utils: Fix floating and fixed point conversion test libcamera: dma_buf_allocator: Work around lack of file seals in uClibc libcamera: dma_buf_allocator: Work around lack of memfd_create() in uClibc libcamera: dma_buf_allocator: Create memfd with CLOEXEC ipa: rpi: Disable StatsOutputEnable control by default libcamera: software_isp: Allow using dma-buffers from /dev/udmabuf libcamera: DmaBufAllocator: Support allocating from /dev/udmabuf libcamera: Rename DmaHeap class to DmaBufAllocator libcamera: v4l2_subdevice: Update to the new kernel routing API include: linux: Update kernel headers to version v6.10-rc1 update-kernel-headers: Add linux/udmabuf.h to headers to sync test: ipa: rkisp1-utils: Fix coding style for template arguments pipeline: vimc: Don't hardcode scaling factor with recent kernels test: v4l2_videodevice: Increase timeout for vimc capture tests test: fence: Increase timeout for fence test test: fence: Fix race condition test: fence: Turn class member variable into local variable test: camera: Increase timeout for vimc capture tests libcamera: software_isp: Remove TODO about internal representation libcamera: software_isp: Remove DebayerParams::kGain10 libcamera: software_isp: Move color mappings out of debayering libcamera: software_isp: Honor black level in AWB libcamera: software_isp: Use a specific integer type for black level utils: checkstyle.py: Show location of coding style issue within line utils: checkstyle.py: Add a check for hex values utils: checkstyle.py: Extend IncludeChecker to cover math.h utils: checkstyle.py: Refactor IncludeChecker test: ipa: rkisp1-utils: Fix capitalization of hex numbers ipa: rkisp1: Add a helper to convert floating-point to fixed-point android: camera_capabilities: Fix GCC 14 warning ipa: rpi: Make monoSensor() accessor const libcamera: yaml_parser: Avoid double lookup in `operator[]` treewide: Query list of cameras just once libcamera v0.3.0 ipa: rpi: Add accessor function for monoSensor_ ipa: rpi: Add HDR support libcamera: v4l2_subdevice: Add missing MEDIA_BUS_FMT_xxxx16_1X16 info libcamera: formats: Add PiSP specific image and config buffer formats include: linux: Add PiSP specific image and config buffer formats libcamera: formats: Add RGB48 formats include: linux: Add RGB48 formats libcamera: camera_manager: Add environment variable to order pipelines match libcamera: pipeline: Add a get factory by name helper libcamera: pipeline: Rename pipelines to a shorter name gstreamer: Use copied camera name gstreamer: Fix string memory leak Documentation: Add option to treat Doxygen warnings as errors test: gstreamer: Simplify single stream test ipa: libipa: histogram: Fix documentation of constructor libcamera: Drop remaining file name from header comment blocks libcamera: Drop file name from header comment blocks in templates ipa: rkisp1: agc: Fix histogram construction ipa: rpi: Fix for incorrectly reported max shutter speed pipeline: rpi: Avoid duplicating size range for the same pixel format ipa: libipa: histogram: Add transform parameter to constructor libcamera: Drop file name from header comment blocks ipa: rkisp1: Remove bespoke Agc functions ipa: rkisp1: Derive rkisp1::algorithms::Agc from AgcMeanLuminance ipa: ipu3: Remove bespoke AGC functions from IPU3 ipa: ipu3: Derive ipu3::algorithms::Agc from AgcMeanLuminance ipa: libipa: Add AgcMeanLuminance base class ipa: libipa: Add ExposureModeHelper libcamera: controls: Generate enum value-name maps ipa: libipa: Allow creation of empty Histogram Revert "meson: Deprecate bitwise operations between different enumeration type" test: Don't add current build directory to include path meson: Deprecate bitwise operations between different enumeration type apps: qcam: Use standard key sequence for quit action libcamera: shared_mem_object: Fix compilation with uClibc libcamera: utils: Avoid infinite recursion with strtod() libcamera: libipa: camera_sensor: Add Sony IMX415 sensor properties apps: cam: Fix C++20 deprecation warning libcamera: libipa: camera_sensor: Add Sony IMX335 sensor properties libcamera: libipa: camera_sensor: Add Sony IMX283 sensor properties android: camera_device: Always clear descriptors_ in stop() libcamera: Fix output spelling error libcamera: device_enumerator: Fix spell error utils: checkstyle.py: Drop period at end of Doxygen one liners utils: checkstyle.py: Use r'' strings for regular expressions Documentation: coding-style: Clean up header guard style ipu3: Use posix basename libcamera: software_isp: Apply black level compensation libcamera: Add "Software ISP benchmarking" documentation libcamera: debayer_cpu: Add BGR888 output support libcamera: debayer_cpu: Add support for 8, 10 and 12 bpp unpacked bayer input libcamera: swstats_cpu: Add support for 8, 10 and 12 bpp unpacked bayer input libcamera: pipeline: simple: Enable use of Soft ISP and Soft IPA libcamera: pipeline: simple: Rename converterBuffers_ and related vars libcamera: Introduce SoftwareIsp libcamera: ipa: Add Soft IPA libcamera: software_isp: Add DebayerCpu class libcamera: software_isp: Add Debayer base class libcamera: software_isp: Add SwStatsCpu class libcamera: shared_mem_object: Reorganize the code and document the SharedMemObject class libcamera: shared_mem_object: Rename SIZE constant to `size' libcamera: internal: Move SharedMemObject class to a common directory libcamera: dma_heaps: extend DmaHeap class to support system heap libcamera: internal: Move dma_heaps.[h, cpp] to common directories libcamera: pipeline: simple: fix size adjustment in validate() utils: ipc: Fix async main interface functions with no parameters utils: ipc: Fix event functions with no parameters apps: cam: Add support for PPM output format v4l2: meson: Keep defines sorted alphabetically v4l2: Unset _TIME_BITS in addition to _FILE_OFFSET_BITS libcamera: pipeline: Add Mali-C55 ISP pipeline android: camera_device: Save capture settings unconditionally apps: lc-compliance: Re-organize source directory apps: lc-compliance: Fix typo in comment apps: lc-compliance: Check that requests complete successfully utils: tuning: readme: Improve names of dependency packages checkstyle: Work around bug in difflib libcamera: camera_sensor: Expose the Bayer order libcamera: camera_sensor: Test for read-only HBLANK with READ_ONLY flag libcamera: camera_sensor: Reorder functions libcamera: camera_sensor: Drop updateControlInfo() function libcamera: camera_sensor: Move related classes to subdirectory libcamera: v4l2_subdevice: Add V4L2Subdevice::Route structure libcamera: v4l2_subdevice: Replace Routing::toString() with operator<<() libcamera: v4l2_subdevice: Add stream support to get/set functions libcamera: v4l2_subdevice: Rename V4L2SubdeviceFormat::mbus_code to code libcamera: v4l2_subdevice: Drop V4L2SubdeviceFormat::bitsPerPixel() libcamera: v4l2_subdevice: Extend MediaBusFormatInfo with metadata formats libcamera: v4l2_subdevice: Expose media bus format info as internal API libcamera: v4l2_subdevice: Add code member to MediaBusFormatInfo libcamera: v4l2_subdevice: Rename V4L2SubdeviceFormatInfo libcamera: controls: Add policy parameter to ControlList::merge() libcamera: framebuffer_allocator: Remove entry if allocation fails libcamera: framebuffer_allocator: Use default destructor libcamera: framebuffer_allocator: Move from argument in constructor cam: capture_script: Make parseRectangles work for non-array utils: checkstyle.py: Fix known_trailers sort order utils: checkstyle.py: Add Co-developed-by to known_trailers ipa: rpi: cam_helper: Extend embedded data parsing to RAW14 modes libcamera: v4l2_subdevice: Add 14-bit Bayer formats guides: pipeline-handler: Fix controlInfo_ initialization libcamera: controls: Fix typo on thermal pipeline: simple: Add support for MediaTek MT8365 platforms meson_options: Autodetect pycamera support README.rst: Report py dependencies utils: ipu3: Fix return value check on file output libcamera: formats: Fix planes bounds check utils: rkisp1: gen-csc-table.py: Don't presume python3 location utils: checkstyle.py: Update LogCategoryChecker regexp utils: checkstyle.py: Don't presume python3 location libcamera: formats: Fix typos in PixelFormatInfo documentation libcamera: Use utils::to_underlying() libcamera: utils: Add to_underlying() helper function ipa: rkisp1: Support the i.MX8MP ISP version include: linux: Add RKISP1_V_IMX8MP version ipa: rkisp1: Fix histogram weights configuration ipa: rkisp1: Store hardware parameters in IPA context ipa: rkisp1: agc: Wrap variable length C arrays in spans pipeline: rpi: vc4: Use an unpacked format if no packed one is available utils: mojom: Fix build error caused by the mojom tool update gstreamer: Map 10/12/14/16 bayer formats supports gstreamer: Map R8/R16 pixel format doc: gstreamer: Add missing queues libcamera: object: Add and use thread-bound assertion libcamera: object: Document and ensure Object deletion constraints test: timer-thread: Destroy Object from correct thread context test: timer-thread: Move timer start from wrong thread to separate test test: signal-threads: Destroy Object from correct thread context test: message: Destroy Object from correct thread context test: message: Remove incorrect slow receiver test test: event-thread: Destroy Object from correct thread context libcamera: thread: Ensure deferred deletion of all objects before stopping test: object-delete: Test deferred delete just before thread stops libcamera: signal: Replace object.h inclusion with forward declatation libcamera: object: Fix thread-bound reference in documentation apps: common: dng_writer: Add a default case for switch-case on a modulo libcamera: v4l2_subdevice: Explain sort order of formatInfoMap libcamera: bayer_format: Add Y12 to bayerToFormat libcamera: formats: Fix sort ordering of R10_CSI2P libcamera: formats: Add 16-bit mono format libcamera: Remove empty formats.c pipeline: rpi: Always initialize the embedded buffer in tryRunPipeline test: gstreamer: Use env instead of registry edit gstreamer: Add meson devenv support utils: ipc: extract-docs: Fix escape characters in regex Documentation: Update Qt documentation links to Qt 6 libcamera: base: signal: Update Qt documentation link to Qt 6 libcamera: v4l2_subdevice: Enable streams API when supported include: linux: Update kernel headers to version v6.7 libipa: camera_sensor_helper: Mark createInstance() with override libcamera v0.2.0 utils: ipc: Update mojo utils: ipc: generate.py: Disable attributes checker utils: ipc: generate.py: Add bindings directory to Python path utils: update-mojo.sh: Commit the mojo update utils: update-mojo.sh: Reject a dirty libcamera tree utils: update-mojo.sh: Change to the libcamera source directory utils: update-mojo.sh: Exit immediately on error utils: update-mojo.sh: Properly remove old sources libcamera: geometry: Correct doxygen reference to classes hooks: pre-push: Disable interpretation of escape sequences ipa: rpi: vc4: data: Update tuning files for HDR ipa: rpi: Implement HDR control libcamera: framebuffer_allocator: Remove unnecessary `clear()` utils: ipc: mojom_libcamera_generator.py: Fix Python warning libcamera: device_enumerator: ensure deviceNode is not empty utils: ipc: Fix deserialization of multiple fd parameters apps: lc-compliance: Fix source file ordering in meson.build ipa: rpi: vc4: Add OV64A40 tuning files libipa: camera_sensor_helper: Add OV64A40 helper ipa: rpi: Provide a Camera Helper for the OV64A40 libcamera: camera_sensor: Add OV64A40 sensor properties ipa: vc4: Implement the StatsOutputEnable vendor control build: controls: Add Raspberry Pi vendor specific controls utils: raspberrypi: ctt: Improve the Macbeth Chart search reliability ipa: rpi: awb: Add an initialValues method ipa: rpi: black_level: Add an initialValues method ipa: rpi: Allow the mean of an empty histogram interval Documentation: camera-sensor-model: Support Sphinx < 2.0 gstreamer: Support for pre-1.16 GstEvent lc-compliance: Set minimum version for gtest dependency ipa: rpi: Add hardware line rate constraints pipeline: rpi: Respect provided stride libcamera: camera: Fix unused variable compiler warning meson: Replace hack with usage of '@BASENAME@' README.rst: Add missing libgtest-dev dependency for lc-compliance test: gstreamer: Remove videoconvert element from pipeline test: ipc: unixsocket: Increase process exit timeout test: log: log_process: Increase process exit timeout test: log: log_process: Improve debugging on process exit failures test: log: log_process: Fix uninitialized variable on process exit failure test: log: log_process: Log an error when failing due to incorrect message meson: Tag all installed files gstreamer: Implement renegotiation gstreamer: Add GstLibcameraSrcState::clearRequests method gstreamer: Move negotiation logic to separate function test: gstreamer: Fix indentation in comments meson_options: Sort options alphabetically README.rst: Document dependencies for the Python bindings README.rst: Drop indirect dependencies on Qt5 packages ipa: rpi: cac: Minor code improvements and tidying ipa: rpi: agc: Fix bug where AeLocked was never getting set documentation: Document vendor specific controls and properties handling libcamera: controls: Use vendor tags for draft controls and properties libcamera: control: Add vendor control id range reservation build: controls: Rework how controls and properties are generated controls: Update argument handling for controls generation scripts controls: Add vendor control/property support to generation scripts libcamera: pipeline: Fix c++20 compile warning Documentation: Fix list indentation README.rst: Use code directive for all code examples Documentation: contributing: Integrate the code of conduct Documentation: code-of-conduct: Add contact information Documentation: code-of-conduct: Add license information Documentation: code-of-conduct: Convert to reStructuredText Documentation: Add code of conduct gstreamer: Fix unused variable error ipa: rpi: alsc: Do not allow zero colour ratio statistics gstreamer: Implement element EOS handling pipeline: rpi: Add some useful logging messages libcamera: camera_sensor: Only access V4L_CID_HBLANK if existing pipeline: rpi: vc4: Fix drop frame bug when no ISP streams are configured pipeline: rpi: Remove unused variable libcamera: controls: Add controls for HDR ipa: rpi: agc: Make AGC controls affect all channels ipa: rpi: agc: Fetch AWB status in the prepare method ipa: rpi: vc4: Move denoise control handling into the VC4 derived IPA ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation" ipa: rpi: alsc: Do not re-read the alsc.status metadata ipa: rpi: hdr: Add the ability to alter the LSC table libcamera: transform: Make the transformFromOrientation() function static libcamera: transform: Fold transformToOrientation() in its only caller libcamera: camera_sensor: Cache mounting orientation instead of transform py: cam: Add option to set stream orientation apps: cam: Add option to set stream orientation libcamera: Use CameraConfiguration::orientation py: libcamera: Define and use Orientation test: Add unit test for Transform and Orientation libcamera: transform: Add operations with Orientation libcamera: transform: Invert operator*() operands libcamera: transform: Add functions to convert Orientation libcamera: properties: Make 'Rotation' the mounting rotation Documentation: Add figures to document Orientation libcamera: camera: Introduce Orientation libcamera: camera_sensor: Cache rotationTransform_ apps: qcam: Add support for RGB565 pipeline: rpi: vc4: Allocate more embedded data buffers utils: update-kernel-headers: Support git worktrees ipa: rpi: agc: When AGC channels are changed, start with the 1st channel ipa: rpi: agc: Avoid overwriting caller's statistics pointer ipa: rpi: denoise: Support different denoise configurations ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled ipa: rpi: agc: Add an AGC stable region pipeline: rpi: Make color space members in RPiCameraConfiguration public pipeline: rpi: Move flip handling validation code build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file pipeline: rpi: Add SW downscale status to RPi::Stream ipa: rpi: Add new algorithms for PiSP ipa: rpi: Prepare AWB for PiSP support ipa: rpi: Prepare ALSC for PiSP support ipa: rpi: Add PiSP definitions to the Controller hardware description ipa: rpi: Add statsInline to the Controller hardware description ipa: rpi: Add try_lock() to RPiController::Metadata mojom: pipeline: ipa: rpi: Add fields for PiSP objects ipa: rpi: Add IpaBase::platformStart() member function pipeline: rpi: Add SharedMemObject class pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream pipeline: rpi: Add RequiresMmap flag to RPi::Stream py: gen-py-controls: Remove SceneFlicker workaround py: Add the SensorConfiguration class libcamera: converter: drop unnecessary #include directive libcamera: converter: A few fixes to ConverterFactoryBase documentation ipa: rpi: Avoid skipping IPAs on the first frame after the drop frames libcamera: rpi: Simplify validate() and configure() for YUV/RGB streams libcamera: rpi: Change default stream formats libcamera: rpi: Simplify validate() and configure() for RAW streams libcamera: rpi: Add some helpers to PipelineHandlerBase libcamera: rpi: Cache rawStreams and outStreams libcamera: rpi: Make isRaw/isYuv/isRgb static functions libcamera: rpi: Fix wrong comment indentation libcamera: rpi: Allow platformValidate() to adjust format strides libcamera: rpi: Handle SensorConfiguration libcamera: camera_sensor: Support SensorConfiguration libcamera: camera: Introduce SensorConfiguration Documentation: Introduce Camera Sensor Model pipeline: rpi: Reset the frame lengths queue during configure ipa: rpi: Fix frame count logic when running algorithms libcamera: formats: Fix typo in YV444 V4L2PixelFormat listing Change-Id: I882a312735a555622cd31d076efca85a4ffd3964 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5669744 Commit-Queue: Hanlin Chen <hanlinchen@google.com> Tested-by: Harvey Yang <chenghaoyang@chromium.org> Auto-Submit: Harvey Yang <chenghaoyang@chromium.org> Reviewed-by: Hanlin Chen <hanlinchen@google.com>