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) CameraStream::CameraStream(PixelFormat format, Size size,
: format(f), size(s), index_(i), encoder_(e) 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; descriptor->buffers[i].buffer = camera3Buffers[i].buffer;
/* Software streams are handled after hardware streams complete. */ /* Software streams are handled after hardware streams complete. */
if (cameraStream->format == formats::MJPEG) if (cameraStream->format() == formats::MJPEG)
continue; continue;
/* /*
@ -1473,7 +1474,7 @@ void CameraDevice::requestComplete(Request *request)
CameraStream *cameraStream = CameraStream *cameraStream =
static_cast<CameraStream *>(descriptor->buffers[i].stream->priv); static_cast<CameraStream *>(descriptor->buffers[i].stream->priv);
if (cameraStream->format != formats::MJPEG) if (cameraStream->format() != formats::MJPEG)
continue; continue;
Encoder *encoder = cameraStream->encoder(); Encoder *encoder = cameraStream->encoder();
@ -1508,7 +1509,7 @@ void CameraDevice::requestComplete(Request *request)
exif.setMake("libcamera"); exif.setMake("libcamera");
exif.setModel("cameraModel"); exif.setModel("cameraModel");
exif.setOrientation(orientation_); exif.setOrientation(orientation_);
exif.setSize(cameraStream->size); exif.setSize(cameraStream->size());
/* /*
* We set the frame's EXIF timestamp as the time of encode. * We set the frame's EXIF timestamp as the time of encode.
* Since the precision we need for EXIF timestamp is only one * Since the precision we need for EXIF timestamp is only one

View file

@ -27,18 +27,20 @@
class CameraMetadata; class CameraMetadata;
struct CameraStream { class CameraStream
{
public: public:
CameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i, CameraStream(libcamera::PixelFormat format, libcamera::Size size,
Encoder *e = nullptr); 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_; } unsigned int index() const { return index_; }
Encoder *encoder() const { return encoder_.get(); } Encoder *encoder() const { return encoder_.get(); }
libcamera::PixelFormat format;
libcamera::Size size;
private: private:
libcamera::PixelFormat format_;
libcamera::Size size_;
/* /*
* The index of the libcamera StreamConfiguration as added during * The index of the libcamera StreamConfiguration as added during
* configureStreams(). A single libcamera Stream may be used to deliver * configureStreams(). A single libcamera Stream may be used to deliver