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

Jacopo Mondi jacopo at jmondi.org
Mon Oct 5 18:36:39 CEST 2020


iHi Laurent

On Mon, Oct 05, 2020 at 07:19:32PM +0300, Laurent Pinchart wrote:
> Hi Jacopo,
>
> On Mon, Oct 05, 2020 at 04:56:31PM +0200, Jacopo Mondi wrote:
> > On Mon, Oct 05, 2020 at 02:19:40PM +0300, Laurent Pinchart wrote:
> > > 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.
> >
> > Apparently not
> > error: invalid application of 'sizeof' to an incomplete type 'Encoder'
>
> You need to include the header in camera_stream.cpp :-)
>

AH, my bad, I thought the error was in the .h file because of the
unique_ptr<> wrapping Encoder.

Thanks!

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