diff options
| -rw-r--r-- | media/libavextensions/stagefright/AVExtensions.h | 3 | ||||
| -rw-r--r-- | media/libavextensions/stagefright/AVUtils.cpp | 6 | ||||
| -rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 7 | 
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) {  | 
