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>
This commit is contained in:
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user