libcamera: pipeline_handler: Extend the interface to support capture

In order to support capture, the pipeline handler needs methods to
allocate and free buffers, to start and stop the capture and to queue
requests. Define those interfaces in the PipelineHandler class and
implement them as stubs in the existing pipeline handlers.

This initial implementation only considers the allocation of new
buffers. Future work would need to expand this to also cover importing
buffers from an external source.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund
2019-01-23 20:11:34 +01:00
committed by Laurent Pinchart
parent 5aef825764
commit 5239f6e656
5 changed files with 179 additions and 0 deletions
+10
View File
@@ -14,10 +14,12 @@
namespace libcamera {
class BufferPool;
class Camera;
class CameraManager;
class DeviceEnumerator;
class MediaDevice;
class Request;
class Stream;
class StreamConfiguration;
@@ -45,6 +47,14 @@ public:
virtual int configureStreams(Camera *camera,
std::map<Stream *, StreamConfiguration> &config) = 0;
virtual int allocateBuffers(Camera *camera, Stream *stream) = 0;
virtual int freeBuffers(Camera *camera, Stream *stream) = 0;
virtual int start(const Camera *camera) = 0;
virtual void stop(const Camera *camera) = 0;
virtual int queueRequest(const Camera *camera, Request *request) = 0;
virtual bool match(DeviceEnumerator *enumerator) = 0;
protected: