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 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ |
6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ | 6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ |
7 | 7 |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
10 #include "content/renderer/media/webrtc_audio_device_impl.h" | 10 #include "content/renderer/media/webrtc_audio_device_impl.h" |
| 11 #include "media/audio/audio_output_device.h" |
11 #include "media/base/audio_decoder.h" | 12 #include "media/base/audio_decoder.h" |
12 #include "media/base/audio_renderer_sink.h" | |
13 #include "webkit/media/media_stream_audio_renderer.h" | 13 #include "webkit/media/media_stream_audio_renderer.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 class WebRtcAudioRendererSource; | 17 class WebRtcAudioRendererSource; |
18 | 18 |
19 // This renderer handles calls from the pipeline and WebRtc ADM. It is used | 19 // This renderer handles calls from the pipeline and WebRtc ADM. It is used |
20 // for connecting WebRtc MediaStream with pipeline. | 20 // for connecting WebRtc MediaStream with pipeline. |
21 class CONTENT_EXPORT WebRtcAudioRenderer | 21 class CONTENT_EXPORT WebRtcAudioRenderer |
22 : NON_EXPORTED_BASE(public media::AudioRendererSink::RenderCallback), | 22 : NON_EXPORTED_BASE(public media::AudioRendererSink::RenderCallback), |
23 NON_EXPORTED_BASE(public webkit_media::MediaStreamAudioRenderer) { | 23 NON_EXPORTED_BASE(public webkit_media::MediaStreamAudioRenderer) { |
24 public: | 24 public: |
25 WebRtcAudioRenderer(); | 25 explicit WebRtcAudioRenderer(int source_render_view_id); |
26 | 26 |
27 // Initialize function called by clients like WebRtcAudioDeviceImpl. Note, | 27 // Initialize function called by clients like WebRtcAudioDeviceImpl. Note, |
28 // Stop() has to be called before |source| is deleted. | 28 // Stop() has to be called before |source| is deleted. |
29 // Returns false if Initialize() fails. | 29 // Returns false if Initialize() fails. |
30 bool Initialize(WebRtcAudioRendererSource* source); | 30 bool Initialize(WebRtcAudioRendererSource* source); |
31 | 31 |
32 // Methods called by WebMediaPlayerMS and WebRtcAudioDeviceImpl. | 32 // Methods called by WebMediaPlayerMS and WebRtcAudioDeviceImpl. |
33 // MediaStreamAudioRenderer implementation. | 33 // MediaStreamAudioRenderer implementation. |
34 virtual void Play() OVERRIDE; | 34 virtual void Play() OVERRIDE; |
35 virtual void Pause() OVERRIDE; | 35 virtual void Pause() OVERRIDE; |
(...skipping 10 matching lines...) Expand all Loading... |
46 PAUSED, | 46 PAUSED, |
47 }; | 47 }; |
48 // Flag to keep track the state of the renderer. | 48 // Flag to keep track the state of the renderer. |
49 State state_; | 49 State state_; |
50 | 50 |
51 // media::AudioRendererSink::RenderCallback implementation. | 51 // media::AudioRendererSink::RenderCallback implementation. |
52 virtual int Render(media::AudioBus* audio_bus, | 52 virtual int Render(media::AudioBus* audio_bus, |
53 int audio_delay_milliseconds) OVERRIDE; | 53 int audio_delay_milliseconds) OVERRIDE; |
54 virtual void OnRenderError() OVERRIDE; | 54 virtual void OnRenderError() OVERRIDE; |
55 | 55 |
| 56 // The render view in which the audio is rendered into |sink_|. |
| 57 const int source_render_view_id_; |
| 58 |
56 // The sink (destination) for rendered audio. | 59 // The sink (destination) for rendered audio. |
57 scoped_refptr<media::AudioRendererSink> sink_; | 60 scoped_refptr<media::AudioOutputDevice> sink_; |
58 | 61 |
59 // Audio data source from the browser process. | 62 // Audio data source from the browser process. |
60 WebRtcAudioRendererSource* source_; | 63 WebRtcAudioRendererSource* source_; |
61 | 64 |
62 // Cached values of utilized audio parameters. Platform dependent. | 65 // Cached values of utilized audio parameters. Platform dependent. |
63 media::AudioParameters params_; | 66 media::AudioParameters params_; |
64 | 67 |
65 // Buffers used for temporary storage during render callbacks. | 68 // Buffers used for temporary storage during render callbacks. |
66 // Allocated during initialization. | 69 // Allocated during initialization. |
67 scoped_array<int16> buffer_; | 70 scoped_array<int16> buffer_; |
68 | 71 |
69 // Protect access to |state_|. | 72 // Protect access to |state_|. |
70 base::Lock lock_; | 73 base::Lock lock_; |
71 | 74 |
72 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioRenderer); | 75 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioRenderer); |
73 }; | 76 }; |
74 | 77 |
75 } // namespace content | 78 } // namespace content |
76 | 79 |
77 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ | 80 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_RENDERER_H_ |
OLD | NEW |