@@ -1421,8 +1421,8 @@ code-base.
{
Request *request = buffer->request();
- pipe_->completeBuffer(camera_, request, buffer);
- pipe_->completeRequest(camera_, request);
+ pipe_->completeBuffer(request, buffer);
+ pipe_->completeRequest(request);
}
Testing a pipeline handler
@@ -81,11 +81,10 @@ public:
virtual int start(Camera *camera, ControlList *controls) = 0;
virtual void stop(Camera *camera) = 0;
- int queueRequest(Camera *camera, Request *request);
+ int queueRequest(Request *request);
- bool completeBuffer(Camera *camera, Request *request,
- FrameBuffer *buffer);
- void completeRequest(Camera *camera, Request *request);
+ bool completeBuffer(Request *request, FrameBuffer *buffer);
+ void completeRequest(Request *request);
const char *name() const { return name_; }
@@ -997,7 +997,7 @@ int Camera::queueRequest(Request *request)
}
return d->pipe_->invokeMethod(&PipelineHandler::queueRequest,
- ConnectionTypeQueued, this, request);
+ ConnectionTypeQueued, request);
}
/**
@@ -836,13 +836,13 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer)
{
Request *request = buffer->request();
- if (!pipe_->completeBuffer(camera_, request, buffer))
+ if (!pipe_->completeBuffer(request, buffer))
/* Request not completed yet, return here. */
return;
/* Mark the request as complete. */
request->metadata().set(controls::draft::PipelineDepth, 3);
- pipe_->completeRequest(camera_, request);
+ pipe_->completeRequest(request);
}
/**
@@ -865,10 +865,10 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
* now as there's no need for ImgU processing.
*/
if (request->findBuffer(&rawStream_)) {
- bool isComplete = pipe_->completeBuffer(camera_, request, buffer);
+ bool isComplete = pipe_->completeBuffer(request, buffer);
if (isComplete) {
request->metadata().set(controls::draft::PipelineDepth, 2);
- pipe_->completeRequest(camera_, request);
+ pipe_->completeRequest(request);
return;
}
}
@@ -1507,10 +1507,10 @@ void RPiCameraData::clearIncompleteRequests()
* request? If not, do so now.
*/
if (buffer && buffer->request())
- pipe_->completeBuffer(camera_, request, buffer);
+ pipe_->completeBuffer(request, buffer);
}
- pipe_->completeRequest(camera_, request);
+ pipe_->completeRequest(request);
requestQueue_.pop_front();
}
}
@@ -1534,7 +1534,7 @@ void RPiCameraData::handleStreamBuffer(FrameBuffer *buffer, RPi::Stream *stream)
* Tag the buffer as completed, returning it to the
* application.
*/
- pipe_->completeBuffer(camera_, request, buffer);
+ pipe_->completeBuffer(request, buffer);
} else {
/*
* This buffer was not part of the Request, or there is no
@@ -1597,7 +1597,7 @@ void RPiCameraData::checkRequestCompleted()
if (state_ != State::IpaComplete)
return;
- pipe_->completeRequest(camera_, request);
+ pipe_->completeRequest(request);
requestQueue_.pop_front();
requestCompleted = true;
}
@@ -1135,15 +1135,14 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)
data->frameInfo_.destroy(info->frame);
- completeRequest(activeCamera_, request);
+ completeRequest(request);
}
void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)
{
- ASSERT(activeCamera_);
Request *request = buffer->request();
- completeBuffer(activeCamera_, request, buffer);
+ completeBuffer(request, buffer);
tryCompleteRequest(request);
}
@@ -899,8 +899,8 @@ void SimplePipelineHandler::bufferReady(FrameBuffer *buffer)
}
Request *request = buffer->request();
- completeBuffer(activeCamera_, request, buffer);
- completeRequest(activeCamera_, request);
+ completeBuffer(request, buffer);
+ completeRequest(request);
return;
}
@@ -924,8 +924,8 @@ void SimplePipelineHandler::bufferReady(FrameBuffer *buffer)
/* Otherwise simply complete the request. */
Request *request = buffer->request();
- completeBuffer(activeCamera_, request, buffer);
- completeRequest(activeCamera_, request);
+ completeBuffer(request, buffer);
+ completeRequest(request);
}
void SimplePipelineHandler::converterDone(FrameBuffer *input,
@@ -936,8 +936,8 @@ void SimplePipelineHandler::converterDone(FrameBuffer *input,
/* Complete the request. */
Request *request = output->request();
- completeBuffer(activeCamera_, request, output);
- completeRequest(activeCamera_, request);
+ completeBuffer(request, output);
+ completeRequest(request);
/* Queue the input buffer back for capture. */
data->video_->queueBuffer(input);
@@ -646,8 +646,8 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)
{
Request *request = buffer->request();
- pipe_->completeBuffer(camera_, request, buffer);
- pipe_->completeRequest(camera_, request);
+ pipe_->completeBuffer(request, buffer);
+ pipe_->completeRequest(request);
}
REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC)
@@ -519,8 +519,8 @@ void VimcCameraData::bufferReady(FrameBuffer *buffer)
{
Request *request = buffer->request();
- pipe_->completeBuffer(camera_, request, buffer);
- pipe_->completeRequest(camera_, request);
+ pipe_->completeBuffer(request, buffer);
+ pipe_->completeRequest(request);
}
REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)
@@ -376,8 +376,7 @@ const ControlList &PipelineHandler::properties(const Camera *camera) const
/**
* \fn PipelineHandler::queueRequest()
- * \brief Queue a request to the camera
- * \param[in] camera The camera to queue the request to
+ * \brief Queue a request
* \param[in] request The request to queue
*
* This method queues a capture request to the pipeline handler for processing.
@@ -392,8 +391,9 @@ const ControlList &PipelineHandler::properties(const Camera *camera) const
*
* \return 0 on success or a negative error code otherwise
*/
-int PipelineHandler::queueRequest(Camera *camera, Request *request)
+int PipelineHandler::queueRequest(Request *request)
{
+ Camera *camera = request->camera_;
CameraData *data = cameraData(camera);
data->queuedRequests_.push_back(request);
@@ -423,7 +423,6 @@ int PipelineHandler::queueRequest(Camera *camera, Request *request)
/**
* \brief Complete a buffer for a request
- * \param[in] camera The camera the request belongs to
* \param[in] request The request the buffer belongs to
* \param[in] buffer The buffer that has completed
*
@@ -439,16 +438,15 @@ int PipelineHandler::queueRequest(Camera *camera, Request *request)
* \return True if all buffers contained in the request have completed, false
* otherwise
*/
-bool PipelineHandler::completeBuffer(Camera *camera, Request *request,
- FrameBuffer *buffer)
+bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer)
{
+ Camera *camera = request->camera_;
camera->bufferCompleted.emit(request, buffer);
return request->completeBuffer(buffer);
}
/**
* \brief Signal request completion
- * \param[in] camera The camera that the request belongs to
* \param[in] request The request that has completed
*
* The pipeline handler shall call this method to notify the \a camera that the
@@ -461,8 +459,10 @@ bool PipelineHandler::completeBuffer(Camera *camera, Request *request,
*
* \context This function shall be called from the CameraManager thread.
*/
-void PipelineHandler::completeRequest(Camera *camera, Request *request)
+void PipelineHandler::completeRequest(Request *request)
{
+ Camera *camera = request->camera_;
+
request->complete();
CameraData *data = cameraData(camera);