From bead22ce2666c14d91b263097b1b24f9957cd53a Mon Sep 17 00:00:00 2001 From: Deva Ramasubramanian Date: Thu, 10 Apr 2014 15:45:45 -0700 Subject: 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 --- media/libstagefright/omx/OMXNodeInstance.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'media/libstagefright/omx/OMXNodeInstance.cpp') 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 codec = getBuffer(header, false /* backup */, true /* limit */); + sp 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 -- cgit v1.1