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

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: nit fixes 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 49fc1857f83b3771212249d1dc3dec6efa067201..a920f7f4897b680713b5742b8f2d3d5b9c3cefae 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,11 +220,14 @@ 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::NewAudioRendererSink(
+ AudioDeviceFactory::kSourceWebRtc, source_render_frame_id_, session_id_,
+ output_device_id_, security_origin_);
+
+ if (sink_->GetOutputDevice()->GetDeviceStatus() !=
+ media::OUTPUT_DEVICE_STATUS_OK) {
return false;
+ }
PrepareSink();
{
@@ -238,6 +240,7 @@ bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
state_ = PAUSED;
}
sink_->Start();
+ sink_->Play(); // Not all the sinks play on start.
return true;
}
@@ -380,11 +383,13 @@ void WebRtcAudioRenderer::SwitchOutputDevice(
DCHECK_NE(state_, UNINITIALIZED);
}
- scoped_refptr<media::AudioOutputDevice> new_sink =
- AudioDeviceFactory::NewOutputDevice(source_render_frame_id_, session_id_,
- device_id, security_origin);
- if (new_sink->GetDeviceStatus() != media::OUTPUT_DEVICE_STATUS_OK) {
- callback.Run(new_sink->GetDeviceStatus());
+ scoped_refptr<media::AudioRendererSink> new_sink =
+ AudioDeviceFactory::NewAudioRendererSink(
+ AudioDeviceFactory::kSourceWebRtc, source_render_frame_id_,
+ session_id_, device_id, security_origin);
+ if (new_sink->GetOutputDevice()->GetDeviceStatus() !=
+ media::OUTPUT_DEVICE_STATUS_OK) {
+ callback.Run(new_sink->GetOutputDevice()->GetDeviceStatus());
return;
}
@@ -411,7 +416,7 @@ media::AudioParameters WebRtcAudioRenderer::GetOutputParameters() {
if (!sink_.get())
return media::AudioParameters();
- return sink_->GetOutputParameters();
+ return sink_->GetOutputDevice()->GetOutputParameters();
}
media::OutputDeviceStatus WebRtcAudioRenderer::GetDeviceStatus() {
@@ -419,7 +424,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 +623,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 +646,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);
« no previous file with comments | « content/renderer/media/webrtc_audio_renderer.h ('k') | content/renderer/media/webrtc_audio_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698