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

Unified Diff: content/renderer/media/webrtc_audio_renderer.cc

Issue 1666363005: Switching audio clients to using RestartableAudioRendererSink interface as a sink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: export fix Created 4 years, 10 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/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);

Powered by Google App Engine
This is Rietveld 408576698