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

Unified Diff: media/filters/decoder_base.h

Issue 6171009: Remove MessageLoop methods from Filter interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Applied more CR suggestions & removed message_loop() methods where possible. Created 9 years, 11 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/base/mock_filters.cc ('k') | media/filters/decoder_base_unittest.cc » ('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 f8b26abb645bfbc903a44e6e218bd66b4fa68091..7ddd16e159b7f3051f9d803290fb4f2ae680f1bb 100644
--- a/media/filters/decoder_base.h
+++ b/media/filters/decoder_base.h
@@ -26,17 +26,16 @@ namespace media {
template <class Decoder, class Output>
class DecoderBase : public Decoder {
public:
-
// Filter implementation.
virtual void Stop(FilterCallback* callback) {
- this->message_loop()->PostTask(
+ message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &DecoderBase::StopTask, callback));
}
virtual void Seek(base::TimeDelta time,
FilterCallback* callback) {
- this->message_loop()->PostTask(
+ message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &DecoderBase::SeekTask, time, callback));
}
@@ -44,7 +43,7 @@ class DecoderBase : public Decoder {
// Decoder implementation.
virtual void Initialize(DemuxerStream* demuxer_stream,
FilterCallback* callback) {
- this->message_loop()->PostTask(
+ message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this,
&DecoderBase::InitializeTask,
@@ -58,13 +57,14 @@ class DecoderBase : public Decoder {
// Note that this class is only used by the audio decoder, this will
// eventually be merged into FFmpegAudioDecoder.
virtual void ProduceAudioSamples(scoped_refptr<Output> output) {
- this->message_loop()->PostTask(FROM_HERE,
+ message_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this, &DecoderBase::ReadTask, output));
}
protected:
- DecoderBase()
- : pending_reads_(0),
+ explicit DecoderBase(MessageLoop* message_loop)
+ : message_loop_(message_loop),
+ pending_reads_(0),
pending_requests_(0),
state_(kUninitialized) {
}
@@ -78,7 +78,7 @@ class DecoderBase : public Decoder {
// It places an output buffer in the result queue. It must be called from
// within the OnDecode method.
void EnqueueResult(Output* output) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
if (!IsStopped()) {
result_queue_.push_back(output);
}
@@ -136,6 +136,9 @@ class DecoderBase : public Decoder {
}
}
+ // Provide access to subclasses.
+ MessageLoop* message_loop() { return message_loop_; }
+
private:
bool IsStopped() { return state_ == kStopped; }
@@ -146,12 +149,12 @@ class DecoderBase : public Decoder {
// TODO(scherkus): change the callback format to pass a scoped_refptr<> or
// better yet see if we can get away with not using reference counting.
scoped_refptr<Buffer> buffer_ref = buffer;
- this->message_loop()->PostTask(FROM_HERE,
+ message_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this, &DecoderBase::ReadCompleteTask, buffer_ref));
}
void StopTask(FilterCallback* callback) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
// Delegate to the subclass first.
DoStop(NewRunnableMethod(this, &DecoderBase::OnStopComplete, callback));
@@ -169,7 +172,7 @@ class DecoderBase : public Decoder {
}
void SeekTask(base::TimeDelta time, FilterCallback* callback) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
DCHECK_EQ(0u, pending_reads_) << "Pending reads should have completed";
DCHECK_EQ(0u, pending_requests_) << "Pending requests should be empty";
@@ -190,7 +193,7 @@ class DecoderBase : public Decoder {
}
void InitializeTask(DemuxerStream* demuxer_stream, FilterCallback* callback) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
CHECK(kUninitialized == state_);
CHECK(!demuxer_stream_);
demuxer_stream_ = demuxer_stream;
@@ -208,7 +211,7 @@ class DecoderBase : public Decoder {
scoped_ptr<bool> success_deleter(success);
AutoCallbackRunner done_runner(done_cb);
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
// Delegate to subclass first.
if (!*success) {
this->host()->SetError(PIPELINE_ERROR_DECODE);
@@ -220,7 +223,7 @@ class DecoderBase : public Decoder {
}
void ReadTask(scoped_refptr<Output> output) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
// TODO(scherkus): should reply with a null operation (empty buffer).
if (IsStopped())
@@ -239,7 +242,7 @@ class DecoderBase : public Decoder {
}
void ReadCompleteTask(scoped_refptr<Buffer> buffer) {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
DCHECK_GT(pending_reads_, 0u);
--pending_reads_;
if (IsStopped()) {
@@ -255,7 +258,7 @@ class DecoderBase : public Decoder {
//
// Return true if one read request is fulfilled.
bool FulfillPendingRead() {
- DCHECK_EQ(MessageLoop::current(), this->message_loop());
+ DCHECK_EQ(MessageLoop::current(), message_loop_);
if (!pending_requests_ || result_queue_.empty()) {
return false;
}
@@ -274,6 +277,8 @@ class DecoderBase : public Decoder {
return true;
}
+ MessageLoop* message_loop_;
+
// Tracks the number of asynchronous reads issued to |demuxer_stream_|.
// Using size_t since it is always compared against deque::size().
size_t pending_reads_;
« no previous file with comments | « media/base/mock_filters.cc ('k') | media/filters/decoder_base_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698