Chromium Code Reviews| Index: webrtc/modules/audio_coding/main/acm2/acm_receiver.cc |
| diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc |
| index b4dfe3ad938fd0cf688a4bdaf4a9573b46b7c05e..17750291dad5ed15c675ea4f2ab27124f08ed27f 100644 |
| --- a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc |
| +++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc |
| @@ -123,7 +123,6 @@ AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config) |
| id_(config.id), |
| last_audio_decoder_(nullptr), |
| previous_audio_activity_(AudioFrame::kVadPassive), |
| - current_sample_rate_hz_(config.neteq_config.sample_rate_hz), |
| audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]), |
| last_audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]), |
| neteq_(NetEq::Create(config.neteq_config)), |
| @@ -157,9 +156,8 @@ int AcmReceiver::LeastRequiredDelayMs() const { |
| return neteq_->LeastRequiredDelayMs(); |
| } |
| -int AcmReceiver::current_sample_rate_hz() const { |
| - CriticalSectionScoped lock(crit_sect_.get()); |
| - return current_sample_rate_hz_; |
| +int AcmReceiver::last_output_sample_rate_hz() const { |
| + return neteq_->last_output_sample_rate_hz(); |
| } |
| int AcmReceiver::InsertPacket(const WebRtcRTPHeader& rtp_header, |
| @@ -224,23 +222,18 @@ int AcmReceiver::GetAudio(int desired_freq_hz, AudioFrame* audio_frame) { |
| return -1; |
| } |
| - // NetEq always returns 10 ms of audio. |
| - current_sample_rate_hz_ = static_cast<int>(samples_per_channel * 100); |
| + const int current_sample_rate_hz = neteq_->last_output_sample_rate_hz(); |
|
kwiberg-webrtc
2015/11/23 13:11:51
Excellent idea to use const here.
|
| // Update if resampling is required. |
| - bool need_resampling = (desired_freq_hz != -1) && |
| - (current_sample_rate_hz_ != desired_freq_hz); |
| + const bool need_resampling = |
| + (desired_freq_hz != -1) && (current_sample_rate_hz != desired_freq_hz); |
| if (need_resampling && !resampled_last_output_frame_) { |
| // Prime the resampler with the last frame. |
| int16_t temp_output[AudioFrame::kMaxDataSizeSamples]; |
| - int samples_per_channel_int = |
| - resampler_.Resample10Msec(last_audio_buffer_.get(), |
| - current_sample_rate_hz_, |
| - desired_freq_hz, |
| - num_channels, |
| - AudioFrame::kMaxDataSizeSamples, |
| - temp_output); |
| + int samples_per_channel_int = resampler_.Resample10Msec( |
|
hlundin-webrtc
2015/11/23 11:54:33
The only actual change in this block is that the l
kwiberg-webrtc
2015/11/23 13:11:51
Acknowledged.
|
| + last_audio_buffer_.get(), current_sample_rate_hz, desired_freq_hz, |
| + num_channels, AudioFrame::kMaxDataSizeSamples, temp_output); |
| if (samples_per_channel_int < 0) { |
| LOG(LERROR) << "AcmReceiver::GetAudio - " |
| "Resampling last_audio_buffer_ failed."; |
| @@ -254,13 +247,9 @@ int AcmReceiver::GetAudio(int desired_freq_hz, AudioFrame* audio_frame) { |
| // TODO(henrik.lundin) Glitches in the output may appear if the output rate |
| // from NetEq changes. See WebRTC issue 3923. |
| if (need_resampling) { |
| - int samples_per_channel_int = |
| - resampler_.Resample10Msec(audio_buffer_.get(), |
| - current_sample_rate_hz_, |
| - desired_freq_hz, |
| - num_channels, |
| - AudioFrame::kMaxDataSizeSamples, |
| - audio_frame->data_); |
| + int samples_per_channel_int = resampler_.Resample10Msec( |
|
hlundin-webrtc
2015/11/23 11:54:33
The only actual change in this block is that the l
kwiberg-webrtc
2015/11/23 13:11:51
Acknowledged.
|
| + audio_buffer_.get(), current_sample_rate_hz, desired_freq_hz, |
| + num_channels, AudioFrame::kMaxDataSizeSamples, audio_frame->data_); |
| if (samples_per_channel_int < 0) { |
| LOG(LERROR) << "AcmReceiver::GetAudio - Resampling audio_buffer_ failed."; |
| return -1; |