diff options
author | Andreas Huber <andih@google.com> | 2011-08-16 09:34:26 -0700 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2012-08-03 13:57:32 -0700 |
commit | 840667883fd09d44015716d79bc3ac4d60edc0f0 (patch) | |
tree | cb55492dbe3ca64b2ab9ba2f5a3bb6d0a0bcf650 /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | |
parent | 9cb20d4a41eb84bfab7f9f0d0829393f378583f4 (diff) | |
download | frameworks_av-840667883fd09d44015716d79bc3ac4d60edc0f0.zip frameworks_av-840667883fd09d44015716d79bc3ac4d60edc0f0.tar.gz frameworks_av-840667883fd09d44015716d79bc3ac4d60edc0f0.tar.bz2 |
experimental support for fragmented mp4 playback in nuplayer
cherry picked from change 170999
Change-Id: I407775f0290154ad4961134839a15c9f296424c0
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index 0e53662..22f699e 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -20,15 +20,11 @@ #include "NuPlayerDecoder.h" -#include "ESDS.h" - #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/ACodec.h> #include <media/stagefright/MediaDefs.h> -#include <media/stagefright/MetaData.h> -#include <media/stagefright/Utils.h> namespace android { @@ -42,16 +38,24 @@ NuPlayer::Decoder::Decoder( NuPlayer::Decoder::~Decoder() { } -void NuPlayer::Decoder::configure(const sp<MetaData> &meta) { +void NuPlayer::Decoder::configure(const sp<AMessage> &format) { CHECK(mCodec == NULL); - const char *mime; - CHECK(meta->findCString(kKeyMIMEType, &mime)); + AString mime; + CHECK(format->findString("mime", &mime)); sp<AMessage> notifyMsg = new AMessage(kWhatCodecNotify, id()); - sp<AMessage> format = makeFormat(meta); + mCSDIndex = 0; + for (size_t i = 0;; ++i) { + sp<ABuffer> csd; + if (!format->findBuffer(StringPrintf("csd-%d", i).c_str(), &csd)) { + break; + } + + mCSD.push(csd); + } if (mNativeWindow != NULL) { format->setObject("native-window", mNativeWindow); @@ -61,7 +65,7 @@ void NuPlayer::Decoder::configure(const sp<MetaData> &meta) { // quickly, violating the OpenMAX specs, until that is remedied // we need to invest in an extra looper to free the main event // queue. - bool needDedicatedLooper = !strncasecmp(mime, "video/", 6); + bool needDedicatedLooper = !strncasecmp(mime.c_str(), "video/", 6); mCodec = new ACodec; @@ -100,25 +104,6 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) { } } -sp<AMessage> NuPlayer::Decoder::makeFormat(const sp<MetaData> &meta) { - CHECK(mCSD.isEmpty()); - - sp<AMessage> msg; - CHECK_EQ(convertMetaDataToMessage(meta, &msg), (status_t)OK); - - mCSDIndex = 0; - for (size_t i = 0;; ++i) { - sp<ABuffer> csd; - if (!msg->findBuffer(StringPrintf("csd-%d", i).c_str(), &csd)) { - break; - } - - mCSD.push(csd); - } - - return msg; -} - void NuPlayer::Decoder::onFillThisBuffer(const sp<AMessage> &msg) { sp<AMessage> reply; CHECK(msg->findMessage("reply", &reply)); |