Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: webrtc/modules/audio_coding/neteq/timestamp_scaler.cc

Issue 2270063006: TimestampScaler no longer depends on NetEqDecoder to figure out scaling. (Closed)
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698