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 |