DecoderDatabase::IsComfortNoise: Improved efficiency.
Changed DecoderDatabase::IsComfortNoise to do one, rather than four,
lookups of the rtp payload type. IsComfortNoise is called more frequently
since CNG was changed to not be an AudioDecoder.
BUG=606765
Review URL: https://codereview.webrtc.org/1923763003
Cr-Commit-Position: refs/heads/master@{#12533}
diff --git a/webrtc/modules/audio_coding/neteq/decoder_database.cc b/webrtc/modules/audio_coding/neteq/decoder_database.cc
index c163bbd..845b2ad 100644
--- a/webrtc/modules/audio_coding/neteq/decoder_database.cc
+++ b/webrtc/modules/audio_coding/neteq/decoder_database.cc
@@ -169,14 +169,16 @@
}
bool DecoderDatabase::IsComfortNoise(uint8_t rtp_payload_type) const {
- if (IsType(rtp_payload_type, NetEqDecoder::kDecoderCNGnb) ||
- IsType(rtp_payload_type, NetEqDecoder::kDecoderCNGwb) ||
- IsType(rtp_payload_type, NetEqDecoder::kDecoderCNGswb32kHz) ||
- IsType(rtp_payload_type, NetEqDecoder::kDecoderCNGswb48kHz)) {
- return true;
- } else {
+ DecoderMap::const_iterator it = decoders_.find(rtp_payload_type);
+ if (it == decoders_.end()) {
+ // Decoder not found.
return false;
}
+ const auto& type = it->second.codec_type;
+ return type == NetEqDecoder::kDecoderCNGnb
+ || type == NetEqDecoder::kDecoderCNGwb
+ || type == NetEqDecoder::kDecoderCNGswb32kHz
+ || type == NetEqDecoder::kDecoderCNGswb48kHz;
}
bool DecoderDatabase::IsDtmf(uint8_t rtp_payload_type) const {