Index: media/filters/fake_video_decoder.cc |
diff --git a/media/filters/fake_video_decoder.cc b/media/filters/fake_video_decoder.cc |
index 1df718227a57cfdc75355e9bc9af4f646fd1a192..05dc410f870bc1a6fad5ddbd7da11f6f7955b191 100644 |
--- a/media/filters/fake_video_decoder.cc |
+++ b/media/filters/fake_video_decoder.cc |
@@ -25,7 +25,19 @@ FakeVideoDecoder::FakeVideoDecoder(int decoding_delay, |
} |
FakeVideoDecoder::~FakeVideoDecoder() { |
- DCHECK_EQ(state_, STATE_UNINITIALIZED); |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ if (state_ == STATE_UNINITIALIZED) |
+ return; |
+ |
+ if (!init_cb_.IsNull()) |
+ SatisfyInit(); |
+ if (!held_decode_callbacks_.empty()) |
+ SatisfyDecode(); |
+ if (!reset_cb_.IsNull()) |
+ SatisfyReset(); |
+ |
+ decoded_frames_.clear(); |
} |
void FakeVideoDecoder::Initialize(const VideoDecoderConfig& config, |
@@ -64,10 +76,10 @@ void FakeVideoDecoder::Decode(const scoped_refptr<DecoderBuffer>& buffer, |
max_parallel_decoding_requests_); |
int buffer_size = buffer->end_of_stream() ? 0 : buffer->data_size(); |
- DecodeCB wrapped_decode_cb = |
- BindToCurrentLoop(base::Bind(&FakeVideoDecoder::OnFrameDecoded, |
- weak_factory_.GetWeakPtr(), |
- buffer_size, decode_cb)); |
+ DecodeCB wrapped_decode_cb = base::Bind(&FakeVideoDecoder::OnFrameDecoded, |
+ weak_factory_.GetWeakPtr(), |
+ buffer_size, |
+ BindToCurrentLoop(decode_cb)); |
if (state_ == STATE_ERROR) { |
wrapped_decode_cb.Run(kDecodeError); |
@@ -100,20 +112,6 @@ void FakeVideoDecoder::Reset(const base::Closure& closure) { |
DoReset(); |
} |
-void FakeVideoDecoder::Stop() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- |
- if (!init_cb_.IsNull()) |
- SatisfyInit(); |
- if (!held_decode_callbacks_.empty()) |
- SatisfyDecode(); |
- if (!reset_cb_.IsNull()) |
- SatisfyReset(); |
- |
- decoded_frames_.clear(); |
- state_ = STATE_UNINITIALIZED; |
-} |
- |
void FakeVideoDecoder::HoldNextInit() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
init_cb_.HoldCallback(); |