summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 2f909cef..3d37677f 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -351,13 +351,23 @@ protected:
if (!info)
LOG(RkISP1, Fatal) << "Frame not known";
- if (info->paramFilled)
- pipe_->param_->queueBuffer(info->paramBuffer);
- else
+ /*
+ * \todo: If parameters are not filled a better method to handle
+ * the situation than queuing a buffer with unknown content
+ * should be used.
+ *
+ * It seems excessive to keep an internal zeroed scratch
+ * parameters buffer around as this should not happen unless the
+ * devices is under too much load. Perhaps failing the request
+ * and returning it to the application with an error code is
+ * better than queue it to hardware?
+ */
+ if (!info->paramFilled)
LOG(RkISP1, Error)
<< "Parameters not ready on time for frame "
- << frame() << ", ignore parameters.";
+ << frame();
+ pipe_->param_->queueBuffer(info->paramBuffer);
pipe_->stat_->queueBuffer(info->statBuffer);
pipe_->video_->queueBuffer(info->videoBuffer);
}