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

Unified Diff: media/filters/decoder_base.h

Issue 155469: Splitting media filter's Initialize() into Create() + callback and Seek() + callback. (Closed)
Patch Set: Fixed valgrind errors Created 11 years, 5 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/audio_renderer_base_unittest.cc ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/decoder_base.h
diff --git a/media/filters/decoder_base.h b/media/filters/decoder_base.h
index 775d3f961e9bf77a38e772354c34a16b23c6b71b..3e1ba52c89a4c6f2de388aa869f6635a2efcfa7d 100644
--- a/media/filters/decoder_base.h
+++ b/media/filters/decoder_base.h
@@ -33,16 +33,18 @@ class DecoderBase : public Decoder {
NewRunnableMethod(this, &DecoderBase::StopTask));
}
- virtual void Seek(base::TimeDelta time) {
+ virtual void Seek(base::TimeDelta time,
+ FilterCallback* callback) {
this->message_loop()->PostTask(FROM_HERE,
- NewRunnableMethod(this, &DecoderBase::SeekTask, time));
+ NewRunnableMethod(this, &DecoderBase::SeekTask, time, callback));
}
// Decoder implementation.
- virtual bool Initialize(DemuxerStream* demuxer_stream) {
+ virtual void Initialize(DemuxerStream* demuxer_stream,
+ FilterCallback* callback) {
this->message_loop()->PostTask(FROM_HERE,
- NewRunnableMethod(this, &DecoderBase::InitializeTask, demuxer_stream));
- return true;
+ NewRunnableMethod(this, &DecoderBase::InitializeTask, demuxer_stream,
+ callback));
}
virtual const MediaFormat& media_format() { return media_format_; }
@@ -127,8 +129,9 @@ class DecoderBase : public Decoder {
state_ = STOPPED;
}
- void SeekTask(base::TimeDelta time) {
+ void SeekTask(base::TimeDelta time, FilterCallback* callback) {
DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ scoped_ptr<FilterCallback> c(callback);
// Delegate to the subclass first.
OnSeek(time);
@@ -139,24 +142,30 @@ class DecoderBase : public Decoder {
// Turn on the seeking flag so that we can discard buffers until a
// discontinuous buffer is received.
seeking_ = true;
+
+ // For now, signal that we're done seeking.
+ // TODO(scherkus): implement asynchronous seeking for decoder_base.h
+ callback->Run();
}
- void InitializeTask(DemuxerStream* demuxer_stream) {
+ void InitializeTask(DemuxerStream* demuxer_stream, FilterCallback* callback) {
DCHECK_EQ(MessageLoop::current(), this->message_loop());
DCHECK(state_ == UNINITIALIZED);
DCHECK(!demuxer_stream_);
+ scoped_ptr<FilterCallback> c(callback);
demuxer_stream_ = demuxer_stream;
// Delegate to subclass first.
if (!OnInitialize(demuxer_stream_)) {
this->host()->Error(PIPELINE_ERROR_DECODE);
+ callback->Run();
return;
}
// TODO(scherkus): subclass shouldn't mutate superclass media format.
DCHECK(!media_format_.empty()) << "Subclass did not set media_format_";
state_ = INITIALIZED;
- this->host()->InitializationComplete();
+ callback->Run();
}
void ReadTask(ReadCallback* read_callback) {
« no previous file with comments | « media/filters/audio_renderer_base_unittest.cc ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698