| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/filters/ffmpeg_video_decoder.h" | 5 #include "media/filters/ffmpeg_video_decoder.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 | 8 |
| 9 #include "base/task.h" | 9 #include "base/task.h" |
| 10 #include "media/base/callback.h" | 10 #include "media/base/callback.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 case CODEC_ID_MPEG4: | 90 case CODEC_ID_MPEG4: |
| 91 config.codec = kCodecMPEG4; break; | 91 config.codec = kCodecMPEG4; break; |
| 92 case CODEC_ID_VP8: | 92 case CODEC_ID_VP8: |
| 93 config.codec = kCodecVP8; break; | 93 config.codec = kCodecVP8; break; |
| 94 default: | 94 default: |
| 95 NOTREACHED(); | 95 NOTREACHED(); |
| 96 } | 96 } |
| 97 config.opaque_context = av_stream; | 97 config.opaque_context = av_stream; |
| 98 config.width = width_; | 98 config.width = width_; |
| 99 config.height = height_; | 99 config.height = height_; |
| 100 state_ = kInitializing; | |
| 101 decode_engine_->Initialize(message_loop(), this, NULL, config); | 100 decode_engine_->Initialize(message_loop(), this, NULL, config); |
| 102 } | 101 } |
| 103 | 102 |
| 104 void FFmpegVideoDecoder::OnInitializeComplete(const VideoCodecInfo& info) { | 103 void FFmpegVideoDecoder::OnInitializeComplete(const VideoCodecInfo& info) { |
| 105 DCHECK_EQ(MessageLoop::current(), message_loop()); | 104 DCHECK_EQ(MessageLoop::current(), message_loop()); |
| 106 DCHECK(initialize_callback_.get()); | 105 DCHECK(initialize_callback_.get()); |
| 107 | 106 |
| 108 info_ = info; // Save a copy. | 107 info_ = info; // Save a copy. |
| 109 | 108 |
| 110 if (info.success) { | 109 if (info.success) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 133 NewRunnableMethod(this, | 132 NewRunnableMethod(this, |
| 134 &FFmpegVideoDecoder::Stop, | 133 &FFmpegVideoDecoder::Stop, |
| 135 callback)); | 134 callback)); |
| 136 return; | 135 return; |
| 137 } | 136 } |
| 138 | 137 |
| 139 DCHECK_EQ(MessageLoop::current(), message_loop()); | 138 DCHECK_EQ(MessageLoop::current(), message_loop()); |
| 140 DCHECK(!uninitialize_callback_.get()); | 139 DCHECK(!uninitialize_callback_.get()); |
| 141 | 140 |
| 142 uninitialize_callback_.reset(callback); | 141 uninitialize_callback_.reset(callback); |
| 143 if (state_ != kUnInitialized) | 142 decode_engine_->Uninitialize(); |
| 144 decode_engine_->Uninitialize(); | |
| 145 else | |
| 146 OnUninitializeComplete(); | |
| 147 } | 143 } |
| 148 | 144 |
| 149 void FFmpegVideoDecoder::OnUninitializeComplete() { | 145 void FFmpegVideoDecoder::OnUninitializeComplete() { |
| 150 DCHECK_EQ(MessageLoop::current(), message_loop()); | 146 DCHECK_EQ(MessageLoop::current(), message_loop()); |
| 151 DCHECK(uninitialize_callback_.get()); | 147 DCHECK(uninitialize_callback_.get()); |
| 152 | 148 |
| 153 AutoCallbackRunner done_runner(uninitialize_callback_.release()); | 149 AutoCallbackRunner done_runner(uninitialize_callback_.release()); |
| 154 state_ = kStopped; | 150 state_ = kStopped; |
| 155 | 151 |
| 156 // TODO(jiesun): Destroy the decoder context. | 152 // TODO(jiesun): Destroy the decoder context. |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 VideoFrameReady(video_frame); | 436 VideoFrameReady(video_frame); |
| 441 } | 437 } |
| 442 } | 438 } |
| 443 | 439 |
| 444 void FFmpegVideoDecoder::SetVideoDecodeEngineForTest( | 440 void FFmpegVideoDecoder::SetVideoDecodeEngineForTest( |
| 445 VideoDecodeEngine* engine) { | 441 VideoDecodeEngine* engine) { |
| 446 decode_engine_.reset(engine); | 442 decode_engine_.reset(engine); |
| 447 } | 443 } |
| 448 | 444 |
| 449 } // namespace media | 445 } // namespace media |
| OLD | NEW |