[libcamera-devel] [PATCH v1 2/2] pipeline: raspberrypi: Improve Unicam timeout handling

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Sep 16 15:34:24 CEST 2022


Quoting Naushir Patuck via libcamera-devel (2022-09-16 11:05:17)
> Currently, if a Unicam timeout is signalled, the pipeline handler only raises
> an error message. Update the error handling to put the pipeline handler in an
> internal error state, disable all device streams, and return all outstanding
> requests as cancelled. Any subsequent requests that come into the pipeline
> handler will also be returned as cancelled.

Does this mean that currently the application will stop and exit?

> 
> Any further error handling (e.g. a reset with camera stop()/start()) is up to
> the application to perform as it requires.
> 
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index d429cb444d58..4464d4d07f15 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -1819,6 +1819,17 @@ void RPiCameraData::unicamTimeout()
>         LOG(RPI, Error) << "Unicam has timed out!";
>         LOG(RPI, Error) << "Please check that your camera sensor connector is attached securely.";
>         LOG(RPI, Error) << "Alternatively, try another cable and/or sensor.";
> +
> +       state_ = RPiCameraData::State::Error;
> +       /*
> +        * To allow the application to attempt a recovery from this timeout,
> +        * stop all device streaming, and return any outstanding requests as

s/device/devices/

> +        * incomplete and cancelled.
> +        */
> +       for (auto const stream : streams_)
> +               stream->dev()->streamOff();
> +
> +       clearIncompleteRequests();

Again, I think this is fine for RPi, but I wonder if this is something
we should also (instead of?/as well as) handle this in the Camera object
directly ?


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

>  }
>  
>  void RPiCameraData::unicamBufferDequeue(FrameBuffer *buffer)
> -- 
> 2.25.1
>


More information about the libcamera-devel mailing list