diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2021-09-24 17:59:20 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2021-09-29 20:29:07 +0200 |
commit | 2eca16b674ff9e849d7681fbc670325de87ad0a2 (patch) | |
tree | e007d0860173186c024fec060a8f31c4f80ec321 /src/android/camera_stream.h | |
parent | c8c1d07cea2d8ef63905bf4f0b5266a5e6fd749f (diff) |
android: Wait on fences in CameraStream::process()
Acquire fences for streams of type Mapped generated by
post-processing are not correctly handled and are currently
ignored by the camera HAL.
Fix this by adding CameraStream::waitFence(), executed before
starting the post-processing in CameraStream::process().
The change applies to all streams generated by post-processing (Mapped
and Internal) but currently acquire fences of Internal streams are
handled by the camera worker. Postpone that to post-processing time by
passing -1 to the Worker for Internal streams.
Also correct the release_fence handling for failed captures, as the
framework requires the release fences to be set to the acquire fence
value if the acquire fence has not been waited on.
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Tested-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/android/camera_stream.h')
-rw-r--r-- | src/android/camera_stream.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h index 2dab6c3a..03ecfa94 100644 --- a/src/android/camera_stream.h +++ b/src/android/camera_stream.h @@ -119,13 +119,15 @@ public: int configure(); int process(const libcamera::FrameBuffer &source, - buffer_handle_t camera3Dest, + camera3_stream_buffer_t &camera3Buffer, const CameraMetadata &requestMetadata, CameraMetadata *resultMetadata); libcamera::FrameBuffer *getBuffer(); void putBuffer(libcamera::FrameBuffer *buffer); private: + int waitFence(int fence); + CameraDevice *const cameraDevice_; const libcamera::CameraConfiguration *config_; const Type type_; |