Chromium Code Reviews| Index: webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc |
| diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc |
| index 467e749ccecd73609a83086bdee3d8e22774337b..667bc91b1f0e0060a8e5253dd50bc107576b85e6 100644 |
| --- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc |
| +++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc |
| @@ -36,20 +36,12 @@ namespace { |
| // TODO(turajs): the same functionality is used in NetEq. If both classes |
| // need them, make it a static function in ACMCodecDB. |
| -bool IsCodecRED(const CodecInst* codec) { |
| - return (STR_CASE_CMP(codec->plname, "RED") == 0); |
| +bool IsCodecRED(const CodecInst& codec) { |
| + return (STR_CASE_CMP(codec.plname, "RED") == 0); |
| } |
| -bool IsCodecRED(int index) { |
| - return (IsCodecRED(&ACMCodecDB::database_[index])); |
| -} |
| - |
| -bool IsCodecCN(const CodecInst* codec) { |
| - return (STR_CASE_CMP(codec->plname, "CN") == 0); |
| -} |
| - |
| -bool IsCodecCN(int index) { |
| - return (IsCodecCN(&ACMCodecDB::database_[index])); |
| +bool IsCodecCN(const CodecInst& codec) { |
| + return (STR_CASE_CMP(codec.plname, "CN") == 0); |
| } |
| // Stereo-to-mono can be used as in-place. |
| @@ -513,11 +505,12 @@ int AudioCodingModuleImpl::InitializeReceiverSafe() { |
| receiver_.FlushBuffers(); |
| // Register RED and CN. |
| - for (int i = 0; i < ACMCodecDB::kNumCodecs; i++) { |
| - if (IsCodecRED(i) || IsCodecCN(i)) { |
| - uint8_t pl_type = static_cast<uint8_t>(ACMCodecDB::database_[i].pltype); |
| - int fs = ACMCodecDB::database_[i].plfreq; |
| - if (receiver_.AddCodec(i, pl_type, 1, fs, NULL) < 0) { |
| + auto db = RentACodec::Database(); |
| + for (size_t i = 0; i < db.size(); i++) { |
| + if (IsCodecRED(db[i]) || IsCodecCN(db[i])) { |
| + uint8_t pl_type = static_cast<uint8_t>(db[i].pltype); |
|
hlundin-webrtc
2015/10/27 13:52:02
const, or maybe move to the line where it is used
kwiberg-webrtc
2015/10/27 14:43:23
Done.
|
| + int fs = db[i].plfreq; |
|
hlundin-webrtc
2015/10/27 13:52:02
Same again.
kwiberg-webrtc
2015/10/27 14:43:23
Done.
|
| + if (receiver_.AddCodec(static_cast<int>(i), pl_type, 1, fs, NULL) < 0) { |
| WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_, |
| "Cannot register master codec."); |
| return -1; |
| @@ -561,11 +554,14 @@ int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) { |
| return -1; |
| } |
| - int codec_id = ACMCodecDB::ReceiverCodecNumber(codec); |
| - if (codec_id < 0 || codec_id >= ACMCodecDB::kNumCodecs) { |
| + auto codec_id = |
| + RentACodec::CodecIdByParams(codec.plname, codec.plfreq, codec.channels); |
| + if (!codec_id) { |
| LOG_F(LS_ERROR) << "Wrong codec params to be registered as receive codec"; |
| return -1; |
| } |
| + auto codec_index = RentACodec::CodecIndexFromId(*codec_id); |
| + RTC_CHECK(codec_index); |
|
hlundin-webrtc
2015/10/27 13:52:02
Add << *codec_id or something similar, so that the
kwiberg-webrtc
2015/10/27 14:43:23
Done.
|
| // Check if the payload-type is valid. |
| if (!ACMCodecDB::ValidPayloadType(codec.pltype)) { |
| @@ -576,7 +572,7 @@ int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) { |
| // Get |decoder| associated with |codec|. |decoder| is NULL if |codec| does |
| // not own its decoder. |
| - return receiver_.AddCodec(codec_id, codec.pltype, codec.channels, |
| + return receiver_.AddCodec(*codec_index, codec.pltype, codec.channels, |
| codec.plfreq, |
| codec_manager_.GetAudioDecoder(codec)); |
| } |