diff --git a/webrtc/modules/audio_coding/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/acm2/acm_receiver.cc index 042e8c9f38..b89091f362 100644 --- a/webrtc/modules/audio_coding/acm2/acm_receiver.cc +++ b/webrtc/modules/audio_coding/acm2/acm_receiver.cc @@ -314,15 +314,19 @@ void AcmReceiver::GetNetworkStatistics(NetworkStatistics* acm_stat) { int AcmReceiver::DecoderByPayloadType(uint8_t payload_type, CodecInst* codec) const { rtc::CritScope lock(&crit_sect_); - const rtc::Optional ci = neteq_->GetDecoder(payload_type); - if (ci) { - *codec = *ci; - return 0; - } else { + auto it = decoders_.find(payload_type); + if (it == decoders_.end()) { LOG(LERROR) << "AcmReceiver::DecoderByPayloadType " << static_cast(payload_type); return -1; } + const Decoder& decoder = it->second; + *codec = *RentACodec::CodecInstById( + *RentACodec::CodecIdFromIndex(decoder.acm_codec_id)); + codec->pltype = decoder.payload_type; + codec->channels = decoder.channels; + codec->plfreq = decoder.sample_rate_hz; + return 0; } int AcmReceiver::EnableNack(size_t max_nack_list_size) { diff --git a/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc b/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc index aa4660723d..5622fc1073 100644 --- a/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc +++ b/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc @@ -174,11 +174,10 @@ class AcmReceiverTestOldApi : public AudioPacketizationCallback, TEST_F(AcmReceiverTestOldApi, MAYBE_AddCodecGetCodec) { // Add codec. for (size_t n = 0; n < codecs_.size(); ++n) { - if (n & 0x1) { // Just add codecs with odd index. - EXPECT_EQ( - 0, receiver_->AddCodec(n, codecs_[n].pltype, codecs_[n].channels, - codecs_[n].plfreq, NULL, codecs_[n].plname)); - } + if (n & 0x1) // Just add codecs with odd index. + EXPECT_EQ(0, + receiver_->AddCodec(n, codecs_[n].pltype, codecs_[n].channels, + codecs_[n].plfreq, NULL, "")); } // Get codec and compare. for (size_t n = 0; n < codecs_.size(); ++n) { @@ -210,9 +209,9 @@ TEST_F(AcmReceiverTestOldApi, MAYBE_AddCodecChangePayloadType) { // Register the same codec with different payloads. EXPECT_EQ(0, receiver_->AddCodec(codec1.id, codec1.inst.pltype, codec1.inst.channels, codec1.inst.plfreq, - nullptr, codec1.inst.plname)); + nullptr, "")); EXPECT_EQ(0, receiver_->AddCodec(codec1.id, codec2.pltype, codec2.channels, - codec2.plfreq, NULL, codec2.plname)); + codec2.plfreq, NULL, "")); // Both payload types should exist. EXPECT_EQ(0, @@ -236,10 +235,10 @@ TEST_F(AcmReceiverTestOldApi, AddCodecChangeCodecId) { // Register the same payload type with different codec ID. EXPECT_EQ(0, receiver_->AddCodec(codec1.id, codec1.inst.pltype, codec1.inst.channels, codec1.inst.plfreq, - nullptr, codec1.inst.plname)); + nullptr, "")); EXPECT_EQ(0, receiver_->AddCodec(codec2.id, codec2.inst.pltype, codec2.inst.channels, codec2.inst.plfreq, - nullptr, codec2.inst.plname)); + nullptr, "")); // Make sure that the last codec is used. EXPECT_EQ(0, @@ -257,7 +256,7 @@ TEST_F(AcmReceiverTestOldApi, MAYBE_AddCodecRemoveCodec) { const int payload_type = codec.inst.pltype; EXPECT_EQ( 0, receiver_->AddCodec(codec.id, codec.inst.pltype, codec.inst.channels, - codec.inst.plfreq, nullptr, codec.inst.plname)); + codec.inst.plfreq, nullptr, "")); // Remove non-existing codec should not fail. ACM1 legacy. EXPECT_EQ(0, receiver_->RemoveCodec(payload_type + 1));