summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngelo G. Del Regno <kholk11@gmail.com>2017-04-30 20:19:08 +0200
committerLuca Stefani <luca.stefani.ge1@gmail.com>2021-09-03 22:15:17 +0200
commit9009eefddc99692e691697ea9e75f7768234e053 (patch)
tree9daed9103baf4365c60e846fb94af2dec8bfc213
parent11799cffd9e4c068dd24bd1371c4f12f63de98e6 (diff)
stagefright: Fix buffer handle retrieval in signalBufferReturned
In commit 3e32878 the stagefright code was restructured to fix the logic for native handle source, but the change in the function SurfaceMediaSource::signalBufferReturned was probably missed. Try to compare the media buffer handle also to the current native buffer handle in this function when searching for correspondance. Change-Id: I352293e525f75dde500ac8e71ee49209710030c3 Signed-off-by: DennySPb <dennyspb@gmail.com>
-rw-r--r--media/libstagefright/SurfaceMediaSource.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp
index 3ba18b6631..d7370551e0 100644
--- a/media/libstagefright/SurfaceMediaSource.cpp
+++ b/media/libstagefright/SurfaceMediaSource.cpp
@@ -389,9 +389,12 @@ void SurfaceMediaSource::signalBufferReturned(MediaBufferBase *buffer) {
Mutex::Autolock lock(mMutex);
buffer_handle_t bufferHandle = getMediaBufferHandle(buffer);
+ ANativeWindowBuffer* curNativeHandle = NULL;
for (size_t i = 0; i < mCurrentBuffers.size(); i++) {
- if (mCurrentBuffers[i]->handle == bufferHandle) {
+ curNativeHandle = mCurrentBuffers[i]->getNativeBuffer();
+ if ((mCurrentBuffers[i]->handle == bufferHandle) ||
+ ((buffer_handle_t)curNativeHandle == bufferHandle)) {
mCurrentBuffers.removeAt(i);
foundBuffer = true;
break;
@@ -407,7 +410,10 @@ void SurfaceMediaSource::signalBufferReturned(MediaBufferBase *buffer) {
continue;
}
- if (bufferHandle == mSlots[id].mGraphicBuffer->handle) {
+ curNativeHandle = mSlots[id].mGraphicBuffer->getNativeBuffer();
+
+ if ((bufferHandle == mSlots[id].mGraphicBuffer->handle) ||
+ (bufferHandle == (buffer_handle_t)curNativeHandle)) {
ALOGV("Slot %d returned, matches handle = %p", id,
mSlots[id].mGraphicBuffer->handle);