Message ID | 20210824195636.1110845-12-nfraprado@collabora.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
On Tue, Aug 24, 2021 at 04:56:30PM -0300, Nícolas F. R. A. Prado wrote: > Move buffer allocation to its own function and with an optional count > argument so tests can specify how many buffers to allocate. When count > is omitted, allocate MinimumRequests buffers. > > Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > > --- > > Changes in v8: > - Made SimpleCapture::allocateBuffers() a single function with an optional parameter > > Changes in v5: > - New > > src/lc-compliance/capture_test.cpp | 8 +++++++- > src/lc-compliance/simple_capture.cpp | 15 ++++++++++----- > src/lc-compliance/simple_capture.h | 1 + > 3 files changed, 18 insertions(+), 6 deletions(-) > > diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp > index 52578207c11f..6439cbd88f8e 100644 > --- a/src/lc-compliance/capture_test.cpp > +++ b/src/lc-compliance/capture_test.cpp > @@ -80,6 +80,8 @@ TEST_P(SingleStream, Capture) > > capture.configure(role); > > + capture.allocateBuffers(); > + > capture.capture(numRequests); > } > > @@ -99,8 +101,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); > + } > } > > /* > @@ -118,6 +122,8 @@ TEST_P(SingleStream, UnbalancedStop) > > capture.configure(role); > > + capture.allocateBuffers(); > + > capture.capture(numRequests); > } > > diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp > index d87f30cbeb1b..041a2a4cbb5a 100644 > --- a/src/lc-compliance/simple_capture.cpp > +++ b/src/lc-compliance/simple_capture.cpp > @@ -44,15 +44,20 @@ void SimpleCapture::configure(StreamRole role) > } > } > > -void SimpleCapture::start() > +void SimpleCapture::allocateBuffers(unsigned int count) > { > - unsigned int bufferCount = camera_->properties().get(properties::MinimumRequests); > + if (!count) > + count = camera_->properties().get(properties::MinimumRequests); > + > 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"; > diff --git a/src/lc-compliance/simple_capture.h b/src/lc-compliance/simple_capture.h > index 100ffd6637ad..401ba8273da8 100644 > --- a/src/lc-compliance/simple_capture.h > +++ b/src/lc-compliance/simple_capture.h > @@ -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); > -- > 2.33.0 >
diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp index 52578207c11f..6439cbd88f8e 100644 --- a/src/lc-compliance/capture_test.cpp +++ b/src/lc-compliance/capture_test.cpp @@ -80,6 +80,8 @@ TEST_P(SingleStream, Capture) capture.configure(role); + capture.allocateBuffers(); + capture.capture(numRequests); } @@ -99,8 +101,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); + } } /* @@ -118,6 +122,8 @@ TEST_P(SingleStream, UnbalancedStop) capture.configure(role); + capture.allocateBuffers(); + capture.capture(numRequests); } diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp index d87f30cbeb1b..041a2a4cbb5a 100644 --- a/src/lc-compliance/simple_capture.cpp +++ b/src/lc-compliance/simple_capture.cpp @@ -44,15 +44,20 @@ void SimpleCapture::configure(StreamRole role) } } -void SimpleCapture::start() +void SimpleCapture::allocateBuffers(unsigned int count) { - unsigned int bufferCount = camera_->properties().get(properties::MinimumRequests); + if (!count) + count = camera_->properties().get(properties::MinimumRequests); + 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"; diff --git a/src/lc-compliance/simple_capture.h b/src/lc-compliance/simple_capture.h index 100ffd6637ad..401ba8273da8 100644 --- a/src/lc-compliance/simple_capture.h +++ b/src/lc-compliance/simple_capture.h @@ -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);
Move buffer allocation to its own function and with an optional count argument so tests can specify how many buffers to allocate. When count is omitted, allocate MinimumRequests buffers. Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> --- Changes in v8: - Made SimpleCapture::allocateBuffers() a single function with an optional parameter Changes in v5: - New src/lc-compliance/capture_test.cpp | 8 +++++++- src/lc-compliance/simple_capture.cpp | 15 ++++++++++----- src/lc-compliance/simple_capture.h | 1 + 3 files changed, 18 insertions(+), 6 deletions(-)