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

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

Issue 53126: Demuxer stream now uses a callback instead of Assignable template. Cleaning ... (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 | « media/base/mock_media_filters.h ('k') | media/filters/ffmpeg_demuxer.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) 2009 The Chromium Authors. All rights reserved. Use of this 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the 2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file. 3 // LICENSE file.
4 4
5 // A base class that provides the plumbing for a decoder filters. 5 // A base class that provides the plumbing for a decoder filters.
6 6
7 #ifndef MEDIA_FILTERS_DECODER_BASE_H_ 7 #ifndef MEDIA_FILTERS_DECODER_BASE_H_
8 #define MEDIA_FILTERS_DECODER_BASE_H_ 8 #define MEDIA_FILTERS_DECODER_BASE_H_
9 9
10 #include <deque> 10 #include <deque>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // Audio or Video decoder. 63 // Audio or Video decoder.
64 virtual void Read(Assignable<Output>* output) { 64 virtual void Read(Assignable<Output>* output) {
65 AutoLock auto_lock(lock_); 65 AutoLock auto_lock(lock_);
66 if (IsRunning()) { 66 if (IsRunning()) {
67 output->AddRef(); 67 output->AddRef();
68 output_queue_.push_back(output); 68 output_queue_.push_back(output);
69 ScheduleProcessTask(); 69 ScheduleProcessTask();
70 } 70 }
71 } 71 }
72 72
73 // AssignableBuffer callback. 73 void OnReadComplete(Buffer* buffer) {
74 virtual void OnAssignment(Buffer* buffer) {
75 AutoLock auto_lock(lock_); 74 AutoLock auto_lock(lock_);
76 if (IsRunning()) { 75 if (IsRunning()) {
77 buffer->AddRef(); 76 buffer->AddRef();
78 input_queue_.push_back(buffer); 77 input_queue_.push_back(buffer);
79 --pending_reads_; 78 --pending_reads_;
80 ScheduleProcessTask(); 79 ScheduleProcessTask();
81 } 80 }
82 } 81 }
83 82
84 protected: 83 protected:
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 bool did_read = false; 175 bool did_read = false;
177 if (IsRunning() && 176 if (IsRunning() &&
178 pending_reads_ + input_queue_.size() < output_queue_.size()) { 177 pending_reads_ + input_queue_.size() < output_queue_.size()) {
179 did_read = true; 178 did_read = true;
180 size_t read = output_queue_.size() - pending_reads_ - input_queue_.size(); 179 size_t read = output_queue_.size() - pending_reads_ - input_queue_.size();
181 pending_reads_ += read; 180 pending_reads_ += read;
182 { 181 {
183 AutoUnlock unlock(lock_); 182 AutoUnlock unlock(lock_);
184 while (read) { 183 while (read) {
185 demuxer_stream_-> 184 demuxer_stream_->
186 Read(new AssignableBuffer<DecoderBase, Buffer>(this)); 185 Read(NewCallback(this, &DecoderBase::OnReadComplete));
187 --read; 186 --read;
188 } 187 }
189 } 188 }
190 } 189 }
191 return did_read; 190 return did_read;
192 } 191 }
193 192
194 // If the |input_queue_| has any buffers, this method will call the derived 193 // If the |input_queue_| has any buffers, this method will call the derived
195 // class's OnDecode() method. 194 // class's OnDecode() method.
196 bool ProcessInput() { 195 bool ProcessInput() {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 // Queue of buffers supplied by the renderer through the Read() method. 286 // Queue of buffers supplied by the renderer through the Read() method.
288 typedef std::deque<Assignable<Output>*> OutputQueue; 287 typedef std::deque<Assignable<Output>*> OutputQueue;
289 OutputQueue output_queue_; 288 OutputQueue output_queue_;
290 289
291 DISALLOW_COPY_AND_ASSIGN(DecoderBase); 290 DISALLOW_COPY_AND_ASSIGN(DecoderBase);
292 }; 291 };
293 292
294 } // namespace media 293 } // namespace media
295 294
296 #endif // MEDIA_FILTERS_DECODER_BASE_H_ 295 #endif // MEDIA_FILTERS_DECODER_BASE_H_
OLDNEW
« no previous file with comments | « media/base/mock_media_filters.h ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698