diff options
author | Demon000 <demonsingur@gmail.com> | 2017-10-05 06:55:29 +0300 |
---|---|---|
committer | dd3boh <dade.garberi@gmail.com> | 2017-10-31 12:34:43 +0100 |
commit | 52d8adf7ce684b0fa4e3af85799e983d1d3ae34c (patch) | |
tree | 0102599b4a0f92c24794e39e9edec49d435ac94b /camera-wrapper/CameraWrapper.cpp | |
parent | a5a24347421901ca766d5e4aa173d327c6efd4c0 (diff) |
CameraWrapper: close native handles
Android camera framework expects camera HAL to
release native handles in case of video buffer.
Old camera HALs don't release native handles internally,
causing video recording to freeze after ~30s.
This workaround is the equivalent of
https://review.lineageos.org/#/c/165102/
Change-Id: Ie9e9abdede3dccada9e5002725a157f4960643e9
Diffstat (limited to '')
-rw-r--r-- | camera-wrapper/CameraWrapper.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/camera-wrapper/CameraWrapper.cpp b/camera-wrapper/CameraWrapper.cpp index 8551d25..5bd67ce 100644 --- a/camera-wrapper/CameraWrapper.cpp +++ b/camera-wrapper/CameraWrapper.cpp @@ -25,7 +25,7 @@ #define LOG_TAG "CameraWrapper" #include <cutils/log.h> - +#include <cutils/native_handle.h> #include <utils/threads.h> #include <utils/String8.h> #include <sensor/SensorManager.h> @@ -33,6 +33,7 @@ #include <hardware/camera.h> #include <camera/Camera.h> #include <camera/CameraParameters.h> +#include <media/hardware/HardwareAPI.h> // For VideoNativeHandleMetadata using namespace android; @@ -292,10 +293,16 @@ static void camera_release_recording_frame(struct camera_device *device, if (!device) return; + VideoNativeHandleMetadata* md = (VideoNativeHandleMetadata*) opaque; + native_handle_t* nh = md->pHandle; + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); VENDOR_CALL(device, release_recording_frame, opaque); + + native_handle_close(nh); + native_handle_delete(nh); } static int camera_auto_focus(struct camera_device *device) |