- 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::Camera::Private::controlInfo_
- This member was initially meant to stay constant after the camera is created. Several pipeline handlers are already updating it when the camera is configured. Update the documentation accordingly, and possibly the API as well, when implementing official support for control info updates.
- 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::applyConfiguration (const SensorConfiguration &config, Transform transform=Transform::Identity, V4L2SubdeviceFormat *sensorFormat=nullptr)=0
- The configuration shall be fully populated and if any of the fields specified cannot be applied exactly, an error code is returned.
- Member libcamera::CameraSensor::device ()=0
- Remove this function by integrating DelayedControl with CameraSensor
- Member libcamera::CameraSensor::resolution () const =0
- 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 function in two.
- Member libcamera::CameraSensor::tryFormat (V4L2SubdeviceFormat *format) const =0
- Add support for Transform by changing the format's Bayer ordering before calling subdev_->setFormat().
- Class libcamera::ColorSpace
- Define the color space fully in the libcamera API to avoid referencing V4L2
- Member libcamera::ControlList::merge (const ControlList &source, MergePolicy policy=MergePolicy::KeepExisting)
Reimplement or implement an overloaded version which internally uses std::unordered_map::merge() and accepts a non-const argument.
ASSERT that the current and source ControlList are derived from a compatible ControlIdMap, to prevent undefined behaviour due to id collisions.
- 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::draft::TestPatternModeSolidColor
- Add control for test pattern data.
- 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::FrameDurationLimits
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::controls::LensPosition
- Define a property to report the Hyperfocal distance of calibrated lenses.
- Member libcamera::controls::SensorTimestamp
- Define how the sensor timestamp has to be used in the reprocessing use case.
- 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
- Member libcamera::DmaBufAllocator::exportBuffers (unsigned int count, const std::vector< unsigned int > &planeSizes, std::vector< std::unique_ptr< FrameBuffer >> *buffers)
- Add the option to allocate each plane with a dma buf respectively.
- Class libcamera::FrameBuffer::Plane
- Specify how an application shall decide whether to use a single or multiple dmabufs, based on the camera requirements.
- Member libcamera::FrameMetadata::timestamp
- Be more precise on what timestamps refer to.
- Member libcamera::ipa::Algorithm< _Module >::process ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const uint32_t frame, [[maybe_unused]] typename Module::FrameContext &frameContext, [[maybe_unused]] const typename Module::Stats *stats, [[maybe_unused]] ControlList &metadata)
- Historical data may be required as part of the processing. Either the previous frame, or the IPAFrameContext state of the frame that generated the statistics for this operation may be required for some advanced algorithms to prevent oscillations or support control loops correctly. Only a single IPAFrameContext is available currently, and so any data stored may represent the results of the previously completed operations.
- Member libcamera::ipa::CameraSensorHelper::blackLevel () const
- Fill the blanks and add pedestal values for all supported sensors. Once done, drop the std::optional<>.
- Class libcamera::ipa::FCQueue< FrameContext >
- Mark the frame context with a per-frame control error flag in case of underrun, and research how algorithms should handle this.
- Member libcamera::ipa::FCQueue< FrameContext >::clear ()
- Fix any issue this may cause with requests queued before the camera is started.
- Class libcamera::ipa::ipu3::algorithms::Accumulator
- move this description and structure into a common header
- Member libcamera::ipa::ipu3::IPAIPU3::configure (const IPAConfigInfo &configInfo, ControlInfoMap *ipaControls) override
- Document what the BDS is, ideally in a block diagram of the ImgU.
- Member libcamera::IPACameraSensorInfo::cfaPattern
- Make this variable optional once mojom supports it, instead of using RGB for sensors that don't have a CFA.
- Class libcamera::IPADataSerializer< T >
Switch to Span instead of byte and fd vector
Harden the vector and map deserializer
For SharedFDs, 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::Object::assertThreadBound (const char *message)
- Verify the thread-bound requirements for functions marked as thread-bound at the class level.
- 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)
- Add a validator for metadata controls.
- Class libcamera::SensorConfiguration
- Applications shall fully populate all fields of the CameraConfiguration::sensorConfig class members before validating the CameraConfiguration. If the SensorConfiguration is not fully populated, or if any of its parameters cannot be applied to the sensor in use, the CameraConfiguration validation process will fail and return CameraConfiguration::Status::Invalid.
- Member libcamera::SensorConfiguration::isValid () const
- For now allow applications to populate the bitDepth and the outputSize only as skipping and binnings factors are initialized to 1 and the analog crop is ignored.
- 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 function 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 (const Stream &stream, unsigned int target, Rectangle *rect)
- Define a V4L2SelectionTarget enum for the selection target
- Member libcamera::V4L2Subdevice::setSelection (const Stream &stream, 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::getSelection (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
- Member LOG (category, severity)
- Allow logging from destructors of global objects to the largest possible extent