| Index: webrtc/modules/audio_mixer/audio_mixer/audio_mixer.h
 | 
| diff --git a/webrtc/modules/audio_mixer/audio_mixer/audio_mixer.h b/webrtc/modules/audio_mixer/audio_mixer/audio_mixer.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..75f28e3473dcfd9dbae982abb201dc1e55b0fad7
 | 
| --- /dev/null
 | 
| +++ b/webrtc/modules/audio_mixer/audio_mixer/audio_mixer.h
 | 
| @@ -0,0 +1,122 @@
 | 
| +/*
 | 
| + *  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_VOICE_ENGINE_OUTPUT_MIXER_H_
 | 
| +#define WEBRTC_VOICE_ENGINE_OUTPUT_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/audio_conference_mixer.h"
 | 
| +#include "webrtc/modules/audio_mixer/include/audio_conference_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;
 | 
| +
 | 
| +class AudioMixer : public AudioMixerOutputReceiver, public FileCallback {
 | 
| + public:
 | 
| +  static int32_t Create(AudioMixer*& mixer, uint32_t instanceId);
 | 
| +
 | 
| +  static void Destroy(AudioMixer*& mixer);
 | 
| +
 | 
| +  int32_t SetEngineInformation(Statistics& engineStatistics);
 | 
| +
 | 
| +  int32_t SetAudioProcessingModule(AudioProcessing* audioProcessingModule);
 | 
| +
 | 
| +  // VoEExternalMedia
 | 
| +  int RegisterExternalMediaProcessing(VoEMediaProcess& proccess_object);
 | 
| +
 | 
| +  int DeRegisterExternalMediaProcessing();
 | 
| +
 | 
| +  int32_t MixActiveChannels();
 | 
| +
 | 
| +  int32_t DoOperationsOnCombinedSignal(bool feed_data_to_apm);
 | 
| +
 | 
| +  int32_t SetMixabilityStatus(MixerAudioSource& participant, bool mixable);
 | 
| +
 | 
| +  int32_t SetAnonymousMixabilityStatus(MixerAudioSource& participant,
 | 
| +                                       bool mixable);
 | 
| +
 | 
| +  int GetMixedAudio(int sample_rate_hz,
 | 
| +                    size_t num_channels,
 | 
| +                    AudioFrame* audioFrame);
 | 
| +
 | 
| +  // VoEVolumeControl
 | 
| +  int GetSpeechOutputLevel(uint32_t& level);
 | 
| +
 | 
| +  int GetSpeechOutputLevelFullRange(uint32_t& level);
 | 
| +
 | 
| +  int SetOutputVolumePan(float left, float right);
 | 
| +
 | 
| +  int GetOutputVolumePan(float& left, float& right);
 | 
| +
 | 
| +  // 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:
 | 
| +  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 werbtc
 | 
| +
 | 
| +#endif  // VOICE_ENGINE_OUTPUT_MIXER_H_
 | 
| 
 |