summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx/OMXNodeInstance.cpp
diff options
context:
space:
mode:
authorDeva Ramasubramanian <dramasub@codeaurora.org>2014-04-10 15:45:45 -0700
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:25:09 -0600
commitbead22ce2666c14d91b263097b1b24f9957cd53a (patch)
treea31d918fedad12b4ff7958dc72a930339194cfe2 /media/libstagefright/omx/OMXNodeInstance.cpp
parent52e6e4cfded3625d54c2b924585e0ef72ba206bd (diff)
downloadframeworks_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/libstagefright/omx/OMXNodeInstance.cpp')
-rw-r--r--media/libstagefright/omx/OMXNodeInstance.cpp7
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