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

Unified Diff: media/filters/ffmpeg_demuxer.cc

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_demuxer.cc
===================================================================
--- media/filters/ffmpeg_demuxer.cc (revision 12628)
+++ media/filters/ffmpeg_demuxer.cc (working copy)
@@ -88,8 +88,11 @@
}
FFmpegDemuxerStream::~FFmpegDemuxerStream() {
- // Since |input_queue_| and |output_queue_| use scoped_refptr everything
- // should get released.
+ // Since |buffer_queue_| uses scoped_refptr everything will get released.
+ while (!read_queue_.empty()) {
+ delete read_queue_.front();
+ read_queue_.pop_front();
+ }
}
// static
@@ -108,7 +111,7 @@
bool FFmpegDemuxerStream::HasPendingReads() {
AutoLock auto_lock(lock_);
- return !output_queue_.empty();
+ return !read_queue_.empty();
}
void FFmpegDemuxerStream::EnqueuePacket(AVPacket* packet) {
@@ -118,7 +121,7 @@
DCHECK(buffer);
{
AutoLock auto_lock(lock_);
- input_queue_.push_back(buffer);
+ buffer_queue_.push_back(buffer);
}
FulfillPendingReads();
}
@@ -127,11 +130,11 @@
return media_format_;
}
-void FFmpegDemuxerStream::Read(Assignable<Buffer>* buffer) {
- DCHECK(buffer);
+void FFmpegDemuxerStream::Read(Callback1<Buffer*>::Type* read_callback) {
+ DCHECK(read_callback);
{
AutoLock auto_lock(lock_);
- output_queue_.push_back(scoped_refptr< Assignable<Buffer> >(buffer));
+ read_queue_.push_back(read_callback);
}
if (FulfillPendingReads()) {
demuxer_->ScheduleDemux();
@@ -141,21 +144,20 @@
bool FFmpegDemuxerStream::FulfillPendingReads() {
bool pending_reads = false;
while (true) {
- scoped_refptr<Buffer> buffer_in;
- scoped_refptr< Assignable<Buffer> > buffer_out;
+ scoped_refptr<Buffer> buffer;
+ scoped_ptr<Callback1<Buffer*>::Type> read_callback;
{
AutoLock auto_lock(lock_);
- pending_reads = !output_queue_.empty();
- if (input_queue_.empty() || output_queue_.empty()) {
+ pending_reads = !read_queue_.empty();
+ if (buffer_queue_.empty() || read_queue_.empty()) {
break;
}
- buffer_in = input_queue_.front();
- buffer_out = output_queue_.front();
- input_queue_.pop_front();
- output_queue_.pop_front();
+ buffer = buffer_queue_.front();
+ read_callback.reset(read_queue_.front());
+ buffer_queue_.pop_front();
+ read_queue_.pop_front();
}
- buffer_out->SetBuffer(buffer_in);
- buffer_out->OnAssignment();
+ read_callback->Run(buffer);
}
return pending_reads;
}
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698