summaryrefslogtreecommitdiff
path: root/src/android/camera_device.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/camera_device.h')
-rw-r--r--src/android/camera_device.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 85497921..b7d774fe 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -74,17 +74,28 @@ private:
CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> camera);
struct Camera3RequestDescriptor {
+ enum class Status {
+ Pending,
+ Success,
+ Error,
+ };
+
Camera3RequestDescriptor() = default;
~Camera3RequestDescriptor() = default;
Camera3RequestDescriptor(libcamera::Camera *camera,
const camera3_capture_request_t *camera3Request);
Camera3RequestDescriptor &operator=(Camera3RequestDescriptor &&) = default;
+ bool isPending() const { return status_ == Status::Pending; }
+
uint32_t frameNumber_ = 0;
std::vector<camera3_stream_buffer_t> buffers_;
std::vector<std::unique_ptr<libcamera::FrameBuffer>> frameBuffers_;
CameraMetadata settings_;
std::unique_ptr<CaptureRequest> request_;
+
+ camera3_capture_result_t captureResult_ = {};
+ Status status_ = Status::Pending;
};
enum class State {
@@ -99,12 +110,13 @@ private:
createFrameBuffer(const buffer_handle_t camera3buffer,
libcamera::PixelFormat pixelFormat,
const libcamera::Size &size);
- void abortRequest(camera3_capture_request_t *request) const;
+ void abortRequest(Camera3RequestDescriptor *descriptor) const;
bool isValidRequest(camera3_capture_request_t *request) const;
void notifyShutter(uint32_t frameNumber, uint64_t timestamp);
void notifyError(uint32_t frameNumber, camera3_stream_t *stream,
camera3_error_msg_code code) const;
int processControls(Camera3RequestDescriptor *descriptor);
+ void sendCaptureResults();
std::unique_ptr<CameraMetadata> getResultMetadata(
const Camera3RequestDescriptor &descriptor) const;