Fix trivial lint errors in FileRecorder and FilePlayer
Mostly, it's about replacing mutable reference arguments with pointer arguments, and replacing C style casts with C++ style casts. Review-Url: https://codereview.webrtc.org/2056653002 Cr-Commit-Position: refs/heads/master@{#13849}
This commit is contained in:
@ -298,7 +298,7 @@ int AudioMixer::StartRecordingPlayout(OutStream* stream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_outputFileRecorderPtr->StartRecordingAudioFile(*stream, *codecInst,
|
if (_outputFileRecorderPtr->StartRecordingAudioFile(stream, *codecInst,
|
||||||
notificationTime) != 0) {
|
notificationTime) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(
|
_engineStatisticsPtr->SetLastError(
|
||||||
VE_BAD_FILE, kTraceError,
|
VE_BAD_FILE, kTraceError,
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class FilePlayer {
|
|||||||
// will be set to the number of samples read (not the number of samples per
|
// will be set to the number of samples read (not the number of samples per
|
||||||
// channel).
|
// channel).
|
||||||
virtual int Get10msAudioFromFile(int16_t* outBuffer,
|
virtual int Get10msAudioFromFile(int16_t* outBuffer,
|
||||||
size_t& lengthInSamples,
|
size_t* lengthInSamples,
|
||||||
int frequencyInHz) = 0;
|
int frequencyInHz) = 0;
|
||||||
|
|
||||||
// Register callback for receiving file playing notifications.
|
// Register callback for receiving file playing notifications.
|
||||||
@ -61,7 +61,7 @@ class FilePlayer {
|
|||||||
const CodecInst* codecInst) = 0;
|
const CodecInst* codecInst) = 0;
|
||||||
|
|
||||||
// Note: codecInst is used for pre-encoded files.
|
// Note: codecInst is used for pre-encoded files.
|
||||||
virtual int32_t StartPlayingFile(InStream& sourceStream,
|
virtual int32_t StartPlayingFile(InStream* sourceStream,
|
||||||
uint32_t startPosition,
|
uint32_t startPosition,
|
||||||
float volumeScaling,
|
float volumeScaling,
|
||||||
uint32_t notification,
|
uint32_t notification,
|
||||||
@ -72,15 +72,37 @@ class FilePlayer {
|
|||||||
|
|
||||||
virtual bool IsPlayingFile() const = 0;
|
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.
|
// 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;
|
virtual int32_t Frequency() const = 0;
|
||||||
|
|
||||||
// Note: scaleFactor is in the range [0.0 - 2.0]
|
// Note: scaleFactor is in the range [0.0 - 2.0]
|
||||||
virtual int32_t SetAudioScaling(float scaleFactor) = 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
|
} // namespace webrtc
|
||||||
#endif // WEBRTC_MODULES_UTILITY_INCLUDE_FILE_PLAYER_H_
|
#endif // WEBRTC_MODULES_UTILITY_INCLUDE_FILE_PLAYER_H_
|
||||||
|
|||||||
@ -38,7 +38,7 @@ class FileRecorder {
|
|||||||
const CodecInst& codecInst,
|
const CodecInst& codecInst,
|
||||||
uint32_t notification) = 0;
|
uint32_t notification) = 0;
|
||||||
|
|
||||||
virtual int32_t StartRecordingAudioFile(OutStream& destStream,
|
virtual int32_t StartRecordingAudioFile(OutStream* destStream,
|
||||||
const CodecInst& codecInst,
|
const CodecInst& codecInst,
|
||||||
uint32_t notification) = 0;
|
uint32_t notification) = 0;
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class FileRecorder {
|
|||||||
// Return true if recording.
|
// Return true if recording.
|
||||||
virtual bool IsRecording() const = 0;
|
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.
|
// Write frame to file. Frame should contain 10ms of un-ecoded audio data.
|
||||||
virtual int32_t RecordAudioToFile(const AudioFrame& frame) = 0;
|
virtual int32_t RecordAudioToFile(const AudioFrame& frame) = 0;
|
||||||
|
|||||||
@ -54,7 +54,7 @@ int32_t AudioCoder::SetDecodeCodec(const CodecInst& codec_inst) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioCoder::Decode(AudioFrame& decoded_audio,
|
int32_t AudioCoder::Decode(AudioFrame* decoded_audio,
|
||||||
uint32_t samp_freq_hz,
|
uint32_t samp_freq_hz,
|
||||||
const int8_t* incoming_payload,
|
const int8_t* incoming_payload,
|
||||||
size_t payload_length) {
|
size_t payload_length) {
|
||||||
@ -68,22 +68,22 @@ int32_t AudioCoder::Decode(AudioFrame& decoded_audio,
|
|||||||
}
|
}
|
||||||
bool muted;
|
bool muted;
|
||||||
int32_t ret =
|
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);
|
RTC_DCHECK(!muted);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioCoder::PlayoutData(AudioFrame& decoded_audio,
|
int32_t AudioCoder::PlayoutData(AudioFrame* decoded_audio,
|
||||||
uint16_t& samp_freq_hz) {
|
uint16_t samp_freq_hz) {
|
||||||
bool muted;
|
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);
|
RTC_DCHECK(!muted);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t AudioCoder::Encode(const AudioFrame& audio,
|
int32_t AudioCoder::Encode(const AudioFrame& audio,
|
||||||
int8_t* encoded_data,
|
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.
|
// Fake a timestamp in case audio doesn't contain a correct timestamp.
|
||||||
// Make a local copy of the audio frame since audio is const
|
// Make a local copy of the audio frame since audio is const
|
||||||
AudioFrame audio_frame;
|
AudioFrame audio_frame;
|
||||||
@ -98,7 +98,7 @@ int32_t AudioCoder::Encode(const AudioFrame& audio,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
encoded_data_ = encoded_data;
|
encoded_data_ = encoded_data;
|
||||||
encoded_length_in_bytes = encoded_length_in_bytes_;
|
*encoded_length_in_bytes = encoded_length_in_bytes_;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,23 +24,23 @@ class AudioFrame;
|
|||||||
|
|
||||||
class AudioCoder : public AudioPacketizationCallback {
|
class AudioCoder : public AudioPacketizationCallback {
|
||||||
public:
|
public:
|
||||||
AudioCoder(uint32_t instance_id);
|
explicit AudioCoder(uint32_t instance_id);
|
||||||
~AudioCoder();
|
~AudioCoder();
|
||||||
|
|
||||||
int32_t SetEncodeCodec(const CodecInst& codec_inst);
|
int32_t SetEncodeCodec(const CodecInst& codec_inst);
|
||||||
|
|
||||||
int32_t SetDecodeCodec(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,
|
uint32_t samp_freq_hz,
|
||||||
const int8_t* incoming_payload,
|
const int8_t* incoming_payload,
|
||||||
size_t payload_length);
|
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,
|
int32_t Encode(const AudioFrame& audio,
|
||||||
int8_t* encoded_data,
|
int8_t* encoded_data,
|
||||||
size_t& encoded_length_in_bytes);
|
size_t* encoded_length_in_bytes);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int32_t SendData(FrameType frame_type,
|
int32_t SendData(FrameType frame_type,
|
||||||
|
|||||||
@ -27,31 +27,31 @@ namespace {
|
|||||||
class FilePlayerImpl : public FilePlayer {
|
class FilePlayerImpl : public FilePlayer {
|
||||||
public:
|
public:
|
||||||
FilePlayerImpl(uint32_t instanceID, FileFormats fileFormat);
|
FilePlayerImpl(uint32_t instanceID, FileFormats fileFormat);
|
||||||
~FilePlayerImpl();
|
~FilePlayerImpl() override;
|
||||||
|
|
||||||
virtual int Get10msAudioFromFile(int16_t* outBuffer,
|
int Get10msAudioFromFile(int16_t* outBuffer,
|
||||||
size_t& lengthInSamples,
|
size_t* lengthInSamples,
|
||||||
int frequencyInHz);
|
int frequencyInHz) override;
|
||||||
virtual int32_t RegisterModuleFileCallback(FileCallback* callback);
|
int32_t RegisterModuleFileCallback(FileCallback* callback) override;
|
||||||
virtual int32_t StartPlayingFile(const char* fileName,
|
int32_t StartPlayingFile(const char* fileName,
|
||||||
bool loop,
|
bool loop,
|
||||||
uint32_t startPosition,
|
uint32_t startPosition,
|
||||||
float volumeScaling,
|
float volumeScaling,
|
||||||
uint32_t notification,
|
uint32_t notification,
|
||||||
uint32_t stopPosition,
|
uint32_t stopPosition,
|
||||||
const CodecInst* codecInst);
|
const CodecInst* codecInst) override;
|
||||||
virtual int32_t StartPlayingFile(InStream& sourceStream,
|
int32_t StartPlayingFile(InStream* sourceStream,
|
||||||
uint32_t startPosition,
|
uint32_t startPosition,
|
||||||
float volumeScaling,
|
float volumeScaling,
|
||||||
uint32_t notification,
|
uint32_t notification,
|
||||||
uint32_t stopPosition,
|
uint32_t stopPosition,
|
||||||
const CodecInst* codecInst);
|
const CodecInst* codecInst) override;
|
||||||
virtual int32_t StopPlayingFile();
|
int32_t StopPlayingFile() override;
|
||||||
virtual bool IsPlayingFile() const;
|
bool IsPlayingFile() const override;
|
||||||
virtual int32_t GetPlayoutPosition(uint32_t& durationMs);
|
int32_t GetPlayoutPosition(uint32_t* durationMs) override;
|
||||||
virtual int32_t AudioCodec(CodecInst& audioCodec) const;
|
int32_t AudioCodec(CodecInst* audioCodec) const override;
|
||||||
virtual int32_t Frequency() const;
|
int32_t Frequency() const override;
|
||||||
virtual int32_t SetAudioScaling(float scaleFactor);
|
int32_t SetAudioScaling(float scaleFactor) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int32_t SetUpAudioDecoder();
|
int32_t SetUpAudioDecoder();
|
||||||
@ -108,13 +108,13 @@ int32_t FilePlayerImpl::Frequency() const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FilePlayerImpl::AudioCodec(CodecInst& audioCodec) const {
|
int32_t FilePlayerImpl::AudioCodec(CodecInst* audioCodec) const {
|
||||||
audioCodec = _codec;
|
*audioCodec = _codec;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer,
|
int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer,
|
||||||
size_t& lengthInSamples,
|
size_t* lengthInSamples,
|
||||||
int frequencyInHz) {
|
int frequencyInHz) {
|
||||||
if (_codec.plfreq == 0) {
|
if (_codec.plfreq == 0) {
|
||||||
LOG(LS_WARNING) << "Get10msAudioFromFile() playing not started!"
|
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.
|
// L16 is un-encoded data. Just pull 10 ms.
|
||||||
size_t lengthInBytes = sizeof(unresampledAudioFrame.data_);
|
size_t lengthInBytes = sizeof(unresampledAudioFrame.data_);
|
||||||
if (_fileModule.PlayoutAudioData((int8_t*)unresampledAudioFrame.data_,
|
if (_fileModule.PlayoutAudioData(
|
||||||
|
reinterpret_cast<int8_t*>(unresampledAudioFrame.data_),
|
||||||
lengthInBytes) == -1) {
|
lengthInBytes) == -1) {
|
||||||
// End of file reached.
|
// End of file reached.
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (lengthInBytes == 0) {
|
if (lengthInBytes == 0) {
|
||||||
lengthInSamples = 0;
|
*lengthInSamples = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// One sample is two bytes.
|
// One sample is two bytes.
|
||||||
@ -150,15 +151,15 @@ int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer,
|
|||||||
if (++_numberOf10MsInDecoder >= _numberOf10MsPerFrame) {
|
if (++_numberOf10MsInDecoder >= _numberOf10MsPerFrame) {
|
||||||
_numberOf10MsInDecoder = 0;
|
_numberOf10MsInDecoder = 0;
|
||||||
size_t bytesFromFile = sizeof(encodedBuffer);
|
size_t bytesFromFile = sizeof(encodedBuffer);
|
||||||
if (_fileModule.PlayoutAudioData((int8_t*)encodedBuffer, bytesFromFile) ==
|
if (_fileModule.PlayoutAudioData(reinterpret_cast<int8_t*>(encodedBuffer),
|
||||||
-1) {
|
bytesFromFile) == -1) {
|
||||||
// End of file reached.
|
// End of file reached.
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
encodedLengthInBytes = bytesFromFile;
|
encodedLengthInBytes = bytesFromFile;
|
||||||
}
|
}
|
||||||
if (_audioDecoder.Decode(unresampledAudioFrame, frequencyInHz,
|
if (_audioDecoder.Decode(&unresampledAudioFrame, frequencyInHz,
|
||||||
(int8_t*)encodedBuffer,
|
reinterpret_cast<int8_t*>(encodedBuffer),
|
||||||
encodedLengthInBytes) == -1) {
|
encodedLengthInBytes) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -178,7 +179,7 @@ int32_t FilePlayerImpl::Get10msAudioFromFile(int16_t* outBuffer,
|
|||||||
unresampledAudioFrame.samples_per_channel_, outBuffer,
|
unresampledAudioFrame.samples_per_channel_, outBuffer,
|
||||||
MAX_AUDIO_BUFFER_IN_SAMPLES, outLen);
|
MAX_AUDIO_BUFFER_IN_SAMPLES, outLen);
|
||||||
|
|
||||||
lengthInSamples = outLen;
|
*lengthInSamples = outLen;
|
||||||
|
|
||||||
if (_scaling != 1.0) {
|
if (_scaling != 1.0) {
|
||||||
for (size_t i = 0; i < outLen; i++) {
|
for (size_t i = 0; i < outLen; i++) {
|
||||||
@ -270,7 +271,7 @@ int32_t FilePlayerImpl::StartPlayingFile(const char* fileName,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream,
|
int32_t FilePlayerImpl::StartPlayingFile(InStream* sourceStream,
|
||||||
uint32_t startPosition,
|
uint32_t startPosition,
|
||||||
float volumeScaling,
|
float volumeScaling,
|
||||||
uint32_t notification,
|
uint32_t notification,
|
||||||
@ -304,7 +305,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (_fileModule.StartPlayingAudioStream(
|
if (_fileModule.StartPlayingAudioStream(
|
||||||
sourceStream, notification, _fileFormat, &codecInstL16,
|
*sourceStream, notification, _fileFormat, &codecInstL16,
|
||||||
startPosition, stopPosition) == -1) {
|
startPosition, stopPosition) == -1) {
|
||||||
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
||||||
<< "playout.";
|
<< "playout.";
|
||||||
@ -312,7 +313,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (_fileFormat == kFileFormatPreencodedFile) {
|
} else if (_fileFormat == kFileFormatPreencodedFile) {
|
||||||
if (_fileModule.StartPlayingAudioStream(sourceStream, notification,
|
if (_fileModule.StartPlayingAudioStream(*sourceStream, notification,
|
||||||
_fileFormat, codecInst) == -1) {
|
_fileFormat, codecInst) == -1) {
|
||||||
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
||||||
<< "playout.";
|
<< "playout.";
|
||||||
@ -320,7 +321,7 @@ int32_t FilePlayerImpl::StartPlayingFile(InStream& sourceStream,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
CodecInst* no_inst = NULL;
|
CodecInst* no_inst = NULL;
|
||||||
if (_fileModule.StartPlayingAudioStream(sourceStream, notification,
|
if (_fileModule.StartPlayingAudioStream(*sourceStream, notification,
|
||||||
_fileFormat, no_inst, startPosition,
|
_fileFormat, no_inst, startPosition,
|
||||||
stopPosition) == -1) {
|
stopPosition) == -1) {
|
||||||
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
LOG(LS_ERROR) << "StartPlayingFile() failed to initialize stream "
|
||||||
@ -348,8 +349,8 @@ bool FilePlayerImpl::IsPlayingFile() const {
|
|||||||
return _fileModule.IsPlaying();
|
return _fileModule.IsPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FilePlayerImpl::GetPlayoutPosition(uint32_t& durationMs) {
|
int32_t FilePlayerImpl::GetPlayoutPosition(uint32_t* durationMs) {
|
||||||
return _fileModule.PlayoutPositionMs(durationMs);
|
return _fileModule.PlayoutPositionMs(*durationMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FilePlayerImpl::SetUpAudioDecoder() {
|
int32_t FilePlayerImpl::SetUpAudioDecoder() {
|
||||||
|
|||||||
@ -61,8 +61,8 @@ class FilePlayerTest : public ::testing::Test {
|
|||||||
for (int i = 0; i < output_length_ms / 10; ++i) {
|
for (int i = 0; i < output_length_ms / 10; ++i) {
|
||||||
int16_t out[10 * kSampleRateHz / 1000] = {0};
|
int16_t out[10 * kSampleRateHz / 1000] = {0};
|
||||||
size_t num_samples;
|
size_t num_samples;
|
||||||
EXPECT_EQ(0,
|
EXPECT_EQ(
|
||||||
player_->Get10msAudioFromFile(out, num_samples, kSampleRateHz));
|
0, player_->Get10msAudioFromFile(out, &num_samples, kSampleRateHz));
|
||||||
checksum.Update(out, num_samples * sizeof(out[0]));
|
checksum.Update(out, num_samples * sizeof(out[0]));
|
||||||
if (FLAGS_file_player_output) {
|
if (FLAGS_file_player_output) {
|
||||||
ASSERT_EQ(num_samples,
|
ASSERT_EQ(num_samples,
|
||||||
|
|||||||
@ -16,10 +16,8 @@
|
|||||||
#include "webrtc/common_audio/resampler/include/resampler.h"
|
#include "webrtc/common_audio/resampler/include/resampler.h"
|
||||||
#include "webrtc/common_types.h"
|
#include "webrtc/common_types.h"
|
||||||
#include "webrtc/engine_configurations.h"
|
#include "webrtc/engine_configurations.h"
|
||||||
#include "webrtc/engine_configurations.h"
|
|
||||||
#include "webrtc/modules/include/module_common_types.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.h"
|
|
||||||
#include "webrtc/modules/media_file/media_file_defines.h"
|
#include "webrtc/modules/media_file/media_file_defines.h"
|
||||||
#include "webrtc/modules/utility/source/coder.h"
|
#include "webrtc/modules/utility/source/coder.h"
|
||||||
#include "webrtc/system_wrappers/include/event_wrapper.h"
|
#include "webrtc/system_wrappers/include/event_wrapper.h"
|
||||||
@ -48,12 +46,12 @@ class FileRecorderImpl : public FileRecorder {
|
|||||||
int32_t StartRecordingAudioFile(const char* fileName,
|
int32_t StartRecordingAudioFile(const char* fileName,
|
||||||
const CodecInst& codecInst,
|
const CodecInst& codecInst,
|
||||||
uint32_t notificationTimeMs) override;
|
uint32_t notificationTimeMs) override;
|
||||||
int32_t StartRecordingAudioFile(OutStream& destStream,
|
int32_t StartRecordingAudioFile(OutStream* destStream,
|
||||||
const CodecInst& codecInst,
|
const CodecInst& codecInst,
|
||||||
uint32_t notificationTimeMs) override;
|
uint32_t notificationTimeMs) override;
|
||||||
int32_t StopRecording() override;
|
int32_t StopRecording() override;
|
||||||
bool IsRecording() const 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;
|
int32_t RecordAudioToFile(const AudioFrame& frame) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -120,12 +118,12 @@ int32_t FileRecorderImpl::StartRecordingAudioFile(const char* fileName,
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FileRecorderImpl::StartRecordingAudioFile(OutStream& destStream,
|
int32_t FileRecorderImpl::StartRecordingAudioFile(OutStream* destStream,
|
||||||
const CodecInst& codecInst,
|
const CodecInst& codecInst,
|
||||||
uint32_t notificationTimeMs) {
|
uint32_t notificationTimeMs) {
|
||||||
codec_info_ = codecInst;
|
codec_info_ = codecInst;
|
||||||
int32_t retVal = _moduleFile->StartRecordingAudioStream(
|
int32_t retVal = _moduleFile->StartRecordingAudioStream(
|
||||||
destStream, _fileFormat, codecInst, notificationTimeMs);
|
*destStream, _fileFormat, codecInst, notificationTimeMs);
|
||||||
|
|
||||||
if (retVal == 0) {
|
if (retVal == 0) {
|
||||||
retVal = SetUpAudioEncoder();
|
retVal = SetUpAudioEncoder();
|
||||||
@ -193,13 +191,13 @@ int32_t FileRecorderImpl::RecordAudioToFile(
|
|||||||
// Encode the audio data before writing to file. Don't encode if the codec
|
// Encode the audio data before writing to file. Don't encode if the codec
|
||||||
// is PCM.
|
// is PCM.
|
||||||
// NOTE: stereo recording is only supported for WAV files.
|
// 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.
|
// "encoding" with PCM coder should be a problem for big endian systems.
|
||||||
size_t encodedLenInBytes = 0;
|
size_t encodedLenInBytes = 0;
|
||||||
if (_fileFormat == kFileFormatPreencodedFile ||
|
if (_fileFormat == kFileFormatPreencodedFile ||
|
||||||
STR_CASE_CMP(codec_info_.plname, "L16") != 0) {
|
STR_CASE_CMP(codec_info_.plname, "L16") != 0) {
|
||||||
if (_audioEncoder.Encode(*ptrAudioFrame, _audioBuffer, encodedLenInBytes) ==
|
if (_audioEncoder.Encode(*ptrAudioFrame, _audioBuffer,
|
||||||
-1) {
|
&encodedLenInBytes) == -1) {
|
||||||
LOG(LS_WARNING) << "RecordAudioToFile() codec " << codec_info_.plname
|
LOG(LS_WARNING) << "RecordAudioToFile() codec " << codec_info_.plname
|
||||||
<< " not supported or failed to encode stream.";
|
<< " not supported or failed to encode stream.";
|
||||||
return -1;
|
return -1;
|
||||||
@ -212,7 +210,8 @@ int32_t FileRecorderImpl::RecordAudioToFile(
|
|||||||
_audioResampler.Push(
|
_audioResampler.Push(
|
||||||
ptrAudioFrame->data_,
|
ptrAudioFrame->data_,
|
||||||
ptrAudioFrame->samples_per_channel_ * ptrAudioFrame->num_channels_,
|
ptrAudioFrame->samples_per_channel_ * ptrAudioFrame->num_channels_,
|
||||||
(int16_t*)_audioBuffer, MAX_AUDIO_BUFFER_IN_BYTES, outLen);
|
reinterpret_cast<int16_t*>(_audioBuffer), MAX_AUDIO_BUFFER_IN_BYTES,
|
||||||
|
outLen);
|
||||||
encodedLenInBytes = outLen * sizeof(int16_t);
|
encodedLenInBytes = outLen * sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,11 +238,11 @@ int32_t FileRecorderImpl::SetUpAudioEncoder() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t FileRecorderImpl::codec_info(CodecInst& codecInst) const {
|
int32_t FileRecorderImpl::codec_info(CodecInst* codecInst) const {
|
||||||
if (codec_info_.plfreq == 0) {
|
if (codec_info_.plfreq == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
codecInst = codec_info_;
|
*codecInst = codec_info_;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1835,7 +1835,7 @@ int Channel::StartPlayingFileLocally(InStream* stream,
|
|||||||
|
|
||||||
const uint32_t notificationTime(0);
|
const uint32_t notificationTime(0);
|
||||||
|
|
||||||
if (output_file_player_->StartPlayingFile(*stream, startPosition,
|
if (output_file_player_->StartPlayingFile(stream, startPosition,
|
||||||
volumeScaling, notificationTime,
|
volumeScaling, notificationTime,
|
||||||
stopPosition, codecInst) != 0) {
|
stopPosition, codecInst) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
||||||
@ -2025,9 +2025,9 @@ int Channel::StartPlayingFileAsMicrophone(InStream* stream,
|
|||||||
|
|
||||||
const uint32_t notificationTime(0);
|
const uint32_t notificationTime(0);
|
||||||
|
|
||||||
if (input_file_player_->StartPlayingFile(*stream, startPosition,
|
if (input_file_player_->StartPlayingFile(stream, startPosition, volumeScaling,
|
||||||
volumeScaling, notificationTime,
|
notificationTime, stopPosition,
|
||||||
stopPosition, codecInst) != 0) {
|
codecInst) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
||||||
"StartPlayingFile() failed to start "
|
"StartPlayingFile() failed to start "
|
||||||
"file playout");
|
"file playout");
|
||||||
@ -2183,7 +2183,7 @@ int Channel::StartRecordingPlayout(OutStream* stream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (output_file_recorder_->StartRecordingAudioFile(*stream, *codecInst,
|
if (output_file_recorder_->StartRecordingAudioFile(stream, *codecInst,
|
||||||
notificationTime) != 0) {
|
notificationTime) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
_engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError,
|
||||||
"StartRecordingPlayout() failed to "
|
"StartRecordingPlayout() failed to "
|
||||||
@ -3275,7 +3275,7 @@ int32_t Channel::MixOrReplaceAudioWithFile(int mixingFrequency) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples,
|
if (input_file_player_->Get10msAudioFromFile(fileBuffer.get(), &fileSamples,
|
||||||
mixingFrequency) == -1) {
|
mixingFrequency) == -1) {
|
||||||
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId),
|
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId),
|
||||||
"Channel::MixOrReplaceAudioWithFile() file mixing "
|
"Channel::MixOrReplaceAudioWithFile() file mixing "
|
||||||
@ -3323,8 +3323,8 @@ int32_t Channel::MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We should get the frequency we ask for.
|
// We should get the frequency we ask for.
|
||||||
if (output_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples,
|
if (output_file_player_->Get10msAudioFromFile(
|
||||||
mixingFrequency) == -1) {
|
fileBuffer.get(), &fileSamples, mixingFrequency) == -1) {
|
||||||
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId),
|
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId),
|
||||||
"Channel::MixAudioWithFile() file mixing failed");
|
"Channel::MixAudioWithFile() file mixing failed");
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@ -377,7 +377,7 @@ int OutputMixer::StartRecordingPlayout(OutStream* stream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (output_file_recorder_->StartRecordingAudioFile(*stream, *codecInst,
|
if (output_file_recorder_->StartRecordingAudioFile(stream, *codecInst,
|
||||||
notificationTime) != 0) {
|
notificationTime) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(
|
_engineStatisticsPtr->SetLastError(
|
||||||
VE_BAD_FILE, kTraceError,
|
VE_BAD_FILE, kTraceError,
|
||||||
|
|||||||
@ -568,9 +568,9 @@ int TransmitMixer::StartPlayingFileAsMicrophone(InStream* stream,
|
|||||||
|
|
||||||
const uint32_t notificationTime(0);
|
const uint32_t notificationTime(0);
|
||||||
|
|
||||||
if (file_player_->StartPlayingFile(
|
if (file_player_->StartPlayingFile(stream, startPosition, volumeScaling,
|
||||||
(InStream&)*stream, startPosition, volumeScaling, notificationTime,
|
notificationTime, stopPosition,
|
||||||
stopPosition, (const CodecInst*)codecInst) != 0) {
|
(const CodecInst*)codecInst) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(
|
_engineStatisticsPtr->SetLastError(
|
||||||
VE_BAD_FILE, kTraceError,
|
VE_BAD_FILE, kTraceError,
|
||||||
"StartPlayingFile() failed to start file playout");
|
"StartPlayingFile() failed to start file playout");
|
||||||
@ -743,7 +743,7 @@ int TransmitMixer::StartRecordingMicrophone(OutStream* stream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_recorder_->StartRecordingAudioFile(*stream, *codecInst,
|
if (file_recorder_->StartRecordingAudioFile(stream, *codecInst,
|
||||||
notificationTime) != 0) {
|
notificationTime) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(
|
_engineStatisticsPtr->SetLastError(
|
||||||
VE_BAD_FILE, kTraceError,
|
VE_BAD_FILE, kTraceError,
|
||||||
@ -912,7 +912,7 @@ int TransmitMixer::StartRecordingCall(OutStream* stream,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_call_recorder_->StartRecordingAudioFile(*stream, *codecInst,
|
if (file_call_recorder_->StartRecordingAudioFile(stream, *codecInst,
|
||||||
notificationTime) != 0) {
|
notificationTime) != 0) {
|
||||||
_engineStatisticsPtr->SetLastError(
|
_engineStatisticsPtr->SetLastError(
|
||||||
VE_BAD_FILE, kTraceError,
|
VE_BAD_FILE, kTraceError,
|
||||||
@ -1096,7 +1096,7 @@ int32_t TransmitMixer::MixOrReplaceAudioWithFile(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples,
|
if (file_player_->Get10msAudioFromFile(fileBuffer.get(), &fileSamples,
|
||||||
mixingFrequency) == -1) {
|
mixingFrequency) == -1) {
|
||||||
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1),
|
WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1),
|
||||||
"TransmitMixer::MixOrReplaceAudioWithFile() file"
|
"TransmitMixer::MixOrReplaceAudioWithFile() file"
|
||||||
|
|||||||
Reference in New Issue
Block a user