From 871d182cef052f0fbf026a73cc24fe2f4dbd5974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= Date: Thu, 26 Mar 2020 16:18:42 +0100 Subject: libcamera: pipeline: rkisp1: Do not try to process cancelled frames MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no need to try and process cancelled frames, try to finish as quickly as possible. Signed-off-by: Niklas Söderlund Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index dcc787a8..47edf1dc 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -1032,6 +1032,12 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer) RkISP1CameraData *data = cameraData(activeCamera_); Request *request = buffer->request(); + if (buffer->metadata().status == FrameMetadata::FrameCancelled) { + completeBuffer(activeCamera_, request, buffer); + completeRequest(activeCamera_, request); + return; + } + data->timeline_.bufferReady(buffer); if (data->frame_ <= buffer->metadata().sequence) @@ -1043,6 +1049,9 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer) void PipelineHandlerRkISP1::paramReady(FrameBuffer *buffer) { + if (buffer->metadata().status == FrameMetadata::FrameCancelled) + return; + ASSERT(activeCamera_); RkISP1CameraData *data = cameraData(activeCamera_); @@ -1054,6 +1063,9 @@ void PipelineHandlerRkISP1::paramReady(FrameBuffer *buffer) void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer) { + if (buffer->metadata().status == FrameMetadata::FrameCancelled) + return; + ASSERT(activeCamera_); RkISP1CameraData *data = cameraData(activeCamera_); -- cgit v1.2.1