[libcamera-devel] [PATCH v3 2/2] android: CameraDevice: Add stop()

Jacopo Mondi jacopo at jmondi.org
Mon Mar 29 11:13:43 CEST 2021


Hi Hiro,

On Mon, Mar 29, 2021 at 03:11:19PM +0900, Hirokazu Honda wrote:
> This adds CameraDevice::stop(), which cleans up the member
> variables of CameraDevice. It is called in CameraDevice::close()
> and CameraDevice::configureStreams().
>
> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
> ---
>  src/android/camera_device.cpp | 17 +++++++++--------
>  src/android/camera_device.h   |  2 ++
>  2 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 02d3bfb2..d5447d8e 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -659,12 +659,17 @@ int CameraDevice::open(const hw_module_t *hardwareModule)
>
>  void CameraDevice::close()
>  {
> -	streams_.clear();
> +	stop();
> +
> +	camera_->release();
> +}
>
> +void CameraDevice::stop()
> +{
>  	worker_.stop();
>  	camera_->stop();

I think the camera shall be stopped only if (running_). Otherwise
you'll get an error message from the Camera state maching if I'm not
mistaken.

> -	camera_->release();
>
> +	descriptors_.clear();

Ideally, this should be done as:
1) Introduce stop() in CameraDevice
2) Introduce descriptors_ and clear it in stop()

As this bundle two changes in one patch.

A minor though.

The patch is fine, but I think the discussion with Laurent on what has
triggered this issue in first place is still a bit on-going, right ?

>  	running_ = false;
>  }
>
> @@ -1547,12 +1552,8 @@ PixelFormat CameraDevice::toPixelFormat(int format) const
>   */
>  int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
>  {
> -	/* Before any configuration attempt, stop the camera if it's running. */
> -	if (running_) {
> -		worker_.stop();
> -		camera_->stop();
> -		running_ = false;
> -	}
> +	/* Before any configuration attempt, stop the camera. */
> +	stop();
>
>  	/*
>  	 * Generate an empty configuration, and construct a StreamConfiguration
> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> index 5a2d22d6..cc12fe20 100644
> --- a/src/android/camera_device.h
> +++ b/src/android/camera_device.h
> @@ -87,6 +87,8 @@ private:
>  		int androidFormat;
>  	};
>
> +	void stop();
> +
>  	int initializeStreamConfigurations();
>  	std::vector<libcamera::Size>
>  	getYUVResolutions(libcamera::CameraConfiguration *cameraConfig,
> --
> 2.31.0.291.g576ba9dcdaf-goog
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list