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

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

Issue 2111293003: Removed callback between old AudioConferenceMixer and OutputMixer. The audio frame with mixed audio… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@new_mixer_format
Patch Set: Renamed variables, removed DCHECK(false), changed back copyright years. Created 4 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
11 #include "webrtc/modules/audio_mixer/audio_mixer.h" 11 #include "webrtc/modules/audio_mixer/audio_mixer.h"
12 12
13 #include "webrtc/base/format_macros.h" 13 #include "webrtc/base/format_macros.h"
14 #include "webrtc/modules/audio_processing/include/audio_processing.h" 14 #include "webrtc/modules/audio_processing/include/audio_processing.h"
15 #include "webrtc/modules/utility/include/audio_frame_operations.h" 15 #include "webrtc/modules/utility/include/audio_frame_operations.h"
16 #include "webrtc/system_wrappers/include/file_wrapper.h" 16 #include "webrtc/system_wrappers/include/file_wrapper.h"
17 #include "webrtc/system_wrappers/include/trace.h" 17 #include "webrtc/system_wrappers/include/trace.h"
18 #include "webrtc/voice_engine/include/voe_external_media.h" 18 #include "webrtc/voice_engine/include/voe_external_media.h"
19 #include "webrtc/voice_engine/statistics.h" 19 #include "webrtc/voice_engine/statistics.h"
20 #include "webrtc/voice_engine/utility.h" 20 #include "webrtc/voice_engine/utility.h"
21 21
22 namespace webrtc { 22 namespace webrtc {
23 namespace voe { 23 namespace voe {
24 24
25 void AudioMixer::NewMixedAudio(int32_t id,
26 const AudioFrame& generalAudioFrame,
27 const AudioFrame** uniqueAudioFrames,
28 uint32_t size) {
29 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
30 "AudioMixer::NewMixedAudio(id=%d, size=%u)", id, size);
31
32 _audioFrame.CopyFrom(generalAudioFrame);
33 _audioFrame.id_ = id;
34 }
35
36 void AudioMixer::PlayNotification(int32_t id, uint32_t durationMs) { 25 void AudioMixer::PlayNotification(int32_t id, uint32_t durationMs) {
37 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1), 26 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
38 "AudioMixer::PlayNotification(id=%d, durationMs=%d)", id, 27 "AudioMixer::PlayNotification(id=%d, durationMs=%d)", id,
39 durationMs); 28 durationMs);
40 // Not implement yet 29 // Not implement yet
41 } 30 }
42 31
43 void AudioMixer::RecordNotification(int32_t id, uint32_t durationMs) { 32 void AudioMixer::RecordNotification(int32_t id, uint32_t durationMs) {
44 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1), 33 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
45 "AudioMixer::RecordNotification(id=%d, durationMs=%d)", id, 34 "AudioMixer::RecordNotification(id=%d, durationMs=%d)", id,
46 durationMs); 35 durationMs);
47 36
48 // Not implement yet 37 // Not implement yet
49 } 38 }
50 39
51 void AudioMixer::PlayFileEnded(int32_t id) { 40 void AudioMixer::PlayFileEnded(int32_t id) {
52 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1), 41 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
53 "AudioMixer::PlayFileEnded(id=%d)", id); 42 "AudioMixer::PlayFileEnded(id=%d)", id);
54 43
55 // not needed 44 // not needed
56 } 45 }
57 46
58 void AudioMixer::RecordFileEnded(int32_t id) { 47 void AudioMixer::RecordFileEnded(int32_t id) {
59 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1), 48 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, -1),
60 "AudioMixer::RecordFileEnded(id=%d)", id); 49 "AudioMixer::RecordFileEnded(id=%d)", id);
61 assert(id == _instanceId); 50 RTC_DCHECK_EQ(id, _instanceId);
62 51
63 rtc::CritScope cs(&_fileCritSect); 52 rtc::CritScope cs(&_fileCritSect);
64 _outputFileRecording = false; 53 _outputFileRecording = false;
65 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, VoEId(_instanceId, -1), 54 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, VoEId(_instanceId, -1),
66 "AudioMixer::RecordFileEnded() =>" 55 "AudioMixer::RecordFileEnded() =>"
67 "output file recorder module is shutdown"); 56 "output file recorder module is shutdown");
68 } 57 }
69 58
70 int32_t AudioMixer::Create(AudioMixer*& mixer, uint32_t instanceId) { 59 int32_t AudioMixer::Create(AudioMixer*& mixer, uint32_t instanceId) {
71 WEBRTC_TRACE(kTraceMemory, kTraceVoice, instanceId, 60 WEBRTC_TRACE(kTraceMemory, kTraceVoice, instanceId,
(...skipping 14 matching lines...) Expand all
86 _instanceId(instanceId), 75 _instanceId(instanceId),
87 _externalMediaCallbackPtr(NULL), 76 _externalMediaCallbackPtr(NULL),
88 _externalMedia(false), 77 _externalMedia(false),
89 _panLeft(1.0f), 78 _panLeft(1.0f),
90 _panRight(1.0f), 79 _panRight(1.0f),
91 _mixingFrequencyHz(8000), 80 _mixingFrequencyHz(8000),
92 _outputFileRecorderPtr(NULL), 81 _outputFileRecorderPtr(NULL),
93 _outputFileRecording(false) { 82 _outputFileRecording(false) {
94 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1), 83 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1),
95 "AudioMixer::AudioMixer() - ctor"); 84 "AudioMixer::AudioMixer() - ctor");
96
97 if (_mixerModule.RegisterMixedStreamCallback(this) == -1) {
98 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1),
99 "AudioMixer::AudioMixer() failed to register mixer"
100 "callbacks");
101 }
102 } 85 }
103 86
104 void AudioMixer::Destroy(AudioMixer*& mixer) { 87 void AudioMixer::Destroy(AudioMixer*& mixer) {
105 if (mixer) { 88 if (mixer) {
106 delete mixer; 89 delete mixer;
107 mixer = NULL; 90 mixer = NULL;
108 } 91 }
109 } 92 }
110 93
111 AudioMixer::~AudioMixer() { 94 AudioMixer::~AudioMixer() {
112 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1), 95 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId, -1),
113 "AudioMixer::~AudioMixer() - dtor"); 96 "AudioMixer::~AudioMixer() - dtor");
114 if (_externalMedia) { 97 if (_externalMedia) {
115 DeRegisterExternalMediaProcessing(); 98 DeRegisterExternalMediaProcessing();
116 } 99 }
117 { 100 {
118 rtc::CritScope cs(&_fileCritSect); 101 rtc::CritScope cs(&_fileCritSect);
119 if (_outputFileRecorderPtr) { 102 if (_outputFileRecorderPtr) {
120 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); 103 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL);
121 _outputFileRecorderPtr->StopRecording(); 104 _outputFileRecorderPtr->StopRecording();
122 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); 105 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr);
123 _outputFileRecorderPtr = NULL; 106 _outputFileRecorderPtr = NULL;
124 } 107 }
125 } 108 }
126 _mixerModule.UnRegisterMixedStreamCallback();
127 delete &_mixerModule; 109 delete &_mixerModule;
128 } 110 }
129 111
130 int32_t AudioMixer::SetEngineInformation(voe::Statistics& engineStatistics) { 112 int32_t AudioMixer::SetEngineInformation(voe::Statistics& engineStatistics) {
131 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), 113 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1),
132 "AudioMixer::SetEngineInformation()"); 114 "AudioMixer::SetEngineInformation()");
133 _engineStatisticsPtr = &engineStatistics; 115 _engineStatisticsPtr = &engineStatistics;
134 return 0; 116 return 0;
135 } 117 }
136 118
(...skipping 23 matching lines...) Expand all
160 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), 142 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1),
161 "AudioMixer::DeRegisterExternalMediaProcessing()"); 143 "AudioMixer::DeRegisterExternalMediaProcessing()");
162 144
163 rtc::CritScope cs(&_callbackCritSect); 145 rtc::CritScope cs(&_callbackCritSect);
164 _externalMedia = false; 146 _externalMedia = false;
165 _externalMediaCallbackPtr = NULL; 147 _externalMediaCallbackPtr = NULL;
166 148
167 return 0; 149 return 0;
168 } 150 }
169 151
170 int32_t AudioMixer::SetMixabilityStatus(MixerAudioSource& participant, 152 int32_t AudioMixer::SetMixabilityStatus(MixerAudioSource& audio_source,
171 bool mixable) { 153 bool mixable) {
172 return _mixerModule.SetMixabilityStatus(&participant, mixable); 154 return _mixerModule.SetMixabilityStatus(&audio_source, mixable);
173 } 155 }
174 156
175 int32_t AudioMixer::SetAnonymousMixabilityStatus(MixerAudioSource& participant, 157 int32_t AudioMixer::SetAnonymousMixabilityStatus(MixerAudioSource& audio_source,
176 bool mixable) { 158 bool mixable) {
177 return _mixerModule.SetAnonymousMixabilityStatus(&participant, mixable); 159 return _mixerModule.SetAnonymousMixabilityStatus(&audio_source, mixable);
178 } 160 }
179 161
180 int32_t AudioMixer::MixActiveChannels() { 162 int32_t AudioMixer::MixActiveChannels() {
181 _mixerModule.Process(); 163 _mixerModule.Mix(&_audioFrame);
182 return 0; 164 return 0;
183 } 165 }
184 166
185 int AudioMixer::GetSpeechOutputLevel(uint32_t& level) { 167 int AudioMixer::GetSpeechOutputLevel(uint32_t& level) {
186 int8_t currentLevel = _audioLevel.Level(); 168 int8_t currentLevel = _audioLevel.Level();
187 level = static_cast<uint32_t>(currentLevel); 169 level = static_cast<uint32_t>(currentLevel);
188 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, VoEId(_instanceId, -1), 170 WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, VoEId(_instanceId, -1),
189 "GetSpeechOutputLevel() => level=%u", level); 171 "GetSpeechOutputLevel() => level=%u", level);
190 return 0; 172 return 0;
191 } 173 }
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 } 389 }
408 390
409 // Scale left and/or right channel(s) if balance is active 391 // Scale left and/or right channel(s) if balance is active
410 if (_panLeft != 1.0 || _panRight != 1.0) { 392 if (_panLeft != 1.0 || _panRight != 1.0) {
411 if (_audioFrame.num_channels_ == 1) { 393 if (_audioFrame.num_channels_ == 1) {
412 AudioFrameOperations::MonoToStereo(&_audioFrame); 394 AudioFrameOperations::MonoToStereo(&_audioFrame);
413 } else { 395 } else {
414 // Pure stereo mode (we are receiving a stereo signal). 396 // Pure stereo mode (we are receiving a stereo signal).
415 } 397 }
416 398
417 assert(_audioFrame.num_channels_ == 2); 399 RTC_DCHECK_EQ(_audioFrame.num_channels_, static_cast<size_t>(2));
418 AudioFrameOperations::Scale(_panLeft, _panRight, _audioFrame); 400 AudioFrameOperations::Scale(_panLeft, _panRight, _audioFrame);
419 } 401 }
420 402
421 // --- Far-end Voice Quality Enhancement (AudioProcessing Module) 403 // --- Far-end Voice Quality Enhancement (AudioProcessing Module)
422 if (feed_data_to_apm) { 404 if (feed_data_to_apm) {
423 if (_audioProcessingModulePtr->ProcessReverseStream(&_audioFrame) != 0) { 405 if (_audioProcessingModulePtr->ProcessReverseStream(&_audioFrame) != 0) {
424 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1), 406 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1),
425 "AudioProcessingModule::ProcessReverseStream() => error"); 407 "AudioProcessingModule::ProcessReverseStream() => error");
426 RTC_DCHECK(false); 408 RTC_DCHECK(false);
427 } 409 }
(...skipping 14 matching lines...) Expand all
442 } 424 }
443 } 425 }
444 426
445 // --- Measure audio level (0-9) for the combined signal 427 // --- Measure audio level (0-9) for the combined signal
446 _audioLevel.ComputeLevel(_audioFrame); 428 _audioLevel.ComputeLevel(_audioFrame);
447 429
448 return 0; 430 return 0;
449 } 431 }
450 } // namespace voe 432 } // namespace voe
451 } // namespace webrtc 433 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_mixer/audio_mixer.h ('k') | webrtc/modules/audio_mixer/include/audio_mixer_defines.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698