Index: media/renderers/audio_renderer_impl.h |
diff --git a/media/renderers/audio_renderer_impl.h b/media/renderers/audio_renderer_impl.h |
index f7915d31a607bdc512ac96704a1ddc7085c8d5cf..93d19898dc9f74a2d5e0876ac322c2ea672d27b3 100644 |
--- a/media/renderers/audio_renderer_impl.h |
+++ b/media/renderers/audio_renderer_impl.h |
@@ -36,6 +36,7 @@ |
#include "media/base/time_source.h" |
#include "media/filters/audio_renderer_algorithm.h" |
#include "media/filters/decoder_stream.h" |
+#include "media/renderers/default_renderer_factory.h" |
namespace base { |
class SingleThreadTaskRunner; |
@@ -62,7 +63,7 @@ class MEDIA_EXPORT AudioRendererImpl |
AudioRendererImpl( |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
AudioRendererSink* sink, |
- ScopedVector<AudioDecoder> decoders, |
+ const CreateAudioDecodersCB& create_audio_decoders_cb, |
const scoped_refptr<MediaLog>& media_log); |
~AudioRendererImpl() override; |
@@ -96,16 +97,18 @@ class MEDIA_EXPORT AudioRendererImpl |
// Important detail: being in kPlaying doesn't imply that audio is being |
// rendered. Rather, it means that the renderer is ready to go. The actual |
// rendering of audio is controlled via Start/StopRendering(). |
+ // Audio renderer can be reinitialized completely by calling Initialize again |
+ // when it is in a kFlushed state. |
// |
// kUninitialized |
- // | Initialize() |
- // | |
- // V |
- // kInitializing |
- // | Decoders initialized |
- // | |
- // V Decoders reset |
- // kFlushed <------------------ kFlushing |
+ // +----> | Initialize() |
+ // | | |
+ // | V |
+ // | kInitializing |
+ // | | Decoders initialized |
+ // | | |
+ // | V Decoders reset |
+ // +- kFlushed <------------------ kFlushing |
// | StartPlaying() ^ |
// | | |
// | | Flush() |
@@ -253,6 +256,10 @@ class MEDIA_EXPORT AudioRendererImpl |
// Simple state tracking variable. |
State state_; |
+ // TODO(servolk): Consider using DecoderFactory here instead of the |
+ // CreateAudioDecodersCB. |
+ CreateAudioDecodersCB create_audio_decoders_cb_; |
+ |
BufferingState buffering_state_; |
// Keep track of whether or not the sink is playing and whether we should be |