Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Unified Diff: webrtc/modules/utility/source/file_recorder_impl.cc

Issue 2037623002: Move FilePlayer and FileRecorder to Voice Engine (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@remove0
Patch Set: GN build fix Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/utility/source/file_recorder_impl.h ('k') | webrtc/modules/utility/utility.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/utility/source/file_recorder_impl.cc
diff --git a/webrtc/modules/utility/source/file_recorder_impl.cc b/webrtc/modules/utility/source/file_recorder_impl.cc
deleted file mode 100644
index 82b37f0118e1ecda2f2577c4742387bfca86ae63..0000000000000000000000000000000000000000
--- a/webrtc/modules/utility/source/file_recorder_impl.cc
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * 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.
- */
-
-#include "webrtc/engine_configurations.h"
-#include "webrtc/modules/media_file/media_file.h"
-#include "webrtc/modules/utility/source/file_recorder_impl.h"
-#include "webrtc/system_wrappers/include/logging.h"
-
-namespace webrtc {
-FileRecorder* FileRecorder::CreateFileRecorder(uint32_t instanceID,
- FileFormats fileFormat)
-{
- return new FileRecorderImpl(instanceID, fileFormat);
-}
-
-void FileRecorder::DestroyFileRecorder(FileRecorder* recorder)
-{
- delete recorder;
-}
-
-FileRecorderImpl::FileRecorderImpl(uint32_t instanceID,
- FileFormats fileFormat)
- : _instanceID(instanceID),
- _fileFormat(fileFormat),
- _moduleFile(MediaFile::CreateMediaFile(_instanceID)),
- codec_info_(),
- _audioBuffer(),
- _audioEncoder(instanceID),
- _audioResampler()
-{
-}
-
-FileRecorderImpl::~FileRecorderImpl()
-{
- MediaFile::DestroyMediaFile(_moduleFile);
-}
-
-FileFormats FileRecorderImpl::RecordingFileFormat() const
-{
- return _fileFormat;
-}
-
-int32_t FileRecorderImpl::RegisterModuleFileCallback(
- FileCallback* callback)
-{
- if(_moduleFile == NULL)
- {
- return -1;
- }
- return _moduleFile->SetModuleFileCallback(callback);
-}
-
-int32_t FileRecorderImpl::StartRecordingAudioFile(
- const char* fileName,
- const CodecInst& codecInst,
- uint32_t notificationTimeMs)
-{
- if(_moduleFile == NULL)
- {
- return -1;
- }
- codec_info_ = codecInst;
- int32_t retVal = 0;
- retVal =_moduleFile->StartRecordingAudioFile(fileName, _fileFormat,
- codecInst,
- notificationTimeMs);
-
- if( retVal == 0)
- {
- retVal = SetUpAudioEncoder();
- }
- if( retVal != 0)
- {
- LOG(LS_WARNING) << "Failed to initialize file " << fileName
- << " for recording.";
-
- if(IsRecording())
- {
- StopRecording();
- }
- }
- return retVal;
-}
-
-int32_t FileRecorderImpl::StartRecordingAudioFile(
- OutStream& destStream,
- const CodecInst& codecInst,
- uint32_t notificationTimeMs)
-{
- codec_info_ = codecInst;
- int32_t retVal = _moduleFile->StartRecordingAudioStream(
- destStream,
- _fileFormat,
- codecInst,
- notificationTimeMs);
-
- if( retVal == 0)
- {
- retVal = SetUpAudioEncoder();
- }
- if( retVal != 0)
- {
- LOG(LS_WARNING) << "Failed to initialize outStream for recording.";
-
- if(IsRecording())
- {
- StopRecording();
- }
- }
- return retVal;
-}
-
-int32_t FileRecorderImpl::StopRecording()
-{
- memset(&codec_info_, 0, sizeof(CodecInst));
- return _moduleFile->StopRecording();
-}
-
-bool FileRecorderImpl::IsRecording() const
-{
- return _moduleFile->IsRecording();
-}
-
-int32_t FileRecorderImpl::RecordAudioToFile(
- const AudioFrame& incomingAudioFrame)
-{
- if (codec_info_.plfreq == 0)
- {
- LOG(LS_WARNING) << "RecordAudioToFile() recording audio is not "
- << "turned on.";
- return -1;
- }
- AudioFrame tempAudioFrame;
- tempAudioFrame.samples_per_channel_ = 0;
- if( incomingAudioFrame.num_channels_ == 2 &&
- !_moduleFile->IsStereo())
- {
- // Recording mono but incoming audio is (interleaved) stereo.
- tempAudioFrame.num_channels_ = 1;
- tempAudioFrame.sample_rate_hz_ = incomingAudioFrame.sample_rate_hz_;
- tempAudioFrame.samples_per_channel_ =
- incomingAudioFrame.samples_per_channel_;
- for (size_t i = 0;
- i < (incomingAudioFrame.samples_per_channel_); i++)
- {
- // Sample value is the average of left and right buffer rounded to
- // closest integer value. Note samples can be either 1 or 2 byte.
- tempAudioFrame.data_[i] =
- ((incomingAudioFrame.data_[2 * i] +
- incomingAudioFrame.data_[(2 * i) + 1] + 1) >> 1);
- }
- }
- else if( incomingAudioFrame.num_channels_ == 1 &&
- _moduleFile->IsStereo())
- {
- // Recording stereo but incoming audio is mono.
- tempAudioFrame.num_channels_ = 2;
- tempAudioFrame.sample_rate_hz_ = incomingAudioFrame.sample_rate_hz_;
- tempAudioFrame.samples_per_channel_ =
- incomingAudioFrame.samples_per_channel_;
- for (size_t i = 0;
- i < (incomingAudioFrame.samples_per_channel_); i++)
- {
- // Duplicate sample to both channels
- tempAudioFrame.data_[2*i] =
- incomingAudioFrame.data_[i];
- tempAudioFrame.data_[2*i+1] =
- incomingAudioFrame.data_[i];
- }
- }
-
- const AudioFrame* ptrAudioFrame = &incomingAudioFrame;
- if(tempAudioFrame.samples_per_channel_ != 0)
- {
- // If ptrAudioFrame is not empty it contains the audio to be recorded.
- ptrAudioFrame = &tempAudioFrame;
- }
-
- // 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
- // "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)
- {
- LOG(LS_WARNING) << "RecordAudioToFile() codec "
- << codec_info_.plname
- << " not supported or failed to encode stream.";
- return -1;
- }
- } else {
- size_t outLen = 0;
- _audioResampler.ResetIfNeeded(ptrAudioFrame->sample_rate_hz_,
- codec_info_.plfreq,
- ptrAudioFrame->num_channels_);
- _audioResampler.Push(ptrAudioFrame->data_,
- ptrAudioFrame->samples_per_channel_ *
- ptrAudioFrame->num_channels_,
- (int16_t*)_audioBuffer,
- MAX_AUDIO_BUFFER_IN_BYTES, outLen);
- encodedLenInBytes = outLen * sizeof(int16_t);
- }
-
- // Codec may not be operating at a frame rate of 10 ms. Whenever enough
- // 10 ms chunks of data has been pushed to the encoder an encoded frame
- // will be available. Wait until then.
- if (encodedLenInBytes)
- {
- if (WriteEncodedAudioData(_audioBuffer, encodedLenInBytes) == -1)
- {
- return -1;
- }
- }
- return 0;
-}
-
-int32_t FileRecorderImpl::SetUpAudioEncoder()
-{
- if (_fileFormat == kFileFormatPreencodedFile ||
- STR_CASE_CMP(codec_info_.plname, "L16") != 0)
- {
- if(_audioEncoder.SetEncodeCodec(codec_info_) == -1)
- {
- LOG(LS_ERROR) << "SetUpAudioEncoder() codec "
- << codec_info_.plname << " not supported.";
- return -1;
- }
- }
- return 0;
-}
-
-int32_t FileRecorderImpl::codec_info(CodecInst& codecInst) const
-{
- if(codec_info_.plfreq == 0)
- {
- return -1;
- }
- codecInst = codec_info_;
- return 0;
-}
-
-int32_t FileRecorderImpl::WriteEncodedAudioData(const int8_t* audioBuffer,
- size_t bufferLength)
-{
- return _moduleFile->IncomingAudioData(audioBuffer, bufferLength);
-}
-} // namespace webrtc
« no previous file with comments | « webrtc/modules/utility/source/file_recorder_impl.h ('k') | webrtc/modules/utility/utility.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698