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

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

Issue 42521: Ability for demuxer clients to get to FFmpeg's AVStream object exposed as an ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | media/base/mock_media_filters.h » ('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 // Filters are connected in a strongly typed manner, with downstream filters 5 // Filters are connected in a strongly typed manner, with downstream filters
6 // always reading data from upstream filters. Upstream filters have no clue 6 // always reading data from upstream filters. Upstream filters have no clue
7 // who is actually reading from them, and return the results via OnAssignment 7 // who is actually reading from them, and return the results via OnAssignment
8 // using the AssignableInterface<SomeBufferType> interface: 8 // using the AssignableInterface<SomeBufferType> interface:
9 // 9 //
10 // DemuxerStream(Video) <- VideoDecoder <- VideoRenderer 10 // DemuxerStream(Video) <- VideoDecoder <- VideoRenderer
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 mime_type == mime_type::kApplicationOctetStream); 140 mime_type == mime_type::kApplicationOctetStream);
141 } 141 }
142 142
143 // Initializes this filter, returns true if successful, false otherwise. 143 // Initializes this filter, returns true if successful, false otherwise.
144 virtual bool Initialize(DataSource* data_source) = 0; 144 virtual bool Initialize(DataSource* data_source) = 0;
145 145
146 // Returns the number of streams available 146 // Returns the number of streams available
147 virtual size_t GetNumberOfStreams() = 0; 147 virtual size_t GetNumberOfStreams() = 0;
148 148
149 // Returns the stream for the given index, NULL otherwise 149 // Returns the stream for the given index, NULL otherwise
150 virtual DemuxerStream* GetStream(int stream_id) = 0; 150 virtual scoped_refptr<DemuxerStream> GetStream(int stream_id) = 0;
151 }; 151 };
152 152
153 153
154 class DemuxerStream { 154 class DemuxerStream : public base::RefCountedThreadSafe<DemuxerStream> {
155 public: 155 public:
156 // Returns the MediaFormat for this filter. 156 // Returns the MediaFormat for this filter.
157 virtual const MediaFormat* GetMediaFormat() = 0; 157 virtual const MediaFormat* GetMediaFormat() = 0;
158 158
159 // Schedules a read and takes ownership of the given buffer. 159 // Schedules a read and takes ownership of the given buffer.
160 virtual void Read(Assignable<Buffer>* buffer) = 0; 160 virtual void Read(Assignable<Buffer>* buffer) = 0;
161 161
162 // Given a class that supports the |Interface| and a related static method
163 // interface_id(), which returns a const char*, this method returns true if
164 // the class returns an interface pointer and assigns the pointer to
165 // |interface_out|. Otherwise this method returns false.
166 template <class Interface>
167 bool QueryInterface(scoped_refptr<Interface>* interface_out) {
168 void* i = QueryInterface(Interface::interface_id());
169 *interface_out = reinterpret_cast<Interface*>(i);
170 return (NULL != i);
171 };
172
162 protected: 173 protected:
174 // Optional method that is implemented by filters that support extended
175 // interfaces. The filter should return a pointer to the interface
176 // associated with the |interface_id| string if they support it, otherwise
177 // return NULL to indicate the interface is unknown. The derived filter
178 // should NOT AddRef() the interface. The DemuxerStream::QueryInterface()
179 // public template function will assign the interface to a scoped_refptr<>.
180 virtual void* QueryInterface(const char* interface_id) { return NULL; }
181
182 friend class base::RefCountedThreadSafe<DemuxerStream>;
163 virtual ~DemuxerStream() {} 183 virtual ~DemuxerStream() {}
164 }; 184 };
165 185
166 186
167 class VideoDecoder : public MediaFilter { 187 class VideoDecoder : public MediaFilter {
168 public: 188 public:
169 static const FilterType filter_type() { 189 static const FilterType filter_type() {
170 return FILTER_VIDEO_DECODER; 190 return FILTER_VIDEO_DECODER;
171 } 191 }
172 192
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 // Initializes this filter, returns true if successful, false otherwise. 254 // Initializes this filter, returns true if successful, false otherwise.
235 virtual bool Initialize(AudioDecoder* decoder) = 0; 255 virtual bool Initialize(AudioDecoder* decoder) = 0;
236 256
237 // Sets the output volume. 257 // Sets the output volume.
238 virtual void SetVolume(float volume) = 0; 258 virtual void SetVolume(float volume) = 0;
239 }; 259 };
240 260
241 } // namespace media 261 } // namespace media
242 262
243 #endif // MEDIA_BASE_FILTERS_H_ 263 #endif // MEDIA_BASE_FILTERS_H_
OLDNEW
« no previous file with comments | « no previous file | media/base/mock_media_filters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698