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>