Loading media/libstagefright/Android.bp +6 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ cc_library_shared { srcs: [ "CodecBase.cpp", "FrameRenderTracker.cpp", "MediaCodecListWriter.cpp", ], cflags: [ Loading @@ -66,7 +67,7 @@ cc_library_shared { shared_libs: [ "libgui", "liblog", "libmedia", "libmedia_omx", "libstagefright_foundation", "libui", "libutils", Loading Loading @@ -95,6 +96,7 @@ cc_library_shared { "CCodec.cpp", "CCodecBufferChannel.cpp", "Codec2Buffer.cpp", "Codec2InfoBuilder.cpp", ], cflags: [ Loading @@ -120,8 +122,10 @@ cc_library_shared { "libstagefright_codecbase", "libstagefright_foundation", "libstagefright_omx_utils", "libstagefright_xmlparser", "libui", "libutils", // TODO: Remove libv4l2_c2_componentstore. "libv4l2_c2componentstore", "android.hardware.cas.native@1.0", Loading Loading @@ -154,7 +158,6 @@ cc_library_shared { "AudioPresentationInfo.cpp", "AudioSource.cpp", "BufferImpl.cpp", "Codec2InfoBuilder.cpp", "CallbackDataSource.cpp", "CallbackMediaSource.cpp", "CameraSource.cpp", Loading Loading @@ -190,6 +193,7 @@ cc_library_shared { "SkipCutBuffer.cpp", "StagefrightMediaScanner.cpp", "StagefrightMetadataRetriever.cpp", "StagefrightPluginLoader.cpp", "SurfaceUtils.cpp", "Utils.cpp", "ThrottledSource.cpp", Loading Loading @@ -217,8 +221,6 @@ cc_library_shared { "libutils", "libmedia_helper", "libstagefright_ccodec", "libstagefright_codec2", "libstagefright_codec2_vndk", "libstagefright_codecbase", "libstagefright_foundation", "libstagefright_omx", Loading @@ -228,8 +230,6 @@ cc_library_shared { "libhidlallocatorutils", "libhidlbase", "libhidlmemory", // TODO: Remove libv4l2_c2_componentstore. "libv4l2_c2componentstore", "libziparchive", "android.hidl.allocator@1.0", "android.hardware.cas.native@1.0", Loading media/libstagefright/CCodec.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -910,3 +910,7 @@ void CCodec::initiateReleaseIfStuck() { } } // namespace android extern "C" android::CodecBase *CreateCodec() { return new android::CCodec; } media/libstagefright/Codec2InfoBuilder.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -159,3 +159,7 @@ status_t Codec2InfoBuilder::buildMediaCodecList(MediaCodecListWriter* writer) { } } // namespace android extern "C" android::MediaCodecListBuilderBase *CreateBuilder() { return new android::Codec2InfoBuilder; } media/libstagefright/MediaCodec.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "MediaCodec" #include <utils/Log.h> #include <inttypes.h> #include "include/SecureBuffer.h" #include "include/SharedMemoryBuffer.h" #include "include/SoftwareRenderer.h" #include "StagefrightPluginLoader.h" #include <android/hardware/cas/native/1.0/IDescrambler.h> Loading @@ -45,7 +48,6 @@ #include <media/stagefright/foundation/hexdump.h> #include <media/stagefright/ACodec.h> #include <media/stagefright/BufferProducerWrapper.h> #include <media/stagefright/CCodec.h> #include <media/stagefright/MediaCodec.h> #include <media/stagefright/MediaCodecList.h> #include <media/stagefright/MediaDefs.h> Loading @@ -56,7 +58,6 @@ #include <media/stagefright/SurfaceUtils.h> #include <mediautils/BatteryNotifier.h> #include <private/android_filesystem_config.h> #include <utils/Log.h> #include <utils/Singleton.h> namespace android { Loading Loading @@ -570,11 +571,15 @@ void MediaCodec::PostReplyWithError(const sp<AReplyToken> &replyID, int32_t err) response->postReply(replyID); } static CodecBase *CreateCCodec() { return StagefrightPluginLoader::GetCCodecInstance()->createCodec(); } //static sp<CodecBase> MediaCodec::GetCodecBase(const AString &name) { static bool ccodecEnabled = property_get_bool("debug.stagefright.ccodec", false); if (ccodecEnabled && name.startsWithIgnoreCase("c2.")) { return new CCodec; return CreateCCodec(); } else if (name.startsWithIgnoreCase("omx.")) { // at this time only ACodec specifies a mime type. return new ACodec; Loading media/libstagefright/MediaCodecList.cpp +25 −28 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <utils/Log.h> #include "MediaCodecListOverrides.h" #include "StagefrightPluginLoader.h" #include <binder/IServiceManager.h> Loading @@ -29,7 +30,6 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/MediaDefs.h> #include <media/stagefright/Codec2InfoBuilder.h> #include <media/stagefright/MediaCodecList.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/OmxInfoBuilder.h> Loading Loading @@ -78,14 +78,25 @@ bool isProfilingNeeded() { } OmxInfoBuilder sOmxInfoBuilder; Codec2InfoBuilder sCodec2InfoBuilder; std::initializer_list<MediaCodecListBuilderBase *> GetBuilders() { Mutex sCodec2InfoBuilderMutex; std::unique_ptr<MediaCodecListBuilderBase> sCodec2InfoBuilder; MediaCodecListBuilderBase *GetCodec2InfoBuilder() { Mutex::Autolock _l(sCodec2InfoBuilderMutex); if (!sCodec2InfoBuilder) { sCodec2InfoBuilder.reset( StagefrightPluginLoader::GetCCodecInstance()->createBuilder()); } return sCodec2InfoBuilder.get(); } std::vector<MediaCodecListBuilderBase *> GetBuilders() { std::vector<MediaCodecListBuilderBase *> builders {&sOmxInfoBuilder}; if (property_get_bool("debug.stagefright.ccodec", false)) { return {&sOmxInfoBuilder, &sCodec2InfoBuilder}; } else { return {&sOmxInfoBuilder}; builders.push_back(GetCodec2InfoBuilder()); } return builders; } } // unnamed namespace Loading Loading @@ -179,16 +190,22 @@ sp<IMediaCodecList> MediaCodecList::getInstance() { return sRemoteList; } MediaCodecList::MediaCodecList(std::initializer_list<MediaCodecListBuilderBase*> builders) { MediaCodecList::MediaCodecList(std::vector<MediaCodecListBuilderBase*> builders) { mGlobalSettings = new AMessage(); mCodecInfos.clear(); MediaCodecListWriter writer(this); MediaCodecListWriter writer; for (MediaCodecListBuilderBase *builder : builders) { if (builder == nullptr) { ALOGD("ignored a null builder"); continue; } mInitCheck = builder->buildMediaCodecList(&writer); if (mInitCheck != OK) { break; } } writer.writeGlobalSettings(mGlobalSettings); writer.writeCodecInfos(&mCodecInfos); std::stable_sort( mCodecInfos.begin(), mCodecInfos.end(), Loading @@ -210,23 +227,6 @@ status_t MediaCodecList::initCheck() const { return mInitCheck; } MediaCodecListWriter::MediaCodecListWriter(MediaCodecList* list) : mList(list) { } void MediaCodecListWriter::addGlobalSetting( const char* key, const char* value) { mList->mGlobalSettings->setString(key, value); } std::unique_ptr<MediaCodecInfoWriter> MediaCodecListWriter::addMediaCodecInfo() { sp<MediaCodecInfo> info = new MediaCodecInfo(); mList->mCodecInfos.push_back(info); return std::unique_ptr<MediaCodecInfoWriter>( new MediaCodecInfoWriter(info.get())); } // legacy method for non-advanced codecs ssize_t MediaCodecList::findCodecByType( const char *type, bool encoder, size_t startIndex) const { Loading Loading @@ -344,7 +344,4 @@ void MediaCodecList::findMatchingCodecs( } } MediaCodecListBuilderBase::~MediaCodecListBuilderBase() { } } // namespace android Loading
media/libstagefright/Android.bp +6 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ cc_library_shared { srcs: [ "CodecBase.cpp", "FrameRenderTracker.cpp", "MediaCodecListWriter.cpp", ], cflags: [ Loading @@ -66,7 +67,7 @@ cc_library_shared { shared_libs: [ "libgui", "liblog", "libmedia", "libmedia_omx", "libstagefright_foundation", "libui", "libutils", Loading Loading @@ -95,6 +96,7 @@ cc_library_shared { "CCodec.cpp", "CCodecBufferChannel.cpp", "Codec2Buffer.cpp", "Codec2InfoBuilder.cpp", ], cflags: [ Loading @@ -120,8 +122,10 @@ cc_library_shared { "libstagefright_codecbase", "libstagefright_foundation", "libstagefright_omx_utils", "libstagefright_xmlparser", "libui", "libutils", // TODO: Remove libv4l2_c2_componentstore. "libv4l2_c2componentstore", "android.hardware.cas.native@1.0", Loading Loading @@ -154,7 +158,6 @@ cc_library_shared { "AudioPresentationInfo.cpp", "AudioSource.cpp", "BufferImpl.cpp", "Codec2InfoBuilder.cpp", "CallbackDataSource.cpp", "CallbackMediaSource.cpp", "CameraSource.cpp", Loading Loading @@ -190,6 +193,7 @@ cc_library_shared { "SkipCutBuffer.cpp", "StagefrightMediaScanner.cpp", "StagefrightMetadataRetriever.cpp", "StagefrightPluginLoader.cpp", "SurfaceUtils.cpp", "Utils.cpp", "ThrottledSource.cpp", Loading Loading @@ -217,8 +221,6 @@ cc_library_shared { "libutils", "libmedia_helper", "libstagefright_ccodec", "libstagefright_codec2", "libstagefright_codec2_vndk", "libstagefright_codecbase", "libstagefright_foundation", "libstagefright_omx", Loading @@ -228,8 +230,6 @@ cc_library_shared { "libhidlallocatorutils", "libhidlbase", "libhidlmemory", // TODO: Remove libv4l2_c2_componentstore. "libv4l2_c2componentstore", "libziparchive", "android.hidl.allocator@1.0", "android.hardware.cas.native@1.0", Loading
media/libstagefright/CCodec.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -910,3 +910,7 @@ void CCodec::initiateReleaseIfStuck() { } } // namespace android extern "C" android::CodecBase *CreateCodec() { return new android::CCodec; }
media/libstagefright/Codec2InfoBuilder.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -159,3 +159,7 @@ status_t Codec2InfoBuilder::buildMediaCodecList(MediaCodecListWriter* writer) { } } // namespace android extern "C" android::MediaCodecListBuilderBase *CreateBuilder() { return new android::Codec2InfoBuilder; }
media/libstagefright/MediaCodec.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "MediaCodec" #include <utils/Log.h> #include <inttypes.h> #include "include/SecureBuffer.h" #include "include/SharedMemoryBuffer.h" #include "include/SoftwareRenderer.h" #include "StagefrightPluginLoader.h" #include <android/hardware/cas/native/1.0/IDescrambler.h> Loading @@ -45,7 +48,6 @@ #include <media/stagefright/foundation/hexdump.h> #include <media/stagefright/ACodec.h> #include <media/stagefright/BufferProducerWrapper.h> #include <media/stagefright/CCodec.h> #include <media/stagefright/MediaCodec.h> #include <media/stagefright/MediaCodecList.h> #include <media/stagefright/MediaDefs.h> Loading @@ -56,7 +58,6 @@ #include <media/stagefright/SurfaceUtils.h> #include <mediautils/BatteryNotifier.h> #include <private/android_filesystem_config.h> #include <utils/Log.h> #include <utils/Singleton.h> namespace android { Loading Loading @@ -570,11 +571,15 @@ void MediaCodec::PostReplyWithError(const sp<AReplyToken> &replyID, int32_t err) response->postReply(replyID); } static CodecBase *CreateCCodec() { return StagefrightPluginLoader::GetCCodecInstance()->createCodec(); } //static sp<CodecBase> MediaCodec::GetCodecBase(const AString &name) { static bool ccodecEnabled = property_get_bool("debug.stagefright.ccodec", false); if (ccodecEnabled && name.startsWithIgnoreCase("c2.")) { return new CCodec; return CreateCCodec(); } else if (name.startsWithIgnoreCase("omx.")) { // at this time only ACodec specifies a mime type. return new ACodec; Loading
media/libstagefright/MediaCodecList.cpp +25 −28 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <utils/Log.h> #include "MediaCodecListOverrides.h" #include "StagefrightPluginLoader.h" #include <binder/IServiceManager.h> Loading @@ -29,7 +30,6 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/MediaDefs.h> #include <media/stagefright/Codec2InfoBuilder.h> #include <media/stagefright/MediaCodecList.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/OmxInfoBuilder.h> Loading Loading @@ -78,14 +78,25 @@ bool isProfilingNeeded() { } OmxInfoBuilder sOmxInfoBuilder; Codec2InfoBuilder sCodec2InfoBuilder; std::initializer_list<MediaCodecListBuilderBase *> GetBuilders() { Mutex sCodec2InfoBuilderMutex; std::unique_ptr<MediaCodecListBuilderBase> sCodec2InfoBuilder; MediaCodecListBuilderBase *GetCodec2InfoBuilder() { Mutex::Autolock _l(sCodec2InfoBuilderMutex); if (!sCodec2InfoBuilder) { sCodec2InfoBuilder.reset( StagefrightPluginLoader::GetCCodecInstance()->createBuilder()); } return sCodec2InfoBuilder.get(); } std::vector<MediaCodecListBuilderBase *> GetBuilders() { std::vector<MediaCodecListBuilderBase *> builders {&sOmxInfoBuilder}; if (property_get_bool("debug.stagefright.ccodec", false)) { return {&sOmxInfoBuilder, &sCodec2InfoBuilder}; } else { return {&sOmxInfoBuilder}; builders.push_back(GetCodec2InfoBuilder()); } return builders; } } // unnamed namespace Loading Loading @@ -179,16 +190,22 @@ sp<IMediaCodecList> MediaCodecList::getInstance() { return sRemoteList; } MediaCodecList::MediaCodecList(std::initializer_list<MediaCodecListBuilderBase*> builders) { MediaCodecList::MediaCodecList(std::vector<MediaCodecListBuilderBase*> builders) { mGlobalSettings = new AMessage(); mCodecInfos.clear(); MediaCodecListWriter writer(this); MediaCodecListWriter writer; for (MediaCodecListBuilderBase *builder : builders) { if (builder == nullptr) { ALOGD("ignored a null builder"); continue; } mInitCheck = builder->buildMediaCodecList(&writer); if (mInitCheck != OK) { break; } } writer.writeGlobalSettings(mGlobalSettings); writer.writeCodecInfos(&mCodecInfos); std::stable_sort( mCodecInfos.begin(), mCodecInfos.end(), Loading @@ -210,23 +227,6 @@ status_t MediaCodecList::initCheck() const { return mInitCheck; } MediaCodecListWriter::MediaCodecListWriter(MediaCodecList* list) : mList(list) { } void MediaCodecListWriter::addGlobalSetting( const char* key, const char* value) { mList->mGlobalSettings->setString(key, value); } std::unique_ptr<MediaCodecInfoWriter> MediaCodecListWriter::addMediaCodecInfo() { sp<MediaCodecInfo> info = new MediaCodecInfo(); mList->mCodecInfos.push_back(info); return std::unique_ptr<MediaCodecInfoWriter>( new MediaCodecInfoWriter(info.get())); } // legacy method for non-advanced codecs ssize_t MediaCodecList::findCodecByType( const char *type, bool encoder, size_t startIndex) const { Loading Loading @@ -344,7 +344,4 @@ void MediaCodecList::findMatchingCodecs( } } MediaCodecListBuilderBase::~MediaCodecListBuilderBase() { } } // namespace android