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

Side by Side Diff: media/base/factory.h

Issue 3452030: FBTF: Moves code to the headers. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 2 months 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 unified diff | Download patch
« no previous file with comments | « media/base/buffers.cc ('k') | media/base/factory.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 // A filter factory handles the creation of filters given a FilterType (i.e., 5 // A filter factory handles the creation of filters given a FilterType (i.e.,
6 // FILTER_AUDIO_DECODER) and a MediaFormat. Generally a filter factory handles 6 // FILTER_AUDIO_DECODER) and a MediaFormat. Generally a filter factory handles
7 // creating a single type of filter, with multiple factories combined into a 7 // creating a single type of filter, with multiple factories combined into a
8 // FilterFactoryCollection. We use some template tricks to enforce type-safety 8 // FilterFactoryCollection. We use some template tricks to enforce type-safety
9 // and eliminate casting for callers. 9 // and eliminate casting for callers.
10 // 10 //
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 // Attempt to create a filter of the given type using the information stored 60 // Attempt to create a filter of the given type using the information stored
61 // in |media_format|. If successful, the filter is returned. If the filter 61 // in |media_format|. If successful, the filter is returned. If the filter
62 // cannot be created for any reason, NULL is returned. 62 // cannot be created for any reason, NULL is returned.
63 // 63 //
64 // It is assumed that the MediaFilter interface can be safely cast to the 64 // It is assumed that the MediaFilter interface can be safely cast to the
65 // corresponding interface type (i.e., FILTER_AUDIO_DECODER -> AudioDecoder). 65 // corresponding interface type (i.e., FILTER_AUDIO_DECODER -> AudioDecoder).
66 virtual MediaFilter* Create(FilterType filter_type, 66 virtual MediaFilter* Create(FilterType filter_type,
67 const MediaFormat& media_format) = 0; 67 const MediaFormat& media_format) = 0;
68 68
69 friend class base::RefCountedThreadSafe<FilterFactory>; 69 friend class base::RefCountedThreadSafe<FilterFactory>;
70 virtual ~FilterFactory() {} 70 FilterFactory();
71 virtual ~FilterFactory();
71 }; 72 };
72 73
73 74
74 // Maintains a collection of FilterFactories. 75 // Maintains a collection of FilterFactories.
75 class FilterFactoryCollection : public FilterFactory { 76 class FilterFactoryCollection : public FilterFactory {
76 public: 77 public:
77 FilterFactoryCollection() {} 78 FilterFactoryCollection();
78 79
79 // Adds a factory to the end of the collection. 80 // Adds a factory to the end of the collection.
80 void AddFactory(FilterFactory* factory) { 81 void AddFactory(FilterFactory* factory);
81 factories_.push_back(factory);
82 }
83 82
84 protected: 83 protected:
85 // Attempts to create a filter by walking down the list of filter factories. 84 // Attempts to create a filter by walking down the list of filter factories.
86 MediaFilter* Create(FilterType filter_type, const MediaFormat& media_format) { 85 MediaFilter* Create(FilterType filter_type, const MediaFormat& media_format);
87 MediaFilter* filter = NULL;
88 for (FactoryVector::iterator factory = factories_.begin();
89 !filter && factory != factories_.end();
90 ++factory) {
91 filter = (*factory)->Create(filter_type, media_format);
92 }
93 return filter;
94 }
95 86
96 private: 87 private:
97 ~FilterFactoryCollection() {} 88 ~FilterFactoryCollection();
98 89
99 typedef std::vector< scoped_refptr<FilterFactory> > FactoryVector; 90 typedef std::vector< scoped_refptr<FilterFactory> > FactoryVector;
100 FactoryVector factories_; 91 FactoryVector factories_;
101 92
102 DISALLOW_COPY_AND_ASSIGN(FilterFactoryCollection); 93 DISALLOW_COPY_AND_ASSIGN(FilterFactoryCollection);
103 }; 94 };
104 95
105 //----------------------------------------------------------------------------- 96 //-----------------------------------------------------------------------------
106 97
107 // This template is used by classes to implement a type-safe filter factory. 98 // This template is used by classes to implement a type-safe filter factory.
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 244
254 scoped_refptr<Filter> filter_; 245 scoped_refptr<Filter> filter_;
255 bool create_called_; 246 bool create_called_;
256 247
257 DISALLOW_COPY_AND_ASSIGN(InstanceFilterFactory); 248 DISALLOW_COPY_AND_ASSIGN(InstanceFilterFactory);
258 }; 249 };
259 250
260 } // namespace media 251 } // namespace media
261 252
262 #endif // MEDIA_BASE_FACTORY_H_ 253 #endif // MEDIA_BASE_FACTORY_H_
OLDNEW
« no previous file with comments | « media/base/buffers.cc ('k') | media/base/factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698