aboutsummaryrefslogtreecommitdiff
path: root/camera-wrapper/CameraWrapper.cpp
diff options
context:
space:
mode:
authorDemon000 <demonsingur@gmail.com>2017-10-05 06:55:29 +0300
committerdd3boh <dade.garberi@gmail.com>2017-10-31 12:34:43 +0100
commit52d8adf7ce684b0fa4e3af85799e983d1d3ae34c (patch)
tree0102599b4a0f92c24794e39e9edec49d435ac94b /camera-wrapper/CameraWrapper.cpp
parenta5a24347421901ca766d5e4aa173d327c6efd4c0 (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.cpp9
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)