diff options
author | Lajos Molnar <lajos@google.com> | 2015-06-26 15:33:17 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2015-07-01 00:42:40 +0000 |
commit | 264bac95912efe121d6a60026612617f04f42966 (patch) | |
tree | ac73aada986fed92fba30ca624eff7e4fa033c1c /media/libstagefright/omx | |
parent | 064b2bf712788d30928b9a8bafecd0f3308d7aa4 (diff) | |
download | frameworks_av-264bac95912efe121d6a60026612617f04f42966.zip frameworks_av-264bac95912efe121d6a60026612617f04f42966.tar.gz frameworks_av-264bac95912efe121d6a60026612617f04f42966.tar.bz2 |
stagefright: prevent allocating stale buffers for OMX decoders
Also fix some issues encountered once using generationNumbers:
- properly account outstanding buffers in MediaSync
- don't release arbitrary frame if attach fails
Bug: 11990461
Change-Id: Icee5ea188ca4eb856138feb5e6ec5d4ee5e44008
Diffstat (limited to 'media/libstagefright/omx')
-rw-r--r-- | media/libstagefright/omx/GraphicBufferSource.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp index 31c6975..ac64685 100644 --- a/media/libstagefright/omx/GraphicBufferSource.cpp +++ b/media/libstagefright/omx/GraphicBufferSource.cpp @@ -836,13 +836,15 @@ void GraphicBufferSource::releaseBuffer( mConsumer->detachBuffer(id); mBufferSlot[id] = NULL; - mConsumer->attachBuffer(&id, buffer); - mConsumer->releaseBuffer( - id, 0, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence); + if (mConsumer->attachBuffer(&id, buffer) == OK) { + mConsumer->releaseBuffer( + id, 0, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence); + } } else { mConsumer->releaseBuffer( id, frameNum, EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, fence); } + id = -1; // invalidate id mNumBufferAcquired--; } |