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

Unified Diff: content/browser/renderer_host/media/audio_renderer_host.cc

Issue 14600025: Replace AudioSilenceDetector with an AudioPowerMonitor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use CancelableCallback instead of extra-task for close reply. Created 7 years, 5 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: content/browser/renderer_host/media/audio_renderer_host.cc
diff --git a/content/browser/renderer_host/media/audio_renderer_host.cc b/content/browser/renderer_host/media/audio_renderer_host.cc
index 6c3aa3b3f128f3e6317c7a983e60e4899d3198da..bf87d062d10e6b7f1d0395e1676e3003b41497f5 100644
--- a/content/browser/renderer_host/media/audio_renderer_host.cc
+++ b/content/browser/renderer_host/media/audio_renderer_host.cc
@@ -63,7 +63,7 @@ class AudioRendererHost::AudioEntry
// media::AudioOutputController::EventHandler implementation.
virtual void OnCreated() OVERRIDE;
virtual void OnPlaying() OVERRIDE;
- virtual void OnAudible(bool is_audible) OVERRIDE;
+ virtual void OnPowerMeasured(float power_dbfs, bool clipped) OVERRIDE;
virtual void OnPaused() OVERRIDE;
virtual void OnError() OVERRIDE;
virtual void OnDeviceChange(int new_buffer_size, int new_sample_rate)
@@ -144,7 +144,7 @@ void AudioRendererHost::AudioEntry::OnCreated() {
BrowserThread::PostTask(
BrowserThread::IO,
FROM_HERE,
- base::Bind(&AudioRendererHost::DoCompleteCreation, host_, this));
+ base::Bind(&AudioRendererHost::DoCompleteCreation, host_, stream_id_));
}
void AudioRendererHost::AudioEntry::OnPlaying() {
@@ -157,12 +157,13 @@ void AudioRendererHost::AudioEntry::OnPlaying() {
stream_id_, media::AudioOutputIPCDelegate::kPlaying)));
}
-void AudioRendererHost::AudioEntry::OnAudible(bool is_audible) {
+void AudioRendererHost::AudioEntry::OnPowerMeasured(float power_dbfs,
+ bool clipped) {
BrowserThread::PostTask(
BrowserThread::IO,
FROM_HERE,
- base::Bind(&AudioRendererHost::DoNotifyAudibleState, host_,
- this, is_audible));
+ base::Bind(&AudioRendererHost::DoNotifyAudioPowerLevel, host_,
+ stream_id_, power_dbfs, clipped));
}
void AudioRendererHost::AudioEntry::OnPaused() {
@@ -192,12 +193,18 @@ void AudioRendererHost::AudioEntry::OnDeviceChange(int new_buffer_size,
stream_id_, new_buffer_size, new_sample_rate)));
}
-void AudioRendererHost::DoCompleteCreation(AudioEntry* entry) {
+void AudioRendererHost::DoCompleteCreation(int stream_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
if (!PeerHandle()) {
NOTREACHED() << "Renderer process handle is invalid.";
- ReportErrorAndClose(entry->stream_id());
+ ReportErrorAndClose(stream_id);
+ return;
+ }
+
+ AudioEntry* const entry = LookupById(stream_id);
+ if (!entry) {
+ ReportErrorAndClose(stream_id);
return;
}
@@ -235,22 +242,22 @@ void AudioRendererHost::DoCompleteCreation(AudioEntry* entry) {
media::PacketSizeInBytes(entry->shared_memory()->requested_size())));
}
-void AudioRendererHost::DoNotifyAudibleState(AudioEntry* entry,
- bool is_audible) {
+void AudioRendererHost::DoNotifyAudioPowerLevel(int stream_id,
+ float power_dbfs,
+ bool clipped) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
MediaObserver* const media_observer =
GetContentClient()->browser()->GetMediaObserver();
if (media_observer) {
- DVLOG(1) << "AudioRendererHost@" << this
- << "::DoNotifyAudibleState(is_audible=" << is_audible
- << ") for stream_id=" << entry->stream_id();
-
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableAudibleNotifications)) {
- media_observer->OnAudioStreamPlayingChanged(
- render_process_id_, entry->render_view_id(), entry->stream_id(),
- is_audible);
+ AudioEntry* const entry = LookupById(stream_id);
+ if (entry) {
+ media_observer->OnAudioStreamPlayingChanged(
+ render_process_id_, entry->render_view_id(), entry->stream_id(),
+ true, power_dbfs, clipped);
+ }
}
}
}
@@ -432,7 +439,8 @@ void AudioRendererHost::DeleteEntry(scoped_ptr<AudioEntry> entry) {
GetContentClient()->browser()->GetMediaObserver();
if (media_observer) {
media_observer->OnAudioStreamPlayingChanged(
- render_process_id_, entry->render_view_id(), entry->stream_id(), false);
+ render_process_id_, entry->render_view_id(), entry->stream_id(),
+ false, -std::numeric_limits<float>::infinity(), false);
}
// Notify the media observer.

Powered by Google App Engine
This is Rietveld 408576698