Index: webrtc/modules/audio_coding/neteq/timestamp_scaler.cc |
diff --git a/webrtc/modules/audio_coding/neteq/timestamp_scaler.cc b/webrtc/modules/audio_coding/neteq/timestamp_scaler.cc |
index b228e017b2a30ffbcd70364d9d48d97e2b8d29f6..1da7566f3cc79b73fc70770449a6eb2f22c42709 100644 |
--- a/webrtc/modules/audio_coding/neteq/timestamp_scaler.cc |
+++ b/webrtc/modules/audio_coding/neteq/timestamp_scaler.cc |
@@ -11,7 +11,6 @@ |
#include "webrtc/modules/audio_coding/neteq/timestamp_scaler.h" |
#include "webrtc/modules/audio_coding/neteq/decoder_database.h" |
-#include "webrtc/modules/audio_coding/neteq/defines.h" |
#include "webrtc/system_wrappers/include/logging.h" |
namespace webrtc { |
@@ -43,32 +42,18 @@ uint32_t TimestampScaler::ToInternal(uint32_t external_timestamp, |
// Payload type is unknown. Do not scale. |
return external_timestamp; |
} |
- switch (info->codec_type) { |
- case NetEqDecoder::kDecoderG722: |
- case NetEqDecoder::kDecoderG722_2ch: { |
- // Use timestamp scaling with factor 2 (two output samples per RTP |
- // timestamp). |
- numerator_ = 2; |
- denominator_ = 1; |
- break; |
- } |
- case NetEqDecoder::kDecoderAVT: |
- case NetEqDecoder::kDecoderCNGnb: |
- case NetEqDecoder::kDecoderCNGwb: |
- case NetEqDecoder::kDecoderCNGswb32kHz: |
- case NetEqDecoder::kDecoderCNGswb48kHz: { |
- // Do not change the timestamp scaling settings for DTMF or CNG. |
- break; |
- } |
- default: { |
- // Do not use timestamp scaling for any other codec. |
- numerator_ = 1; |
- denominator_ = 1; |
- break; |
+ if (!(info->IsComfortNoise() || info->IsDtmf())) { |
+ // Do not change the timestamp scaling settings for DTMF or CNG. |
+ numerator_ = info->SampleRateHz(); |
+ if (info->codec_type == NetEqDecoder::kDecoderArbitrary) { |
+ // We have no format mapping for "arbitrary" external codecs, so we cannot |
+ // support timestamp scaling of them. |
+ denominator_ = numerator_; |
+ } else { |
+ denominator_ = info->GetFormat().clockrate_hz; |
} |
} |
- |
- if (!(numerator_ == 1 && denominator_ == 1)) { |
+ if (numerator_ != denominator_) { |
// We have a scale factor != 1. |
if (!first_packet_received_) { |
external_ref_ = external_timestamp; |
@@ -88,7 +73,7 @@ uint32_t TimestampScaler::ToInternal(uint32_t external_timestamp, |
uint32_t TimestampScaler::ToExternal(uint32_t internal_timestamp) const { |
- if (!first_packet_received_ || (numerator_ == 1 && denominator_ == 1)) { |
+ if (!first_packet_received_ || (numerator_ == denominator_)) { |
// Not initialized, or scale factor is 1. |
return internal_timestamp; |
} else { |