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 } | 88 } |
89 | 89 |
90 int32_t FilePlayerImpl::AudioCodec(CodecInst& audioCodec) const | 90 int32_t FilePlayerImpl::AudioCodec(CodecInst& audioCodec) const |
91 { | 91 { |
92 audioCodec = _codec; | 92 audioCodec = _codec; |
93 return 0; | 93 return 0; |
94 } | 94 } |
95 | 95 |
96 int32_t FilePlayerImpl::Get10msAudioFromFile( | 96 int32_t FilePlayerImpl::Get10msAudioFromFile( |
97 int16_t* outBuffer, | 97 int16_t* outBuffer, |
98 int& lengthInSamples, | 98 size_t& lengthInSamples, |
99 int frequencyInHz) | 99 int frequencyInHz) |
100 { | 100 { |
101 if(_codec.plfreq == 0) | 101 if(_codec.plfreq == 0) |
102 { | 102 { |
103 LOG(LS_WARNING) << "Get10msAudioFromFile() playing not started!" | 103 LOG(LS_WARNING) << "Get10msAudioFromFile() playing not started!" |
104 << " codec freq = " << _codec.plfreq | 104 << " codec freq = " << _codec.plfreq |
105 << ", wanted freq = " << frequencyInHz; | 105 << ", wanted freq = " << frequencyInHz; |
106 return -1; | 106 return -1; |
107 } | 107 } |
108 | 108 |
(...skipping 11 matching lines...) Expand all Loading... |
120 { | 120 { |
121 // End of file reached. | 121 // End of file reached. |
122 return -1; | 122 return -1; |
123 } | 123 } |
124 if(lengthInBytes == 0) | 124 if(lengthInBytes == 0) |
125 { | 125 { |
126 lengthInSamples = 0; | 126 lengthInSamples = 0; |
127 return 0; | 127 return 0; |
128 } | 128 } |
129 // One sample is two bytes. | 129 // One sample is two bytes. |
130 unresampledAudioFrame.samples_per_channel_ = | 130 unresampledAudioFrame.samples_per_channel_ = lengthInBytes >> 1; |
131 (uint16_t)lengthInBytes >> 1; | |
132 | 131 |
133 } else { | 132 } else { |
134 // Decode will generate 10 ms of audio data. PlayoutAudioData(..) | 133 // Decode will generate 10 ms of audio data. PlayoutAudioData(..) |
135 // expects a full frame. If the frame size is larger than 10 ms, | 134 // expects a full frame. If the frame size is larger than 10 ms, |
136 // PlayoutAudioData(..) data should be called proportionally less often. | 135 // PlayoutAudioData(..) data should be called proportionally less often. |
137 int16_t encodedBuffer[MAX_AUDIO_BUFFER_IN_SAMPLES]; | 136 int16_t encodedBuffer[MAX_AUDIO_BUFFER_IN_SAMPLES]; |
138 size_t encodedLengthInBytes = 0; | 137 size_t encodedLengthInBytes = 0; |
139 if(++_numberOf10MsInDecoder >= _numberOf10MsPerFrame) | 138 if(++_numberOf10MsInDecoder >= _numberOf10MsPerFrame) |
140 { | 139 { |
141 _numberOf10MsInDecoder = 0; | 140 _numberOf10MsInDecoder = 0; |
142 size_t bytesFromFile = sizeof(encodedBuffer); | 141 size_t bytesFromFile = sizeof(encodedBuffer); |
143 if (_fileModule.PlayoutAudioData((int8_t*)encodedBuffer, | 142 if (_fileModule.PlayoutAudioData((int8_t*)encodedBuffer, |
144 bytesFromFile) == -1) | 143 bytesFromFile) == -1) |
145 { | 144 { |
146 // End of file reached. | 145 // End of file reached. |
147 return -1; | 146 return -1; |
148 } | 147 } |
149 encodedLengthInBytes = bytesFromFile; | 148 encodedLengthInBytes = bytesFromFile; |
150 } | 149 } |
151 if(_audioDecoder.Decode(unresampledAudioFrame,frequencyInHz, | 150 if(_audioDecoder.Decode(unresampledAudioFrame,frequencyInHz, |
152 (int8_t*)encodedBuffer, | 151 (int8_t*)encodedBuffer, |
153 encodedLengthInBytes) == -1) | 152 encodedLengthInBytes) == -1) |
154 { | 153 { |
155 return -1; | 154 return -1; |
156 } | 155 } |
157 } | 156 } |
158 | 157 |
159 int outLen = 0; | 158 size_t outLen = 0; |
160 if(_resampler.ResetIfNeeded(unresampledAudioFrame.sample_rate_hz_, | 159 if(_resampler.ResetIfNeeded(unresampledAudioFrame.sample_rate_hz_, |
161 frequencyInHz, 1)) | 160 frequencyInHz, 1)) |
162 { | 161 { |
163 LOG(LS_WARNING) << "Get10msAudioFromFile() unexpected codec."; | 162 LOG(LS_WARNING) << "Get10msAudioFromFile() unexpected codec."; |
164 | 163 |
165 // New sampling frequency. Update state. | 164 // New sampling frequency. Update state. |
166 outLen = frequencyInHz / 100; | 165 outLen = static_cast<size_t>(frequencyInHz / 100); |
167 memset(outBuffer, 0, outLen * sizeof(int16_t)); | 166 memset(outBuffer, 0, outLen * sizeof(int16_t)); |
168 return 0; | 167 return 0; |
169 } | 168 } |
170 _resampler.Push(unresampledAudioFrame.data_, | 169 _resampler.Push(unresampledAudioFrame.data_, |
171 unresampledAudioFrame.samples_per_channel_, | 170 unresampledAudioFrame.samples_per_channel_, |
172 outBuffer, | 171 outBuffer, |
173 MAX_AUDIO_BUFFER_IN_SAMPLES, | 172 MAX_AUDIO_BUFFER_IN_SAMPLES, |
174 outLen); | 173 outLen); |
175 | 174 |
176 lengthInSamples = outLen; | 175 lengthInSamples = outLen; |
177 | 176 |
178 if(_scaling != 1.0) | 177 if(_scaling != 1.0) |
179 { | 178 { |
180 for (int i = 0;i < outLen; i++) | 179 for (size_t i = 0;i < outLen; i++) |
181 { | 180 { |
182 outBuffer[i] = (int16_t)(outBuffer[i] * _scaling); | 181 outBuffer[i] = (int16_t)(outBuffer[i] * _scaling); |
183 } | 182 } |
184 } | 183 } |
185 _decodedLengthInMS += 10; | 184 _decodedLengthInMS += 10; |
186 return 0; | 185 return 0; |
187 } | 186 } |
188 | 187 |
189 int32_t FilePlayerImpl::RegisterModuleFileCallback(FileCallback* callback) | 188 int32_t FilePlayerImpl::RegisterModuleFileCallback(FileCallback* callback) |
190 { | 189 { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 { | 393 { |
395 LOG(LS_WARNING) << "SetUpAudioDecoder() codec " << _codec.plname | 394 LOG(LS_WARNING) << "SetUpAudioDecoder() codec " << _codec.plname |
396 << " not supported."; | 395 << " not supported."; |
397 return -1; | 396 return -1; |
398 } | 397 } |
399 _numberOf10MsPerFrame = _codec.pacsize / (_codec.plfreq / 100); | 398 _numberOf10MsPerFrame = _codec.pacsize / (_codec.plfreq / 100); |
400 _numberOf10MsInDecoder = 0; | 399 _numberOf10MsInDecoder = 0; |
401 return 0; | 400 return 0; |
402 } | 401 } |
403 } // namespace webrtc | 402 } // namespace webrtc |
OLD | NEW |