Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1135)

Unified Diff: media/base/media_filter_collection.cc

Issue 4653005: Move FilterType into MediaFilterCollection (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixed windows build buster & presubmit check failure Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/media_filter_collection.h ('k') | media/base/media_filter_collection_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/media_filter_collection.cc
diff --git a/media/base/media_filter_collection.cc b/media/base/media_filter_collection.cc
index 2c90412761516d1e9cb0e82d591f90b805618bee..a1380c492fdc65c008e71f55478ccf2fe1630fe2 100644
--- a/media/base/media_filter_collection.cc
+++ b/media/base/media_filter_collection.cc
@@ -9,8 +9,28 @@ namespace media {
MediaFilterCollection::MediaFilterCollection() {
}
-void MediaFilterCollection::AddFilter(MediaFilter* filter) {
- filters_.push_back(filter);
+void MediaFilterCollection::AddDataSource(DataSource* filter) {
+ AddFilter(DATA_SOURCE, filter);
+}
+
+void MediaFilterCollection::AddDemuxer(Demuxer* filter) {
+ AddFilter(DEMUXER, filter);
+}
+
+void MediaFilterCollection::AddVideoDecoder(VideoDecoder* filter) {
+ AddFilter(VIDEO_DECODER, filter);
+}
+
+void MediaFilterCollection::AddAudioDecoder(AudioDecoder* filter) {
+ AddFilter(AUDIO_DECODER, filter);
+}
+
+void MediaFilterCollection::AddVideoRenderer(VideoRenderer* filter) {
+ AddFilter(VIDEO_RENDERER, filter);
+}
+
+void MediaFilterCollection::AddAudioRenderer(AudioRenderer* filter) {
+ AddFilter(AUDIO_RENDERER, filter);
}
bool MediaFilterCollection::IsEmpty() const {
@@ -21,19 +41,60 @@ void MediaFilterCollection::Clear() {
filters_.clear();
}
+void MediaFilterCollection::SelectDataSource(
+ scoped_refptr<DataSource>* filter_out) {
+ SelectFilter<DATA_SOURCE>(filter_out);
+}
+
+void MediaFilterCollection::SelectDemuxer(scoped_refptr<Demuxer>* filter_out) {
+ SelectFilter<DEMUXER>(filter_out);
+}
+
+void MediaFilterCollection::SelectVideoDecoder(
+ scoped_refptr<VideoDecoder>* filter_out) {
+ SelectFilter<VIDEO_DECODER>(filter_out);
+}
+
+void MediaFilterCollection::SelectAudioDecoder(
+ scoped_refptr<AudioDecoder>* filter_out) {
+ SelectFilter<AUDIO_DECODER>(filter_out);
+}
+
+void MediaFilterCollection::SelectVideoRenderer(
+ scoped_refptr<VideoRenderer>* filter_out) {
+ SelectFilter<VIDEO_RENDERER>(filter_out);
+}
+
+void MediaFilterCollection::SelectAudioRenderer(
+ scoped_refptr<AudioRenderer>* filter_out) {
+ SelectFilter<AUDIO_RENDERER>(filter_out);
+}
+
+void MediaFilterCollection::AddFilter(FilterType filter_type,
+ MediaFilter* filter) {
+ filters_.push_back(FilterListElement(filter_type, filter));
+}
+
+template<MediaFilterCollection::FilterType filter_type, class Filter>
+void MediaFilterCollection::SelectFilter(scoped_refptr<Filter>* filter_out) {
+ scoped_refptr<MediaFilter> filter;
+ SelectFilter(filter_type, &filter);
+ *filter_out = reinterpret_cast<Filter*>(filter.get());
+}
+
void MediaFilterCollection::SelectFilter(
FilterType filter_type,
scoped_refptr<MediaFilter>* filter_out) {
- std::list<scoped_refptr<MediaFilter> >::iterator it = filters_.begin();
+ FilterList::iterator it = filters_.begin();
while (it != filters_.end()) {
- if ((*it)->filter_type() == filter_type)
+ if (it->first == filter_type)
break;
++it;
}
if (it != filters_.end()) {
- *filter_out = it->get();
+ *filter_out = it->second.get();
filters_.erase(it);
}
}
« no previous file with comments | « media/base/media_filter_collection.h ('k') | media/base/media_filter_collection_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698