Merge "MediaCas: use HidlMemory to avoid handle leaks"
diff --git a/media/jni/Android.bp b/media/jni/Android.bp
index fe2f64f..3c8af8a 100644
--- a/media/jni/Android.bp
+++ b/media/jni/Android.bp
@@ -51,6 +51,7 @@
"libexif",
"libpiex",
"libandroidfw",
+ "libhidlallocatorutils",
"libhidlbase",
"libhidltransport",
"android.hardware.cas@1.0",
@@ -106,6 +107,7 @@
"liblog", // NDK
"libdrmframework", // for FileSource, MediaHTTP
"libgui", // for VideoFrameScheduler
+ "libhidlallocatorutils",
"libhidlbase", // VNDK???
"libmediandk", // NDK
"libpowermanager", // for JWakeLock. to be removed
diff --git a/media/jni/android_media_MediaDescrambler.cpp b/media/jni/android_media_MediaDescrambler.cpp
index e77e855..add47463 100644
--- a/media/jni/android_media_MediaDescrambler.cpp
+++ b/media/jni/android_media_MediaDescrambler.cpp
@@ -27,12 +27,13 @@
#include <android/hardware/cas/native/1.0/BnHwDescrambler.h>
#include <binder/MemoryDealer.h>
#include <hidl/HidlSupport.h>
+#include <hidlmemory/FrameworkUtils.h>
#include <media/stagefright/foundation/ADebug.h>
#include <nativehelper/ScopedLocalRef.h>
namespace android {
-using hardware::hidl_handle;
+using hardware::fromHeap;
struct fields_t {
jfieldID context;
@@ -146,14 +147,8 @@
return false;
}
- native_handle_t* nativeHandle = native_handle_create(1, 0);
- if (!nativeHandle) {
- ALOGE("ensureBufferCapacity: failed to create native handle");
- return false;
- }
- nativeHandle->data[0] = heap->getHeapID();
- mDescramblerSrcBuffer.heapBase = hidl_memory("ashmem",
- hidl_handle(nativeHandle), heap->getSize());
+ mHidlMemory = fromHeap(heap);
+ mDescramblerSrcBuffer.heapBase = *mHidlMemory;
mDescramblerSrcBuffer.offset = (uint64_t) offset;
mDescramblerSrcBuffer.size = (uint64_t) size;
return true;
diff --git a/media/jni/android_media_MediaDescrambler.h b/media/jni/android_media_MediaDescrambler.h
index 015fad2..2354dc2 100644
--- a/media/jni/android_media_MediaDescrambler.h
+++ b/media/jni/android_media_MediaDescrambler.h
@@ -28,7 +28,10 @@
class IMemory;
class MemoryDealer;
-using hardware::hidl_memory;
+namespace hardware {
+class HidlMemory;
+};
+using hardware::HidlMemory;
using hardware::hidl_string;
using hardware::hidl_vec;
using namespace hardware::cas::V1_0;
@@ -58,6 +61,7 @@
sp<IDescrambler> mDescrambler;
sp<IMemory> mMem;
sp<MemoryDealer> mDealer;
+ sp<HidlMemory> mHidlMemory;
SharedBuffer mDescramblerSrcBuffer;
Mutex mSharedMemLock;