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

Unified Diff: remoting/codec/audio_encoder_opus.cc

Issue 14189035: Reduce jitter from uneven SincResampler buffer size requests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments. Created 7 years, 7 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 | « media/base/sinc_resampler_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/codec/audio_encoder_opus.cc
diff --git a/remoting/codec/audio_encoder_opus.cc b/remoting/codec/audio_encoder_opus.cc
index 15160df75f5b0a2764137245ad472f14deb3e8d6..2efcf90f74c84cc16fc3ff595e5c6db7fce217c4 100644
--- a/remoting/codec/audio_encoder_opus.cc
+++ b/remoting/codec/audio_encoder_opus.cc
@@ -77,9 +77,12 @@ void AudioEncoderOpus::InitEncoder() {
if (sampling_rate_ != kOpusSamplingRate) {
resample_buffer_.reset(
new char[kFrameSamples * kBytesPerSample * channels_]);
+ // TODO(sergeyu): Figure out the right buffer size to use per packet instead
+ // of using media::SincResampler::kDefaultRequestSize.
resampler_.reset(new media::MultiChannelResampler(
channels_,
static_cast<double>(sampling_rate_) / kOpusSamplingRate,
+ media::SincResampler::kDefaultRequestSize,
base::Bind(&AudioEncoderOpus::FetchBytesToResample,
base::Unretained(this))));
resampler_bus_ = media::AudioBus::Create(channels_, kFrameSamples);
@@ -88,7 +91,7 @@ void AudioEncoderOpus::InitEncoder() {
// Drop leftover data because it's for different sampling rate.
leftover_samples_ = 0;
leftover_buffer_size_ =
- frame_size_ + media::SincResampler::kMaximumLookAheadSize;
+ frame_size_ + media::SincResampler::kDefaultRequestSize;
leftover_buffer_.reset(
new int16[leftover_buffer_size_ * channels_]);
}
@@ -159,7 +162,7 @@ scoped_ptr<AudioPacket> AudioEncoderOpus::Encode(
encoded_packet->set_channels(channels_);
int prefetch_samples =
- resampler_.get() ? media::SincResampler::kMaximumLookAheadSize : 0;
+ resampler_.get() ? media::SincResampler::kDefaultRequestSize : 0;
int samples_wanted = frame_size_ + prefetch_samples;
while (leftover_samples_ + samples_in_packet >= samples_wanted) {
@@ -181,7 +184,7 @@ scoped_ptr<AudioPacket> AudioEncoderOpus::Encode(
resampling_data_ = reinterpret_cast<const char*>(pcm_buffer);
resampling_data_pos_ = 0;
resampling_data_size_ = samples_wanted * channels_ * kBytesPerSample;
- resampler_->Resample(resampler_bus_.get(), kFrameSamples);
+ resampler_->Resample(kFrameSamples, resampler_bus_.get());
resampling_data_ = NULL;
samples_consumed = resampling_data_pos_ / channels_ / kBytesPerSample;
« no previous file with comments | « media/base/sinc_resampler_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698