Index: webrtc/modules/audio_mixer/audio_mixer.h |
diff --git a/webrtc/modules/audio_mixer/audio_mixer.h b/webrtc/modules/audio_mixer/audio_mixer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ddcebe56258ae9d89ac862a41c51e64653eb1133 |
--- /dev/null |
+++ b/webrtc/modules/audio_mixer/audio_mixer.h |
@@ -0,0 +1,127 @@ |
+/* |
+ * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#ifndef WEBRTC_MODULES_AUDIO_MIXER_AUDIO_MIXER_H_ |
+#define WEBRTC_MODULES_AUDIO_MIXER_AUDIO_MIXER_H_ |
+ |
+#include "webrtc/base/criticalsection.h" |
+#include "webrtc/common_audio/resampler/include/push_resampler.h" |
+#include "webrtc/common_types.h" |
+#include "webrtc/modules/audio_mixer/include/new_audio_conference_mixer.h" |
+#include "webrtc/modules/audio_mixer/include/audio_mixer_defines.h" |
+#include "webrtc/modules/utility/include/file_recorder.h" |
+#include "webrtc/voice_engine/level_indicator.h" |
+#include "webrtc/voice_engine/voice_engine_defines.h" |
+ |
+namespace webrtc { |
+ |
+class AudioProcessing; |
+class FileWrapper; |
+class VoEMediaProcess; |
+ |
+namespace voe { |
+class Statistics; |
+ |
+// Note: this class is in the process of being rewritten and merged |
+// with AudioConferenceMixer. Expect inheritance chains to be changed, |
+// member functions removed or renamed. |
+class AudioMixer : public OldAudioMixerOutputReceiver, public FileCallback { |
+ public: |
+ static int32_t Create(AudioMixer*& mixer, uint32_t instanceId); // NOLINT |
+ |
+ static void Destroy(AudioMixer*& mixer); // NOLINT |
+ |
+ int32_t SetEngineInformation(Statistics& engineStatistics); // NOLINT |
+ |
+ int32_t SetAudioProcessingModule(AudioProcessing* audioProcessingModule); |
+ |
+ // VoEExternalMedia |
+ int RegisterExternalMediaProcessing(VoEMediaProcess& // NOLINT |
+ proccess_object); |
+ |
+ int DeRegisterExternalMediaProcessing(); |
+ |
+ int32_t MixActiveChannels(); |
+ |
+ int32_t DoOperationsOnCombinedSignal(bool feed_data_to_apm); |
+ |
+ int32_t SetMixabilityStatus(MixerAudioSource& participant, // NOLINT |
+ bool mixable); |
+ |
+ int32_t SetAnonymousMixabilityStatus(MixerAudioSource& participant, // NOLINT |
+ bool mixable); |
+ |
+ int GetMixedAudio(int sample_rate_hz, |
+ size_t num_channels, |
+ AudioFrame* audioFrame); |
+ |
+ // VoEVolumeControl |
+ int GetSpeechOutputLevel(uint32_t& level); // NOLINT |
+ |
+ int GetSpeechOutputLevelFullRange(uint32_t& level); // NOLINT |
+ |
+ int SetOutputVolumePan(float left, float right); |
+ |
+ int GetOutputVolumePan(float& left, float& right); // NOLINT |
+ |
+ // VoEFile |
+ int StartRecordingPlayout(const char* fileName, const CodecInst* codecInst); |
+ |
+ int StartRecordingPlayout(OutStream* stream, const CodecInst* codecInst); |
+ int StopRecordingPlayout(); |
+ |
+ virtual ~AudioMixer(); |
+ |
+ // from AudioMixerOutputReceiver |
+ virtual void NewMixedAudio(int32_t id, |
+ const AudioFrame& generalAudioFrame, |
+ const AudioFrame** uniqueAudioFrames, |
+ uint32_t size); |
+ |
+ // For file recording |
+ void PlayNotification(int32_t id, uint32_t durationMs); |
+ |
+ void RecordNotification(int32_t id, uint32_t durationMs); |
+ |
+ void PlayFileEnded(int32_t id); |
+ void RecordFileEnded(int32_t id); |
+ |
+ private: |
+ explicit AudioMixer(uint32_t instanceId); |
+ |
+ // uses |
+ Statistics* _engineStatisticsPtr; |
+ AudioProcessing* _audioProcessingModulePtr; |
+ |
+ rtc::CriticalSection _callbackCritSect; |
+ // protect the _outputFileRecorderPtr and _outputFileRecording |
+ rtc::CriticalSection _fileCritSect; |
+ NewAudioConferenceMixer& _mixerModule; |
+ AudioFrame _audioFrame; |
+ // Converts mixed audio to the audio device output rate. |
+ PushResampler<int16_t> resampler_; |
+ // Converts mixed audio to the audio processing rate. |
+ PushResampler<int16_t> audioproc_resampler_; |
+ AudioLevel _audioLevel; // measures audio level for the combined signal |
+ int _instanceId; |
+ VoEMediaProcess* _externalMediaCallbackPtr; |
+ bool _externalMedia; |
+ float _panLeft; |
+ float _panRight; |
+ int _mixingFrequencyHz; |
+ FileRecorder* _outputFileRecorderPtr; |
+ bool _outputFileRecording; |
+}; |
+ |
+} // namespace voe |
+ |
+} // namespace webrtc |
+ |
+#endif // WEBRTC_MODULES_AUDIO_MIXER_AUDIO_MIXER_H_ |