diff options
author | Deva Ramasubramanian <dramasub@codeaurora.org> | 2014-04-10 15:45:45 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:25:09 -0600 |
commit | bead22ce2666c14d91b263097b1b24f9957cd53a (patch) | |
tree | a31d918fedad12b4ff7958dc72a930339194cfe2 /media | |
parent | 52e6e4cfded3625d54c2b924585e0ef72ba206bd (diff) | |
download | frameworks_av-bead22ce2666c14d91b263097b1b24f9957cd53a.zip frameworks_av-bead22ce2666c14d91b263097b1b24f9957cd53a.tar.gz frameworks_av-bead22ce2666c14d91b263097b1b24f9957cd53a.tar.bz2 |
libstagefright: Copy the entire buffer from/to OMX component
Presence of OMX extradata in buffers isn't reflected as part of
nFilledLen. To avoid omitting the extradata, copy the entire buffer.
Change-Id: Ib310dda3dc93693d4ab380912a9997d7ea120be1
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/omx/OMXNodeInstance.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp index 3e1de02..bdd1039 100644 --- a/media/libstagefright/omx/OMXNodeInstance.cpp +++ b/media/libstagefright/omx/OMXNodeInstance.cpp @@ -122,7 +122,8 @@ struct BufferMeta { } // check component returns proper range - sp<ABuffer> codec = getBuffer(header, false /* backup */, true /* limit */); + sp<ABuffer> codec = getBuffer(header, false /* backup */, + !(header->nFlags & OMX_BUFFERFLAG_EXTRADATA)); memcpy((OMX_U8 *)mMem->pointer() + header->nOffset, codec->data(), codec->size()); } @@ -132,9 +133,11 @@ struct BufferMeta { return; } + size_t bytesToCopy = header->nFlags & OMX_BUFFERFLAG_EXTRADATA ? + header->nAllocLen - header->nOffset : header->nFilledLen; memcpy(header->pBuffer + header->nOffset, (const OMX_U8 *)mMem->pointer() + header->nOffset, - header->nFilledLen); + bytesToCopy); } // return either the codec or the backup buffer |