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

Side by Side Diff: webrtc/modules/utility/source/file_player_impl.cc

Issue 1224123002: Update audio code to use size_t more correctly, webrtc/modules/ portion. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 5 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/modules/utility/source/file_player_impl.h ('k') | webrtc/modules/utility/source/file_player_unittests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698