OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/renderer_host/media/audio_renderer_host.h" | 5 #include "content/browser/renderer_host/media/audio_renderer_host.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/process.h" | 10 #include "base/process.h" |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 // IPC Messages handler | 254 // IPC Messages handler |
255 bool AudioRendererHost::OnMessageReceived(const IPC::Message& message, | 255 bool AudioRendererHost::OnMessageReceived(const IPC::Message& message, |
256 bool* message_was_ok) { | 256 bool* message_was_ok) { |
257 bool handled = true; | 257 bool handled = true; |
258 IPC_BEGIN_MESSAGE_MAP_EX(AudioRendererHost, message, *message_was_ok) | 258 IPC_BEGIN_MESSAGE_MAP_EX(AudioRendererHost, message, *message_was_ok) |
259 IPC_MESSAGE_HANDLER(AudioHostMsg_CreateStream, OnCreateStream) | 259 IPC_MESSAGE_HANDLER(AudioHostMsg_CreateStream, OnCreateStream) |
260 IPC_MESSAGE_HANDLER(AudioHostMsg_AssociateStreamWithProducer, | 260 IPC_MESSAGE_HANDLER(AudioHostMsg_AssociateStreamWithProducer, |
261 OnAssociateStreamWithProducer) | 261 OnAssociateStreamWithProducer) |
262 IPC_MESSAGE_HANDLER(AudioHostMsg_PlayStream, OnPlayStream) | 262 IPC_MESSAGE_HANDLER(AudioHostMsg_PlayStream, OnPlayStream) |
263 IPC_MESSAGE_HANDLER(AudioHostMsg_PauseStream, OnPauseStream) | 263 IPC_MESSAGE_HANDLER(AudioHostMsg_PauseStream, OnPauseStream) |
264 IPC_MESSAGE_HANDLER(AudioHostMsg_FlushStream, OnFlushStream) | |
265 IPC_MESSAGE_HANDLER(AudioHostMsg_CloseStream, OnCloseStream) | 264 IPC_MESSAGE_HANDLER(AudioHostMsg_CloseStream, OnCloseStream) |
266 IPC_MESSAGE_HANDLER(AudioHostMsg_SetVolume, OnSetVolume) | 265 IPC_MESSAGE_HANDLER(AudioHostMsg_SetVolume, OnSetVolume) |
267 IPC_MESSAGE_UNHANDLED(handled = false) | 266 IPC_MESSAGE_UNHANDLED(handled = false) |
268 IPC_END_MESSAGE_MAP_EX() | 267 IPC_END_MESSAGE_MAP_EX() |
269 | 268 |
270 return handled; | 269 return handled; |
271 } | 270 } |
272 | 271 |
273 void AudioRendererHost::OnCreateStream( | 272 void AudioRendererHost::OnCreateStream( |
274 int stream_id, const media::AudioParameters& params) { | 273 int stream_id, const media::AudioParameters& params) { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 if (!entry) { | 366 if (!entry) { |
368 SendErrorMessage(stream_id); | 367 SendErrorMessage(stream_id); |
369 return; | 368 return; |
370 } | 369 } |
371 | 370 |
372 entry->controller()->Pause(); | 371 entry->controller()->Pause(); |
373 if (media_internals_) | 372 if (media_internals_) |
374 media_internals_->OnSetAudioStreamPlaying(this, stream_id, false); | 373 media_internals_->OnSetAudioStreamPlaying(this, stream_id, false); |
375 } | 374 } |
376 | 375 |
377 void AudioRendererHost::OnFlushStream(int stream_id) { | |
378 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
379 | |
380 AudioEntry* entry = LookupById(stream_id); | |
381 if (!entry) { | |
382 SendErrorMessage(stream_id); | |
383 return; | |
384 } | |
385 | |
386 entry->controller()->Flush(); | |
387 if (media_internals_) | |
388 media_internals_->OnSetAudioStreamStatus(this, stream_id, "flushed"); | |
389 } | |
390 | |
391 void AudioRendererHost::OnSetVolume(int stream_id, double volume) { | 376 void AudioRendererHost::OnSetVolume(int stream_id, double volume) { |
392 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
393 | 378 |
394 AudioEntry* entry = LookupById(stream_id); | 379 AudioEntry* entry = LookupById(stream_id); |
395 if (!entry) { | 380 if (!entry) { |
396 SendErrorMessage(stream_id); | 381 SendErrorMessage(stream_id); |
397 return; | 382 return; |
398 } | 383 } |
399 | 384 |
400 // Make sure the volume is valid. | 385 // Make sure the volume is valid. |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 } | 454 } |
470 | 455 |
471 AudioRendererHost::AudioEntry* AudioRendererHost::LookupById(int stream_id) { | 456 AudioRendererHost::AudioEntry* AudioRendererHost::LookupById(int stream_id) { |
472 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 457 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
473 | 458 |
474 AudioEntryMap::const_iterator i = audio_entries_.find(stream_id); | 459 AudioEntryMap::const_iterator i = audio_entries_.find(stream_id); |
475 return i != audio_entries_.end() ? i->second : NULL; | 460 return i != audio_entries_.end() ? i->second : NULL; |
476 } | 461 } |
477 | 462 |
478 } // namespace content | 463 } // namespace content |
OLD | NEW |