libcamera  v0.0.0+100-debian/0_git20200629+e7aa92a-8-9-g77f5237c-dirty (2021-05-05T16:20:29+01:00)
Supporting cameras in Linux since 2019
Todo List
File ipa_interface.h
Add reference to how pipelines shall document their protocol.
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.

Member libcamera::CameraSensor::device ()
Remove this function by integrating DelayedControl with CameraSensor
Member libcamera::CameraSensor::resolution () const
Consider if it desirable to distinguish between the maximum resolution the sensor can produce (also including upscaled ones) and the actual pixel array size by splitting this method in two.
Member libcamera::controls::AnalogueGain
Document the interactions between AeEnable and setting a fixed value for this control. Consider interactions with other AE features, such as aperture and aperture/shutter priority mode, and decide if control of which features should be automatically adjusted shouldn't better be handled through a separate AE mode control.
Member libcamera::controls::ExposureTime
Document the interactions between AeEnable and setting a fixed value for this control. Consider interactions with other AE features, such as aperture and aperture/shutter priority mode, and decide if control of which features should be automatically adjusted shouldn't better be handled through a separate AE mode control.
Member libcamera::controls::FrameDurations

Define how to calculate the capture frame rate by defining controls to report additional delays introduced by the capture pipeline or post-processing stages (ie JPEG conversion, frame scaling).

Provide an explicit definition of default control values, for this and all other controls.

Provide an explicit definition of default control values, for this and all other controls.

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.
Class libcamera::IPADataSerializer< T >

Switch to Span instead of byte and fd vector

Harden the vector and map deserializer

For FileDescriptors, instead of storing a validity flag, store an index into the fd array. This will allow us to use views instead of copying.

Class libcamera::IPAInterface
Figure out how to generate IPAInterface documentation.
Member libcamera::IPAModuleInfo::name [256]
Allow user to choose to isolate open source IPAs
Member libcamera::IPCMessage::payload () const
Resolve the layering violation (add other converters later?)
Member libcamera::IPCPipe::sendSync (const IPCMessage &in, IPCMessage *out)=0
Determine if the event loop should limit the types of messages it processes, to avoid reintrancy in the caller, and carefully document what the caller needs to implement to make this safe.
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::properties::PixelArrayActiveAreas
Rename this property to ActiveAreas once we will have property categories (i.e. Properties::PixelArray::ActiveAreas)
Member libcamera::properties::PixelArrayOpticalBlackRectangles
Rename this property to Size once we will have property categories (i.e. Properties::PixelArray::OpticalBlackRectangles)
Member libcamera::properties::PixelArraySize
Rename this property to Size once we will have property categories (i.e. Properties::PixelArray::Size)
Member libcamera::properties::ScalerCropMaximum
Turn this property into a "maximum control value" for the ScalerCrop control once "dynamic" controls have been implemented.
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.
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