AcmReceiver::DecoderByPayloadType: Ask NetEq for decoder
Instead of looking in AcmReceiver::decoders_, which we're trying to
get rid of.
(This is a re-land of https://codereview.webrtc.org/2341283002.)
BUG=webrtc:5801
Review-Url: https://codereview.webrtc.org/2352623002
Cr-Commit-Position: refs/heads/master@{#14312}
diff --git a/webrtc/modules/audio_coding/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/acm2/acm_receiver.cc
index cbf3492..85cbd8a 100644
--- a/webrtc/modules/audio_coding/acm2/acm_receiver.cc
+++ b/webrtc/modules/audio_coding/acm2/acm_receiver.cc
@@ -315,19 +315,15 @@
int AcmReceiver::DecoderByPayloadType(uint8_t payload_type,
CodecInst* codec) const {
rtc::CritScope lock(&crit_sect_);
- auto it = decoders_.find(payload_type);
- if (it == decoders_.end()) {
+ const rtc::Optional<CodecInst> ci = neteq_->GetDecoder(payload_type);
+ if (ci) {
+ *codec = *ci;
+ return 0;
+ } else {
LOG(LERROR) << "AcmReceiver::DecoderByPayloadType "
<< static_cast<int>(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 5622fc1..aa46607 100644
--- a/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc
+++ b/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc
@@ -174,10 +174,11 @@
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, ""));
+ 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));
+ }
}
// Get codec and compare.
for (size_t n = 0; n < codecs_.size(); ++n) {
@@ -209,9 +210,9 @@
// Register the same codec with different payloads.
EXPECT_EQ(0, receiver_->AddCodec(codec1.id, codec1.inst.pltype,
codec1.inst.channels, codec1.inst.plfreq,
- nullptr, ""));
+ nullptr, codec1.inst.plname));
EXPECT_EQ(0, receiver_->AddCodec(codec1.id, codec2.pltype, codec2.channels,
- codec2.plfreq, NULL, ""));
+ codec2.plfreq, NULL, codec2.plname));
// Both payload types should exist.
EXPECT_EQ(0,
@@ -235,10 +236,10 @@
// 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, ""));
+ nullptr, codec1.inst.plname));
EXPECT_EQ(0, receiver_->AddCodec(codec2.id, codec2.inst.pltype,
codec2.inst.channels, codec2.inst.plfreq,
- nullptr, ""));
+ nullptr, codec2.inst.plname));
// Make sure that the last codec is used.
EXPECT_EQ(0,
@@ -256,7 +257,7 @@
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.plfreq, nullptr, codec.inst.plname));
// Remove non-existing codec should not fail. ACM1 legacy.
EXPECT_EQ(0, receiver_->RemoveCodec(payload_type + 1));