summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/camera.h36
-rw-r--r--include/libcamera/stream.h12
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 {