Revert "Revert "Fix decoder instantiation during playback"" -- DO NOT MERGE
This reverts commit de7268d8e20b883ec88a7ff19ad560a665373484.
Bug: 36479980
Bug: 36209723
Bug: 36660223
Change-Id: I8d83305a28dc35cee16f8f1068c90fdd0b9effff
(cherry picked from commit 6aa5c0662c86c7f7b2890577a207086eeecbd177)
diff --git a/drm/libmediadrm/CryptoHal.cpp b/drm/libmediadrm/CryptoHal.cpp
index 1466222..9f41403 100644
--- a/drm/libmediadrm/CryptoHal.cpp
+++ b/drm/libmediadrm/CryptoHal.cpp
@@ -228,11 +228,11 @@
void CryptoHal::setHeapBase(const sp<IMemoryHeap>& heap) {
native_handle_t* nativeHandle = native_handle_create(1, 0);
if (!nativeHandle) {
- ALOGE("setSharedBufferBase(), failed to create native handle");
+ ALOGE("setHeapBase(), failed to create native handle");
return;
}
if (heap == NULL) {
- ALOGE("setSharedBufferBase(): heap is NULL");
+ ALOGE("setHeapBase(): heap is NULL");
return;
}
int fd = heap->getHeapID();
@@ -244,6 +244,10 @@
ALOGE_IF(!hResult.isOk(), "setSharedBufferBase(): remote call failed");
}
+void CryptoHal::clearHeapBase(const sp<IMemoryHeap>& heap) {
+ mHeapBases.removeItem(heap->getBase());
+}
+
status_t CryptoHal::toSharedBuffer(const sp<IMemory>& memory, ::SharedBuffer* buffer) {
ssize_t offset;
size_t size;
@@ -257,9 +261,8 @@
return UNEXPECTED_NULL;
}
- if (mHeapBases.indexOfKey(heap->getBase()) < 0) {
- setHeapBase(heap);
- }
+ // memory must be in the declared heap
+ CHECK(mHeapBases.indexOfKey(heap->getBase()) >= 0);
buffer->bufferId = mHeapBases.valueFor(heap->getBase());
buffer->offset = offset >= 0 ? offset : 0;