Chromium Code Reviews| Index: content/renderer/media/renderer_webaudiodevice_impl.h |
| diff --git a/content/renderer/media/renderer_webaudiodevice_impl.h b/content/renderer/media/renderer_webaudiodevice_impl.h |
| index 13ce0f15948ed6ae16f24e70dac458e5f20cc975..458c6643ef50f35cb08508c93c1eac1ec185c85a 100644 |
| --- a/content/renderer/media/renderer_webaudiodevice_impl.h |
| +++ b/content/renderer/media/renderer_webaudiodevice_impl.h |
| @@ -6,14 +6,21 @@ |
| #define CONTENT_RENDERER_MEDIA_RENDERER_WEBAUDIODEVICE_IMPL_H_ |
| #include "base/memory/ref_counted.h" |
| +#include "base/memory/weak_ptr.h" |
|
DaleCurtis
2015/06/22 22:49:42
Remove?
qinmin
2015/06/23 00:01:54
Done.
|
| #include "base/threading/thread_checker.h" |
| #include "media/audio/audio_parameters.h" |
| #include "media/base/audio_renderer_sink.h" |
| #include "third_party/WebKit/public/platform/WebAudioDevice.h" |
| #include "third_party/WebKit/public/platform/WebVector.h" |
| +namespace base { |
| +class SingleThreadTaskRunner; |
| +} |
| + |
| namespace media { |
| class AudioOutputDevice; |
| +class AudioTimestampHelper; |
|
DaleCurtis
2015/06/22 22:49:42
Remove?
qinmin
2015/06/23 00:01:54
Done.
|
| +class NullAudioSink; |
| } |
| namespace content { |
| @@ -38,6 +45,10 @@ class RendererWebAudioDeviceImpl |
| void OnRenderError() override; |
| private: |
| + // Helper method to start and stop the |null_audio_sink_|. |
|
DaleCurtis
2015/06/22 22:49:43
Remove?
qinmin
2015/06/23 00:01:54
Done.
|
| + void StartNullAudioSink(); |
| + void StopNullAudioSink(); |
| + |
| const media::AudioParameters params_; |
| // Weak reference to the callback into WebKit code. |
| @@ -53,6 +64,29 @@ class RendererWebAudioDeviceImpl |
| // ID to allow browser to select the correct input device for unified IO. |
| int session_id_; |
| + // Timeticks when the silence starts. |
| + base::TimeTicks first_silence_time_ ; |
| + |
| + // TaskRunner to post callbacks to the render thread. |
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| + |
| + // A fake audio sink object that consumes data when long period of silence |
| + // audio is detected. This object lives on the render thread. |
| + scoped_refptr<media::NullAudioSink> null_audio_sink_; |
| + |
| + // Whether audio output is directed to |null_audio_sink_|. |
| + bool is_using_null_audio_sink_; |
| + |
| + // First audio buffer after silence finishes. We store this buffer so that |
| + // it can be sent to the |output_device_| later after switching from |
| + // |null_audio_sink_|. |
| + scoped_ptr<media::AudioBus> first_buffer_after_silence_; |
| + |
| + // Weak pointer for posting callbacks. |
|
DaleCurtis
2015/06/22 22:49:42
Remove these?
qinmin
2015/06/23 00:01:54
Done.
|
| + base::WeakPtr<RendererWebAudioDeviceImpl> weak_this_; |
| + // NOTE: Weak pointers must be invalidated before all other member variables. |
| + base::WeakPtrFactory<RendererWebAudioDeviceImpl> weak_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(RendererWebAudioDeviceImpl); |
| }; |