| Index: webrtc/voice_engine/output_mixer.cc | 
| diff --git a/webrtc/voice_engine/output_mixer.cc b/webrtc/voice_engine/output_mixer.cc | 
| index c497cc1e165dcd2c029ef6de03189a8ef47f2fc5..758290500d0afc9277f31d0ec174d9269e0cf7e3 100644 | 
| --- a/webrtc/voice_engine/output_mixer.cc | 
| +++ b/webrtc/voice_engine/output_mixer.cc | 
| @@ -12,7 +12,6 @@ | 
|  | 
| #include "webrtc/modules/audio_processing/include/audio_processing.h" | 
| #include "webrtc/rtc_base/format_macros.h" | 
| -#include "webrtc/system_wrappers/include/file_wrapper.h" | 
| #include "webrtc/system_wrappers/include/trace.h" | 
| #include "webrtc/voice_engine/statistics.h" | 
| #include "webrtc/voice_engine/utility.h" | 
| @@ -33,45 +32,6 @@ OutputMixer::NewMixedAudio(int32_t id, | 
| _audioFrame.id_ = id; | 
| } | 
|  | 
| -void OutputMixer::PlayNotification(int32_t id, uint32_t durationMs) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::PlayNotification(id=%d, durationMs=%d)", | 
| -                 id, durationMs); | 
| -    // Not implement yet | 
| -} | 
| - | 
| -void OutputMixer::RecordNotification(int32_t id, | 
| -                                     uint32_t durationMs) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::RecordNotification(id=%d, durationMs=%d)", | 
| -                 id, durationMs); | 
| - | 
| -    // Not implement yet | 
| -} | 
| - | 
| -void OutputMixer::PlayFileEnded(int32_t id) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::PlayFileEnded(id=%d)", id); | 
| - | 
| -    // not needed | 
| -} | 
| - | 
| -void OutputMixer::RecordFileEnded(int32_t id) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::RecordFileEnded(id=%d)", id); | 
| -    assert(id == _instanceId); | 
| - | 
| -    rtc::CritScope cs(&_fileCritSect); | 
| -    _outputFileRecording = false; | 
| -    WEBRTC_TRACE(kTraceStateInfo, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::RecordFileEnded() =>" | 
| -                 "output file recorder module is shutdown"); | 
| -} | 
| - | 
| int32_t | 
| OutputMixer::Create(OutputMixer*& mixer, uint32_t instanceId) | 
| { | 
| @@ -91,8 +51,7 @@ OutputMixer::Create(OutputMixer*& mixer, uint32_t instanceId) | 
| OutputMixer::OutputMixer(uint32_t instanceId) : | 
| _mixerModule(*AudioConferenceMixer::Create(instanceId)), | 
| _instanceId(instanceId), | 
| -    _mixingFrequencyHz(8000), | 
| -    _outputFileRecording(false) | 
| +    _mixingFrequencyHz(8000) | 
| { | 
| WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,-1), | 
| "OutputMixer::OutputMixer() - ctor"); | 
| @@ -119,13 +78,6 @@ OutputMixer::~OutputMixer() | 
| { | 
| WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,-1), | 
| "OutputMixer::~OutputMixer() - dtor"); | 
| -    { | 
| -        rtc::CritScope cs(&_fileCritSect); | 
| -        if (output_file_recorder_) { | 
| -          output_file_recorder_->RegisterModuleFileCallback(NULL); | 
| -          output_file_recorder_->StopRecording(); | 
| -        } | 
| -    } | 
| _mixerModule.UnRegisterMixedStreamCallback(); | 
| delete &_mixerModule; | 
| } | 
| @@ -156,13 +108,6 @@ OutputMixer::SetMixabilityStatus(MixerParticipant& participant, | 
| return _mixerModule.SetMixabilityStatus(&participant, mixable); | 
| } | 
|  | 
| -int32_t | 
| -OutputMixer::SetAnonymousMixabilityStatus(MixerParticipant& participant, | 
| -                                          bool mixable) | 
| -{ | 
| -    return _mixerModule.SetAnonymousMixabilityStatus(&participant, mixable); | 
| -} | 
| - | 
| int32_t | 
| OutputMixer::MixActiveChannels() | 
| { | 
| @@ -170,179 +115,6 @@ OutputMixer::MixActiveChannels() | 
| return 0; | 
| } | 
|  | 
| -int OutputMixer::StartRecordingPlayout(const char* fileName, | 
| -                                       const CodecInst* codecInst) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::StartRecordingPlayout(fileName=%s)", fileName); | 
| - | 
| -    if (_outputFileRecording) | 
| -    { | 
| -        WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,-1), | 
| -                     "StartRecordingPlayout() is already recording"); | 
| -        return 0; | 
| -    } | 
| - | 
| -    FileFormats format; | 
| -    const uint32_t notificationTime(0); | 
| -    CodecInst dummyCodec={100,"L16",16000,320,1,320000}; | 
| - | 
| -    if ((codecInst != NULL) && | 
| -      ((codecInst->channels < 1) || (codecInst->channels > 2))) | 
| -    { | 
| -        _engineStatisticsPtr->SetLastError( | 
| -            VE_BAD_ARGUMENT, kTraceError, | 
| -            "StartRecordingPlayout() invalid compression"); | 
| -        return(-1); | 
| -    } | 
| -    if(codecInst == NULL) | 
| -    { | 
| -        format = kFileFormatPcm16kHzFile; | 
| -        codecInst=&dummyCodec; | 
| -    } | 
| -    else if((STR_CASE_CMP(codecInst->plname,"L16") == 0) || | 
| -        (STR_CASE_CMP(codecInst->plname,"PCMU") == 0) || | 
| -        (STR_CASE_CMP(codecInst->plname,"PCMA") == 0)) | 
| -    { | 
| -        format = kFileFormatWavFile; | 
| -    } | 
| -    else | 
| -    { | 
| -        format = kFileFormatCompressedFile; | 
| -    } | 
| - | 
| -    rtc::CritScope cs(&_fileCritSect); | 
| - | 
| -    // Destroy the old instance | 
| -    if (output_file_recorder_) { | 
| -      output_file_recorder_->RegisterModuleFileCallback(NULL); | 
| -      output_file_recorder_.reset(); | 
| -    } | 
| - | 
| -    output_file_recorder_ = FileRecorder::CreateFileRecorder( | 
| -        _instanceId, (const FileFormats)format); | 
| -    if (!output_file_recorder_) { | 
| -      _engineStatisticsPtr->SetLastError( | 
| -          VE_INVALID_ARGUMENT, kTraceError, | 
| -          "StartRecordingPlayout() fileRecorder format isnot correct"); | 
| -      return -1; | 
| -    } | 
| - | 
| -    if (output_file_recorder_->StartRecordingAudioFile( | 
| -            fileName, (const CodecInst&)*codecInst, notificationTime) != 0) { | 
| -      _engineStatisticsPtr->SetLastError( | 
| -          VE_BAD_FILE, kTraceError, | 
| -          "StartRecordingAudioFile() failed to start file recording"); | 
| -      output_file_recorder_->StopRecording(); | 
| -      output_file_recorder_.reset(); | 
| -      return -1; | 
| -    } | 
| -    output_file_recorder_->RegisterModuleFileCallback(this); | 
| -    _outputFileRecording = true; | 
| - | 
| -    return 0; | 
| -} | 
| - | 
| -int OutputMixer::StartRecordingPlayout(OutStream* stream, | 
| -                                       const CodecInst* codecInst) | 
| -{ | 
| -    WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::StartRecordingPlayout()"); | 
| - | 
| -    if (_outputFileRecording) | 
| -    { | 
| -        WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,-1), | 
| -                     "StartRecordingPlayout() is already recording"); | 
| -        return 0; | 
| -    } | 
| - | 
| -    FileFormats format; | 
| -    const uint32_t notificationTime(0); | 
| -    CodecInst dummyCodec={100,"L16",16000,320,1,320000}; | 
| - | 
| -    if (codecInst != NULL && codecInst->channels != 1) | 
| -    { | 
| -        _engineStatisticsPtr->SetLastError( | 
| -            VE_BAD_ARGUMENT, kTraceError, | 
| -            "StartRecordingPlayout() invalid compression"); | 
| -        return(-1); | 
| -    } | 
| -    if(codecInst == NULL) | 
| -    { | 
| -        format = kFileFormatPcm16kHzFile; | 
| -        codecInst=&dummyCodec; | 
| -    } | 
| -    else if((STR_CASE_CMP(codecInst->plname,"L16") == 0) || | 
| -        (STR_CASE_CMP(codecInst->plname,"PCMU") == 0) || | 
| -        (STR_CASE_CMP(codecInst->plname,"PCMA") == 0)) | 
| -    { | 
| -        format = kFileFormatWavFile; | 
| -    } | 
| -    else | 
| -    { | 
| -        format = kFileFormatCompressedFile; | 
| -    } | 
| - | 
| -    rtc::CritScope cs(&_fileCritSect); | 
| - | 
| -    // Destroy the old instance | 
| -    if (output_file_recorder_) { | 
| -      output_file_recorder_->RegisterModuleFileCallback(NULL); | 
| -      output_file_recorder_.reset(); | 
| -    } | 
| - | 
| -    output_file_recorder_ = FileRecorder::CreateFileRecorder( | 
| -        _instanceId, (const FileFormats)format); | 
| -    if (!output_file_recorder_) { | 
| -      _engineStatisticsPtr->SetLastError( | 
| -          VE_INVALID_ARGUMENT, kTraceError, | 
| -          "StartRecordingPlayout() fileRecorder format isnot correct"); | 
| -      return -1; | 
| -    } | 
| - | 
| -    if (output_file_recorder_->StartRecordingAudioFile(stream, *codecInst, | 
| -                                                       notificationTime) != 0) { | 
| -      _engineStatisticsPtr->SetLastError( | 
| -          VE_BAD_FILE, kTraceError, | 
| -          "StartRecordingAudioFile() failed to start file recording"); | 
| -      output_file_recorder_->StopRecording(); | 
| -      output_file_recorder_.reset(); | 
| -      return -1; | 
| -    } | 
| - | 
| -    output_file_recorder_->RegisterModuleFileCallback(this); | 
| -    _outputFileRecording = true; | 
| - | 
| -    return 0; | 
| -} | 
| - | 
| -int OutputMixer::StopRecordingPlayout() | 
| -{ | 
| -    WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,-1), | 
| -                 "OutputMixer::StopRecordingPlayout()"); | 
| - | 
| -    if (!_outputFileRecording) | 
| -    { | 
| -        WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,-1), | 
| -                     "StopRecordingPlayout() file isnot recording"); | 
| -        return -1; | 
| -    } | 
| - | 
| -    rtc::CritScope cs(&_fileCritSect); | 
| - | 
| -    if (output_file_recorder_->StopRecording() != 0) { | 
| -      _engineStatisticsPtr->SetLastError( | 
| -          VE_STOP_RECORDING_FAILED, kTraceError, | 
| -          "StopRecording(), could not stop recording"); | 
| -      return -1; | 
| -    } | 
| -    output_file_recorder_->RegisterModuleFileCallback(NULL); | 
| -    output_file_recorder_.reset(); | 
| -    _outputFileRecording = false; | 
| - | 
| -    return 0; | 
| -} | 
| - | 
| int OutputMixer::GetMixedAudio(int sample_rate_hz, | 
| size_t num_channels, | 
| AudioFrame* frame) { | 
| @@ -351,13 +123,6 @@ int OutputMixer::GetMixedAudio(int sample_rate_hz, | 
| "OutputMixer::GetMixedAudio(sample_rate_hz=%d, num_channels=%" PRIuS ")", | 
| sample_rate_hz, num_channels); | 
|  | 
| -  // --- Record playout if enabled | 
| -  { | 
| -    rtc::CritScope cs(&_fileCritSect); | 
| -    if (_outputFileRecording && output_file_recorder_) | 
| -      output_file_recorder_->RecordAudioToFile(_audioFrame); | 
| -  } | 
| - | 
| frame->num_channels_ = num_channels; | 
| frame->sample_rate_hz_ = sample_rate_hz; | 
| // TODO(andrew): Ideally the downmixing would occur much earlier, in | 
|  |