Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38dde5fe authored by Deva Ramasubramanian's avatar Deva Ramasubramanian Committed by Linux Build Service Account
Browse files

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
parent 95b73962
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -117,7 +117,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());
    }
@@ -127,9 +128,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