diff --git a/services/engine/codeclist/audio_codeclist_info.cpp b/services/engine/codeclist/audio_codeclist_info.cpp index 4fb854d346bbfac7476291915825ac0992bf9446..dcac25288a66daf2b82bf30d22c66001bb2ad90b 100644 --- a/services/engine/codeclist/audio_codeclist_info.cpp +++ b/services/engine/codeclist/audio_codeclist_info.cpp @@ -400,14 +400,18 @@ CapabilityData AudioCodeclistInfo::GetG711muEncoderCapability() AudioCodeclistInfo::AudioCodeclistInfo() { - audioCapabilities_ = {GetMP3DecoderCapability(), GetAacDecoderCapability(), GetFlacDecoderCapability(), + audioCapabilities_ = { +#ifdef AV_CODEC_AUDIO_VIVID_CAPACITY + GetVendorAacEncoderCapability(), +#endif + GetMP3DecoderCapability(), GetAacDecoderCapability(), GetFlacDecoderCapability(), GetOpusDecoderCapability(), GetVorbisDecoderCapability(), GetAmrnbDecoderCapability(), GetAmrwbDecoderCapability(), GetG711muDecoderCapability(), GetAacEncoderCapability(), GetFlacEncoderCapability(), GetOpusEncoderCapability(), GetG711muEncoderCapability(), GetAPEDecoderCapability(), GetMP3EncoderCapability(), #ifdef AV_CODEC_AUDIO_VIVID_CAPACITY GetVividDecoderCapability(), GetAmrnbEncoderCapability(), GetAmrwbEncoderCapability(), - GetLbvcDecoderCapability(), GetLbvcEncoderCapability(), GetVendorAacEncoderCapability(), + GetLbvcDecoderCapability(), GetLbvcEncoderCapability(), #endif }; } diff --git a/services/engine/codeclist/codec_ability_singleton.cpp b/services/engine/codeclist/codec_ability_singleton.cpp index b414ea1a0d89ca46ae25e6397e4559ea6a6f5dc9..b5d702fba390fa377a86b3da9811d9d5b14ca70e 100644 --- a/services/engine/codeclist/codec_ability_singleton.cpp +++ b/services/engine/codeclist/codec_ability_singleton.cpp @@ -64,21 +64,6 @@ CodecAbilitySingleton::CodecAbilitySingleton() RegisterCapabilityArray(capaArray, codecType); } } - std::lock_guard lock(mutex_); - std::sort(capabilityDataArray_.begin(), capabilityDataArray_.end(), - [](CapabilityData a, CapabilityData b) { - return a.rank > b.rank; - }); - size_t idx = 0; - for (auto iter = capabilityDataArray_.begin(); iter != capabilityDataArray_.end(); iter++) { - std::string mimeType = (*iter).mimeType; - if (mimeCapIdxMap_.find(mimeType) == mimeCapIdxMap_.end()) { - std::vector idxVec; - mimeCapIdxMap_.insert(std::make_pair(mimeType, idxVec)); - } - mimeCapIdxMap_.at(mimeType).emplace_back(idx); - idx++; - } AVCODEC_LOGI("Succeed"); } @@ -90,7 +75,13 @@ CodecAbilitySingleton::~CodecAbilitySingleton() void CodecAbilitySingleton::RegisterCapabilityArray(std::vector &capaArray, CodecType codecType) { std::lock_guard lock(mutex_); + size_t beginIdx = capabilityDataArray_.size(); for (auto iter = capaArray.begin(); iter != capaArray.end(); iter++) { + std::string mimeType = (*iter).mimeType; + std::vector idxVec; + if (mimeCapIdxMap_.find(mimeType) == mimeCapIdxMap_.end()) { + mimeCapIdxMap_.insert(std::make_pair(mimeType, idxVec)); + } if ((*iter).profileLevelsMap.size() > MAX_MAP_SIZE) { while ((*iter).profileLevelsMap.size() > MAX_MAP_SIZE) { auto rIter = (*iter).profileLevelsMap.end(); @@ -109,7 +100,9 @@ void CodecAbilitySingleton::RegisterCapabilityArray(std::vector (*iter).measuredFrameRate.erase(--rIter); } capabilityDataArray_.emplace_back(*iter); + mimeCapIdxMap_.at(mimeType).emplace_back(beginIdx); nameCodecTypeMap_.insert(std::make_pair((*iter).codecName, codecType)); + beginIdx++; } AVCODEC_LOGD("Register capability successful"); }