[libcamera-devel] [PATCH v2] pipeline: rpi: vc4: Allocate more embedded data buffers

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Oct 18 15:16:26 CEST 2023


Quoting William Vinnicombe via libcamera-devel (2023-10-18 13:52:41)
> If the pipeline runs out of embedded data buffers, then it will pass
> the frame to the IPA without the metadata. The IPA then has to use the
> delayed controls as inputs to the algorithms. This can cause problems
> with the subsequent algorithms if the sensor did not action the
> controls, especially with the autofocus as that doesn't have controls
> which can be passed in lieu of the metadata.
> 
> Reduce the likelihood of this by increasing the number of embedded data
> buffers, as they are small so a generous number can be allocated.
> 
> Signed-off-by: William Vinnicombe <william.vinnicombe at raspberrypi.com>
> Reviewed-by: Naushir Patuck <naush at raspberrypi.com>


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Applying...


> ---
>  src/libcamera/pipeline/rpi/vc4/vc4.cpp | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> index 425ab9ae..d7279d02 100644
> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> @@ -258,10 +258,21 @@ int PipelineHandlerVc4::prepareBuffers(Camera *camera)
>  
>                 } else if (stream == &data->unicam_[Unicam::Embedded]) {
>                         /*
> -                        * Embedded data buffers are (currently) for internal use,
> -                        * so allocate the minimum required to avoid frame drops.
> +                        * Embedded data buffers are (currently) for internal use, and
> +                        * are small enough (typically 1-2KB) that we can
> +                        * allocate them generously to avoid causing problems in the
> +                        * IPA when we cannot supply the metadata.
> +                        * 
> +                        * 12 are allocated as a typical application will have 8-10
> +                        * input buffers, so allocating more embedded buffers than that
> +                        * is a sensible choice.
> +                        * 
> +                        * The lifetimes of these buffers are smaller than those of the
> +                        * raw buffers, so allocating a fixed number will still suffice
> +                        * if the application requests a greater number of raw
> +                        * buffers, as these will be recycled quicker.
>                          */
> -                       numBuffers = minBuffers;
> +                       numBuffers = 12;
>                 } else {
>                         /*
>                          * Since the ISP runs synchronous with the IPA and requests,
> -- 
> 2.39.2
>


More information about the libcamera-devel mailing list