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

Side by Side Diff: voice_engine/output_mixer.cc

Issue 3015553002: Remove voe::OutputMixer and AudioConferenceMixer. (Closed)
Patch Set: remove conference mixer from presubmit.py Created 3 years, 3 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
« no previous file with comments | « voice_engine/output_mixer.h ('k') | voice_engine/shared_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "voice_engine/output_mixer.h"
12
13 #include "modules/audio_processing/include/audio_processing.h"
14 #include "rtc_base/format_macros.h"
15 #include "system_wrappers/include/trace.h"
16 #include "voice_engine/statistics.h"
17 #include "voice_engine/utility.h"
18
19 namespace webrtc {
20 namespace voe {
21
22 void
23 OutputMixer::NewMixedAudio(int32_t id,
24 const AudioFrame& generalAudioFrame,
25 const AudioFrame** uniqueAudioFrames,
26 uint32_t size)
27 {
28 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
29 "OutputMixer::NewMixedAudio(id=%d, size=%u)", id, size);
30
31 _audioFrame.CopyFrom(generalAudioFrame);
32 _audioFrame.id_ = id;
33 }
34
35 int32_t
36 OutputMixer::Create(OutputMixer*& mixer, uint32_t instanceId)
37 {
38 WEBRTC_TRACE(kTraceMemory, kTraceVoice, instanceId,
39 "OutputMixer::Create(instanceId=%d)", instanceId);
40 mixer = new OutputMixer(instanceId);
41 if (mixer == NULL)
42 {
43 WEBRTC_TRACE(kTraceMemory, kTraceVoice, instanceId,
44 "OutputMixer::Create() unable to allocate memory for"
45 "mixer");
46 return -1;
47 }
48 return 0;
49 }
50
51 OutputMixer::OutputMixer(uint32_t instanceId) :
52 _mixerModule(*AudioConferenceMixer::Create(instanceId)),
53 _instanceId(instanceId),
54 _mixingFrequencyHz(8000)
55 {
56 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,-1),
57 "OutputMixer::OutputMixer() - ctor");
58
59 if (_mixerModule.RegisterMixedStreamCallback(this) == -1)
60 {
61 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,-1),
62 "OutputMixer::OutputMixer() failed to register mixer"
63 "callbacks");
64 }
65 }
66
67 void
68 OutputMixer::Destroy(OutputMixer*& mixer)
69 {
70 if (mixer)
71 {
72 delete mixer;
73 mixer = NULL;
74 }
75 }
76
77 OutputMixer::~OutputMixer()
78 {
79 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,-1),
80 "OutputMixer::~OutputMixer() - dtor");
81 _mixerModule.UnRegisterMixedStreamCallback();
82 delete &_mixerModule;
83 }
84
85 int32_t
86 OutputMixer::SetEngineInformation(voe::Statistics& engineStatistics)
87 {
88 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,-1),
89 "OutputMixer::SetEngineInformation()");
90 _engineStatisticsPtr = &engineStatistics;
91 return 0;
92 }
93
94 int32_t
95 OutputMixer::SetAudioProcessingModule(AudioProcessing* audioProcessingModule)
96 {
97 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,-1),
98 "OutputMixer::SetAudioProcessingModule("
99 "audioProcessingModule=0x%x)", audioProcessingModule);
100 _audioProcessingModulePtr = audioProcessingModule;
101 return 0;
102 }
103
104 int32_t
105 OutputMixer::SetMixabilityStatus(MixerParticipant& participant,
106 bool mixable)
107 {
108 return _mixerModule.SetMixabilityStatus(&participant, mixable);
109 }
110
111 int32_t
112 OutputMixer::MixActiveChannels()
113 {
114 _mixerModule.Process();
115 return 0;
116 }
117
118 int OutputMixer::GetMixedAudio(int sample_rate_hz,
119 size_t num_channels,
120 AudioFrame* frame) {
121 WEBRTC_TRACE(
122 kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
123 "OutputMixer::GetMixedAudio(sample_rate_hz=%d, num_channels=%" PRIuS ")",
124 sample_rate_hz, num_channels);
125
126 frame->num_channels_ = num_channels;
127 frame->sample_rate_hz_ = sample_rate_hz;
128 // TODO(andrew): Ideally the downmixing would occur much earlier, in
129 // AudioCodingModule.
130 RemixAndResample(_audioFrame, &resampler_, frame);
131 return 0;
132 }
133
134 int32_t
135 OutputMixer::DoOperationsOnCombinedSignal(bool feed_data_to_apm)
136 {
137 if (_audioFrame.sample_rate_hz_ != _mixingFrequencyHz)
138 {
139 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
140 "OutputMixer::DoOperationsOnCombinedSignal() => "
141 "mixing frequency = %d", _audioFrame.sample_rate_hz_);
142 _mixingFrequencyHz = _audioFrame.sample_rate_hz_;
143 }
144
145 // --- Far-end Voice Quality Enhancement (AudioProcessing Module)
146 if (feed_data_to_apm) {
147 if (_audioProcessingModulePtr->ProcessReverseStream(&_audioFrame) != 0) {
148 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1),
149 "AudioProcessingModule::ProcessReverseStream() => error");
150 RTC_NOTREACHED();
151 }
152 }
153
154 return 0;
155 }
156 } // namespace voe
157 } // namespace webrtc
OLDNEW
« no previous file with comments | « voice_engine/output_mixer.h ('k') | voice_engine/shared_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698