Index: content/renderer/media/webrtc_local_audio_renderer.cc |
diff --git a/content/renderer/media/webrtc_local_audio_renderer.cc b/content/renderer/media/webrtc_local_audio_renderer.cc |
index 017f63239e275bcb0c4fcac96d48f3a4fe4fb4ed..6a92d906d32d36585588e42762d22ac4a91d6f91 100644 |
--- a/content/renderer/media/webrtc_local_audio_renderer.cc |
+++ b/content/renderer/media/webrtc_local_audio_renderer.cc |
@@ -56,21 +56,16 @@ void WebRtcLocalAudioRenderer::OnRenderError() { |
NOTIMPLEMENTED(); |
} |
-// content::WebRtcAudioCapturerSink implementation |
-int WebRtcLocalAudioRenderer::CaptureData(const std::vector<int>& channels, |
- const int16* audio_data, |
- int sample_rate, |
- int number_of_channels, |
- int number_of_frames, |
- int audio_delay_milliseconds, |
- int current_volume, |
- bool need_audio_processing, |
- bool key_pressed) { |
+// content::MediaStreamAudioSink implementation |
+void WebRtcLocalAudioRenderer::OnData(const int16* audio_data, |
+ int sample_rate, |
+ int number_of_channels, |
+ int number_of_frames) { |
DCHECK(capture_thread_checker_.CalledOnValidThread()); |
TRACE_EVENT0("audio", "WebRtcLocalAudioRenderer::CaptureData"); |
base::AutoLock auto_lock(thread_lock_); |
if (!playing_ || !volume_ || !loopback_fifo_) |
- return 0; |
+ return; |
// Push captured audio to FIFO so it can be read by a local sink. |
if (loopback_fifo_->frames() + number_of_frames <= |
@@ -88,13 +83,11 @@ int WebRtcLocalAudioRenderer::CaptureData(const std::vector<int>& channels, |
} else { |
DVLOG(1) << "FIFO is full"; |
} |
- |
- return 0; |
} |
-void WebRtcLocalAudioRenderer::SetCaptureFormat( |
+void WebRtcLocalAudioRenderer::OnSetFormat( |
const media::AudioParameters& params) { |
- DVLOG(1) << "WebRtcLocalAudioRenderer::SetCaptureFormat()"; |
+ DVLOG(1) << "WebRtcLocalAudioRenderer::OnSetFormat()"; |
// If the source is restarted, we might have changed to another capture |
// thread. |
capture_thread_checker_.DetachFromThread(); |
@@ -148,7 +141,7 @@ void WebRtcLocalAudioRenderer::SetCaptureFormat( |
// WebRtcLocalAudioRenderer::WebRtcLocalAudioRenderer implementation. |
WebRtcLocalAudioRenderer::WebRtcLocalAudioRenderer( |
- WebRtcLocalAudioTrack* audio_track, |
+ const blink::WebMediaStreamTrack& audio_track, |
int source_render_view_id, |
int session_id, |
int frames_per_buffer) |
@@ -160,7 +153,6 @@ WebRtcLocalAudioRenderer::WebRtcLocalAudioRenderer( |
frames_per_buffer_(frames_per_buffer), |
volume_(0.0), |
sink_started_(false) { |
- DCHECK(audio_track); |
DVLOG(1) << "WebRtcLocalAudioRenderer::WebRtcLocalAudioRenderer()"; |
} |
@@ -174,11 +166,8 @@ void WebRtcLocalAudioRenderer::Start() { |
DVLOG(1) << "WebRtcLocalAudioRenderer::Start()"; |
DCHECK(message_loop_->BelongsToCurrentThread()); |
- if (!audio_track_) |
- return; // Stop() has been called, so never start again. |
- |
// We get audio data from |audio_track_|... |
- audio_track_->AddSink(this); |
+ MediaStreamAudioSink::AddToAudioTrack(this, audio_track_); |
// ...and |sink_| will get audio data from us. |
DCHECK(!sink_.get()); |
sink_ = AudioDeviceFactory::NewOutputDevice(source_render_view_id_); |
@@ -213,12 +202,7 @@ void WebRtcLocalAudioRenderer::Stop() { |
sink_started_ = false; |
// Ensure that the capturer stops feeding us with captured audio. |
- // Note that, we do not stop the capturer here since it may still be used by |
- // the WebRTC ADM. |
- if (audio_track_) { |
- audio_track_->RemoveSink(this); |
- audio_track_ = NULL; |
- } |
+ MediaStreamAudioSink::RemoveFromAudioTrack(this, audio_track_); |
} |
void WebRtcLocalAudioRenderer::Play() { |