Index: media/base/filter_collection.cc |
diff --git a/media/base/filter_collection.cc b/media/base/filter_collection.cc |
index 42f42d05201bb6afaf71e8e032578a1332d3e09a..f26403ce50c1dd422bd03a0c316fea7183a18e35 100644 |
--- a/media/base/filter_collection.cc |
+++ b/media/base/filter_collection.cc |
@@ -25,8 +25,8 @@ void FilterCollection::AddVideoDecoder(VideoDecoder* filter) { |
AddFilter(VIDEO_DECODER, filter); |
} |
-void FilterCollection::AddAudioDecoder(AudioDecoder* filter) { |
- AddFilter(AUDIO_DECODER, filter); |
+void FilterCollection::AddAudioDecoder(AudioDecoder* audio_decoder) { |
+ audio_decoders_.push_back(audio_decoder); |
} |
void FilterCollection::AddVideoRenderer(VideoRenderer* filter) { |
@@ -38,11 +38,12 @@ void FilterCollection::AddAudioRenderer(AudioRenderer* filter) { |
} |
bool FilterCollection::IsEmpty() const { |
- return filters_.empty(); |
+ return filters_.empty() && audio_decoders_.empty(); |
} |
void FilterCollection::Clear() { |
filters_.clear(); |
+ audio_decoders_.clear(); |
} |
void FilterCollection::SelectVideoDecoder( |
@@ -50,9 +51,13 @@ void FilterCollection::SelectVideoDecoder( |
SelectFilter<VIDEO_DECODER>(filter_out); |
} |
-void FilterCollection::SelectAudioDecoder( |
- scoped_refptr<AudioDecoder>* filter_out) { |
- SelectFilter<AUDIO_DECODER>(filter_out); |
+void FilterCollection::SelectAudioDecoder(scoped_refptr<AudioDecoder>* out) { |
+ if (audio_decoders_.empty()) { |
+ *out = NULL; |
+ return; |
+ } |
+ *out = audio_decoders_.front(); |
+ audio_decoders_.pop_front(); |
} |
void FilterCollection::SelectVideoRenderer( |