diff options
-rw-r--r-- | src/libcamera/pipeline_handler.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index 5476dbab..22889be4 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -166,6 +166,8 @@ PipelineHandler::~PipelineHandler() * If this function returns true, a new instance of the pipeline handler will * be created and its match() function called. * + * \context This function is called from the CameraManager thread. + * * \return true if media devices have been acquired and camera instances * created, or false otherwise */ @@ -182,6 +184,8 @@ PipelineHandler::~PipelineHandler() * device explicitly, it will be automatically released when the pipeline * handler is destroyed. * + * \context This function shall be called from the CameraManager thread. + * * \return A pointer to the matching MediaDevice, or nullptr if no match is found */ MediaDevice *PipelineHandler::acquireMediaDevice(DeviceEnumerator *enumerator, @@ -205,6 +209,8 @@ MediaDevice *PipelineHandler::acquireMediaDevice(DeviceEnumerator *enumerator, * This method shall not be called from pipeline handler implementation, as the * Camera class handles locking directly. * + * \context This function is \threadsafe. + * * \return True if the devices could be locked, false otherwise * \sa unlock() * \sa MediaDevice::lock() @@ -227,6 +233,8 @@ bool PipelineHandler::lock() * This method shall not be called from pipeline handler implementation, as the * Camera class handles locking directly. * + * \context This function is \threadsafe. + * * \sa lock() */ void PipelineHandler::unlock() @@ -238,6 +246,7 @@ void PipelineHandler::unlock() /** * \brief Retrieve the list of controls for a camera * \param[in] camera The camera + * \context This function is \threadsafe. * \return A ControlInfoMap listing the controls support by \a camera */ const ControlInfoMap &PipelineHandler::controls(Camera *camera) @@ -261,6 +270,10 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * The intended companion to this is \a configure() which can be used to change * the group of streams parameters. * + * \context This function may be called from any thread and shall be + * \threadsafe. It shall not modify the state of the \a camera in the pipeline + * handler. + * * \return A valid CameraConfiguration if the requested roles can be satisfied, * or a null pointer otherwise. The ownership of the returned configuration is * passed to the caller. @@ -286,6 +299,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * instance to each StreamConfiguration entry in the CameraConfiguration using * the StreamConfiguration::setStream() method. * + * \context This function is called from the CameraManager thread. + * * \return 0 on success or a negative error code otherwise */ @@ -316,6 +331,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * * The only intended caller is Camera::exportFrameBuffers(). * + * \context This function is called from the CameraManager thread. + * * \return The number of allocated buffers on success or a negative error code * otherwise */ @@ -344,6 +361,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * * The only intended caller is Camera::start(). * + * \context This function is called from the CameraManager thread. + * * \return 0 on success or a negative error code otherwise */ @@ -359,6 +378,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * once per stream. * * The only intended callers are Camera::stop() and Camera::freeFrameBuffers(). + * + * \context This function is called from the CameraManager thread. */ /** @@ -371,6 +392,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * will in turn be called from the application to indicate that it has * configured the streams and is ready to capture. * + * \context This function is called from the CameraManager thread. + * * \return 0 on success or a negative error code otherwise */ @@ -381,6 +404,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * * This method stops capturing and processing requests immediately. All pending * requests are cancelled and complete immediately in an error state. + * + * \context This function is called from the CameraManager thread. */ /** @@ -397,6 +422,8 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) * when the pipeline handler is stopped with stop(). Request completion shall be * signalled by the pipeline handler using the completeRequest() method. * + * \context This function is called from the CameraManager thread. + * * \return 0 on success or a negative error code otherwise */ int PipelineHandler::queueRequest(Camera *camera, Request *request) @@ -423,6 +450,8 @@ int PipelineHandler::queueRequest(Camera *camera, Request *request) * parameters will be applied to the frames captured in the buffers provided in * the request. * + * \context This function is called from the CameraManager thread. + * * \return 0 on success or a negative error code otherwise */ @@ -439,6 +468,8 @@ int PipelineHandler::queueRequest(Camera *camera, Request *request) * pipeline handlers a chance to perform any operation that may still be * needed. They shall complete requests explicitly with completeRequest(). * + * \context This function shall be called from the CameraManager thread. + * * \return True if all buffers contained in the request have completed, false * otherwise */ @@ -461,6 +492,8 @@ bool PipelineHandler::completeBuffer(Camera *camera, Request *request, * This method ensures that requests will be returned to the application in * submission order, the pipeline handler may call it on any complete request * without any ordering constraint. + * + * \context This function shall be called from the CameraManager thread. */ void PipelineHandler::completeRequest(Camera *camera, Request *request) { @@ -494,6 +527,8 @@ void PipelineHandler::completeRequest(Camera *camera, Request *request) * is to be associated with. This is for the V4L2 compatibility layer to map * device nodes to Camera instances based on the device number * registered by this method in \a devnum. + * + * \context This function shall be called from the CameraManager thread. */ void PipelineHandler::registerCamera(std::shared_ptr<Camera> camera, std::unique_ptr<CameraData> data, @@ -587,6 +622,7 @@ CameraData *PipelineHandler::cameraData(const Camera *camera) /** * \fn PipelineHandler::name() * \brief Retrieve the pipeline handler name + * \context This function shall be \threadsafe. * \return The pipeline handler name */ |