From 6353723b029de581b1d0393ddf49c79f34b8f37c Mon Sep 17 00:00:00 2001 From: ossu Date: Wed, 27 Apr 2016 07:43:38 -0700 Subject: [PATCH] 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} --- .../modules/audio_coding/neteq/decoder_database.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/webrtc/modules/audio_coding/neteq/decoder_database.cc b/webrtc/modules/audio_coding/neteq/decoder_database.cc index c163bbdbf3..845b2adaef 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::IsType(uint8_t rtp_payload_type, } 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 {