Todo List

File ipa_interface.h
  Add reference to how pipelines shall document their protocol.
Member ipa_sensor_info::model
  Remove this field as soon as no IPA depends on it anymore
Class libcamera::Camera
  Add documentation for camera start timings. What exactly does the camera expect the pipeline handler to do when start() is called?
Member libcamera::CameraConfiguration::validate ()=0

  : Define exactly when to return each status code. Should stream parameters set to 0 by the caller be adjusted without returning Adjusted ? This would potentially be useful for applications but would get in the way in Camera::configure(). Do we need an extra status code to signal this ?

  : Handle validation of buffers count when refactoring the buffers API.

Class libcamera::CameraManager
  Add interface to register a notification callback to the user to be able to inform it new cameras have been hot-plugged or cameras have been removed due to hot-unplug.
Member libcamera::ControlSerializer::deserialize (ByteStreamBuffer &buffer)
  Find a way to preserve the control name for debugging purpose.
Member libcamera::ControlValue::ControlValue ()
  Revisit the ControlValue layout when stabilizing the ABI
Class libcamera::FrameBuffer::Plane
  Once we have a Kernel API which can express offsets within a plane this structure shall be extended to contain this information. See commit 83148ce8be55e for initial documentation of this feature.
Member libcamera::FrameBuffer::setRequest (Request *request)
  Shall be hidden from applications with a d-pointer design.
Member libcamera::FrameMetadata::timestamp
  Be more precise on what timestamps refer to.
Member libcamera::IPAInterface::mapBuffers (const std::vector< IPABuffer > &buffers)=0
  Provide a generic implementation of mapBuffers and unmapBuffers for IPAs
Member libcamera::IPAModuleInfo::name [256]
  Allow user to choose to isolate open source IPAs
Member libcamera::IPCUnixSocket::receive (Payload *payload)
  Add state machine to make sure we don't block forever and that a header is always followed by a payload.
Member libcamera::Request::metadata ()
  Offer a read-only API towards applications while keeping a read/write API internally.
Member libcamera::Request::Request (Camera *camera, uint64_t cookie=0)

  Should the Camera expose a validator instance, to avoid creating a new instance for each request?

  : Add a validator for metadata controls.

Class libcamera::Stream
  Add capabilities to the stream API. Without this the Stream class only serves to reveal how many streams of unknown capabilities a camera supports. This in itself is productive as it allows applications to configure and capture from one or more streams even if they won't be able to select the optimal stream for the task.
Member libcamera::StreamConfiguration::StreamConfiguration ()
  This method is deprecated and should be removed once all pipeline handlers provide StreamFormats.
Member libcamera::StreamConfiguration::stride
  Update this value when configuration is validated instead of when the camera is configured.
Class libcamera::StreamFormats
  Review the usage patterns of this class, and cache the computed pixelformats(), sizes() and range() if this would improve performances.
Member libcamera::utils::split (const std::string &str, const std::string &delim)
  Try to avoid copies of str and delim
Member libcamera::V4L2Subdevice::getSelection (unsigned int pad, unsigned int target, Rectangle *rect)
  Define a V4L2SelectionTarget enum for the selection target
Member libcamera::V4L2Subdevice::setSelection (unsigned int pad, unsigned int target, Rectangle *rect)
  Define a V4L2SelectionTarget enum for the selection target
Member libcamera::V4L2VideoDevice::setSelection (unsigned int target, Rectangle *rect)
  Define a V4L2SelectionTarget enum for the selection target
File v4l2_controls.h
  Add support for compound controls