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

Side by Side Diff: webkit/media/webmediaplayer_impl.cc

Issue 9860027: Remove DemuxerFactory and URL parameter from Pipeline. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: again Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "webkit/media/webmediaplayer_impl.h" 5 #include "webkit/media/webmediaplayer_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 setPreload(GetClient()->preload()); 214 setPreload(GetClient()->preload());
215 215
216 SetNetworkState(WebKit::WebMediaPlayer::Loading); 216 SetNetworkState(WebKit::WebMediaPlayer::Loading);
217 SetReadyState(WebKit::WebMediaPlayer::HaveNothing); 217 SetReadyState(WebKit::WebMediaPlayer::HaveNothing);
218 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); 218 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
219 219
220 // Media streams pipelines can start immediately. 220 // Media streams pipelines can start immediately.
221 if (BuildMediaStreamCollection(url, media_stream_client_, 221 if (BuildMediaStreamCollection(url, media_stream_client_,
222 message_loop_factory_.get(), 222 message_loop_factory_.get(),
223 filter_collection_.get())) { 223 filter_collection_.get())) {
224 StartPipeline(gurl); 224 StartPipeline();
225 return; 225 return;
226 } 226 }
227 227
228 // Media source pipelines can start immediately. 228 // Media source pipelines can start immediately.
229 scoped_refptr<media::FFmpegVideoDecoder> video_decoder; 229 scoped_refptr<media::FFmpegVideoDecoder> video_decoder;
230 if (BuildMediaSourceCollection(url, GetClient()->sourceURL(), proxy_, 230 if (BuildMediaSourceCollection(url, GetClient()->sourceURL(), proxy_,
231 message_loop_factory_.get(), 231 message_loop_factory_.get(),
232 filter_collection_.get(), 232 filter_collection_.get(),
233 &video_decoder)) { 233 &video_decoder)) {
234 StartPipeline(gurl);
235 proxy_->set_video_decoder(video_decoder); 234 proxy_->set_video_decoder(video_decoder);
235 StartPipeline();
236 return; 236 return;
237 } 237 }
238 238
239 // Otherwise it's a regular request which requires resolving the URL first. 239 // Otherwise it's a regular request which requires resolving the URL first.
240 proxy_->set_data_source( 240 proxy_->set_data_source(
241 new BufferedDataSource(main_loop_, frame_, media_log_)); 241 new BufferedDataSource(main_loop_, frame_, media_log_));
242 proxy_->data_source()->Initialize(url, base::Bind( 242 proxy_->data_source()->Initialize(url, base::Bind(
243 &WebMediaPlayerImpl::DataSourceInitialized, 243 &WebMediaPlayerImpl::DataSourceInitialized,
244 base::Unretained(this), gurl)); 244 base::Unretained(this), gurl));
245 } 245 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 360
361 void WebMediaPlayerImpl::setVisible(bool visible) { 361 void WebMediaPlayerImpl::setVisible(bool visible) {
362 DCHECK_EQ(main_loop_, MessageLoop::current()); 362 DCHECK_EQ(main_loop_, MessageLoop::current());
363 363
364 // TODO(hclam): add appropriate method call when pipeline has it implemented. 364 // TODO(hclam): add appropriate method call when pipeline has it implemented.
365 return; 365 return;
366 } 366 }
367 367
368 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ 368 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \
369 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayer::webkit_name) == \ 369 COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayer::webkit_name) == \
370 static_cast<int>(media::chromium_name), \ 370 static_cast<int>(webkit_media::chromium_name), \
371 mismatching_enums) 371 mismatching_enums)
372 COMPILE_ASSERT_MATCHING_ENUM(None, NONE); 372 COMPILE_ASSERT_MATCHING_ENUM(None, NONE);
373 COMPILE_ASSERT_MATCHING_ENUM(MetaData, METADATA); 373 COMPILE_ASSERT_MATCHING_ENUM(MetaData, METADATA);
374 COMPILE_ASSERT_MATCHING_ENUM(Auto, AUTO); 374 COMPILE_ASSERT_MATCHING_ENUM(Auto, AUTO);
375 375
376 void WebMediaPlayerImpl::setPreload(WebKit::WebMediaPlayer::Preload preload) { 376 void WebMediaPlayerImpl::setPreload(WebKit::WebMediaPlayer::Preload preload) {
377 DCHECK_EQ(main_loop_, MessageLoop::current()); 377 DCHECK_EQ(main_loop_, MessageLoop::current());
378 378
379 pipeline_->SetPreload(static_cast<media::Preload>(preload)); 379 if (proxy_ && proxy_->data_source()) {
380 // XXX: Why do I need to use webkit_media:: prefix? clang complains!
381 proxy_->data_source()->SetPreload(
382 static_cast<webkit_media::Preload>(preload));
383 }
380 } 384 }
381 385
382 bool WebMediaPlayerImpl::totalBytesKnown() { 386 bool WebMediaPlayerImpl::totalBytesKnown() {
383 DCHECK_EQ(main_loop_, MessageLoop::current()); 387 DCHECK_EQ(main_loop_, MessageLoop::current());
384 388
385 return pipeline_->GetTotalBytes() != 0; 389 return pipeline_->GetTotalBytes() != 0;
386 } 390 }
387 391
388 bool WebMediaPlayerImpl::hasVideo() const { 392 bool WebMediaPlayerImpl::hasVideo() const {
389 DCHECK_EQ(main_loop_, MessageLoop::current()); 393 DCHECK_EQ(main_loop_, MessageLoop::current());
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 const GURL& gurl, 820 const GURL& gurl,
817 media::PipelineStatus status) { 821 media::PipelineStatus status) {
818 DCHECK_EQ(main_loop_, MessageLoop::current()); 822 DCHECK_EQ(main_loop_, MessageLoop::current());
819 823
820 if (status != media::PIPELINE_OK) { 824 if (status != media::PIPELINE_OK) {
821 SetNetworkState(WebKit::WebMediaPlayer::FormatError); 825 SetNetworkState(WebKit::WebMediaPlayer::FormatError);
822 Repaint(); 826 Repaint();
823 return; 827 return;
824 } 828 }
825 829
830 // TODO(scherkus): this is leftover from removing DemuxerFactory -- instead
831 // our DataSource should report this information. See http://crbug.com/120426
832 bool local_source = !gurl.SchemeIs("http") && !gurl.SchemeIs("https");
833
826 scoped_refptr<media::FFmpegVideoDecoder> video_decoder; 834 scoped_refptr<media::FFmpegVideoDecoder> video_decoder;
827 BuildDefaultCollection(proxy_->data_source(), 835 BuildDefaultCollection(proxy_->data_source(),
836 local_source,
828 message_loop_factory_.get(), 837 message_loop_factory_.get(),
829 filter_collection_.get(), 838 filter_collection_.get(),
830 &video_decoder); 839 &video_decoder);
831 proxy_->set_video_decoder(video_decoder); 840 proxy_->set_video_decoder(video_decoder);
832 StartPipeline(gurl); 841 StartPipeline();
833 } 842 }
834 843
835 void WebMediaPlayerImpl::StartPipeline(const GURL& gurl) { 844 void WebMediaPlayerImpl::StartPipeline() {
836 started_ = true; 845 started_ = true;
837 pipeline_->Start( 846 pipeline_->Start(
838 filter_collection_.Pass(), 847 filter_collection_.Pass(),
839 gurl.spec(),
840 base::Bind(&WebMediaPlayerProxy::PipelineEndedCallback, proxy_.get()), 848 base::Bind(&WebMediaPlayerProxy::PipelineEndedCallback, proxy_.get()),
841 base::Bind(&WebMediaPlayerProxy::PipelineErrorCallback, proxy_.get()), 849 base::Bind(&WebMediaPlayerProxy::PipelineErrorCallback, proxy_.get()),
842 base::Bind(&WebMediaPlayerProxy::NetworkEventCallback, proxy_.get()), 850 base::Bind(&WebMediaPlayerProxy::NetworkEventCallback, proxy_.get()),
843 base::Bind(&WebMediaPlayerProxy::PipelineInitializationCallback, 851 base::Bind(&WebMediaPlayerProxy::PipelineInitializationCallback,
844 proxy_.get())); 852 proxy_.get()));
845 } 853 }
846 854
847 void WebMediaPlayerImpl::SetNetworkState( 855 void WebMediaPlayerImpl::SetNetworkState(
848 WebKit::WebMediaPlayer::NetworkState state) { 856 WebKit::WebMediaPlayer::NetworkState state) {
849 DCHECK_EQ(main_loop_, MessageLoop::current()); 857 DCHECK_EQ(main_loop_, MessageLoop::current());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 return audio_source_provider_; 914 return audio_source_provider_;
907 } 915 }
908 916
909 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { 917 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() {
910 DCHECK_EQ(main_loop_, MessageLoop::current()); 918 DCHECK_EQ(main_loop_, MessageLoop::current());
911 incremented_externally_allocated_memory_ = true; 919 incremented_externally_allocated_memory_ = true;
912 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); 920 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory);
913 } 921 }
914 922
915 } // namespace webkit_media 923 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698