[libcamera-devel] [PATCH v6 04/15] pipeline: raspberrypi: Reorder startup drop frame initialisation
Naushir Patuck
naush at raspberrypi.com
Fri Jan 27 16:43:11 CET 2023
Reorder the code such that the IPA requested startup drop frames count is
available before the pipeline handler allocates any stream buffers.
This will be used in a subsequent change to stop Unicam buffer allocations if
there are no startup drop frames required and the application has configured a
raw stream and always provides buffers for it.
Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
.../pipeline/raspberrypi/raspberrypi.cpp | 30 +++++++++----------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 9e959782d310..8aa83aa76ae0 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -1041,21 +1041,6 @@ int PipelineHandlerRPi::start(Camera *camera, const ControlList *controls)
RPiCameraData *data = cameraData(camera);
int ret;
- for (auto const stream : data->streams_)
- stream->resetBuffers();
-
- if (!data->buffersAllocated_) {
- /* Allocate buffers for internal pipeline usage. */
- ret = prepareBuffers(camera);
- if (ret) {
- LOG(RPI, Error) << "Failed to allocate buffers";
- data->freeBuffers();
- stop(camera);
- return ret;
- }
- data->buffersAllocated_ = true;
- }
-
/* Check if a ScalerCrop control was specified. */
if (controls)
data->applyScalerCrop(*controls);
@@ -1072,6 +1057,21 @@ int PipelineHandlerRPi::start(Camera *camera, const ControlList *controls)
/* Configure the number of dropped frames required on startup. */
data->dropFrameCount_ = startConfig.dropFrameCount;
+ for (auto const stream : data->streams_)
+ stream->resetBuffers();
+
+ if (!data->buffersAllocated_) {
+ /* Allocate buffers for internal pipeline usage. */
+ ret = prepareBuffers(camera);
+ if (ret) {
+ LOG(RPI, Error) << "Failed to allocate buffers";
+ data->freeBuffers();
+ stop(camera);
+ return ret;
+ }
+ data->buffersAllocated_ = true;
+ }
+
/* We need to set the dropFrameCount_ before queueing buffers. */
ret = queueAllBuffers(camera);
if (ret) {
--
2.25.1
More information about the libcamera-devel
mailing list