From eb61431af13741aa8b7e57a39f69bba5a6c190dc Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 10 May 2012 16:43:19 -0700 Subject: Increase AAC software decoder's buffer count. Refactor how clients of ACodec get notified about codec buffers and buffer ids. Change-Id: I962f873262dae7aa7b43f5f68a6d60268282f91e related-to-bug: 6478823 --- media/libstagefright/MediaCodec.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'media/libstagefright/MediaCodec.cpp') diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index 5b513a8..ff71170 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -562,20 +562,20 @@ void MediaCodec::onMessageReceived(const sp &msg) { mPortBuffers[portIndex].clear(); Vector *buffers = &mPortBuffers[portIndex]; - for (size_t i = 0;; ++i) { - AString name = StringPrintf("buffer-id_%d", i); - void *bufferID; - if (!msg->findPointer(name.c_str(), &bufferID)) { - break; - } + sp obj; + CHECK(msg->findObject("portDesc", &obj)); + + sp portDesc = + static_cast(obj.get()); - name = StringPrintf("data_%d", i); + size_t numBuffers = portDesc->countBuffers(); + for (size_t i = 0; i < numBuffers; ++i) { BufferInfo info; - info.mBufferID = bufferID; + info.mBufferID = portDesc->bufferIDAt(i); info.mOwnedByClient = false; - CHECK(msg->findBuffer(name.c_str(), &info.mData)); + info.mData = portDesc->bufferAt(i); if (portIndex == kPortIndexInput && mCrypto != NULL) { info.mEncryptedData = -- cgit v1.1