| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/blink/webmediaplayer_impl.h" | 5 #include "media/blink/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 surface_created_cb_.Cancel(); | 330 surface_created_cb_.Cancel(); |
| 331 overlay_surface_id_ = SurfaceManager::kNoSurfaceID; | 331 overlay_surface_id_ = SurfaceManager::kNoSurfaceID; |
| 332 | 332 |
| 333 if (decoder_requires_restart_for_overlay_) | 333 if (decoder_requires_restart_for_overlay_) |
| 334 ScheduleRestart(); | 334 ScheduleRestart(); |
| 335 } | 335 } |
| 336 | 336 |
| 337 void WebMediaPlayerImpl::enteredFullscreen() { | 337 void WebMediaPlayerImpl::enteredFullscreen() { |
| 338 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) | 338 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| 339 EnableOverlay(); | 339 EnableOverlay(); |
| 340 pipeline_controller_.SetFullscreenMode(true); |
| 340 } | 341 } |
| 341 | 342 |
| 342 void WebMediaPlayerImpl::exitedFullscreen() { | 343 void WebMediaPlayerImpl::exitedFullscreen() { |
| 343 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) | 344 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| 344 DisableOverlay(); | 345 DisableOverlay(); |
| 346 pipeline_controller_.SetFullscreenMode(false); |
| 345 } | 347 } |
| 346 | 348 |
| 347 void WebMediaPlayerImpl::DoLoad(LoadType load_type, | 349 void WebMediaPlayerImpl::DoLoad(LoadType load_type, |
| 348 const blink::WebURL& url, | 350 const blink::WebURL& url, |
| 349 CORSMode cors_mode) { | 351 CORSMode cors_mode) { |
| 350 DVLOG(1) << __func__; | 352 DVLOG(1) << __func__; |
| 351 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 353 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 352 | 354 |
| 353 GURL gurl(url); | 355 GURL gurl(url); |
| 354 ReportMetrics(load_type, gurl, frame_->getSecurityOrigin()); | 356 ReportMetrics(load_type, gurl, frame_->getSecurityOrigin()); |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 | 907 |
| 906 // TODO(xhwang): Update this UMA name. https://crbug.com/589251 | 908 // TODO(xhwang): Update this UMA name. https://crbug.com/589251 |
| 907 UMA_HISTOGRAM_COUNTS("Media.EME.NeedKey", 1); | 909 UMA_HISTOGRAM_COUNTS("Media.EME.NeedKey", 1); |
| 908 | 910 |
| 909 // Recreate the watch time reporter if necessary. | 911 // Recreate the watch time reporter if necessary. |
| 910 const bool was_encrypted = is_encrypted_; | 912 const bool was_encrypted = is_encrypted_; |
| 911 is_encrypted_ = true; | 913 is_encrypted_ = true; |
| 912 if (!was_encrypted && watch_time_reporter_) | 914 if (!was_encrypted && watch_time_reporter_) |
| 913 CreateWatchTimeReporter(); | 915 CreateWatchTimeReporter(); |
| 914 | 916 |
| 917 pipeline_controller_.SetIsEncryptedContent(); |
| 918 |
| 915 encrypted_client_->encrypted( | 919 encrypted_client_->encrypted( |
| 916 ConvertToWebInitDataType(init_data_type), init_data.data(), | 920 ConvertToWebInitDataType(init_data_type), init_data.data(), |
| 917 base::saturated_cast<unsigned int>(init_data.size())); | 921 base::saturated_cast<unsigned int>(init_data.size())); |
| 918 } | 922 } |
| 919 | 923 |
| 920 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( | 924 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
| 921 std::unique_ptr<MediaTracks> tracks) { | 925 std::unique_ptr<MediaTracks> tracks) { |
| 922 // For MSE/chunk_demuxer case the media track updates are handled by | 926 // For MSE/chunk_demuxer case the media track updates are handled by |
| 923 // WebSourceBufferImpl. | 927 // WebSourceBufferImpl. |
| 924 DCHECK(demuxer_.get()); | 928 DCHECK(demuxer_.get()); |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 | 1442 |
| 1439 std::unique_ptr<Renderer> WebMediaPlayerImpl::CreateRenderer() { | 1443 std::unique_ptr<Renderer> WebMediaPlayerImpl::CreateRenderer() { |
| 1440 if (force_video_overlays_) | 1444 if (force_video_overlays_) |
| 1441 EnableOverlay(); | 1445 EnableOverlay(); |
| 1442 | 1446 |
| 1443 RequestSurfaceCB request_surface_cb; | 1447 RequestSurfaceCB request_surface_cb; |
| 1444 #if defined(OS_ANDROID) | 1448 #if defined(OS_ANDROID) |
| 1445 request_surface_cb = | 1449 request_surface_cb = |
| 1446 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnSurfaceRequested); | 1450 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnSurfaceRequested); |
| 1447 #endif | 1451 #endif |
| 1452 bool is_remoting = pipeline_controller_.ShouldUseRemotingRenderer(); |
| 1453 // TODO(xjz): Pass |is_remoting| to CreateRenderer() to create the proper |
| 1454 // renderer. |
| 1455 VLOG(3) << "Create " << (is_remoting ? "Remoting" : "Local") << " renderer."; |
| 1448 return renderer_factory_->CreateRenderer( | 1456 return renderer_factory_->CreateRenderer( |
| 1449 media_task_runner_, worker_task_runner_, audio_source_provider_.get(), | 1457 media_task_runner_, worker_task_runner_, audio_source_provider_.get(), |
| 1450 compositor_, request_surface_cb); | 1458 compositor_, request_surface_cb); |
| 1451 } | 1459 } |
| 1452 | 1460 |
| 1453 void WebMediaPlayerImpl::StartPipeline() { | 1461 void WebMediaPlayerImpl::StartPipeline() { |
| 1454 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1462 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 1455 | 1463 |
| 1456 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = | 1464 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = |
| 1457 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnEncryptedMediaInitData); | 1465 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnEncryptedMediaInitData); |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 hasAudio(), hasVideo(), !!chunk_demuxer_, is_encrypted_, media_log_, | 1823 hasAudio(), hasVideo(), !!chunk_demuxer_, is_encrypted_, media_log_, |
| 1816 pipeline_metadata_.natural_size, | 1824 pipeline_metadata_.natural_size, |
| 1817 base::Bind(&GetCurrentTimeInternal, this))); | 1825 base::Bind(&GetCurrentTimeInternal, this))); |
| 1818 watch_time_reporter_->OnVolumeChange(volume_); | 1826 watch_time_reporter_->OnVolumeChange(volume_); |
| 1819 if (delegate_ && delegate_->IsHidden()) | 1827 if (delegate_ && delegate_->IsHidden()) |
| 1820 watch_time_reporter_->OnHidden(); | 1828 watch_time_reporter_->OnHidden(); |
| 1821 else | 1829 else |
| 1822 watch_time_reporter_->OnShown(); | 1830 watch_time_reporter_->OnShown(); |
| 1823 } | 1831 } |
| 1824 | 1832 |
| 1833 void WebMediaPlayerImpl::ancestorEnteredFullscreen() { |
| 1834 pipeline_controller_.SetFullscreenMode(true); |
| 1835 } |
| 1836 |
| 1837 void WebMediaPlayerImpl::ancestorExitedFullscreen() { |
| 1838 pipeline_controller_.SetFullscreenMode(false); |
| 1839 } |
| 1840 |
| 1825 } // namespace media | 1841 } // namespace media |
| OLD | NEW |