[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