| 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 "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  Loading... | 
|  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  Loading... | 
|  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  Loading... | 
|  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  Loading... | 
|  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 | 
| OLD | NEW |