summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/camera3/Camera3InputStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'services/camera/libcameraservice/camera3/Camera3InputStream.h')
-rw-r--r--services/camera/libcameraservice/camera3/Camera3InputStream.h25
1 files changed, 22 insertions, 3 deletions
diff --git a/services/camera/libcameraservice/camera3/Camera3InputStream.h b/services/camera/libcameraservice/camera3/Camera3InputStream.h
index c4b5dd9..fd9f464 100644
--- a/services/camera/libcameraservice/camera3/Camera3InputStream.h
+++ b/services/camera/libcameraservice/camera3/Camera3InputStream.h
@@ -29,6 +29,10 @@ namespace camera3 {
/**
* A class for managing a single stream of input data to the camera device.
+ *
+ * This class serves as a consumer adapter for the HAL, and will consume the
+ * buffers by feeding them into the HAL, as well as releasing the buffers back
+ * the buffers once the HAL is done with them.
*/
class Camera3InputStream : public Camera3Stream {
public:
@@ -36,6 +40,7 @@ class Camera3InputStream : public Camera3Stream {
* Set up a stream for formats that have fixed size, such as RAW and YUV.
*/
Camera3InputStream(int id, uint32_t width, uint32_t height, int format);
+ ~Camera3InputStream();
virtual status_t waitUntilIdle(nsecs_t timeout);
virtual void dump(int fd, const Vector<String16> &args) const;
@@ -49,18 +54,32 @@ class Camera3InputStream : public Camera3Stream {
private:
+ typedef BufferItemConsumer::BufferItem BufferItem;
+
sp<BufferItemConsumer> mConsumer;
+ Vector<BufferItem> mBuffersInFlight;
+ size_t mTotalBufferCount;
+ size_t mDequeuedBufferCount;
+ Condition mBufferReturnedSignal;
+ uint32_t mFrameCount;
+ nsecs_t mLastTimestamp;
+
+ // The merged release fence for all returned buffers
+ sp<Fence> mCombinedFence;
/**
* Camera3Stream interface
*/
- virtual status_t getBufferLocked(camera3_stream_buffer *buffer);
- virtual status_t returnBufferLocked(const camera3_stream_buffer &buffer,
- nsecs_t timestamp);
+ virtual status_t getInputBufferLocked(camera3_stream_buffer *buffer);
+ virtual status_t returnInputBufferLocked(
+ const camera3_stream_buffer &buffer);
virtual bool hasOutstandingBuffersLocked() const;
virtual status_t disconnectLocked();
+ virtual status_t configureQueueLocked();
+ virtual size_t getBufferCountLocked();
+
}; // class Camera3InputStream
}; // namespace camera3