| /* Copyright 2017 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef CAMERA_HAL_USB_CAPTURE_REQUEST_H_ |
| #define CAMERA_HAL_USB_CAPTURE_REQUEST_H_ |
| |
| #include <vector> |
| |
| #include <camera/camera_metadata.h> |
| #include <hardware/camera3.h> |
| |
| namespace cros { |
| |
| class CaptureRequest { |
| public: |
| explicit CaptureRequest(const camera3_capture_request& request, |
| const android::CameraMetadata& metadata); |
| ~CaptureRequest(); |
| |
| const int GetFrameNumber() const { return frame_number_; } |
| android::CameraMetadata* GetMetadata() { return &metadata_; } |
| std::vector<camera3_stream_buffer_t>* GetStreamBuffers() { |
| return &output_stream_buffers_; |
| } |
| |
| private: |
| // Store all necessary information from capture request. |
| // - CaptureRequest do not need to free the buffers from Framework. |
| // - We can use the buffers after waiting on |
| // camera3_stream_buffer_t.acquire_fence. |
| // - If the buffers are finished by the hal, set release_fence to -1. |
| // We cannot access the buffers after calling process_capture_result. |
| // - If we need to access the buffers after calling process_capture_result |
| // (e.g. jpeg encoding is slow), set release_fence to a fence we create. |
| // We cannot use the buffers after signaling the fence. |
| const int frame_number_; |
| android::CameraMetadata metadata_; |
| std::vector<camera3_stream_buffer_t> output_stream_buffers_; |
| std::vector<buffer_handle_t> buffer_handles_; |
| }; |
| |
| } // namespace cros |
| |
| #endif // CAMERA_HAL_USB_CAPTURE_REQUEST_H_ |