| 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 cast_impl_(this, client_, params.context_3d_cb()), | 220 cast_impl_(this, client_, params.context_3d_cb()), |
| 221 #endif | 221 #endif |
| 222 volume_(1.0), | 222 volume_(1.0), |
| 223 volume_multiplier_(1.0), | 223 volume_multiplier_(1.0), |
| 224 renderer_factory_(std::move(renderer_factory)), | 224 renderer_factory_(std::move(renderer_factory)), |
| 225 surface_manager_(params.surface_manager()), | 225 surface_manager_(params.surface_manager()), |
| 226 overlay_surface_id_(SurfaceManager::kNoSurfaceID), | 226 overlay_surface_id_(SurfaceManager::kNoSurfaceID), |
| 227 suppress_destruction_errors_(false), | 227 suppress_destruction_errors_(false), |
| 228 can_suspend_state_(CanSuspendState::UNKNOWN), | 228 can_suspend_state_(CanSuspendState::UNKNOWN), |
| 229 is_encrypted_(false), | 229 is_encrypted_(false), |
| 230 underflow_count_(0) { | 230 underflow_count_(0), |
| 231 observer_(params.media_observer()) { |
| 231 DCHECK(!adjust_allocated_memory_cb_.is_null()); | 232 DCHECK(!adjust_allocated_memory_cb_.is_null()); |
| 232 DCHECK(renderer_factory_); | 233 DCHECK(renderer_factory_); |
| 233 DCHECK(client_); | 234 DCHECK(client_); |
| 234 | 235 |
| 235 force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch( | 236 force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 236 switches::kForceVideoOverlays); | 237 switches::kForceVideoOverlays); |
| 237 | 238 |
| 238 disable_fullscreen_video_overlays_ = | 239 disable_fullscreen_video_overlays_ = |
| 239 !base::FeatureList::IsEnabled(media::kOverlayFullscreenVideo); | 240 !base::FeatureList::IsEnabled(media::kOverlayFullscreenVideo); |
| 240 | 241 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 surface_created_cb_.Cancel(); | 328 surface_created_cb_.Cancel(); |
| 328 overlay_surface_id_ = SurfaceManager::kNoSurfaceID; | 329 overlay_surface_id_ = SurfaceManager::kNoSurfaceID; |
| 329 | 330 |
| 330 if (decoder_requires_restart_for_overlay_) | 331 if (decoder_requires_restart_for_overlay_) |
| 331 ScheduleRestart(); | 332 ScheduleRestart(); |
| 332 } | 333 } |
| 333 | 334 |
| 334 void WebMediaPlayerImpl::enteredFullscreen() { | 335 void WebMediaPlayerImpl::enteredFullscreen() { |
| 335 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) | 336 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| 336 EnableOverlay(); | 337 EnableOverlay(); |
| 338 if (observer_) |
| 339 observer_->OnEnteredFullscreen(); |
| 337 } | 340 } |
| 338 | 341 |
| 339 void WebMediaPlayerImpl::exitedFullscreen() { | 342 void WebMediaPlayerImpl::exitedFullscreen() { |
| 340 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) | 343 if (!force_video_overlays_ && !disable_fullscreen_video_overlays_) |
| 341 DisableOverlay(); | 344 DisableOverlay(); |
| 345 if (observer_) |
| 346 observer_->OnExitedFullscreen(); |
| 342 } | 347 } |
| 343 | 348 |
| 344 void WebMediaPlayerImpl::DoLoad(LoadType load_type, | 349 void WebMediaPlayerImpl::DoLoad(LoadType load_type, |
| 345 const blink::WebURL& url, | 350 const blink::WebURL& url, |
| 346 CORSMode cors_mode) { | 351 CORSMode cors_mode) { |
| 347 DVLOG(1) << __func__; | 352 DVLOG(1) << __func__; |
| 348 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 353 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 349 | 354 |
| 350 GURL gurl(url); | 355 GURL gurl(url); |
| 351 ReportMetrics(load_type, gurl, frame_->getSecurityOrigin()); | 356 ReportMetrics(load_type, gurl, frame_->getSecurityOrigin()); |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 952 OnCdmAttached(false); | 957 OnCdmAttached(false); |
| 953 return; | 958 return; |
| 954 } | 959 } |
| 955 | 960 |
| 956 CdmContext* cdm_context = cdm_reference->GetCdmContext(); | 961 CdmContext* cdm_context = cdm_reference->GetCdmContext(); |
| 957 if (!cdm_context) { | 962 if (!cdm_context) { |
| 958 OnCdmAttached(false); | 963 OnCdmAttached(false); |
| 959 return; | 964 return; |
| 960 } | 965 } |
| 961 | 966 |
| 967 if (observer_) |
| 968 observer_->OnSetCdm(cdm_context); |
| 969 |
| 962 // Keep the reference to the CDM, as it shouldn't be destroyed until | 970 // Keep the reference to the CDM, as it shouldn't be destroyed until |
| 963 // after the pipeline is done with the |cdm_context|. | 971 // after the pipeline is done with the |cdm_context|. |
| 964 pending_cdm_ = std::move(cdm_reference); | 972 pending_cdm_ = std::move(cdm_reference); |
| 965 pipeline_.SetCdm(cdm_context, | 973 pipeline_.SetCdm(cdm_context, |
| 966 base::Bind(&WebMediaPlayerImpl::OnCdmAttached, AsWeakPtr())); | 974 base::Bind(&WebMediaPlayerImpl::OnCdmAttached, AsWeakPtr())); |
| 967 } | 975 } |
| 968 | 976 |
| 969 void WebMediaPlayerImpl::OnCdmAttached(bool success) { | 977 void WebMediaPlayerImpl::OnCdmAttached(bool success) { |
| 970 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 978 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 971 DCHECK(pending_cdm_); | 979 DCHECK(pending_cdm_); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1105 surface_manager_->NaturalSizeChanged(pipeline_metadata_.natural_size); | 1113 surface_manager_->NaturalSizeChanged(pipeline_metadata_.natural_size); |
| 1106 | 1114 |
| 1107 DCHECK(!video_weblayer_); | 1115 DCHECK(!video_weblayer_); |
| 1108 video_weblayer_.reset(new cc_blink::WebLayerImpl(cc::VideoLayer::Create( | 1116 video_weblayer_.reset(new cc_blink::WebLayerImpl(cc::VideoLayer::Create( |
| 1109 compositor_, pipeline_metadata_.video_rotation))); | 1117 compositor_, pipeline_metadata_.video_rotation))); |
| 1110 video_weblayer_->layer()->SetContentsOpaque(opaque_); | 1118 video_weblayer_->layer()->SetContentsOpaque(opaque_); |
| 1111 video_weblayer_->SetContentsOpaqueIsFixed(true); | 1119 video_weblayer_->SetContentsOpaqueIsFixed(true); |
| 1112 client_->setWebLayer(video_weblayer_.get()); | 1120 client_->setWebLayer(video_weblayer_.get()); |
| 1113 } | 1121 } |
| 1114 | 1122 |
| 1123 if (observer_) |
| 1124 observer_->OnMetadataChanged(metadata); |
| 1125 |
| 1115 CreateWatchTimeReporter(); | 1126 CreateWatchTimeReporter(); |
| 1116 UpdatePlayState(); | 1127 UpdatePlayState(); |
| 1117 } | 1128 } |
| 1118 | 1129 |
| 1119 void WebMediaPlayerImpl::OnBufferingStateChange(BufferingState state) { | 1130 void WebMediaPlayerImpl::OnBufferingStateChange(BufferingState state) { |
| 1120 DVLOG(1) << __func__ << "(" << state << ")"; | 1131 DVLOG(1) << __func__ << "(" << state << ")"; |
| 1121 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 1132 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 1122 | 1133 |
| 1123 // Ignore buffering state changes until we've completed all outstanding | 1134 // Ignore buffering state changes until we've completed all outstanding |
| 1124 // operations. | 1135 // operations. |
| (...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1836 pipeline_metadata_.natural_size, | 1847 pipeline_metadata_.natural_size, |
| 1837 base::Bind(&GetCurrentTimeInternal, this))); | 1848 base::Bind(&GetCurrentTimeInternal, this))); |
| 1838 watch_time_reporter_->OnVolumeChange(volume_); | 1849 watch_time_reporter_->OnVolumeChange(volume_); |
| 1839 if (delegate_ && delegate_->IsHidden()) | 1850 if (delegate_ && delegate_->IsHidden()) |
| 1840 watch_time_reporter_->OnHidden(); | 1851 watch_time_reporter_->OnHidden(); |
| 1841 else | 1852 else |
| 1842 watch_time_reporter_->OnShown(); | 1853 watch_time_reporter_->OnShown(); |
| 1843 } | 1854 } |
| 1844 | 1855 |
| 1845 } // namespace media | 1856 } // namespace media |
| OLD | NEW |