libcamera: stream: Add basic stream usages

In preparation of reworking how a default configuration is retrieved
from a camera add stream usages. The usages will be used by applications
to describe how they intend to use a camera and replace the Stream IDs
when retrieving default configuration from the camera using
streamConfiguration().

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2019-03-25 18:05:38 +01:00
parent 58f1ad3c79
commit 70e53be538
2 changed files with 132 additions and 0 deletions

View file

@ -8,6 +8,7 @@
#define __LIBCAMERA_STREAM_H__
#include <libcamera/buffer.h>
#include <libcamera/geometry.h>
namespace libcamera {
@ -21,9 +22,48 @@ struct StreamConfiguration {
unsigned int bufferCount;
};
class StreamUsage
{
public:
enum Role {
StillCapture,
VideoRecording,
Viewfinder,
};
Role role() const { return role_; }
const Size &size() const { return size_; }
protected:
explicit StreamUsage(Role role);
StreamUsage(Role role, int width, int height);
private:
Role role_;
Size size_;
};
class Stream final
{
public:
class StillCapture : public StreamUsage
{
public:
StillCapture();
};
class VideoRecording : public StreamUsage
{
public:
VideoRecording();
};
class Viewfinder : public StreamUsage
{
public:
Viewfinder(int width, int height);
};
Stream();
BufferPool &bufferPool() { return bufferPool_; }
const StreamConfiguration &configuration() const { return configuration_; }