OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/tools/player_wtl/movie.h" | 5 #include "media/tools/player_wtl/movie.h" |
6 | 6 |
7 #include "base/memory/singleton.h" | 7 #include "base/memory/singleton.h" |
8 #include "base/threading/platform_thread.h" | 8 #include "base/threading/platform_thread.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "media/audio/audio_manager.h" | 10 #include "media/audio/audio_manager.h" |
11 #include "media/base/filter_collection.h" | 11 #include "media/base/filter_collection.h" |
12 #include "media/base/media_log.h" | 12 #include "media/base/media_log.h" |
13 #include "media/base/message_loop_factory_impl.h" | 13 #include "media/base/message_loop_factory_impl.h" |
14 #include "media/base/pipeline.h" | 14 #include "media/base/pipeline.h" |
15 #include "media/filters/ffmpeg_audio_decoder.h" | 15 #include "media/filters/ffmpeg_audio_decoder.h" |
16 #include "media/filters/ffmpeg_demuxer_factory.h" | 16 #include "media/filters/ffmpeg_demuxer_factory.h" |
17 #include "media/filters/ffmpeg_video_decoder.h" | 17 #include "media/filters/ffmpeg_video_decoder.h" |
18 #include "media/filters/file_data_source.h" | 18 #include "media/filters/file_data_source.h" |
19 #include "media/filters/null_audio_renderer.h" | 19 #include "media/filters/null_audio_renderer.h" |
20 #include "media/filters/reference_audio_renderer.h" | 20 #include "media/filters/reference_audio_renderer.h" |
21 #include "media/filters/video_renderer_base.h" | 21 #include "media/filters/video_renderer_base.h" |
22 | 22 |
23 using media::FFmpegAudioDecoder; | 23 using media::FFmpegAudioDecoder; |
24 using media::FFmpegDemuxerFactory; | 24 using media::FFmpegDemuxerFactory; |
25 using media::FFmpegVideoDecoder; | 25 using media::FFmpegVideoDecoder; |
26 using media::FileDataSource; | 26 using media::FileDataSource; |
27 using media::FilterCollection; | 27 using media::FilterCollection; |
28 using media::Pipeline; | 28 using media::Pipeline; |
29 using media::ReferenceAudioRenderer; | |
30 | 29 |
31 namespace media { | 30 namespace media { |
32 | 31 |
33 Movie::Movie() | 32 Movie::Movie() |
34 : audio_manager_(AudioManager::Create()), | 33 : audio_manager_(AudioManager::Create()), |
35 enable_audio_(true), | 34 enable_audio_(false), |
36 enable_draw_(true), | 35 enable_draw_(true), |
37 enable_dump_yuv_file_(false), | 36 enable_dump_yuv_file_(false), |
38 enable_pause_(false), | 37 enable_pause_(false), |
39 max_threads_(0), | 38 max_threads_(0), |
40 play_rate_(1.0f), | 39 play_rate_(1.0f), |
41 movie_dib_(NULL), | 40 movie_dib_(NULL), |
42 movie_hwnd_(0) { | 41 movie_hwnd_(0) { |
43 } | 42 } |
44 | 43 |
45 Movie::~Movie() { | 44 Movie::~Movie() { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 | 78 |
80 // Create filter collection. | 79 // Create filter collection. |
81 scoped_ptr<FilterCollection> collection(new FilterCollection()); | 80 scoped_ptr<FilterCollection> collection(new FilterCollection()); |
82 collection->SetDemuxerFactory(scoped_ptr<DemuxerFactory>( | 81 collection->SetDemuxerFactory(scoped_ptr<DemuxerFactory>( |
83 new FFmpegDemuxerFactory(data_source, pipeline_loop))); | 82 new FFmpegDemuxerFactory(data_source, pipeline_loop))); |
84 collection->AddAudioDecoder(new FFmpegAudioDecoder( | 83 collection->AddAudioDecoder(new FFmpegAudioDecoder( |
85 message_loop_factory_->GetMessageLoop("AudioDecoderThread"))); | 84 message_loop_factory_->GetMessageLoop("AudioDecoderThread"))); |
86 collection->AddVideoDecoder(new FFmpegVideoDecoder( | 85 collection->AddVideoDecoder(new FFmpegVideoDecoder( |
87 message_loop_factory_->GetMessageLoop("VideoDecoderThread"))); | 86 message_loop_factory_->GetMessageLoop("VideoDecoderThread"))); |
88 | 87 |
89 if (enable_audio_) { | 88 collection->AddAudioRenderer(new media::NullAudioRenderer()); |
90 collection->AddAudioRenderer( | |
91 new ReferenceAudioRenderer(audio_manager_)); | |
92 } else { | |
93 collection->AddAudioRenderer(new media::NullAudioRenderer()); | |
94 } | |
95 collection->AddVideoRenderer(video_renderer); | 89 collection->AddVideoRenderer(video_renderer); |
96 | 90 |
97 // Create and start our pipeline. | 91 // Create and start our pipeline. |
98 media::PipelineStatusNotification note; | 92 media::PipelineStatusNotification note; |
99 pipeline_->Start(collection.Pass(), url_utf8, note.Callback()); | 93 pipeline_->Start(collection.Pass(), url_utf8, note.Callback()); |
100 | 94 |
101 // Wait until the pipeline is fully initialized. | 95 // Wait until the pipeline is fully initialized. |
102 note.Wait(); | 96 note.Wait(); |
103 if (note.status() != PIPELINE_OK) | 97 if (note.status() != PIPELINE_OK) |
104 return false; | 98 return false; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 enable_pause_ = pause; | 143 enable_pause_ = pause; |
150 Play(play_rate_); | 144 Play(play_rate_); |
151 } | 145 } |
152 | 146 |
153 // Get playback pause state. | 147 // Get playback pause state. |
154 bool Movie::GetPause() { | 148 bool Movie::GetPause() { |
155 return enable_pause_; | 149 return enable_pause_; |
156 } | 150 } |
157 | 151 |
158 void Movie::SetAudioEnable(bool enable_audio) { | 152 void Movie::SetAudioEnable(bool enable_audio) { |
159 enable_audio_ = enable_audio; | |
160 } | 153 } |
161 | 154 |
162 bool Movie::GetAudioEnable() { | 155 bool Movie::GetAudioEnable() { |
163 return enable_audio_; | 156 return enable_audio_; |
164 } | 157 } |
165 | 158 |
166 void Movie::SetDrawEnable(bool enable_draw) { | 159 void Movie::SetDrawEnable(bool enable_draw) { |
167 enable_draw_ = enable_draw; | 160 enable_draw_ = enable_draw; |
168 } | 161 } |
169 | 162 |
(...skipping 13 matching lines...) Expand all Loading... |
183 void Movie::Close() { | 176 void Movie::Close() { |
184 if (pipeline_) { | 177 if (pipeline_) { |
185 pipeline_->Stop(media::PipelineStatusCB()); | 178 pipeline_->Stop(media::PipelineStatusCB()); |
186 pipeline_ = NULL; | 179 pipeline_ = NULL; |
187 } | 180 } |
188 | 181 |
189 message_loop_factory_.reset(); | 182 message_loop_factory_.reset(); |
190 } | 183 } |
191 | 184 |
192 } // namespace media | 185 } // namespace media |
OLD | NEW |