libcamera, android, cam, gstreamer, qcam, v4l2: Reuse Request
Allow reuse of the Request object by implementing reuse(). This means the applications now have the responsibility of freeing the Request objects, so make all libcamera users (cam, qcam, v4l2-compat, gstreamer, android) do so. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
@@ -96,7 +96,7 @@ public:
|
||||
std::unique_ptr<CameraConfiguration> generateConfiguration(const StreamRoles &roles = {});
|
||||
int configure(CameraConfiguration *config);
|
||||
|
||||
Request *createRequest(uint64_t cookie = 0);
|
||||
std::unique_ptr<Request> createRequest(uint64_t cookie = 0);
|
||||
int queueRequest(Request *request);
|
||||
|
||||
int start();
|
||||
|
||||
@@ -31,6 +31,11 @@ public:
|
||||
RequestCancelled,
|
||||
};
|
||||
|
||||
enum ReuseFlag {
|
||||
Default = 0,
|
||||
ReuseBuffers = (1 << 0),
|
||||
};
|
||||
|
||||
using BufferMap = std::map<const Stream *, FrameBuffer *>;
|
||||
|
||||
Request(Camera *camera, uint64_t cookie = 0);
|
||||
@@ -38,6 +43,8 @@ public:
|
||||
Request &operator=(const Request &) = delete;
|
||||
~Request();
|
||||
|
||||
void reuse(ReuseFlag flags = Default);
|
||||
|
||||
ControlList &controls() { return *controls_; }
|
||||
ControlList &metadata() { return *metadata_; }
|
||||
const BufferMap &buffers() const { return bufferMap_; }
|
||||
|
||||
Reference in New Issue
Block a user