From 65ea2422d24a30736e457fdefe31956b4428ae0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>
Date: Thu, 31 Jan 2019 10:52:41 +0100
Subject: libcamera: camera: extend camera object to support configuration of
 streams
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Extend the camera to support reading and configuring formats for
groups of streams. The implementation in the Camera are minimalistic as
the heavy lifting are done by the pipeline handler implementations.

The most important functionality the camera provides in this context is
validation of data structures passed to it from the application and
access control to the pipeline handler.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 include/libcamera/camera.h | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'include')

diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
index cee96e9a..4940c344 100644
--- a/include/libcamera/camera.h
+++ b/include/libcamera/camera.h
@@ -7,6 +7,7 @@
 #ifndef __LIBCAMERA_CAMERA_H__
 #define __LIBCAMERA_CAMERA_H__
 
+#include <map>
 #include <memory>
 #include <string>
 
@@ -16,6 +17,7 @@ namespace libcamera {
 
 class PipelineHandler;
 class Stream;
+class StreamConfiguration;
 
 class Camera final
 {
@@ -35,6 +37,9 @@ public:
 	void release();
 
 	const std::vector<Stream *> &streams() const;
+	std::map<Stream *, StreamConfiguration>
+	streamConfiguration(std::vector<Stream *> &streams);
+	int configureStreams(std::map<Stream *, StreamConfiguration> &config);
 
 private:
 	Camera(PipelineHandler *pipe, const std::string &name);
@@ -48,6 +53,7 @@ private:
 	std::vector<Stream *> streams_;
 
 	bool acquired_;
+	bool disconnected_;
 };
 
 } /* namespace libcamera */
-- 
cgit v1.2.1