diff options
author | Lajos Molnar <lajos@google.com> | 2013-07-22 12:57:43 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2013-08-06 13:19:26 -0700 |
commit | d0715867861c216e88a4a7523b6da8a3cb128724 (patch) | |
tree | 9b474094654a2dccb440fd9ca4a87f8afbdb9278 /media/libstagefright/ACodec.cpp | |
parent | b08ab81bab9e8cd2e3a7fff02725a387070fd078 (diff) | |
download | frameworks_av-d0715867861c216e88a4a7523b6da8a3cb128724.zip frameworks_av-d0715867861c216e88a4a7523b6da8a3cb128724.tar.gz frameworks_av-d0715867861c216e88a4a7523b6da8a3cb128724.tar.bz2 |
IOMX: add updateGraphicBufferInMeta method for metadata mode
This is used to set the handle in the metadata buffer that is
valid in the mediaserver process, as well as to keep a reference
for the graphic buffers in BufferMeta.
Change-Id: I46bb68d8bed894f357eeeb25368360d11b276634
Signed-off-by: Lajos Molnar <lajos@google.com>
Diffstat (limited to 'media/libstagefright/ACodec.cpp')
-rw-r--r-- | media/libstagefright/ACodec.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 00804c5..5aefa58 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -833,15 +833,20 @@ ACodec::BufferInfo *ACodec::dequeueBufferFromNativeWindow() { oldest->mGraphicBuffer = new GraphicBuffer(buf, false); oldest->mStatus = BufferInfo::OWNED_BY_US; - struct VideoDecoderOutputMetaData metaData; - metaData.eType = kMetadataBufferTypeGrallocSource; - metaData.pHandle = oldest->mGraphicBuffer->handle; - memcpy(oldest->mData->base(), &metaData, sizeof(metaData)); + mOMX->updateGraphicBufferInMeta( + mNode, kPortIndexOutput, oldest->mGraphicBuffer, + oldest->mBufferID); - ALOGV("replaced oldest buffer #%u with age %u (%p stored in %p)", + VideoDecoderOutputMetaData *metaData = + reinterpret_cast<VideoDecoderOutputMetaData *>( + oldest->mData->base()); + CHECK_EQ(metaData->eType, kMetadataBufferTypeGrallocSource); + + ALOGV("replaced oldest buffer #%u with age %u (%p/%p stored in %p)", oldest - &mBuffers[kPortIndexOutput][0], mDequeueCounter - oldest->mDequeuedAt, - metaData.pHandle, oldest->mData->base()); + metaData->pHandle, + oldest->mGraphicBuffer->handle, oldest->mData->base()); return oldest; } |