diff options
Diffstat (limited to 'media/tools/player_wtl')
-rw-r--r-- | media/tools/player_wtl/movie.cc | 21 | ||||
-rw-r--r-- | media/tools/player_wtl/movie.h | 4 | ||||
-rw-r--r-- | media/tools/player_wtl/view.h | 1 |
3 files changed, 16 insertions, 10 deletions
diff --git a/media/tools/player_wtl/movie.cc b/media/tools/player_wtl/movie.cc index 2efd715..fe73490 100644 --- a/media/tools/player_wtl/movie.cc +++ b/media/tools/player_wtl/movie.cc @@ -8,6 +8,7 @@ #include "base/threading/platform_thread.h" #include "base/utf_string_conversions.h" #include "media/base/filter_collection.h" +#include "media/base/message_loop_factory_impl.h" #include "media/base/pipeline_impl.h" #include "media/filters/audio_renderer_impl.h" #include "media/filters/ffmpeg_audio_decoder.h" @@ -60,12 +61,17 @@ bool Movie::Open(const wchar_t* url, WtlVideoRenderer* video_renderer) { Close(); } + message_loop_factory_.reset(new media::MessageLoopFactoryImpl()); + // Create filter collection. scoped_ptr<FilterCollection> collection(new FilterCollection()); collection->AddDataSource(new FileDataSource()); - collection->AddAudioDecoder(new FFmpegAudioDecoder()); - collection->AddDemuxer(new FFmpegDemuxer()); - collection->AddVideoDecoder(new FFmpegVideoDecoder(NULL)); + collection->AddAudioDecoder(new FFmpegAudioDecoder( + message_loop_factory_->GetMessageLoop("AudioDecoderThread"))); + collection->AddDemuxer(new FFmpegDemuxer( + message_loop_factory_->GetMessageLoop("DemuxThread"))); + collection->AddVideoDecoder(new FFmpegVideoDecoder( + message_loop_factory_->GetMessageLoop("VideoDecoderThread"), NULL)); if (enable_audio_) { collection->AddAudioRenderer(new AudioRendererImpl()); @@ -74,9 +80,8 @@ bool Movie::Open(const wchar_t* url, WtlVideoRenderer* video_renderer) { } collection->AddVideoRenderer(video_renderer); - thread_.reset(new base::Thread("PipelineThread")); - thread_->Start(); - pipeline_ = new PipelineImpl(thread_->message_loop()); + pipeline_ = new PipelineImpl( + message_loop_factory_->GetMessageLoop("PipelineThread")); // Create and start our pipeline. pipeline_->Start(collection.release(), WideToUTF8(std::wstring(url)), NULL); @@ -168,10 +173,10 @@ bool Movie::GetDumpYuvFileEnable() { void Movie::Close() { if (pipeline_) { pipeline_->Stop(NULL); - thread_->Stop(); pipeline_ = NULL; - thread_.reset(); } + + message_loop_factory_.reset(); } } // namespace media diff --git a/media/tools/player_wtl/movie.h b/media/tools/player_wtl/movie.h index ea81b09..00708f9 100644 --- a/media/tools/player_wtl/movie.h +++ b/media/tools/player_wtl/movie.h @@ -11,7 +11,7 @@ #include "base/ref_counted.h" #include "base/scoped_ptr.h" -#include "base/threading/thread.h" +#include "media/base/message_loop_factory.h" template <typename T> struct DefaultSingletonTraits; class WtlVideoRenderer; @@ -83,7 +83,7 @@ class Movie { virtual ~Movie(); scoped_refptr<PipelineImpl> pipeline_; - scoped_ptr<base::Thread> thread_; + scoped_ptr<media::MessageLoopFactory> message_loop_factory_; bool enable_audio_; bool enable_draw_; diff --git a/media/tools/player_wtl/view.h b/media/tools/player_wtl/view.h index cbb0a48..5273cd5 100644 --- a/media/tools/player_wtl/view.h +++ b/media/tools/player_wtl/view.h @@ -9,6 +9,7 @@ #include <process.h> #include <string.h> +#include "base/logging.h" #include "media/base/video_frame.h" #include "media/base/yuv_convert.h" #include "media/tools/player_wtl/movie.h" |