[libcamera-devel] [PATCH 01/15] android: camera_stream: Break out CameraStream

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Oct 5 12:54:44 CEST 2020


Hi Jacopo

I am incredibly happy to see this happen first ;-)

All of your work in progress prevented me from doing the same, so I'm
really happy to see this move now, and your other work based on top.

Thank you!

On 05/10/2020 11:46, Laurent Pinchart wrote:
> From: Jacopo Mondi <jacopo at jmondi.org>
> 
> Break CameraStream out of the CameraDevice class.
> 
> No functional changes, only the code is moved.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

I think this will really help with the clarity of the design as it comes
up. I should have done this straight away when the CameraStream was
introduced.

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


> ---
>  src/android/camera_device.cpp |  6 ------
>  src/android/camera_device.h   | 24 +--------------------
>  src/android/camera_stream.cpp | 16 ++++++++++++++
>  src/android/camera_stream.h   | 40 +++++++++++++++++++++++++++++++++++
>  src/android/meson.build       |  1 +
>  5 files changed, 58 insertions(+), 29 deletions(-)
>  create mode 100644 src/android/camera_stream.cpp
>  create mode 100644 src/android/camera_stream.h
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 751699cd2113..bbc692fe109f 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -169,12 +169,6 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,
>  	}
>  }
>  
> -CameraStream::CameraStream(PixelFormat format, Size size,
> -			   unsigned int index, Encoder *encoder)
> -	: format_(format), size_(size), index_(index), encoder_(encoder)
> -{
> -}
> -
>  /*
>   * \struct Camera3RequestDescriptor
>   *
> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> index 1837748d2efc..52923ec979a7 100644
> --- a/src/android/camera_device.h
> +++ b/src/android/camera_device.h
> @@ -23,33 +23,11 @@
>  #include "libcamera/internal/log.h"
>  #include "libcamera/internal/message.h"
>  
> +#include "camera_stream.h"
>  #include "jpeg/encoder.h"
>  
>  class CameraMetadata;
>  
> -class CameraStream
> -{
> -public:
> -	CameraStream(libcamera::PixelFormat format, libcamera::Size size,
> -		     unsigned int index, Encoder *encoder = nullptr);
> -
> -	const libcamera::PixelFormat &format() const { return format_; }
> -	const libcamera::Size &size() const { return size_; }
> -	unsigned int index() const { return index_; }
> -	Encoder *encoder() const { return encoder_.get(); }
> -
> -private:
> -	libcamera::PixelFormat format_;
> -	libcamera::Size size_;
> -	/*
> -	 * The index of the libcamera StreamConfiguration as added during
> -	 * configureStreams(). A single libcamera Stream may be used to deliver
> -	 * one or more streams to the Android framework.
> -	 */
> -	unsigned int index_;
> -	std::unique_ptr<Encoder> encoder_;
> -};
> -
>  class CameraDevice : protected libcamera::Loggable
>  {
>  public:
> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp
> new file mode 100644
> index 000000000000..01c62978ca3a
> --- /dev/null
> +++ b/src/android/camera_stream.cpp
> @@ -0,0 +1,16 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2020, Google Inc.
> + *
> + * camera_stream.cpp - Camera HAL stream
> + */
> +
> +#include "camera_stream.h"
> +
> +using namespace libcamera;
> +
> +CameraStream::CameraStream(PixelFormat format, Size size,
> +			   unsigned int index, Encoder *encoder)
> +	: format_(format), size_(size), index_(index), encoder_(encoder)
> +{
> +}
> diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h
> new file mode 100644
> index 000000000000..10dece7beb69
> --- /dev/null
> +++ b/src/android/camera_stream.h
> @@ -0,0 +1,40 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2020, Google Inc.
> + *
> + * camera_stream.h - Camera HAL stream
> + */
> +#ifndef __ANDROID_CAMERA_STREAM_H__
> +#define __ANDROID_CAMERA_STREAM_H__
> +
> +#include <memory>
> +
> +#include <libcamera/geometry.h>
> +#include <libcamera/pixel_format.h>
> +
> +#include "jpeg/encoder.h"
> +
> +class CameraStream
> +{
> +public:
> +	CameraStream(libcamera::PixelFormat format, libcamera::Size size,
> +		     unsigned int index, Encoder *encoder = nullptr);
> +
> +	const libcamera::PixelFormat &format() const { return format_; }
> +	const libcamera::Size &size() const { return size_; }
> +	unsigned int index() const { return index_; }
> +	Encoder *encoder() const { return encoder_.get(); }
> +
> +private:
> +	libcamera::PixelFormat format_;
> +	libcamera::Size size_;
> +	/*
> +	 * The index of the libcamera StreamConfiguration as added during
> +	 * configureStreams(). A single libcamera Stream may be used to deliver
> +	 * one or more streams to the Android framework.
> +	 */
> +	unsigned int index_;
> +	std::unique_ptr<Encoder> encoder_;
> +};
> +
> +#endif /* __ANDROID_CAMERA_STREAM__ */
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 0293c2036561..802bb89afe57 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -20,6 +20,7 @@ android_hal_sources = files([
>      'camera_device.cpp',
>      'camera_metadata.cpp',
>      'camera_ops.cpp',
> +    'camera_stream.cpp',
>      'jpeg/encoder_libjpeg.cpp',
>      'jpeg/exif.cpp',
>  ])
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list