diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/camera.h | 36 | ||||
-rw-r--r-- | include/libcamera/stream.h | 12 |
2 files changed, 33 insertions, 15 deletions
diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 42ba5201..284e5276 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -25,30 +25,36 @@ class Request; class CameraConfiguration { public: - using iterator = std::vector<Stream *>::iterator; - using const_iterator = std::vector<Stream *>::const_iterator; + using iterator = std::vector<StreamConfiguration>::iterator; + using const_iterator = std::vector<StreamConfiguration>::const_iterator; CameraConfiguration(); + void addConfiguration(const StreamConfiguration &cfg); + + bool isValid() const; + + StreamConfiguration &at(unsigned int index); + const StreamConfiguration &at(unsigned int index) const; + StreamConfiguration &operator[](unsigned int index) + { + return at(index); + } + const StreamConfiguration &operator[](unsigned int index) const + { + return at(index); + } + iterator begin(); - iterator end(); const_iterator begin() const; + iterator end(); const_iterator end() const; - bool isValid() const; - bool isEmpty() const; + bool empty() 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_; + std::vector<StreamConfiguration> config_; }; class Camera final @@ -72,7 +78,7 @@ public: const std::set<Stream *> &streams() const; CameraConfiguration generateConfiguration(const StreamRoles &roles); - int configure(const CameraConfiguration &config); + int configure(CameraConfiguration &config); int allocateBuffers(); int freeBuffers(); diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h index 59bdf217..e38c0e7e 100644 --- a/include/libcamera/stream.h +++ b/include/libcamera/stream.h @@ -16,14 +16,26 @@ namespace libcamera { class Camera; +class Stream; struct StreamConfiguration { + StreamConfiguration() + : stream_(nullptr) + { + } + unsigned int pixelFormat; Size size; unsigned int bufferCount; + Stream *stream() const { return stream_; } + void setStream(Stream *stream) { stream_ = stream; } + std::string toString() const; + +private: + Stream *stream_; }; enum StreamRole { |