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 26 matching lines...) Expand all Loading... |
37 | 37 |
38 uint32_t TimestampScaler::ToInternal(uint32_t external_timestamp, | 38 uint32_t TimestampScaler::ToInternal(uint32_t external_timestamp, |
39 uint8_t rtp_payload_type) { | 39 uint8_t rtp_payload_type) { |
40 const DecoderDatabase::DecoderInfo* info = | 40 const DecoderDatabase::DecoderInfo* info = |
41 decoder_database_.GetDecoderInfo(rtp_payload_type); | 41 decoder_database_.GetDecoderInfo(rtp_payload_type); |
42 if (!info) { | 42 if (!info) { |
43 // Payload type is unknown. Do not scale. | 43 // Payload type is unknown. Do not scale. |
44 return external_timestamp; | 44 return external_timestamp; |
45 } | 45 } |
46 switch (info->codec_type) { | 46 switch (info->codec_type) { |
47 case kDecoderG722: | 47 case NetEqDecoder::kDecoderG722: |
48 case kDecoderG722_2ch: { | 48 case NetEqDecoder::kDecoderG722_2ch: { |
49 // Use timestamp scaling with factor 2 (two output samples per RTP | 49 // Use timestamp scaling with factor 2 (two output samples per RTP |
50 // timestamp). | 50 // timestamp). |
51 numerator_ = 2; | 51 numerator_ = 2; |
52 denominator_ = 1; | 52 denominator_ = 1; |
53 break; | 53 break; |
54 } | 54 } |
55 case kDecoderCNGswb48kHz: { | 55 case NetEqDecoder::kDecoderCNGswb48kHz: { |
56 // Use timestamp scaling with factor 2/3 (32 kHz sample rate, but RTP | 56 // Use timestamp scaling with factor 2/3 (32 kHz sample rate, but RTP |
57 // timestamps run on 48 kHz). | 57 // timestamps run on 48 kHz). |
58 // TODO(tlegrand): Remove scaling for kDecoderCNGswb48kHz once ACM has | 58 // TODO(tlegrand): Remove scaling for kDecoderCNGswb48kHz once ACM has |
59 // full 48 kHz support. | 59 // full 48 kHz support. |
60 numerator_ = 2; | 60 numerator_ = 2; |
61 denominator_ = 3; | 61 denominator_ = 3; |
62 break; | 62 break; |
63 } | 63 } |
64 case kDecoderAVT: | 64 case NetEqDecoder::kDecoderAVT: |
65 case kDecoderCNGnb: | 65 case NetEqDecoder::kDecoderCNGnb: |
66 case kDecoderCNGwb: | 66 case NetEqDecoder::kDecoderCNGwb: |
67 case kDecoderCNGswb32kHz: { | 67 case NetEqDecoder::kDecoderCNGswb32kHz: { |
68 // Do not change the timestamp scaling settings for DTMF or CNG. | 68 // Do not change the timestamp scaling settings for DTMF or CNG. |
69 break; | 69 break; |
70 } | 70 } |
71 default: { | 71 default: { |
72 // Do not use timestamp scaling for any other codec. | 72 // Do not use timestamp scaling for any other codec. |
73 numerator_ = 1; | 73 numerator_ = 1; |
74 denominator_ = 1; | 74 denominator_ = 1; |
75 break; | 75 break; |
76 } | 76 } |
77 } | 77 } |
(...skipping 26 matching lines...) Expand all Loading... |
104 } else { | 104 } else { |
105 int32_t internal_diff = internal_timestamp - internal_ref_; | 105 int32_t internal_diff = internal_timestamp - internal_ref_; |
106 assert(numerator_ > 0); // Should not be possible. | 106 assert(numerator_ > 0); // Should not be possible. |
107 // Do not update references in this method. | 107 // Do not update references in this method. |
108 // Switch |denominator_| and |numerator_| to convert the other way. | 108 // Switch |denominator_| and |numerator_| to convert the other way. |
109 return external_ref_ + (internal_diff * denominator_) / numerator_; | 109 return external_ref_ + (internal_diff * denominator_) / numerator_; |
110 } | 110 } |
111 } | 111 } |
112 | 112 |
113 } // namespace webrtc | 113 } // namespace webrtc |
OLD | NEW |