Chromium Code Reviews| Index: content/renderer/media/webrtc_audio_renderer.cc |
| diff --git a/content/renderer/media/webrtc_audio_renderer.cc b/content/renderer/media/webrtc_audio_renderer.cc |
| index 5b172484428c613e60ceb4a967cf207fb1d3dbe0..2aeec203ac90796d37e518ee532b8b68b8281de6 100644 |
| --- a/content/renderer/media/webrtc_audio_renderer.cc |
| +++ b/content/renderer/media/webrtc_audio_renderer.cc |
| @@ -18,7 +18,6 @@ |
| #include "content/renderer/media/webrtc_audio_device_impl.h" |
| #include "content/renderer/media/webrtc_logging.h" |
| #include "content/renderer/render_frame_impl.h" |
| -#include "media/audio/audio_output_device.h" |
| #include "media/audio/audio_parameters.h" |
| #include "media/audio/sample_rates.h" |
| #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
| @@ -221,10 +220,12 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) { |
| DCHECK(!source_); |
| } |
| - sink_ = |
| - AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_, |
| - output_device_id_, security_origin_); |
| - if (sink_->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) |
| + sink_ = AudioDeviceFactory::NewOutputDevice( |
| + AudioDeviceFactory::kSourceWebRTC, source_render_frame_id_, session_id_, |
| + output_device_id_, security_origin_); |
| + |
| + if (sink_->GetOutputDevice()->GetDeviceStatus() != |
| + media::OUTPUT_DEVICE_STATUS_OK) |
|
DaleCurtis
2016/02/10 23:25:33
Add {} around multi-line conditionals.
o1ka
2016/02/11 17:18:23
Done.
|
| return false; |
| PrepareSink(); |
| @@ -238,6 +239,7 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) { |
| state_ = PAUSED; |
| } |
| sink_->Start(); |
| + sink_->Play(); // Not all the sinks play on start. |
| return true; |
| } |
| @@ -380,11 +382,13 @@ void WebRtcAudioRenderer::SwitchOutputDevice( |
| DCHECK_NE(state_, UNINITIALIZED); |
| } |
| - scoped_refptr<media::AudioOutputDevice> new_sink = |
| - AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_, |
| + scoped_refptr<media::AudioRendererSink> new_sink = |
| + AudioDeviceFactory::NewOutputDevice(AudioDeviceFactory::kSourceWebRTC, |
| + source_render_frame_id_, session_id_, |
| device_id, security_origin); |
| - if (new_sink->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) { |
| - callback.Run(new_sink->GetDeviceStatus()); |
| + if (new_sink->GetOutputDevice()->GetDeviceStatus() != |
| + media::OUTPUT_DEVICE_STATUS_OK) { |
| + callback.Run(new_sink->GetOutputDevice()->GetDeviceStatus()); |
| return; |
| } |
| @@ -411,7 +415,7 @@ media::AudioParameters WebRtcAudioRenderer::GetOutputParameters() { |
| if (!sink_.get()) |
| return media::AudioParameters(); |
| - return sink_->GetOutputParameters(); |
| + return sink_->GetOutputDevice()->GetOutputParameters(); |
| } |
| media::OutputDeviceStatus WebRtcAudioRenderer::GetDeviceStatus() { |
| @@ -419,7 +423,7 @@ media::OutputDeviceStatus WebRtcAudioRenderer::GetDeviceStatus() { |
| if (!sink_.get()) |
| return media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL; |
| - return sink_->GetDeviceStatus(); |
| + return sink_->GetOutputDevice()->GetDeviceStatus(); |
| } |
| int WebRtcAudioRenderer::Render(media::AudioBus* audio_bus, |
| @@ -618,7 +622,8 @@ void WebRtcAudioRenderer::PrepareSink() { |
| // layer will be opened up at 192kHz but WebRTC will provide data at 48kHz |
| // which will then be resampled by the audio converted on the browser side |
| // to match the native audio layer. |
| - int sample_rate = sink_->GetOutputParameters().sample_rate(); |
| + int sample_rate = |
| + sink_->GetOutputDevice()->GetOutputParameters().sample_rate(); |
| DVLOG(1) << "Audio output hardware sample rate: " << sample_rate; |
| if (sample_rate >= 192000) { |
| DVLOG(1) << "Resampling from 48000 to " << sample_rate << " is required"; |
| @@ -640,7 +645,8 @@ void WebRtcAudioRenderer::PrepareSink() { |
| // Setup sink parameters. |
| const int sink_frames_per_buffer = GetOptimalBufferSize( |
| - sample_rate, sink_->GetOutputParameters().frames_per_buffer()); |
| + sample_rate, |
| + sink_->GetOutputDevice()->GetOutputParameters().frames_per_buffer()); |
| new_sink_params.set_sample_rate(sample_rate); |
| new_sink_params.set_frames_per_buffer(sink_frames_per_buffer); |