[libcamera-devel] [SimpleCam PATCH 3/4] simple-cam: Fix the Buffer Allocation guidance

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Aug 25 13:48:40 CEST 2021



On 25/08/2021 10:21, Jacopo Mondi wrote:
> Hi Kieran,
> 
> On Tue, Aug 24, 2021 at 03:24:49PM +0100, Kieran Bingham wrote:
>> The Buffer Allocation notes contains a TODO. Improve the notes regarding
>> the FrameBufferAllocation and remove the todo.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>> ---
>>  simple-cam.cpp | 12 +++++++++---
>>  1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/simple-cam.cpp b/simple-cam.cpp
>> index 2e646a5485c9..47c5dc9987bc 100644
>> --- a/simple-cam.cpp
>> +++ b/simple-cam.cpp
>> @@ -274,10 +274,16 @@ int main()
>>  	 * Buffer Allocation
>>  	 *
>>  	 * Now that a camera has been configured, it knows all about its
>> -	 * Streams sizes and formats, so we now have to ask it to reserve
>> -	 * memory for all of them.
>> +	 * Streams sizes and formats. We need to provide buffers to store
>> +	 * captured images in. An application might choose to provide buffers
>> +	 * externally, for instance from a display driver which will render the
>> +	 * captured images, however libcamera can also provide buffers from a
>> +	 * configured camera.
> 
> What about one paragraph for each of the two use cases ?
> 
> 
> 	 * Streams sizes and formats. The captured images need to be stored in
>          * memory buffers which can be either provided by the application to the
>          * library, or allocated in the Camera memory and exposed to
>          * the application by libcamera.
>          *
>          * An application can decide to allocate memory buffers from
>          * elsewhere, in example in the memory of the display driver that
>          * will render the captured frames, and provide them to
>          * libcamera to capture images there.
>          *
>          * Alternatively libcamera can help the application by providing
>          * buffers allocated in the Camera memory by the usage of a
>          * FrameBufferAllocator instance, which references the
>          * (configured) Camera for which the application wishes to
>          * allocated buffers for.
>          */
> 
> feel free to take whatever or ignore.



Trying to expand with your text, and fixing up a few parts I get this:

> /*
>  * Now that a camera has been configured, it knows all about its
>  * Streams sizes and formats. The captured images need to be stored in
>  * memory buffers which can either be provided by the application to the
>  * library, or allocated in the Camera and exposed to the application by
>  * libcamera.
>  *
>  * An application may decide to allocate memory buffers from elsewhere,
>  * for example in memory allocated by the display driver that will
>  * render the captured frames. The application will provide them to
>  * libcamera by constructing FrameBuffer instances to capture images
>  * directly into.
>  *
>  * Alternatively libcamera can help the application by providing buffers
>  * allocated by the Camera using a FrameBufferAllocator instance and
>  * referencing a configured Camera to determine the appropriate buffer
>  * size and types to create.
>  */

Hows that? It feels a little bit repetitive, but I don't mind that if it
expands more.


> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> 
> Thanks
>    j
> 
> 
>> +	 *
>> +	 * To request buffers from libcamera, we use the FrameBufferAllocator,
>> +	 * and reference the (configured) camera for which we wish to allocate
>> +	 * buffers for.
>>  	 */
>> -	/* TODO: Update the comment here too */
>>  	FrameBufferAllocator *allocator = new FrameBufferAllocator(camera);
>>
>>  	for (StreamConfiguration &cfg : *config) {
>> --
>> 2.30.2
>>


More information about the libcamera-devel mailing list