[libcamera-devel] [PATCH v7 03/11] lc-compliance: Move buffer allocation to separate function

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Aug 1 22:41:46 CEST 2021


Hi Nícolas,

On Thu, Jul 22, 2021 at 08:28:43PM -0300, Nícolas F. R. A. Prado wrote:
> Move buffer allocation to its own function and with a count argument so
> tests can specify how many buffers to allocate.
> 
> Also add an overloaded function with no arguments and that allocates
> MinNumRequests buffers for easier use by current tests.

It's now called MinimumRequests.

> Signed-off-by: Nícolas F. R. A. Prado <nfraprado at collabora.com>
> ---
> 
> No changes in v7
> 
> No changes in v6
> 
> Added in v5
> 
>  src/lc-compliance/capture_test.cpp   |  8 +++++++-
>  src/lc-compliance/simple_capture.cpp | 15 +++++++++++----
>  src/lc-compliance/simple_capture.h   |  2 ++
>  3 files changed, 20 insertions(+), 5 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 6444203547be..8683d9050806 100644
> --- a/src/lc-compliance/simple_capture.cpp
> +++ b/src/lc-compliance/simple_capture.cpp
> @@ -44,15 +44,22 @@ void SimpleCapture::configure(StreamRole role)
>  	}
>  }
>  
> -void SimpleCapture::start()
> +void SimpleCapture::allocateBuffers()
> +{
> +	allocateBuffers(camera_->properties().get(properties::MinimumRequests));
> +}
> +
> +void SimpleCapture::allocateBuffers(unsigned int count)
>  {
> -	unsigned int bufferCount = camera_->properties().get(properties::MinNumRequests);
>  	Stream *stream = config_->at(0).stream();
> -	int count = allocator_->allocate(stream, bufferCount);
> +	int allocatedCount = allocator_->allocate(stream, count);

You could also declare a single function with a default value for the
count parameter

	void allocateBuffers(unsigned int count = 0);

and have

	if (!count)
		count = camera_->properties().get(properties::MinimumRequests);

here.

>  
>  	ASSERT_GE(count, 0) << "Failed to allocate buffers";
> -	EXPECT_EQ(static_cast<unsigned int>(count), bufferCount) << "Allocated less buffers than expected";
> +	EXPECT_EQ(static_cast<unsigned int>(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..1a1e874a528c 100644
> --- a/src/lc-compliance/simple_capture.h
> +++ b/src/lc-compliance/simple_capture.h
> @@ -17,6 +17,8 @@ class SimpleCapture
>  {
>  public:
>  	void configure(libcamera::StreamRole role);
> +	void allocateBuffers();
> +	void allocateBuffers(unsigned int count);
>  
>  protected:
>  	SimpleCapture(std::shared_ptr<libcamera::Camera> camera);

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list