diff --git a/webrtc/modules/audio_mixer/audio_mixer.cc b/webrtc/modules/audio_mixer/audio_mixer.cc index e5fee43ee0..02c9e83f02 100644 --- a/webrtc/modules/audio_mixer/audio_mixer.cc +++ b/webrtc/modules/audio_mixer/audio_mixer.cc @@ -298,7 +298,7 @@ int AudioMixer::StartRecordingPlayout(OutStream* stream, return -1; } - if (_outputFileRecorderPtr->StartRecordingAudioFile(*stream, *codecInst, + if (_outputFileRecorderPtr->StartRecordingAudioFile(stream, *codecInst, notificationTime) != 0) { _engineStatisticsPtr->SetLastError( VE_BAD_FILE, kTraceError, diff --git a/webrtc/modules/utility/include/file_player.h b/webrtc/modules/utility/include/file_player.h index 508c2110a6..296b9ea37c 100644 --- a/webrtc/modules/utility/include/file_player.h +++ b/webrtc/modules/utility/include/file_player.h @@ -44,7 +44,7 @@ class FilePlayer { // will be set to the number of samples read (not the number of samples per // channel). virtual int Get10msAudioFromFile(int16_t* outBuffer, - size_t& lengthInSamples, + size_t* lengthInSamples, int frequencyInHz) = 0; // Register callback for receiving file playing notifications. @@ -61,7 +61,7 @@ class FilePlayer { const CodecInst* codecInst) = 0; // Note: codecInst is used for pre-encoded files. - virtual int32_t StartPlayingFile(InStream& sourceStream, + virtual int32_t StartPlayingFile(InStream* sourceStream, uint32_t startPosition, float volumeScaling, uint32_t notification, @@ -72,15 +72,37 @@ class FilePlayer { virtual bool IsPlayingFile() const = 0; - virtual int32_t GetPlayoutPosition(uint32_t& durationMs) = 0; + virtual int32_t GetPlayoutPosition(uint32_t* durationMs) = 0; // Set audioCodec to the currently used audio codec. - virtual int32_t AudioCodec(CodecInst& audioCodec) const = 0; + virtual int32_t AudioCodec(CodecInst* audioCodec) const = 0; virtual int32_t Frequency() const = 0; // Note: scaleFactor is in the range [0.0 - 2.0] virtual int32_t SetAudioScaling(float scaleFactor) = 0; + + // Deprecated functions. Use the functions above with the same name instead. + int Get10msAudioFromFile(int16_t* outBuffer, + size_t& lengthInSamples, + int frequencyInHz) { + return Get10msAudioFromFile(outBuffer, &lengthInSamples, frequencyInHz); + } + int32_t StartPlayingFile(InStream& sourceStream, + uint32_t startPosition, + float volumeScaling, + uint32_t notification, + uint32_t stopPosition, + const CodecInst* codecInst) { + return StartPlayingFile(&sourceStream, startPosition, volumeScaling, + notification, stopPosition, codecInst); + } + int32_t GetPlayoutPosition(uint32_t& durationMs) { + return GetPlayoutPosition(&durationMs); + } + int32_t AudioCodec(CodecInst& audioCodec) const { + return AudioCodec(&audioCodec); + } }; } // namespace webrtc #endif // WEBRTC_MODULES_UTILITY_INCLUDE_FILE_PLAYER_H_ diff --git a/webrtc/modules/utility/include/file_recorder.h b/webrtc/modules/utility/include/file_recorder.h index 51b497ea39..36c755e2da 100644 --- a/webrtc/modules/utility/include/file_recorder.h +++ b/webrtc/modules/utility/include/file_recorder.h @@ -38,7 +38,7 @@ class FileRecorder { const CodecInst& codecInst, uint32_t notification) = 0; - virtual int32_t StartRecordingAudioFile(OutStream& destStream, + virtual int32_t StartRecordingAudioFile(OutStream* destStream, const CodecInst& codecInst, uint32_t notification) = 0; @@ -48,7 +48,7 @@ class FileRecorder { // Return true if recording. virtual bool IsRecording() const = 0; - virtual int32_t codec_info(CodecInst& codecInst) const = 0; + virtual int32_t codec_info(CodecInst* codecInst) const = 0; // Write frame to file. Frame should contain 10ms of un-ecoded audio data. virtual int32_t RecordAudioToFile(const AudioFrame& frame) = 0; diff --git a/webrtc/modules/utility/source/coder.cc b/webrtc/modules/utility/source/coder.cc index f2ae43eb10..f72d03b887 100644 --- a/webrtc/modules/utility/source/coder.cc +++ b/webrtc/modules/utility/source/coder.cc @@ -54,7 +54,7 @@ int32_t AudioCoder::SetDecodeCodec(const CodecInst& codec_inst) { return 0; } -int32_t AudioCoder::Decode(AudioFrame& decoded_audio, +int32_t AudioCoder::Decode(AudioFrame* decoded_audio, uint32_t samp_freq_hz, const int8_t* incoming_payload, size_t payload_length) { @@ -68,22 +68,22 @@ int32_t AudioCoder::Decode(AudioFrame& decoded_audio, } bool muted; int32_t ret = - acm_->PlayoutData10Ms((uint16_t)samp_freq_hz, &decoded_audio, &muted); + acm_->PlayoutData10Ms((uint16_t)samp_freq_hz, decoded_audio, &muted); RTC_DCHECK(!muted); return ret; } -int32_t AudioCoder::PlayoutData(AudioFrame& decoded_audio, - uint16_t& samp_freq_hz) { +int32_t AudioCoder::PlayoutData(AudioFrame* decoded_audio, + uint16_t samp_freq_hz) { bool muted; - int32_t ret = acm_->PlayoutData10Ms(samp_freq_hz, &decoded_audio, &muted); + int32_t ret = acm_->PlayoutData10Ms(samp_freq_hz, decoded_audio, &muted); RTC_DCHECK(!muted); return ret; } int32_t AudioCoder::Encode(const AudioFrame& audio, int8_t* encoded_data, - size_t& encoded_length_in_bytes) { + size_t* encoded_length_in_bytes) { // Fake a timestamp in case audio doesn't contain a correct timestamp. // Make a local copy of the audio frame since audio is const AudioFrame audio_frame; @@ -98,7 +98,7 @@ int32_t AudioCoder::Encode(const AudioFrame& audio, return -1; } encoded_data_ = encoded_data; - encoded_length_in_bytes = encoded_length_in_bytes_; + *encoded_length_in_bytes = encoded_length_in_bytes_; return 0; } diff --git a/webrtc/modules/utility/source/coder.h b/webrtc/modules/utility/source/coder.h index 5f441904be..4855a00465 100644 --- a/webrtc/modules/utility/source/coder.h +++ b/webrtc/modules/utility/source/coder.h @@ -24,23 +24,23 @@ class AudioFrame; class AudioCoder : public AudioPacketizationCallback { public: - AudioCoder(uint32_t instance_id); + explicit AudioCoder(uint32_t instance_id); ~AudioCoder(); int32_t SetEncodeCodec(const CodecInst& codec_inst); int32_t SetDecodeCodec(const CodecInst& codec_inst); - int32_t Decode(AudioFrame& decoded_audio, + int32_t Decode(AudioFrame* decoded_audio, uint32_t samp_freq_hz, const int8_t* incoming_payload, size_t payload_length); - int32_t PlayoutData(AudioFrame& decoded_audio, uint16_t& samp_freq_hz); + int32_t PlayoutData(AudioFrame* decoded_audio, uint16_t samp_freq_hz); int32_t Encode(const AudioFrame& audio, int8_t* encoded_data, - size_t& encoded_length_in_bytes); + size_t* encoded_length_in_bytes); protected: int32_t SendData(FrameType frame_type, diff --git a/webrtc/modules/utility/source/file_player.cc b/webrtc/modules/utility/source/file_player.cc index 4b33929ef0..75b7214f5c 100644 --- a/webrtc/modules/utility/source/file_player.cc +++ b/webrtc/modules/utility/source/file_player.cc @@ -27,31 +27,31 @@ namespace { class FilePlayerImpl : public FilePlayer { public: FilePlayerImpl(uint32_t instanceID, FileFormats fileFormat); - ~FilePlayerImpl(); + ~FilePlayerImpl() override; - virtual int Get10msAudioFromFile(int16_t* outBuffer, - size_t& lengthInSamples, - int frequencyInHz); - virtual int32_t RegisterModuleFileCallback(FileCallback* callback); - virtual int32_t StartPlayingFile(const char* fileName, - bool loop, - uint32_t startPosition, - float volumeScaling, - uint32_t notification, - uint32_t stopPosition, - const CodecInst* codecInst); - virtual int32_t StartPlayingFile(InStream& sourceStream, - uint32_t startPosition, - float volumeScaling, - uint32_t notification, - uint32_t stopPosition, - const CodecInst* codecInst); - virtual int32_t StopPlayingFile(); - virtual bool IsPlayingFile() const; - virtual int32_t GetPlayoutPosition(uint32_t& durationMs); - virtual int32_t AudioCodec(CodecInst& audioCodec) const; - virtual int32_t Frequency() const; - virtual int32_t SetAudioScaling(float scaleFactor); + int Get10msAudioFromFile(int16_t* outBuffer, + size_t* lengthInSamples, + int frequencyInHz) override; + int32_t RegisterModuleFileCallback(FileCallback* callback) override; + int32_t StartPlayingFile(const char* fileName, + bool loop, + uint32_t startPosition, + float volumeScaling, + uint32_t notification, + uint32_t stopPosition, + const CodecInst* codecInst) override; + int32_t StartPlayingFile(InStream* sourceStream, + uint32_t startPosition, + float volumeScaling, + uint32_t notification, + uint32_t stopPosition, + const CodecInst* codecInst) override; + int32_t StopPlayingFile() override; + bool IsPlayingFile() const override; + int32_t GetPlayoutPosition(uint32_t* durationMs) override; + int32_t AudioCodec(CodecInst* audioCodec) const override; + int32_t Frequency() const override; + int32_t SetAudioScaling(float scaleFactor) override; private: int32_t SetUpAudioDecoder(); @@ -108,13 +108,13 @@ int32_t FilePlayerImpl::Frequency() const { } } -int32_t FilePlayerImpl::AudioCodec(CodecInst& audioCodec) const { - audioCodec = _codec; +int32_t FilePlayerImpl::AudioCodec(CodecInst* audioCodec) const { + *audioCodec = _codec; return 0; } int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer, - size_t& lengthInSamples, + size_t* lengthInSamples, int frequencyInHz) { if (_codec.plfreq == 0) { LOG(LS_WARNING) << "Get10msAudioFromFile() playing not started!" @@ -129,13 +129,14 @@ int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer, // L16 is un-encoded data. Just pull 10 ms. size_t lengthInBytes = sizeof(unresampledAudioFrame.data_); - if (_fileModule.PlayoutAudioData((int8_t*)unresampledAudioFrame.data_, - lengthInBytes) == -1) { + if (_fileModule.PlayoutAudioData( + reinterpret_cast(unresampledAudioFrame.data_), + lengthInBytes) == -1) { // End of file reached. return -1; } if (lengthInBytes == 0) { - lengthInSamples = 0; + *lengthInSamples = 0; return 0; } // One sample is two bytes. @@ -150,15 +151,15 @@ int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer, if (++_numberOf10MsInDecoder >= _numberOf10MsPerFrame) { _numberOf10MsInDecoder = 0; size_t bytesFromFile = sizeof(encodedBuffer); - if (_fileModule.PlayoutAudioData((int8_t*)encodedBuffer, bytesFromFile) == - -1) { + if (_fileModule.PlayoutAudioData(reinterpret_cast(encodedBuffer), + bytesFromFile) == -1) { // End of file reached. return -1; } encodedLengthInBytes = bytesFromFile; } - if (_audioDecoder.Decode(unresampledAudioFrame, frequencyInHz, - (int8_t*)encodedBuffer, + if (_audioDecoder.Decode(&unresampledAudioFrame, frequencyInHz, + reinterpret_cast(encodedBuffer), encodedLengthInBytes) == -1) { return -1; } @@ -178,7 +179,7 @@ int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer, unresampledAudioFrame.samples_per_channel_, outBuffer, MAX_AUDIO_BUFFER_IN_SAMPLES, outLen); - lengthInSamples = outLen; + *lengthInSamples = outLen; if (_scaling != 1.0) { for (size_t i = 0; i < outLen; i++) { @@ -270,7 +271,7 @@ int32_t FilePlayerImpl::StartPlayingFile(const char* fileName, return 0; } -int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream, +int32_t FilePlayerImpl::StartPlayingFile(InStream* sourceStream, uint32_t startPosition, float volumeScaling, uint32_t notification, @@ -304,7 +305,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream, return -1; } if (_fileModule.StartPlayingAudioStream( - sourceStream, notification, _fileFormat, &codecInstL16, + *sourceStream, notification, _fileFormat, &codecInstL16, startPosition, stopPosition) == -1) { LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream " << "playout."; @@ -312,7 +313,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream, } } else if (_fileFormat == kFileFormatPreencodedFile) { - if (_fileModule.StartPlayingAudioStream(sourceStream, notification, + if (_fileModule.StartPlayingAudioStream(*sourceStream, notification, _fileFormat, codecInst) == -1) { LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream " << "playout."; @@ -320,7 +321,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream, } } else { CodecInst* no_inst = NULL; - if (_fileModule.StartPlayingAudioStream(sourceStream, notification, + if (_fileModule.StartPlayingAudioStream(*sourceStream, notification, _fileFormat, no_inst, startPosition, stopPosition) == -1) { LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream " @@ -348,8 +349,8 @@ bool FilePlayerImpl::IsPlayingFile() const { return _fileModule.IsPlaying(); } -int32_t FilePlayerImpl::GetPlayoutPosition(uint32_t& durationMs) { - return _fileModule.PlayoutPositionMs(durationMs); +int32_t FilePlayerImpl::GetPlayoutPosition(uint32_t* durationMs) { + return _fileModule.PlayoutPositionMs(*durationMs); } int32_t FilePlayerImpl::SetUpAudioDecoder() { diff --git a/webrtc/modules/utility/source/file_player_unittests.cc b/webrtc/modules/utility/source/file_player_unittests.cc index 8c709527f4..022bec020a 100644 --- a/webrtc/modules/utility/source/file_player_unittests.cc +++ b/webrtc/modules/utility/source/file_player_unittests.cc @@ -61,8 +61,8 @@ class FilePlayerTest : public ::testing::Test { for (int i = 0; i < output_length_ms / 10; ++i) { int16_t out[10 * kSampleRateHz / 1000] = {0}; size_t num_samples; - EXPECT_EQ(0, - player_->Get10msAudioFromFile(out, num_samples, kSampleRateHz)); + EXPECT_EQ( + 0, player_->Get10msAudioFromFile(out, &num_samples, kSampleRateHz)); checksum.Update(out, num_samples * sizeof(out[0])); if (FLAGS_file_player_output) { ASSERT_EQ(num_samples, diff --git a/webrtc/modules/utility/source/file_recorder.cc b/webrtc/modules/utility/source/file_recorder.cc index 3ba7967cdc..c28c2d11b5 100644 --- a/webrtc/modules/utility/source/file_recorder.cc +++ b/webrtc/modules/utility/source/file_recorder.cc @@ -16,10 +16,8 @@ #include "webrtc/common_audio/resampler/include/resampler.h" #include "webrtc/common_types.h" #include "webrtc/engine_configurations.h" -#include "webrtc/engine_configurations.h" #include "webrtc/modules/include/module_common_types.h" #include "webrtc/modules/media_file/media_file.h" -#include "webrtc/modules/media_file/media_file.h" #include "webrtc/modules/media_file/media_file_defines.h" #include "webrtc/modules/utility/source/coder.h" #include "webrtc/system_wrappers/include/event_wrapper.h" @@ -48,12 +46,12 @@ class FileRecorderImpl : public FileRecorder { int32_t StartRecordingAudioFile(const char* fileName, const CodecInst& codecInst, uint32_t notificationTimeMs) override; - int32_t StartRecordingAudioFile(OutStream& destStream, + int32_t StartRecordingAudioFile(OutStream* destStream, const CodecInst& codecInst, uint32_t notificationTimeMs) override; int32_t StopRecording() override; bool IsRecording() const override; - int32_t codec_info(CodecInst& codecInst) const override; + int32_t codec_info(CodecInst* codecInst) const override; int32_t RecordAudioToFile(const AudioFrame& frame) override; private: @@ -120,12 +118,12 @@ int32_t FileRecorderImpl::StartRecordingAudioFile(const char* fileName, return retVal; } -int32_t FileRecorderImpl::StartRecordingAudioFile(OutStream& destStream, +int32_t FileRecorderImpl::StartRecordingAudioFile(OutStream* destStream, const CodecInst& codecInst, uint32_t notificationTimeMs) { codec_info_ = codecInst; int32_t retVal = _moduleFile->StartRecordingAudioStream( - destStream, _fileFormat, codecInst, notificationTimeMs); + *destStream, _fileFormat, codecInst, notificationTimeMs); if (retVal == 0) { retVal = SetUpAudioEncoder(); @@ -193,13 +191,13 @@ int32_t FileRecorderImpl::RecordAudioToFile( // Encode the audio data before writing to file. Don't encode if the codec // is PCM. // NOTE: stereo recording is only supported for WAV files. - // TODO (hellner): WAV expect PCM in little endian byte order. Not + // TODO(hellner): WAV expect PCM in little endian byte order. Not // "encoding" with PCM coder should be a problem for big endian systems. size_t encodedLenInBytes = 0; if (_fileFormat == kFileFormatPreencodedFile || STR_CASE_CMP(codec_info_.plname, "L16") != 0) { - if (_audioEncoder.Encode(*ptrAudioFrame, _audioBuffer, encodedLenInBytes) == - -1) { + if (_audioEncoder.Encode(*ptrAudioFrame, _audioBuffer, + &encodedLenInBytes) == -1) { LOG(LS_WARNING) << "RecordAudioToFile() codec " << codec_info_.plname << " not supported or failed to encode stream."; return -1; @@ -212,7 +210,8 @@ int32_t FileRecorderImpl::RecordAudioToFile( _audioResampler.Push( ptrAudioFrame->data_, ptrAudioFrame->samples_per_channel_ * ptrAudioFrame->num_channels_, - (int16_t*)_audioBuffer, MAX_AUDIO_BUFFER_IN_BYTES, outLen); + reinterpret_cast(_audioBuffer), MAX_AUDIO_BUFFER_IN_BYTES, + outLen); encodedLenInBytes = outLen * sizeof(int16_t); } @@ -239,11 +238,11 @@ int32_t FileRecorderImpl::SetUpAudioEncoder() { return 0; } -int32_t FileRecorderImpl::codec_info(CodecInst& codecInst) const { +int32_t FileRecorderImpl::codec_info(CodecInst* codecInst) const { if (codec_info_.plfreq == 0) { return -1; } - codecInst = codec_info_; + *codecInst = codec_info_; return 0; } diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index 1957d21194..bbc63895ee 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -1835,7 +1835,7 @@ int Channel::StartPlayingFileLocally(InStream* stream, const uint32_t notificationTime(0); - if (output_file_player_->StartPlayingFile(*stream, startPosition, + if (output_file_player_->StartPlayingFile(stream, startPosition, volumeScaling, notificationTime, stopPosition, codecInst) != 0) { _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, @@ -2025,9 +2025,9 @@ int Channel::StartPlayingFileAsMicrophone(InStream* stream, const uint32_t notificationTime(0); - if (input_file_player_->StartPlayingFile(*stream, startPosition, - volumeScaling, notificationTime, - stopPosition, codecInst) != 0) { + if (input_file_player_->StartPlayingFile(stream, startPosition, volumeScaling, + notificationTime, stopPosition, + codecInst) != 0) { _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, "StartPlayingFile() failed to start " "file playout"); @@ -2183,7 +2183,7 @@ int Channel::StartRecordingPlayout(OutStream* stream, return -1; } - if (output_file_recorder_->StartRecordingAudioFile(*stream, *codecInst, + if (output_file_recorder_->StartRecordingAudioFile(stream, *codecInst, notificationTime) != 0) { _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, "StartRecordingPlayout() failed to " @@ -3275,7 +3275,7 @@ int32_t Channel::MixOrReplaceAudioWithFile(int mixingFrequency) { return -1; } - if (input_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples, + if (input_file_player_->Get10msAudioFromFile(fileBuffer.get(), &fileSamples, mixingFrequency) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), "Channel::MixOrReplaceAudioWithFile() file mixing " @@ -3323,8 +3323,8 @@ int32_t Channel::MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency) { } // We should get the frequency we ask for. - if (output_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples, - mixingFrequency) == -1) { + if (output_file_player_->Get10msAudioFromFile( + fileBuffer.get(), &fileSamples, mixingFrequency) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), "Channel::MixAudioWithFile() file mixing failed"); return -1; diff --git a/webrtc/voice_engine/output_mixer.cc b/webrtc/voice_engine/output_mixer.cc index 4f1cc772c7..28dd34ee99 100644 --- a/webrtc/voice_engine/output_mixer.cc +++ b/webrtc/voice_engine/output_mixer.cc @@ -377,7 +377,7 @@ int OutputMixer::StartRecordingPlayout(OutStream* stream, return -1; } - if (output_file_recorder_->StartRecordingAudioFile(*stream, *codecInst, + if (output_file_recorder_->StartRecordingAudioFile(stream, *codecInst, notificationTime) != 0) { _engineStatisticsPtr->SetLastError( VE_BAD_FILE, kTraceError, diff --git a/webrtc/voice_engine/transmit_mixer.cc b/webrtc/voice_engine/transmit_mixer.cc index ef446aa892..6fcc64452f 100644 --- a/webrtc/voice_engine/transmit_mixer.cc +++ b/webrtc/voice_engine/transmit_mixer.cc @@ -568,9 +568,9 @@ int TransmitMixer::StartPlayingFileAsMicrophone(InStream* stream, const uint32_t notificationTime(0); - if (file_player_->StartPlayingFile( - (InStream&)*stream, startPosition, volumeScaling, notificationTime, - stopPosition, (const CodecInst*)codecInst) != 0) { + if (file_player_->StartPlayingFile(stream, startPosition, volumeScaling, + notificationTime, stopPosition, + (const CodecInst*)codecInst) != 0) { _engineStatisticsPtr->SetLastError( VE_BAD_FILE, kTraceError, "StartPlayingFile() failed to start file playout"); @@ -743,7 +743,7 @@ int TransmitMixer::StartRecordingMicrophone(OutStream* stream, return -1; } - if (file_recorder_->StartRecordingAudioFile(*stream, *codecInst, + if (file_recorder_->StartRecordingAudioFile(stream, *codecInst, notificationTime) != 0) { _engineStatisticsPtr->SetLastError( VE_BAD_FILE, kTraceError, @@ -912,7 +912,7 @@ int TransmitMixer::StartRecordingCall(OutStream* stream, return -1; } - if (file_call_recorder_->StartRecordingAudioFile(*stream, *codecInst, + if (file_call_recorder_->StartRecordingAudioFile(stream, *codecInst, notificationTime) != 0) { _engineStatisticsPtr->SetLastError( VE_BAD_FILE, kTraceError, @@ -1096,7 +1096,7 @@ int32_t TransmitMixer::MixOrReplaceAudioWithFile( return -1; } - if (file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples, + if (file_player_->Get10msAudioFromFile(fileBuffer.get(), &fileSamples, mixingFrequency) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1), "TransmitMixer::MixOrReplaceAudioWithFile() file"