[libcamera-devel] [PATCH v8 11/17] lc-compliance: Move buffer allocation to separate function
Paul Elder
paul.elder at ideasonboard.com
Thu Dec 1 12:29:05 CET 2022
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 at collabora.com>
Reviewed-by: Paul Elder <paul.elder at 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
>
More information about the libcamera-devel
mailing list