diff options
-rw-r--r-- | media/libavextensions/stagefright/AVExtensions.h | 1 | ||||
-rw-r--r-- | media/libstagefright/MediaCodecSource.cpp | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h index f2a079f..ab0f180 100644 --- a/media/libavextensions/stagefright/AVExtensions.h +++ b/media/libavextensions/stagefright/AVExtensions.h @@ -105,6 +105,7 @@ struct AVUtils { virtual void addDecodingTimesFromBatch(MediaBuffer * /*buf*/, List<int64_t> &/*decodeTimeQueue*/) {} + virtual bool useQCHWEncoder(const sp<AMessage> &, AString &) { return false; } // ----- NO TRESSPASSING BEYOND THIS LINE ------ DECLARE_LOADABLE_SINGLETON(AVUtils); }; diff --git a/media/libstagefright/MediaCodecSource.cpp b/media/libstagefright/MediaCodecSource.cpp index b91660a..ac25683 100644 --- a/media/libstagefright/MediaCodecSource.cpp +++ b/media/libstagefright/MediaCodecSource.cpp @@ -401,10 +401,14 @@ status_t MediaCodecSource::initEncoder() { } AString outputMIME; + AString role; CHECK(mOutputFormat->findString("mime", &outputMIME)); - - mEncoder = MediaCodec::CreateByType( + if (AVUtils::get()->useQCHWEncoder(mOutputFormat, role)) { + mEncoder = MediaCodec::CreateByComponentName(mCodecLooper, role.c_str()); + } else { + mEncoder = MediaCodec::CreateByType( mCodecLooper, outputMIME.c_str(), true /* encoder */); + } if (mEncoder == NULL) { return NO_INIT; |