@@ -87,6 +87,8 @@ TEST_P(SingleStream, Capture)
capture.configure(role);
+ capture.allocateBuffers();
+
capture.capture(numRequests);
}
@@ -106,8 +108,10 @@ TEST_P(SingleStream, CaptureStartStop)
capture.configure(role);
- for (unsigned int starts = 0; starts < numRepeats; starts++)
+ for (unsigned int starts = 0; starts < numRepeats; starts++) {
+ capture.allocateBuffers();
capture.capture(numRequests);
+ }
}
/*
@@ -125,6 +129,8 @@ TEST_P(SingleStream, UnbalancedStop)
capture.configure(role);
+ capture.allocateBuffers();
+
capture.capture(numRequests);
}
@@ -44,16 +44,20 @@ void SimpleCapture::configure(StreamRole role)
}
}
-void SimpleCapture::start()
+void SimpleCapture::allocateBuffers(unsigned int count)
{
- unsigned int bufferCount =
- camera_->properties().get(properties::MinimumRequests).value();
+ if (!count)
+ count = camera_->properties().get(properties::MinimumRequests).value();
+
Stream *stream = config_->at(0).stream();
- int count = allocator_->allocate(stream, bufferCount);
+ int allocatedCount = allocator_->allocate(stream, count);
- ASSERT_GE(count, 0) << "Failed to allocate buffers";
- EXPECT_EQ(count, bufferCount) << "Allocated less buffers than expected";
+ ASSERT_GE(allocatedCount, 0) << "Failed to allocate buffers";
+ EXPECT_EQ(allocatedCount, count) << "Allocated less buffers than expected";
+}
+void SimpleCapture::start()
+{
camera_->requestCompleted.connect(this, &SimpleCapture::requestComplete);
ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
@@ -17,6 +17,7 @@ class SimpleCapture
{
public:
void configure(libcamera::StreamRole role);
+ void allocateBuffers(unsigned int count = 0);
protected:
SimpleCapture(std::shared_ptr<libcamera::Camera> camera);