From 616d9ea56744a9aeb3ae93e850450732acfe96a8 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Tue, 18 Dec 2012 12:28:27 -0800 Subject: [PATCH] Report buffer size even when using hardware buffers This makes it so that the buffers dequeued from a MediaCodec show a non-zero size when there's actually data in them, which allows the caller to distinguish between a valid frame and an empty buffer. Change-Id: I891b2301501e26f0b4e8cf2e24c169e501a6d026 --- media/libstagefright/ACodec.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 2b20ab0a59..7920d32f9b 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -612,7 +612,7 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() { sp graphicBuffer(new GraphicBuffer(buf, false)); BufferInfo info; info.mStatus = BufferInfo::OWNED_BY_US; - info.mData = new ABuffer(0); + info.mData = new ABuffer(NULL /* data */, def.nBufferSize /* capacity */); info.mGraphicBuffer = graphicBuffer; mBuffers[kPortIndexOutput].push(info); @@ -2868,15 +2868,14 @@ bool ACodec::BaseState::onOMXFillBufferDone( mCodec->sendFormatChange(); } - if (mCodec->mNativeWindow == NULL) { - info->mData->setRange(rangeOffset, rangeLength); - + info->mData->setRange(rangeOffset, rangeLength); #if 0 + if (mCodec->mNativeWindow == NULL) { if (IsIDR(info->mData)) { ALOGI("IDR frame"); } -#endif } +#endif if (mCodec->mSkipCutBuffer != NULL) { mCodec->mSkipCutBuffer->submit(info->mData); -- 2.11.0