Index: webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
index 1023bf8bb20ce05af91433c78decd931c3bcc55a..234fd7fce50207a614d756dce1b6972d5a11c652 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
@@ -16,6 +16,7 @@ |
#include "webrtc/base/logging.h" |
#include "webrtc/base/stringutils.h" |
#include "webrtc/common_types.h" |
+#include "webrtc/modules/audio_coding/codecs/audio_format_conversion.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
namespace webrtc { |
@@ -119,6 +120,31 @@ RTPPayloadRegistry::RTPPayloadRegistry() |
RTPPayloadRegistry::~RTPPayloadRegistry() = default; |
+void RTPPayloadRegistry::SetAudioReceivePayloads( |
+ std::map<int, SdpAudioFormat> codecs) { |
+ rtc::CritScope cs(&crit_sect_); |
+ |
+#if RTC_DCHECK_IS_ON |
+ RTC_DCHECK(!used_for_video_); |
+ used_for_audio_ = true; |
+#endif |
+ |
+ payload_type_map_.clear(); |
+ for (const auto& kv : codecs) { |
+ const int& rtp_payload_type = kv.first; |
+ const SdpAudioFormat& audio_format = kv.second; |
+ const CodecInst ci = SdpToCodecInst(rtp_payload_type, audio_format); |
+ RTC_DCHECK(IsPayloadTypeValid(rtp_payload_type)); |
+ payload_type_map_.insert( |
+ std::make_pair(rtp_payload_type, CreatePayloadType(ci))); |
+ } |
+ |
+ // Clear the value of last received payload type since it might mean |
+ // something else now. |
+ last_received_payload_type_ = -1; |
+ last_received_media_payload_type_ = -1; |
+} |
+ |
int32_t RTPPayloadRegistry::RegisterReceivePayload(const CodecInst& audio_codec, |
bool* created_new_payload) { |
rtc::CritScope cs(&crit_sect_); |