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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Oct 5 13:19:40 CEST 2020


Hi Jacopo,

Thank you for the patch.

On Mon, Oct 05, 2020 at 01:46:35PM +0300, 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>
> ---
>  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"

You could forward-declare Encoder instead.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> +
> +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,

Laurent Pinchart


More information about the libcamera-devel mailing list