summaryrefslogtreecommitdiff
path: root/src/libcamera/camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/camera.cpp')
-rw-r--r--src/libcamera/camera.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 500976b2..49f49fb7 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -6,6 +6,7 @@
*/
#include <libcamera/camera.h>
+#include <libcamera/stream.h>
#include "log.h"
#include "pipeline_handler.h"
@@ -56,13 +57,15 @@ LOG_DECLARE_CATEGORY(Camera)
* \brief Create a camera instance
* \param[in] name The name of the camera device
* \param[in] pipe The pipeline handler responsible for the camera device
+ * \param[in] streams Array of streams the camera provides
*
* The caller is responsible for guaranteeing unicity of the camera name.
*
* \return A shared pointer to the newly created camera object
*/
std::shared_ptr<Camera> Camera::create(PipelineHandler *pipe,
- const std::string &name)
+ const std::string &name,
+ const std::vector<Stream *> &streams)
{
struct Allocator : std::allocator<Camera> {
void construct(void *p, PipelineHandler *pipe,
@@ -76,7 +79,12 @@ std::shared_ptr<Camera> Camera::create(PipelineHandler *pipe,
}
};
- return std::allocate_shared<Camera>(Allocator(), pipe, name);
+ std::shared_ptr<Camera> camera =
+ std::allocate_shared<Camera>(Allocator(), pipe, name);
+
+ camera->streams_ = streams;
+
+ return camera;
}
/**
@@ -164,4 +172,18 @@ void Camera::release()
acquired_ = false;
}
+/**
+ * \brief Retrieve all the camera's stream information
+ *
+ * Retrieve all of the camera's static stream information. The static
+ * information describes among other things how many streams the camera
+ * supports and the capabilities of each stream.
+ *
+ * \return An array of all the camera's streams.
+ */
+const std::vector<Stream *> &Camera::streams() const
+{
+ return streams_;
+}
+
} /* namespace libcamera */