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

Side by Side Diff: webrtc/modules/audio_mixer/audio_mixer.cc

Issue 2049683003: FileRecorder + FilePlayer: Let Create functions return unique_ptr (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@remove3
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 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 AudioMixer::AudioMixer(uint32_t instanceId) 72 AudioMixer::AudioMixer(uint32_t instanceId)
73 : _mixerModule(*NewAudioConferenceMixer::Create(instanceId)), 73 : _mixerModule(*NewAudioConferenceMixer::Create(instanceId)),
74 _audioLevel(), 74 _audioLevel(),
75 _instanceId(instanceId), 75 _instanceId(instanceId),
76 _externalMediaCallbackPtr(NULL), 76 _externalMediaCallbackPtr(NULL),
77 _externalMedia(false), 77 _externalMedia(false),
78 _panLeft(1.0f), 78 _panLeft(1.0f),
79 _panRight(1.0f), 79 _panRight(1.0f),
80 _mixingFrequencyHz(8000), 80 _mixingFrequencyHz(8000),
81 _outputFileRecorderPtr(NULL),
82 _outputFileRecording(false) { 81 _outputFileRecording(false) {
83 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1), 82 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1),
84 "AudioMixer::AudioMixer() - ctor"); 83 "AudioMixer::AudioMixer() - ctor");
85 } 84 }
86 85
87 void AudioMixer::Destroy(AudioMixer*& mixer) { 86 void AudioMixer::Destroy(AudioMixer*& mixer) {
88 if (mixer) { 87 if (mixer) {
89 delete mixer; 88 delete mixer;
90 mixer = NULL; 89 mixer = NULL;
91 } 90 }
92 } 91 }
93 92
94 AudioMixer::~AudioMixer() { 93 AudioMixer::~AudioMixer() {
95 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1), 94 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1),
96 "AudioMixer::~AudioMixer() - dtor"); 95 "AudioMixer::~AudioMixer() - dtor");
97 if (_externalMedia) { 96 if (_externalMedia) {
98 DeRegisterExternalMediaProcessing(); 97 DeRegisterExternalMediaProcessing();
99 } 98 }
100 { 99 {
101 rtc::CritScope cs(&_fileCritSect); 100 rtc::CritScope cs(&_fileCritSect);
102 if (_outputFileRecorderPtr) { 101 if (_outputFileRecorderPtr) {
103 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); 102 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL);
104 _outputFileRecorderPtr->StopRecording(); 103 _outputFileRecorderPtr->StopRecording();
105 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr);
106 _outputFileRecorderPtr = NULL;
107 } 104 }
108 } 105 }
109 delete &_mixerModule; 106 delete &_mixerModule;
110 } 107 }
111 108
112 int32_t AudioMixer::SetEngineInformation(voe::Statistics& engineStatistics) { 109 int32_t AudioMixer::SetEngineInformation(voe::Statistics& engineStatistics) {
113 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), 110 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1),
114 "AudioMixer::SetEngineInformation()"); 111 "AudioMixer::SetEngineInformation()");
115 _engineStatisticsPtr = &engineStatistics; 112 _engineStatisticsPtr = &engineStatistics;
116 return 0; 113 return 0;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 } else if ((STR_CASE_CMP(codecInst->plname, "L16") == 0) || 216 } else if ((STR_CASE_CMP(codecInst->plname, "L16") == 0) ||
220 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || 217 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) ||
221 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { 218 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) {
222 format = kFileFormatWavFile; 219 format = kFileFormatWavFile;
223 } else { 220 } else {
224 format = kFileFormatCompressedFile; 221 format = kFileFormatCompressedFile;
225 } 222 }
226 223
227 rtc::CritScope cs(&_fileCritSect); 224 rtc::CritScope cs(&_fileCritSect);
228 225
229 // Destroy the old instance
230 if (_outputFileRecorderPtr) { 226 if (_outputFileRecorderPtr) {
231 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); 227 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL);
232 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr);
233 _outputFileRecorderPtr = NULL;
234 } 228 }
235 229
236 _outputFileRecorderPtr = 230 _outputFileRecorderPtr =
237 FileRecorder::CreateFileRecorder(_instanceId, (const FileFormats)format); 231 FileRecorder::CreateFileRecorder(_instanceId, (const FileFormats)format);
238 if (_outputFileRecorderPtr == NULL) { 232 if (_outputFileRecorderPtr == NULL) {
239 _engineStatisticsPtr->SetLastError( 233 _engineStatisticsPtr->SetLastError(
240 VE_INVALID_ARGUMENT, kTraceError, 234 VE_INVALID_ARGUMENT, kTraceError,
241 "StartRecordingPlayout() fileRecorder format isnot correct"); 235 "StartRecordingPlayout() fileRecorder format isnot correct");
242 return -1; 236 return -1;
243 } 237 }
244 238
245 if (_outputFileRecorderPtr->StartRecordingAudioFile( 239 if (_outputFileRecorderPtr->StartRecordingAudioFile(
246 fileName, (const CodecInst&)*codecInst, notificationTime) != 0) { 240 fileName, (const CodecInst&)*codecInst, notificationTime) != 0) {
247 _engineStatisticsPtr->SetLastError( 241 _engineStatisticsPtr->SetLastError(
248 VE_BAD_FILE, kTraceError, 242 VE_BAD_FILE, kTraceError,
249 "StartRecordingAudioFile() failed to start file recording"); 243 "StartRecordingAudioFile() failed to start file recording");
250 _outputFileRecorderPtr->StopRecording(); 244 _outputFileRecorderPtr->StopRecording();
251 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); 245 _outputFileRecorderPtr.reset();
252 _outputFileRecorderPtr = NULL;
253 return -1; 246 return -1;
254 } 247 }
255 _outputFileRecorderPtr->RegisterModuleFileCallback(this); 248 _outputFileRecorderPtr->RegisterModuleFileCallback(this);
256 _outputFileRecording = true; 249 _outputFileRecording = true;
257 250
258 return 0; 251 return 0;
259 } 252 }
260 253
261 int AudioMixer::StartRecordingPlayout(OutStream* stream, 254 int AudioMixer::StartRecordingPlayout(OutStream* stream,
262 const CodecInst* codecInst) { 255 const CodecInst* codecInst) {
(...skipping 22 matching lines...) Expand all
285 } else if ((STR_CASE_CMP(codecInst->plname, "L16") == 0) || 278 } else if ((STR_CASE_CMP(codecInst->plname, "L16") == 0) ||
286 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || 279 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) ||
287 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { 280 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) {
288 format = kFileFormatWavFile; 281 format = kFileFormatWavFile;
289 } else { 282 } else {
290 format = kFileFormatCompressedFile; 283 format = kFileFormatCompressedFile;
291 } 284 }
292 285
293 rtc::CritScope cs(&_fileCritSect); 286 rtc::CritScope cs(&_fileCritSect);
294 287
295 // Destroy the old instance
296 if (_outputFileRecorderPtr) { 288 if (_outputFileRecorderPtr) {
297 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); 289 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL);
298 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr);
299 _outputFileRecorderPtr = NULL;
300 } 290 }
301 291
302 _outputFileRecorderPtr = 292 _outputFileRecorderPtr =
303 FileRecorder::CreateFileRecorder(_instanceId, (const FileFormats)format); 293 FileRecorder::CreateFileRecorder(_instanceId, (const FileFormats)format);
304 if (_outputFileRecorderPtr == NULL) { 294 if (_outputFileRecorderPtr == NULL) {
305 _engineStatisticsPtr->SetLastError( 295 _engineStatisticsPtr->SetLastError(
306 VE_INVALID_ARGUMENT, kTraceError, 296 VE_INVALID_ARGUMENT, kTraceError,
307 "StartRecordingPlayout() fileRecorder format isnot correct"); 297 "StartRecordingPlayout() fileRecorder format isnot correct");
308 return -1; 298 return -1;
309 } 299 }
310 300
311 if (_outputFileRecorderPtr->StartRecordingAudioFile(*stream, *codecInst, 301 if (_outputFileRecorderPtr->StartRecordingAudioFile(*stream, *codecInst,
312 notificationTime) != 0) { 302 notificationTime) != 0) {
313 _engineStatisticsPtr->SetLastError( 303 _engineStatisticsPtr->SetLastError(
314 VE_BAD_FILE, kTraceError, 304 VE_BAD_FILE, kTraceError,
315 "StartRecordingAudioFile() failed to start file recording"); 305 "StartRecordingAudioFile() failed to start file recording");
316 _outputFileRecorderPtr->StopRecording(); 306 _outputFileRecorderPtr->StopRecording();
317 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); 307 _outputFileRecorderPtr.reset();
318 _outputFileRecorderPtr = NULL;
319 return -1; 308 return -1;
320 } 309 }
321 310
322 _outputFileRecorderPtr->RegisterModuleFileCallback(this); 311 _outputFileRecorderPtr->RegisterModuleFileCallback(this);
323 _outputFileRecording = true; 312 _outputFileRecording = true;
324 313
325 return 0; 314 return 0;
326 } 315 }
327 316
328 int AudioMixer::StopRecordingPlayout() { 317 int AudioMixer::StopRecordingPlayout() {
329 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), 318 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1),
330 "AudioMixer::StopRecordingPlayout()"); 319 "AudioMixer::StopRecordingPlayout()");
331 320
332 if (!_outputFileRecording) { 321 if (!_outputFileRecording) {
333 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1), 322 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1),
334 "StopRecordingPlayout() file isnot recording"); 323 "StopRecordingPlayout() file isnot recording");
335 return -1; 324 return -1;
336 } 325 }
337 326
338 rtc::CritScope cs(&_fileCritSect); 327 rtc::CritScope cs(&_fileCritSect);
339 328
340 if (_outputFileRecorderPtr->StopRecording() != 0) { 329 if (_outputFileRecorderPtr->StopRecording() != 0) {
341 _engineStatisticsPtr->SetLastError( 330 _engineStatisticsPtr->SetLastError(
342 VE_STOP_RECORDING_FAILED, kTraceError, 331 VE_STOP_RECORDING_FAILED, kTraceError,
343 "StopRecording(), could not stop recording"); 332 "StopRecording(), could not stop recording");
344 return -1; 333 return -1;
345 } 334 }
346 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); 335 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL);
347 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); 336 _outputFileRecorderPtr.reset();
348 _outputFileRecorderPtr = NULL;
349 _outputFileRecording = false; 337 _outputFileRecording = false;
350 338
351 return 0; 339 return 0;
352 } 340 }
353 341
354 int AudioMixer::GetMixedAudio(int sample_rate_hz, 342 int AudioMixer::GetMixedAudio(int sample_rate_hz,
355 size_t num_channels, 343 size_t num_channels,
356 AudioFrame* frame) { 344 AudioFrame* frame) {
357 WEBRTC_TRACE( 345 WEBRTC_TRACE(
358 kTraceStream, kTraceVoice, VoEId(_instanceId, -1), 346 kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 } 404 }
417 } 405 }
418 406
419 // --- Measure audio level (0-9) for the combined signal 407 // --- Measure audio level (0-9) for the combined signal
420 _audioLevel.ComputeLevel(_audioFrame); 408 _audioLevel.ComputeLevel(_audioFrame);
421 409
422 return 0; 410 return 0;
423 } 411 }
424 } // namespace voe 412 } // namespace voe
425 } // namespace webrtc 413 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698