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

Unified Diff: chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc

Issue 2341783004: [chromecast] Slew stream volume changes in StreamMixerAlsa. (Closed)
Patch Set: fix unittests Created 4 years, 3 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
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..342161fbcb1d9e132120dd7f7134e18be65f221f 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,7 +74,7 @@ StreamMixerAlsaInputImpl::StreamMixerAlsaInputImpl(
caller_task_runner_(base::ThreadTaskRunnerHandle::Get()),
resample_ratio_(1.0),
state_(kStateUninitialized),
- volume_multiplier_(1.0f),
+ slew_volume_(kMaxSlewTimeUpMs, kMaxSlewTimeDownMs),
queued_frames_(0),
queued_frames_including_resampler_(0),
current_buffer_offset_(0),
@@ -96,10 +99,6 @@ int StreamMixerAlsaInputImpl::input_samples_per_second() const {
return input_samples_per_second_;
}
-float StreamMixerAlsaInputImpl::volume_multiplier() const {
- return volume_multiplier_;
-}
-
bool StreamMixerAlsaInputImpl::primary() const {
return primary_;
}
@@ -121,6 +120,7 @@ void StreamMixerAlsaInputImpl::Initialize(
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();
fade_frames_remaining_ = NormalFadeFrames();
@@ -503,7 +503,14 @@ void StreamMixerAlsaInputImpl::SetVolumeMultiplier(float multiplier) {
multiplier = 1.0f;
if (multiplier < 0.0f)
multiplier = 0.0f;
- volume_multiplier_ = multiplier;
+ slew_volume_.SetVolume(multiplier);
+}
+
+void StreamMixerAlsaInputImpl::VolumeScaleAccumulate(bool repeat_transition,
+ const float* src,
+ int frames,
+ float* dest) {
+ slew_volume_.ProcessFMAC(repeat_transition, src, frames, dest);
}
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698