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/renderer/media/webrtc_audio_renderer.h" | 5 #include "content/renderer/media/webrtc_audio_renderer.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 | 443 |
444 void WebRtcAudioRenderer::SetVolume(float volume) { | 444 void WebRtcAudioRenderer::SetVolume(float volume) { |
445 DCHECK(thread_checker_.CalledOnValidThread()); | 445 DCHECK(thread_checker_.CalledOnValidThread()); |
446 DCHECK(volume >= 0.0f && volume <= 1.0f); | 446 DCHECK(volume >= 0.0f && volume <= 1.0f); |
447 | 447 |
448 playing_state_.set_volume(volume); | 448 playing_state_.set_volume(volume); |
449 OnPlayStateChanged(media_stream_, &playing_state_); | 449 OnPlayStateChanged(media_stream_, &playing_state_); |
450 } | 450 } |
451 | 451 |
452 base::TimeDelta WebRtcAudioRenderer::GetCurrentRenderTime() const { | 452 base::TimeDelta WebRtcAudioRenderer::GetCurrentRenderTime() const { |
453 return base::TimeDelta(); | 453 DCHECK(thread_checker_.CalledOnValidThread()); |
| 454 base::AutoLock auto_lock(lock_); |
| 455 return current_time_; |
454 } | 456 } |
455 | 457 |
456 bool WebRtcAudioRenderer::IsLocalRenderer() const { | 458 bool WebRtcAudioRenderer::IsLocalRenderer() const { |
457 return false; | 459 return false; |
458 } | 460 } |
459 | 461 |
460 int WebRtcAudioRenderer::Render(media::AudioBus* audio_bus, | 462 int WebRtcAudioRenderer::Render(media::AudioBus* audio_bus, |
461 int audio_delay_milliseconds) { | 463 int audio_delay_milliseconds) { |
462 base::AutoLock auto_lock(lock_); | 464 base::AutoLock auto_lock(lock_); |
463 if (!source_) | 465 if (!source_) |
(...skipping 24 matching lines...) Expand all Loading... |
488 << fifo_frame_delay << ", " | 490 << fifo_frame_delay << ", " |
489 << audio_bus->frames() << ")"; | 491 << audio_bus->frames() << ")"; |
490 | 492 |
491 int output_delay_milliseconds = audio_delay_milliseconds_; | 493 int output_delay_milliseconds = audio_delay_milliseconds_; |
492 output_delay_milliseconds += fifo_delay_milliseconds_; | 494 output_delay_milliseconds += fifo_delay_milliseconds_; |
493 DVLOG(2) << "output_delay_milliseconds: " << output_delay_milliseconds; | 495 DVLOG(2) << "output_delay_milliseconds: " << output_delay_milliseconds; |
494 | 496 |
495 // We need to keep render data for the |source_| regardless of |state_|, | 497 // We need to keep render data for the |source_| regardless of |state_|, |
496 // otherwise the data will be buffered up inside |source_|. | 498 // otherwise the data will be buffered up inside |source_|. |
497 source_->RenderData(audio_bus, sink_params_.sample_rate(), | 499 source_->RenderData(audio_bus, sink_params_.sample_rate(), |
498 output_delay_milliseconds); | 500 output_delay_milliseconds, |
| 501 ¤t_time_); |
499 | 502 |
500 // Avoid filling up the audio bus if we are not playing; instead | 503 // Avoid filling up the audio bus if we are not playing; instead |
501 // return here and ensure that the returned value in Render() is 0. | 504 // return here and ensure that the returned value in Render() is 0. |
502 if (state_ != PLAYING) | 505 if (state_ != PLAYING) |
503 audio_bus->Zero(); | 506 audio_bus->Zero(); |
504 } | 507 } |
505 | 508 |
506 void WebRtcAudioRenderer::UpdateSourceVolume( | 509 void WebRtcAudioRenderer::UpdateSourceVolume( |
507 webrtc::AudioSourceInterface* source) { | 510 webrtc::AudioSourceInterface* source) { |
508 DCHECK(thread_checker_.CalledOnValidThread()); | 511 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 if (RemovePlayingState(source, state)) | 584 if (RemovePlayingState(source, state)) |
582 EnterPauseState(); | 585 EnterPauseState(); |
583 } else if (AddPlayingState(source, state)) { | 586 } else if (AddPlayingState(source, state)) { |
584 EnterPlayState(); | 587 EnterPlayState(); |
585 } | 588 } |
586 UpdateSourceVolume(source); | 589 UpdateSourceVolume(source); |
587 } | 590 } |
588 } | 591 } |
589 | 592 |
590 } // namespace content | 593 } // namespace content |
OLD | NEW |