[libcamera-devel] [PATCH 09/13] libcamera: pipeline: simple: Reset routing table of subdevs

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Tue Aug 2 13:05:16 CEST 2022


On 01/08/2022 03:05, Laurent Pinchart via libcamera-devel wrote:
> From: Jacopo Mondi <jacopo at jmondi.org>
> 
> Reset the routing table of subdevices supporting the V4L2 streams API to
> its default state when initializing the pipeline handler. This avoids
> issues caused by usage of leftover state.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>   src/libcamera/pipeline/simple/simple.cpp | 49 ++++++++++++++++++++++++
>   1 file changed, 49 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index bc0cb1a00c2a..731d355efda6 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -332,6 +332,7 @@ private:
>   	}
>   
>   	std::vector<MediaEntity *> locateSensors();
> +	static int resetRoutingTable(V4L2Subdevice *subdev);
>   
>   	const MediaPad *acquirePipeline(SimpleCameraData *data);
>   	void releasePipeline(SimpleCameraData *data);
> @@ -1260,6 +1261,37 @@ std::vector<MediaEntity *> SimplePipelineHandler::locateSensors()
>   	return sensors;
>   }
>   
> +int SimplePipelineHandler::resetRoutingTable(V4L2Subdevice *subdev)
> +{
> +	/* Reset the media entity routing table to its default state. */
> +	V4L2Subdevice::Routing routing = {};
> +
> +	int ret = subdev->getRouting(&routing, V4L2Subdevice::TryFormat);
> +	if (ret)
> +		return ret;
> +
> +	ret = subdev->setRouting(&routing, V4L2Subdevice::ActiveFormat);
> +	if (ret)
> +		return ret;

Is this a normal way to reset things in v4l2? Say, if you want to reset 
the fmt on a pad?

Reviewed-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>

  Tomi


More information about the libcamera-devel mailing list