android: camera_device: Make CameraStream a class

Complete the transformation of CameraStream into a class and provide
a read-only interface that allows to access its parameters but not
modify them at run-time.

No functional changes intended but this change aims to make the code
more robust by enforcing a stricter interface in the CameraStream class.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2020-09-02 12:17:09 +02:00
parent facadb188e
commit 45fe8e99c8
2 changed files with 14 additions and 11 deletions

View file

@ -169,8 +169,9 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,
}
}
CameraStream::CameraStream(PixelFormat f, Size s, unsigned int i, Encoder *e)
: format(f), size(s), index_(i), encoder_(e)
CameraStream::CameraStream(PixelFormat format, Size size,
unsigned int index, Encoder *encoder)
: format_(format), size_(size), index_(index), encoder_(encoder)
{
}
@ -1409,7 +1410,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
descriptor->buffers[i].buffer = camera3Buffers[i].buffer;
/* Software streams are handled after hardware streams complete. */
if (cameraStream->format == formats::MJPEG)
if (cameraStream->format() == formats::MJPEG)
continue;
/*
@ -1473,7 +1474,7 @@ void CameraDevice::requestComplete(Request *request)
CameraStream *cameraStream =
static_cast<CameraStream *>(descriptor->buffers[i].stream->priv);
if (cameraStream->format != formats::MJPEG)
if (cameraStream->format() != formats::MJPEG)
continue;
Encoder *encoder = cameraStream->encoder();
@ -1508,7 +1509,7 @@ void CameraDevice::requestComplete(Request *request)
exif.setMake("libcamera");
exif.setModel("cameraModel");
exif.setOrientation(orientation_);
exif.setSize(cameraStream->size);
exif.setSize(cameraStream->size());
/*
* We set the frame's EXIF timestamp as the time of encode.
* Since the precision we need for EXIF timestamp is only one

View file

@ -27,18 +27,20 @@
class CameraMetadata;
struct CameraStream {
class CameraStream
{
public:
CameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i,
Encoder *e = nullptr);
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(); }
libcamera::PixelFormat format;
libcamera::Size size;
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