diff options
author | Vignesh Venkatasubramanian <vigneshv@google.com> | 2015-06-02 15:36:01 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2015-06-03 17:39:49 +0000 |
commit | 1b30bde3d4447e4c9b767c68584b8997bd930720 (patch) | |
tree | a3f1dbdda455e7bce6d78ed7884f9eb22f18bf0e | |
parent | 77f101b342b6d206b6f530991f3333dfedeebab6 (diff) | |
download | frameworks_av-1b30bde3d4447e4c9b767c68584b8997bd930720.zip frameworks_av-1b30bde3d4447e4c9b767c68584b8997bd930720.tar.gz frameworks_av-1b30bde3d4447e4c9b767c68584b8997bd930720.tar.bz2 |
libstagefright/SoftOpus: Ignore CSD resubmissions
NuPlayerDecoder re-submits the CSDs on seek. Opus decoder does not
need the CSDs on seek. So, we merely ignore the resubmissions of
CSD in SoftOpus so that it is not passed to the decoder thereby
screwing up its state.
Bug: 21565945
Change-Id: Ia74f4b1733e42171131484a6a7f3fd923fe26434
-rw-r--r-- | media/libstagefright/codecs/opus/dec/SoftOpus.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/opus/dec/SoftOpus.cpp b/media/libstagefright/codecs/opus/dec/SoftOpus.cpp index 6322dc2..7ff9ee7 100644 --- a/media/libstagefright/codecs/opus/dec/SoftOpus.cpp +++ b/media/libstagefright/codecs/opus/dec/SoftOpus.cpp @@ -403,6 +403,14 @@ void SoftOpus::onQueueFilled(OMX_U32 portIndex) { BufferInfo *inInfo = *inQueue.begin(); OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader; + // Ignore CSD re-submissions. + if (inHeader->nFlags & OMX_BUFFERFLAG_CODECCONFIG) { + inQueue.erase(inQueue.begin()); + inInfo->mOwnedByUs = false; + notifyEmptyBufferDone(inHeader); + return; + } + BufferInfo *outInfo = *outQueue.begin(); OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader; |