summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSharad Sangle <assangle@codeaurora.org>2015-07-15 15:22:12 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:14 -0600
commitfae09bea7dbe8afbd44828f0c772737c8eb3b8bc (patch)
tree1284d46ab1bd6a5e7dd75f7df2845abba7f27c16
parent2d846a1474e999db2a09ab00bb92e1b6079a0573 (diff)
downloadframeworks_av-fae09bea7dbe8afbd44828f0c772737c8eb3b8bc.zip
frameworks_av-fae09bea7dbe8afbd44828f0c772737c8eb3b8bc.tar.gz
frameworks_av-fae09bea7dbe8afbd44828f0c772737c8eb3b8bc.tar.bz2
audio: add support for AMRWB+
add support for AMRWB+ audio decoding Conflicts: media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp Change-Id: I6eedebe93c482150234b4ca1d0472b189c450dc6
-rw-r--r--media/libavextensions/stagefright/AVExtensions.h3
-rw-r--r--media/libavextensions/stagefright/AVUtils.cpp6
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp7
3 files changed, 14 insertions, 2 deletions
diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h
index 43d61be..08dbeeb 100644
--- a/media/libavextensions/stagefright/AVExtensions.h
+++ b/media/libavextensions/stagefright/AVExtensions.h
@@ -36,6 +36,7 @@ namespace android {
struct ACodec;
class MediaExtractor;
+struct MediaCodec;
/*
* Factory to create objects of base-classes in libstagefright
@@ -58,6 +59,8 @@ struct AVUtils {
const sp<MetaData> &meta, sp<AMessage> *format);
virtual DataSource::SnifferFunc getExtendedSniffer();
+ virtual sp<MediaCodec> createCustomComponentByName(const sp<ALooper> &looper,
+ const char* mime, bool encoder);
// ----- NO TRESSPASSING BEYOND THIS LINE ------
DECLARE_LOADABLE_SINGLETON(AVUtils);
};
diff --git a/media/libavextensions/stagefright/AVUtils.cpp b/media/libavextensions/stagefright/AVUtils.cpp
index 3c2ecd9..8fe0c53 100644
--- a/media/libavextensions/stagefright/AVUtils.cpp
+++ b/media/libavextensions/stagefright/AVUtils.cpp
@@ -37,6 +37,7 @@
#include <media/stagefright/MediaCodecList.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/ACodec.h>
+#include <media/stagefright/MediaCodec.h>
#include "common/ExtensionsLoader.hpp"
#include "stagefright/AVExtensions.h"
@@ -58,6 +59,11 @@ DataSource::SnifferFunc AVUtils::getExtendedSniffer() {
return dumbSniffer;
}
+sp<MediaCodec> AVUtils::createCustomComponentByName(
+ const sp<ALooper> &, const char* , bool ) {
+ return NULL;
+}
+
// ----- NO TRESSPASSING BEYOND THIS LINE ------
AVUtils::AVUtils() {
}
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
index 3646828..aa77071 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
@@ -34,6 +34,7 @@
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
+#include <stagefright/AVExtensions.h>
#include <gui/Surface.h>
#include "avc_utils.h"
@@ -251,8 +252,10 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) {
mComponentName.append(" decoder");
ALOGV("[%s] onConfigure (surface=%p)", mComponentName.c_str(), mSurface.get());
- mCodec = MediaCodec::CreateByType(
- mCodecLooper, mime.c_str(), false /* encoder */, NULL /* err */, mPid);
+ mCodec = AVUtils::get()->createCustomComponentByName(mCodecLooper, mime.c_str(), false /* encoder */);
+ if (mCodec == NULL) {
+ mCodec = MediaCodec::CreateByType(mCodecLooper, mime.c_str(), false /* encoder */);
+ }
int32_t secure = 0;
if (format->findInt32("secure", &secure) && secure != 0) {
if (mCodec != NULL) {