diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-04-05 01:23:23 +0200 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-04-09 16:57:53 +0200 |
commit | 9a7dc3ce7f4253578a0f7c0d58417425c8155cb3 (patch) | |
tree | 1ead7b8f7645fe005be044323e3f2dbd6c8af5eb /include | |
parent | 20a6455e0b62575bb00136501f7f39f3e150d0d9 (diff) |
libcamera: camera: Add CameraConfiguration
To properly support both multiple streams and stream usages the library
must provide a method to map the stream usages to the returned streams
configurations. Add a camera configuration object to handle this
mapping.
Applications can iterate over the returned camera configuration to
retrieve the streams selected by the library in the same order as the
usages it provided to the library.
Applications can use the operator[] to retrieve the stream pointer and
the stream configuration. Using a numerical index retrieves the stream
pointer, the numerical indexes corresponds to the insertion order of
usages in the CameraConfiguration, using the stream pointer retrieves
the stream's configuration.
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/camera.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 0386671c..6038da63 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -24,6 +24,35 @@ class Stream; class StreamConfiguration; class StreamUsage; +class CameraConfiguration +{ +public: + using iterator = std::vector<Stream *>::iterator; + using const_iterator = std::vector<Stream *>::const_iterator; + + CameraConfiguration(); + + iterator begin(); + iterator end(); + const_iterator begin() const; + const_iterator end() const; + + bool isValid() const; + bool isEmpty() const; + std::size_t size() const; + + Stream *front(); + const Stream *front() const; + + Stream *operator[](unsigned int index) const; + StreamConfiguration &operator[](Stream *stream); + const StreamConfiguration &operator[](Stream *stream) const; + +private: + std::vector<Stream *> order_; + std::map<Stream *, StreamConfiguration> config_; +}; + class Camera final { public: |