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

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

Issue 2711153006: Add RendererFactorySelector (Closed)
Patch Set: Added UTs Created 3 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
OLDNEW
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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 UrlData::CORS_UNSPECIFIED); 168 UrlData::CORS_UNSPECIFIED);
169 STATIC_ASSERT_ENUM(WebMediaPlayer::kCORSModeAnonymous, UrlData::CORS_ANONYMOUS); 169 STATIC_ASSERT_ENUM(WebMediaPlayer::kCORSModeAnonymous, UrlData::CORS_ANONYMOUS);
170 STATIC_ASSERT_ENUM(WebMediaPlayer::kCORSModeUseCredentials, 170 STATIC_ASSERT_ENUM(WebMediaPlayer::kCORSModeUseCredentials,
171 UrlData::CORS_USE_CREDENTIALS); 171 UrlData::CORS_USE_CREDENTIALS);
172 172
173 WebMediaPlayerImpl::WebMediaPlayerImpl( 173 WebMediaPlayerImpl::WebMediaPlayerImpl(
174 blink::WebLocalFrame* frame, 174 blink::WebLocalFrame* frame,
175 blink::WebMediaPlayerClient* client, 175 blink::WebMediaPlayerClient* client,
176 blink::WebMediaPlayerEncryptedMediaClient* encrypted_client, 176 blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
177 WebMediaPlayerDelegate* delegate, 177 WebMediaPlayerDelegate* delegate,
178 std::unique_ptr<RendererFactory> renderer_factory, 178 std::unique_ptr<RendererFactorySelector> renderer_factory_selector,
179 linked_ptr<UrlIndex> url_index, 179 linked_ptr<UrlIndex> url_index,
180 const WebMediaPlayerParams& params) 180 const WebMediaPlayerParams& params)
181 : frame_(frame), 181 : frame_(frame),
182 delegate_state_(DelegateState::GONE), 182 delegate_state_(DelegateState::GONE),
183 delegate_has_audio_(false), 183 delegate_has_audio_(false),
184 network_state_(WebMediaPlayer::kNetworkStateEmpty), 184 network_state_(WebMediaPlayer::kNetworkStateEmpty),
185 ready_state_(WebMediaPlayer::kReadyStateHaveNothing), 185 ready_state_(WebMediaPlayer::kReadyStateHaveNothing),
186 highest_ready_state_(WebMediaPlayer::kReadyStateHaveNothing), 186 highest_ready_state_(WebMediaPlayer::kReadyStateHaveNothing),
187 preload_(MultibufferDataSource::AUTO), 187 preload_(MultibufferDataSource::AUTO),
188 main_task_runner_(frame->LoadingTaskRunner()), 188 main_task_runner_(frame->LoadingTaskRunner()),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 // Threaded compositing isn't enabled universally yet. 223 // Threaded compositing isn't enabled universally yet.
224 compositor_task_runner_(params.compositor_task_runner() 224 compositor_task_runner_(params.compositor_task_runner()
225 ? params.compositor_task_runner() 225 ? params.compositor_task_runner()
226 : base::ThreadTaskRunnerHandle::Get()), 226 : base::ThreadTaskRunnerHandle::Get()),
227 compositor_(new VideoFrameCompositor(compositor_task_runner_)), 227 compositor_(new VideoFrameCompositor(compositor_task_runner_)),
228 #if defined(OS_ANDROID) // WMPI_CAST 228 #if defined(OS_ANDROID) // WMPI_CAST
229 cast_impl_(this, client_, params.context_3d_cb()), 229 cast_impl_(this, client_, params.context_3d_cb()),
230 #endif 230 #endif
231 volume_(1.0), 231 volume_(1.0),
232 volume_multiplier_(1.0), 232 volume_multiplier_(1.0),
233 renderer_factory_(std::move(renderer_factory)), 233 renderer_factory_selector_(std::move(renderer_factory_selector)),
234 surface_manager_(params.surface_manager()), 234 surface_manager_(params.surface_manager()),
235 overlay_surface_id_(SurfaceManager::kNoSurfaceID), 235 overlay_surface_id_(SurfaceManager::kNoSurfaceID),
236 suppress_destruction_errors_(false), 236 suppress_destruction_errors_(false),
237 suspend_enabled_(params.allow_suspend()), 237 suspend_enabled_(params.allow_suspend()),
238 use_fallback_path_(false), 238 use_fallback_path_(false),
239 is_encrypted_(false), 239 is_encrypted_(false),
240 preroll_attempt_pending_(false), 240 preroll_attempt_pending_(false),
241 observer_(params.media_observer()), 241 observer_(params.media_observer()),
242 max_keyframe_distance_to_disable_background_video_( 242 max_keyframe_distance_to_disable_background_video_(
243 params.max_keyframe_distance_to_disable_background_video()), 243 params.max_keyframe_distance_to_disable_background_video()),
244 max_keyframe_distance_to_disable_background_video_mse_( 244 max_keyframe_distance_to_disable_background_video_mse_(
245 params.max_keyframe_distance_to_disable_background_video_mse()), 245 params.max_keyframe_distance_to_disable_background_video_mse()),
246 enable_instant_source_buffer_gc_( 246 enable_instant_source_buffer_gc_(
247 params.enable_instant_source_buffer_gc()), 247 params.enable_instant_source_buffer_gc()),
248 embedded_media_experience_enabled_( 248 embedded_media_experience_enabled_(
249 params.embedded_media_experience_enabled()) { 249 params.embedded_media_experience_enabled()) {
250 DVLOG(1) << __func__; 250 DVLOG(1) << __func__;
251 DCHECK(!adjust_allocated_memory_cb_.is_null()); 251 DCHECK(!adjust_allocated_memory_cb_.is_null());
252 DCHECK(renderer_factory_); 252 DCHECK(renderer_factory_selector_);
253 DCHECK(client_); 253 DCHECK(client_);
254 DCHECK(delegate_); 254 DCHECK(delegate_);
255 255
256 tick_clock_.reset(new base::DefaultTickClock()); 256 tick_clock_.reset(new base::DefaultTickClock());
257 257
258 force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch( 258 force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
259 switches::kForceVideoOverlays); 259 switches::kForceVideoOverlays);
260 260
261 enable_fullscreen_video_overlays_ = 261 enable_fullscreen_video_overlays_ =
262 base::FeatureList::IsEnabled(media::kOverlayFullscreenVideo); 262 base::FeatureList::IsEnabled(media::kOverlayFullscreenVideo);
(...skipping 1459 matching lines...) Expand 10 before | Expand all | Expand 10 after
1722 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1722 DCHECK(main_task_runner_->BelongsToCurrentThread());
1723 1723
1724 if (force_video_overlays_) 1724 if (force_video_overlays_)
1725 EnableOverlay(); 1725 EnableOverlay();
1726 1726
1727 RequestSurfaceCB request_surface_cb; 1727 RequestSurfaceCB request_surface_cb;
1728 #if defined(OS_ANDROID) 1728 #if defined(OS_ANDROID)
1729 request_surface_cb = BindToCurrentLoop( 1729 request_surface_cb = BindToCurrentLoop(
1730 base::Bind(&WebMediaPlayerImpl::OnSurfaceRequested, AsWeakPtr())); 1730 base::Bind(&WebMediaPlayerImpl::OnSurfaceRequested, AsWeakPtr()));
1731 #endif 1731 #endif
1732 return renderer_factory_->CreateRenderer( 1732 return renderer_factory_selector_->GetCurrentFactory()->CreateRenderer(
1733 media_task_runner_, worker_task_runner_, audio_source_provider_.get(), 1733 media_task_runner_, worker_task_runner_, audio_source_provider_.get(),
1734 compositor_, request_surface_cb); 1734 compositor_, request_surface_cb);
1735 } 1735 }
1736 1736
1737 void WebMediaPlayerImpl::StartPipeline() { 1737 void WebMediaPlayerImpl::StartPipeline() {
1738 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1738 DCHECK(main_task_runner_->BelongsToCurrentThread());
1739 1739
1740 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = 1740 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
1741 BindToCurrentLoop(base::Bind( 1741 BindToCurrentLoop(base::Bind(
1742 &WebMediaPlayerImpl::OnEncryptedMediaInitData, AsWeakPtr())); 1742 &WebMediaPlayerImpl::OnEncryptedMediaInitData, AsWeakPtr()));
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
2359 2359
2360 void WebMediaPlayerImpl::RecordUnderflowDuration(base::TimeDelta duration) { 2360 void WebMediaPlayerImpl::RecordUnderflowDuration(base::TimeDelta duration) {
2361 DCHECK(data_source_ || chunk_demuxer_); 2361 DCHECK(data_source_ || chunk_demuxer_);
2362 if (data_source_) 2362 if (data_source_)
2363 UMA_HISTOGRAM_TIMES("Media.UnderflowDuration", duration); 2363 UMA_HISTOGRAM_TIMES("Media.UnderflowDuration", duration);
2364 else 2364 else
2365 UMA_HISTOGRAM_TIMES("Media.UnderflowDuration.MSE", duration); 2365 UMA_HISTOGRAM_TIMES("Media.UnderflowDuration.MSE", duration);
2366 } 2366 }
2367 2367
2368 } // namespace media 2368 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698