[libcamera-devel] [PATCH v2 09/16] libcamera: Stop using Stream::bufferPool to get the number of buffers

Niklas Söderlund niklas.soderlund at ragnatech.se
Sun Jul 14 12:47:43 CEST 2019


Hi Laurent,

Thanks for your patch.

On 2019-07-13 20:23:44 +0300, Laurent Pinchart wrote:
> The cam and qcam applications, as well as the camera capture test case,
> access the Stream::bufferPool in order to know how many requests to
> initially queue. As part of an effort to remove access to the buffer
> pool from applications, use the buffer count from the stream
> configuration instead.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  src/cam/capture.cpp      | 6 ++----
>  src/qcam/main_window.cpp | 3 +--
>  test/camera/capture.cpp  | 3 +--
>  3 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp
> index 1cf59063c93b..66ec1abaa5ac 100644
> --- a/src/cam/capture.cpp
> +++ b/src/cam/capture.cpp
> @@ -74,10 +74,8 @@ int Capture::capture(EventLoop *loop)
>  
>  	/* Identify the stream with the least number of buffers. */
>  	unsigned int nbuffers = UINT_MAX;
> -	for (StreamConfiguration &cfg : *config_) {
> -		Stream *stream = cfg.stream();
> -		nbuffers = std::min(nbuffers, stream->bufferPool().count());
> -	}
> +	for (StreamConfiguration &cfg : *config_)
> +		nbuffers = std::min(nbuffers, cfg.bufferCount);
>  
>  	/*
>  	 * TODO: make cam tool smarter to support still capture by for
> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> index 6ecf30e33bcf..7023e1158fb6 100644
> --- a/src/qcam/main_window.cpp
> +++ b/src/qcam/main_window.cpp
> @@ -140,9 +140,8 @@ int MainWindow::startCapture()
>  		return ret;
>  	}
>  
> -	BufferPool &pool = stream->bufferPool();
>  	std::vector<Request *> requests;
> -	for (unsigned int i = 0; i < pool.count(); ++i) {
> +	for (unsigned int i = 0; i < cfg.bufferCount; ++i) {
>  		Request *request = camera_->createRequest();
>  		if (!request) {
>  			std::cerr << "Can't create request" << std::endl;
> diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp
> index ff1cbd6cbac0..e6bf7a8d9ebb 100644
> --- a/test/camera/capture.cpp
> +++ b/test/camera/capture.cpp
> @@ -80,9 +80,8 @@ protected:
>  		}
>  
>  		Stream *stream = cfg.stream();
> -		BufferPool &pool = stream->bufferPool();
>  		std::vector<Request *> requests;
> -		for (unsigned int i = 0; i < pool.count(); ++i) {
> +		for (unsigned int i = 0; i < cfg.bufferCount; ++i) {
>  			Request *request = camera_->createRequest();
>  			if (!request) {
>  				cout << "Failed to create request" << endl;
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list