Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 return STR_CASE_CMP(audio_format_.name.c_str(), name) == 0; | 88 return STR_CASE_CMP(audio_format_.name.c_str(), name) == 0; |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool DecoderDatabase::DecoderInfo::IsType(const std::string& name) const { | 91 bool DecoderDatabase::DecoderInfo::IsType(const std::string& name) const { |
| 92 return IsType(name.c_str()); | 92 return IsType(name.c_str()); |
| 93 } | 93 } |
| 94 | 94 |
| 95 rtc::Optional<DecoderDatabase::DecoderInfo::CngDecoder> | 95 rtc::Optional<DecoderDatabase::DecoderInfo::CngDecoder> |
| 96 DecoderDatabase::DecoderInfo::CngDecoder::Create(const SdpAudioFormat& format) { | 96 DecoderDatabase::DecoderInfo::CngDecoder::Create(const SdpAudioFormat& format) { |
| 97 if (STR_CASE_CMP(format.name.c_str(), "CN") == 0) { | 97 if (STR_CASE_CMP(format.name.c_str(), "CN") == 0) { |
| 98 return rtc::Optional<CngDecoder>({format.clockrate_hz}); | 98 // CN has a 1:1 RTP clock rate to sample rate ratio. |
| 99 const int sample_rate_hz = format.clockrate_hz; | |
| 100 RTC_DCHECK(sample_rate_hz == 8000 || sample_rate_hz == 16000 || | |
| 101 sample_rate_hz == 32000 || sample_rate_hz == 48000); | |
| 102 return rtc::Optional<DecoderDatabase::DecoderInfo::CngDecoder>( | |
| 103 {sample_rate_hz}); | |
| 99 } else { | 104 } else { |
| 100 return rtc::Optional<CngDecoder>(); | 105 return rtc::Optional<CngDecoder>(); |
| 101 } | 106 } |
| 102 } | 107 } |
| 103 | 108 |
| 104 bool DecoderDatabase::Empty() const { return decoders_.empty(); } | 109 bool DecoderDatabase::Empty() const { return decoders_.empty(); } |
| 105 | 110 |
| 106 int DecoderDatabase::Size() const { return static_cast<int>(decoders_.size()); } | 111 int DecoderDatabase::Size() const { return static_cast<int>(decoders_.size()); } |
| 107 | 112 |
| 108 void DecoderDatabase::Reset() { | 113 void DecoderDatabase::Reset() { |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 131 info.name = name; | 136 info.name = name; |
| 132 auto ret = | 137 auto ret = |
| 133 decoders_.insert(std::make_pair(rtp_payload_type, std::move(info))); | 138 decoders_.insert(std::make_pair(rtp_payload_type, std::move(info))); |
| 134 if (ret.second == false) { | 139 if (ret.second == false) { |
| 135 // Database already contains a decoder with type |rtp_payload_type|. | 140 // Database already contains a decoder with type |rtp_payload_type|. |
| 136 return kDecoderExists; | 141 return kDecoderExists; |
| 137 } | 142 } |
| 138 return kOK; | 143 return kOK; |
| 139 } | 144 } |
| 140 | 145 |
| 146 int DecoderDatabase::RegisterPayload(int rtp_payload_type, | |
| 147 const SdpAudioFormat& audio_format) { | |
| 148 if (rtp_payload_type > 0x7f) { | |
|
ossu
2016/09/28 14:12:28
Since rtp_payload_type is an int in this overload,
kwiberg-webrtc
2016/09/29 12:38:35
Done.
| |
| 149 return kInvalidRtpPayloadType; | |
| 150 } | |
| 151 const auto ret = decoders_.insert(std::make_pair( | |
| 152 rtp_payload_type, DecoderInfo(audio_format, decoder_factory_.get()))); | |
| 153 if (ret.second == false) { | |
| 154 // Database already contains a decoder with type |rtp_payload_type|. | |
| 155 return kDecoderExists; | |
| 156 } | |
| 157 return kOK; | |
| 158 } | |
| 159 | |
| 141 int DecoderDatabase::InsertExternal(uint8_t rtp_payload_type, | 160 int DecoderDatabase::InsertExternal(uint8_t rtp_payload_type, |
| 142 NetEqDecoder codec_type, | 161 NetEqDecoder codec_type, |
| 143 const std::string& codec_name, | 162 const std::string& codec_name, |
| 144 AudioDecoder* decoder) { | 163 AudioDecoder* decoder) { |
| 145 if (rtp_payload_type > 0x7F) { | 164 if (rtp_payload_type > 0x7F) { |
| 146 return kInvalidRtpPayloadType; | 165 return kInvalidRtpPayloadType; |
| 147 } | 166 } |
| 148 if (!decoder) { | 167 if (!decoder) { |
| 149 return kInvalidPointer; | 168 return kInvalidPointer; |
| 150 } | 169 } |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 // Payload type is not found. | 311 // Payload type is not found. |
| 293 LOG(LS_WARNING) << "CheckPayloadTypes: unknown RTP payload type " | 312 LOG(LS_WARNING) << "CheckPayloadTypes: unknown RTP payload type " |
| 294 << static_cast<int>((*it)->header.payloadType); | 313 << static_cast<int>((*it)->header.payloadType); |
| 295 return kDecoderNotFound; | 314 return kDecoderNotFound; |
| 296 } | 315 } |
| 297 } | 316 } |
| 298 return kOK; | 317 return kOK; |
| 299 } | 318 } |
| 300 | 319 |
| 301 } // namespace webrtc | 320 } // namespace webrtc |
| OLD | NEW |