/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2019, Google Inc. * * request.h - Capture request handling */ #ifndef __LIBCAMERA_REQUEST_H__ #define __LIBCAMERA_REQUEST_H__ #include #include #include #include #include #include namespace libcamera { class Buffer; class Camera; class CameraControlValidator; class Stream; class Request { public: enum Status { RequestPending, RequestComplete, RequestCancelled, }; Request(Camera *camera, uint64_t cookie = 0); Request(const Request &) = delete; Request &operator=(const Request &) = delete; ~Request(); ControlList &controls() { return *controls_; } ControlList &metadata() { return *metadata_; } const std::map &buffers() const { return bufferMap_; } int addBuffer(std::unique_ptr buffer); Buffer *findBuffer(Stream *stream) const; uint64_t cookie() const { return cookie_; } Status status() const { return status_; } bool hasPendingBuffers() const { return !pending_.empty(); } private: friend class Camera; friend class PipelineHandler; int prepare(); void complete(); bool completeBuffer(Buffer *buffer); Camera *camera_; CameraControlValidator *validator_; ControlList *controls_; ControlList *metadata_; std::map bufferMap_; std::unordered_set pending_; const uint64_t cookie_; Status status_; bool cancelled_; }; } /* namespace libcamera */ #endif /* __LIBCAMERA_REQUEST_H__ */ 8daf38974b614fb1a007366bd78e110fb'>treecommitdiff
blob: 5ae35da55e87ac9124a6cd426099ff7c72cf5b9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35