| Index: webrtc/voice_engine/channel.cc
|
| diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
|
| index c42ac0a9278c6aad1f3968ddecb9a32949792df1..06812dd3278bc49c072d190990a89cd68ab5212b 100644
|
| --- a/webrtc/voice_engine/channel.cc
|
| +++ b/webrtc/voice_engine/channel.cc
|
| @@ -445,14 +445,14 @@ bool Channel::OnRecoveredPacket(const uint8_t* rtp_packet,
|
| return ReceivePacket(rtp_packet, rtp_packet_length, header, false);
|
| }
|
|
|
| -int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
| +int32_t Channel::GetAudioFrame(int32_t id, AudioFrame* audioFrame)
|
| {
|
| WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
|
| "Channel::GetAudioFrame(id=%d)", id);
|
|
|
| // Get 10ms raw PCM data from the ACM (mixer limits output frequency)
|
| - if (audio_coding_->PlayoutData10Ms(audioFrame.sample_rate_hz_,
|
| - &audioFrame) == -1)
|
| + if (audio_coding_->PlayoutData10Ms(audioFrame->sample_rate_hz_,
|
| + audioFrame) == -1)
|
| {
|
| WEBRTC_TRACE(kTraceError, kTraceVoice,
|
| VoEId(_instanceId,_channelId),
|
| @@ -466,18 +466,18 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
|
|
| if (_RxVadDetection)
|
| {
|
| - UpdateRxVadDetection(audioFrame);
|
| + UpdateRxVadDetection(*audioFrame);
|
| }
|
|
|
| // Convert module ID to internal VoE channel ID
|
| - audioFrame.id_ = VoEChannelId(audioFrame.id_);
|
| + audioFrame->id_ = VoEChannelId(audioFrame->id_);
|
| // Store speech type for dead-or-alive detection
|
| - _outputSpeechType = audioFrame.speech_type_;
|
| + _outputSpeechType = audioFrame->speech_type_;
|
|
|
| ChannelState::State state = channel_state_.Get();
|
|
|
| if (state.rx_apm_is_enabled) {
|
| - int err = rx_audioproc_->ProcessStream(&audioFrame);
|
| + int err = rx_audioproc_->ProcessStream(audioFrame);
|
| if (err) {
|
| LOG(LS_ERROR) << "ProcessStream() error: " << err;
|
| assert(false);
|
| @@ -497,7 +497,7 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
| // Output volume scaling
|
| if (output_gain < 0.99f || output_gain > 1.01f)
|
| {
|
| - AudioFrameOperations::ScaleWithSat(output_gain, audioFrame);
|
| + AudioFrameOperations::ScaleWithSat(output_gain, *audioFrame);
|
| }
|
|
|
| // Scale left and/or right channel(s) if stereo and master balance is
|
| @@ -505,39 +505,39 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
|
|
| if (left_pan != 1.0f || right_pan != 1.0f)
|
| {
|
| - if (audioFrame.num_channels_ == 1)
|
| + if (audioFrame->num_channels_ == 1)
|
| {
|
| // Emulate stereo mode since panning is active.
|
| // The mono signal is copied to both left and right channels here.
|
| - AudioFrameOperations::MonoToStereo(&audioFrame);
|
| + AudioFrameOperations::MonoToStereo(audioFrame);
|
| }
|
| // For true stereo mode (when we are receiving a stereo signal), no
|
| // action is needed.
|
|
|
| // Do the panning operation (the audio frame contains stereo at this
|
| // stage)
|
| - AudioFrameOperations::Scale(left_pan, right_pan, audioFrame);
|
| + AudioFrameOperations::Scale(left_pan, right_pan, *audioFrame);
|
| }
|
|
|
| // Mix decoded PCM output with file if file mixing is enabled
|
| if (state.output_file_playing)
|
| {
|
| - MixAudioWithFile(audioFrame, audioFrame.sample_rate_hz_);
|
| + MixAudioWithFile(*audioFrame, audioFrame->sample_rate_hz_);
|
| }
|
|
|
| // External media
|
| if (_outputExternalMedia)
|
| {
|
| CriticalSectionScoped cs(&_callbackCritSect);
|
| - const bool isStereo = (audioFrame.num_channels_ == 2);
|
| + const bool isStereo = (audioFrame->num_channels_ == 2);
|
| if (_outputExternalMediaCallbackPtr)
|
| {
|
| _outputExternalMediaCallbackPtr->Process(
|
| _channelId,
|
| kPlaybackPerChannel,
|
| - (int16_t*)audioFrame.data_,
|
| - audioFrame.samples_per_channel_,
|
| - audioFrame.sample_rate_hz_,
|
| + (int16_t*)audioFrame->data_,
|
| + audioFrame->samples_per_channel_,
|
| + audioFrame->sample_rate_hz_,
|
| isStereo);
|
| }
|
| }
|
| @@ -548,16 +548,16 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
|
|
| if (_outputFileRecording && _outputFileRecorderPtr)
|
| {
|
| - _outputFileRecorderPtr->RecordAudioToFile(audioFrame);
|
| + _outputFileRecorderPtr->RecordAudioToFile(*audioFrame);
|
| }
|
| }
|
|
|
| // Measure audio level (0-9)
|
| - _outputAudioLevel.ComputeLevel(audioFrame);
|
| + _outputAudioLevel.ComputeLevel(*audioFrame);
|
|
|
| - if (capture_start_rtp_time_stamp_ < 0 && audioFrame.timestamp_ != 0) {
|
| + if (capture_start_rtp_time_stamp_ < 0 && audioFrame->timestamp_ != 0) {
|
| // The first frame with a valid rtp timestamp.
|
| - capture_start_rtp_time_stamp_ = audioFrame.timestamp_;
|
| + capture_start_rtp_time_stamp_ = audioFrame->timestamp_;
|
| }
|
|
|
| if (capture_start_rtp_time_stamp_ >= 0) {
|
| @@ -565,22 +565,22 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
|
|
| // Compute elapsed time.
|
| int64_t unwrap_timestamp =
|
| - rtp_ts_wraparound_handler_->Unwrap(audioFrame.timestamp_);
|
| - audioFrame.elapsed_time_ms_ =
|
| + rtp_ts_wraparound_handler_->Unwrap(audioFrame->timestamp_);
|
| + audioFrame->elapsed_time_ms_ =
|
| (unwrap_timestamp - capture_start_rtp_time_stamp_) /
|
| (GetPlayoutFrequency() / 1000);
|
|
|
| {
|
| CriticalSectionScoped lock(ts_stats_lock_.get());
|
| // Compute ntp time.
|
| - audioFrame.ntp_time_ms_ = ntp_estimator_.Estimate(
|
| - audioFrame.timestamp_);
|
| + audioFrame->ntp_time_ms_ = ntp_estimator_.Estimate(
|
| + audioFrame->timestamp_);
|
| // |ntp_time_ms_| won't be valid until at least 2 RTCP SRs are received.
|
| - if (audioFrame.ntp_time_ms_ > 0) {
|
| + if (audioFrame->ntp_time_ms_ > 0) {
|
| // Compute |capture_start_ntp_time_ms_| so that
|
| // |capture_start_ntp_time_ms_| + |elapsed_time_ms_| == |ntp_time_ms_|
|
| capture_start_ntp_time_ms_ =
|
| - audioFrame.ntp_time_ms_ - audioFrame.elapsed_time_ms_;
|
| + audioFrame->ntp_time_ms_ - audioFrame->elapsed_time_ms_;
|
| }
|
| }
|
| }
|
| @@ -589,7 +589,7 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame)
|
| }
|
|
|
| int32_t
|
| -Channel::NeededFrequency(int32_t id)
|
| +Channel::NeededFrequency(int32_t id) const
|
| {
|
| WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,_channelId),
|
| "Channel::NeededFrequency(id=%d)", id);
|
|
|