Index: chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc |
diff --git a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc |
index 1e7cc895cc43fcefb9ff7106d9cf1178d2614106..fd0172c06384b4449eac6aa7b7efffc22e5ec44d 100644 |
--- a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc |
+++ b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc |
@@ -56,6 +56,9 @@ const int kPausedReadSamples = 512; |
const int kDefaultReadSize = ::media::SincResampler::kDefaultRequestSize; |
const int64_t kNoTimestamp = std::numeric_limits<int64_t>::min(); |
+const int kMaxSlewTimeUpMs = 100; |
+const int kMaxSlewTimeDownMs = 100; |
+ |
} // namespace |
StreamMixerAlsaInputImpl::StreamMixerAlsaInputImpl( |
@@ -71,6 +74,7 @@ StreamMixerAlsaInputImpl::StreamMixerAlsaInputImpl( |
caller_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
resample_ratio_(1.0), |
state_(kStateUninitialized), |
+ slew_volume_(kMaxSlewTimeUpMs, kMaxSlewTimeDownMs), |
volume_multiplier_(1.0f), |
queued_frames_(0), |
queued_frames_including_resampler_(0), |
@@ -85,6 +89,7 @@ StreamMixerAlsaInputImpl::StreamMixerAlsaInputImpl( |
DCHECK(delegate_); |
DCHECK(mixer_); |
weak_this_ = weak_factory_.GetWeakPtr(); |
+ slew_volume_.SetSampleRate(input_samples_per_second_); |
kmackay
2016/09/14 20:48:15
this doesn't seem right. It is initialized correct
jyw
2016/09/15 01:12:15
Done.
|
} |
StreamMixerAlsaInputImpl::~StreamMixerAlsaInputImpl() { |
@@ -120,6 +125,7 @@ void StreamMixerAlsaInputImpl::Initialize( |
kNumOutputChannels, resample_ratio_, kDefaultReadSize, |
base::Bind(&StreamMixerAlsaInputImpl::ReadCB, base::Unretained(this)))); |
resampler_->PrimeWithSilence(); |
+ slew_volume_.SetSampleRate(mixer_->output_samples_per_second()); |
} |
mixer_rendering_delay_ = mixer_rendering_delay; |
fade_out_frames_total_ = NormalFadeFrames(); |
@@ -504,6 +510,13 @@ void StreamMixerAlsaInputImpl::SetVolumeMultiplier(float multiplier) { |
if (multiplier < 0.0f) |
multiplier = 0.0f; |
volume_multiplier_ = multiplier; |
+ slew_volume_.SetVolume(volume_multiplier_); |
+} |
+ |
+bool StreamMixerAlsaInputImpl::VolumeScaleAccumulate(const float* src, |
+ int frames, |
+ float* dest) { |
+ return slew_volume_.ProcessFMAC(src, frames, dest); |
} |
} // namespace media |