summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmang Jain <umang.jain@ideasonboard.com>2022-07-01 16:02:36 +0530
committerKieran Bingham <kieran.bingham@ideasonboard.com>2022-07-05 11:24:04 +0100
commit458d917ca2cb27bfeadca2a25c61ca99c5a82e9b (patch)
tree3d25971b42340ea6559a6714da51e1f1261980a6
parent6f539a6d2fa992c90782a7b7077cd009fce4457b (diff)
libcamera: camera: Reset request sequence number on stop/start
We now have V4L2VideoDevice ensuring that sensor sequence numbers start from zero [1], and we desire that these should match the Request sequence number as well. [1] 1c9dc0fd89cf ("libcamera: v4l2_videodevice: Identify non-zero stream starts") Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/libcamera/camera.cpp4
-rw-r--r--src/libcamera/pipeline_handler.cpp2
-rw-r--r--src/libcamera/request.cpp4
3 files changed, 7 insertions, 3 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 713543fd..f8150dcd 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -497,7 +497,7 @@ Camera::Private::~Private()
* facilitate debugging of internal request usage.
*
* The requestSequence_ tracks the number of requests queued to a camera
- * over its lifetime.
+ * over a single capture session.
*/
static const char *const camera_state_names[] = {
@@ -1181,6 +1181,8 @@ int Camera::start(const ControlList *controls)
LOG(Camera, Debug) << "Starting capture";
+ ASSERT(d->requestSequence_ == 0);
+
ret = d->pipe_->invokeMethod(&PipelineHandler::start,
ConnectionTypeBlocking, this, controls);
if (ret)
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 7ebd76ad..67540533 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -312,6 +312,8 @@ void PipelineHandler::stop(Camera *camera)
/* Make sure no requests are pending. */
Camera::Private *data = camera->_d();
ASSERT(data->queuedRequests_.empty());
+
+ data->requestSequence_ = 0;
}
/**
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 51d74b29..07613cb3 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -526,8 +526,8 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const
*
* When requests are queued, they are given a sequential number to track the
* order in which requests are queued to a camera. This number counts all
- * requests given to a camera through its lifetime, and is not reset to zero
- * between camera stop/start sequences.
+ * requests given to a camera and is reset to zero between camera stop/start
+ * sequences.
*
* It can be used to support debugging and identifying the flow of requests
* through a pipeline, but does not guarantee to represent the sequence number