Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(621)

Unified Diff: webrtc/modules/audio_coding/neteq/decoder_database.cc

Issue 2383723002: Cache the subtype of each DecoderInfo to make the Is* checks quicker. (Closed)
Patch Set: Inline IsComfortNoise, IsDtmf and IsRed in DecoderInfo. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/audio_coding/neteq/decoder_database.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_coding/neteq/decoder_database.cc
diff --git a/webrtc/modules/audio_coding/neteq/decoder_database.cc b/webrtc/modules/audio_coding/neteq/decoder_database.cc
index 27bc6d56970c9835300fc1cb398c387a6f03b220..ebea7e89a8dba495eb983c1f92cc0c153d07a724 100644
--- a/webrtc/modules/audio_coding/neteq/decoder_database.cc
+++ b/webrtc/modules/audio_coding/neteq/decoder_database.cc
@@ -31,20 +31,23 @@ DecoderDatabase::DecoderInfo::DecoderInfo(const SdpAudioFormat& audio_format,
: audio_format_(audio_format),
factory_(factory),
external_decoder_(nullptr),
- cng_decoder_(CngDecoder::Create(audio_format)) {}
+ cng_decoder_(CngDecoder::Create(audio_format)),
+ subtype_(SubtypeFromFormat(audio_format)) {}
DecoderDatabase::DecoderInfo::DecoderInfo(NetEqDecoder ct,
AudioDecoderFactory* factory)
: audio_format_(*acm2::RentACodec::NetEqDecoderToSdpAudioFormat(ct)),
factory_(factory),
external_decoder_(nullptr),
- cng_decoder_(CngDecoder::Create(audio_format_)) {}
+ cng_decoder_(CngDecoder::Create(audio_format_)),
+ subtype_(SubtypeFromFormat(audio_format_)) {}
DecoderDatabase::DecoderInfo::DecoderInfo(const SdpAudioFormat& audio_format,
AudioDecoder* ext_dec)
: audio_format_(audio_format),
factory_(nullptr),
- external_decoder_(ext_dec) {
+ external_decoder_(ext_dec),
+ subtype_(Subtype::kNormal) {
RTC_CHECK(ext_dec);
}
@@ -52,7 +55,7 @@ DecoderDatabase::DecoderInfo::DecoderInfo(DecoderInfo&&) = default;
DecoderDatabase::DecoderInfo::~DecoderInfo() = default;
AudioDecoder* DecoderDatabase::DecoderInfo::GetDecoder() const {
- if (IsDtmf() || IsRed() || IsComfortNoise()) {
+ if (subtype_ != Subtype::kNormal) {
// These are handled internally, so they have no AudioDecoder objects.
return nullptr;
}
@@ -71,19 +74,6 @@ AudioDecoder* DecoderDatabase::DecoderInfo::GetDecoder() const {
return decoder_.get();
}
-bool DecoderDatabase::DecoderInfo::IsComfortNoise() const {
- RTC_DCHECK_EQ(!!cng_decoder_, IsType("CN"));
- return !!cng_decoder_;
-}
-
-bool DecoderDatabase::DecoderInfo::IsDtmf() const {
- return IsType("telephone-event");
-}
-
-bool DecoderDatabase::DecoderInfo::IsRed() const {
- return IsType("red");
-}
-
bool DecoderDatabase::DecoderInfo::IsType(const char* name) const {
return STR_CASE_CMP(audio_format_.name.c_str(), name) == 0;
}
@@ -101,6 +91,19 @@ DecoderDatabase::DecoderInfo::CngDecoder::Create(const SdpAudioFormat& format) {
}
}
+DecoderDatabase::DecoderInfo::Subtype
+DecoderDatabase::DecoderInfo::SubtypeFromFormat(const SdpAudioFormat& format) {
+ if (STR_CASE_CMP(format.name.c_str(), "CN") == 0) {
+ return Subtype::kComfortNoise;
+ } else if (STR_CASE_CMP(format.name.c_str(), "telephone-event") == 0) {
+ return Subtype::kDtmf;
+ } else if (STR_CASE_CMP(format.name.c_str(), "red") == 0) {
+ return Subtype::kRed;
+ }
+
+ return Subtype::kNormal;
+}
+
bool DecoderDatabase::Empty() const { return decoders_.empty(); }
int DecoderDatabase::Size() const { return static_cast<int>(decoders_.size()); }
« no previous file with comments | « webrtc/modules/audio_coding/neteq/decoder_database.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698