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

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

Issue 2075303002: [DO NOT COMMIT] Initial MediaPlayerRenderer plumbing and basic features (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 10 matching lines...) Expand all
21 #include "base/metrics/histogram.h" 21 #include "base/metrics/histogram.h"
22 #include "base/single_thread_task_runner.h" 22 #include "base/single_thread_task_runner.h"
23 #include "base/strings/string_number_conversions.h" 23 #include "base/strings/string_number_conversions.h"
24 #include "base/task_runner_util.h" 24 #include "base/task_runner_util.h"
25 #include "base/threading/thread_task_runner_handle.h" 25 #include "base/threading/thread_task_runner_handle.h"
26 #include "base/trace_event/trace_event.h" 26 #include "base/trace_event/trace_event.h"
27 #include "build/build_config.h" 27 #include "build/build_config.h"
28 #include "cc/blink/web_layer_impl.h" 28 #include "cc/blink/web_layer_impl.h"
29 #include "cc/layers/video_layer.h" 29 #include "cc/layers/video_layer.h"
30 #include "media/audio/null_audio_sink.h" 30 #include "media/audio/null_audio_sink.h"
31 #include "media/base/android/url_demuxer_stream_provider.h"
31 #include "media/base/bind_to_current_loop.h" 32 #include "media/base/bind_to_current_loop.h"
32 #include "media/base/cdm_context.h" 33 #include "media/base/cdm_context.h"
33 #include "media/base/limits.h" 34 #include "media/base/limits.h"
34 #include "media/base/media_log.h" 35 #include "media/base/media_log.h"
35 #include "media/base/media_switches.h" 36 #include "media/base/media_switches.h"
36 #include "media/base/text_renderer.h" 37 #include "media/base/text_renderer.h"
37 #include "media/base/timestamp_constants.h" 38 #include "media/base/timestamp_constants.h"
38 #include "media/base/video_frame.h" 39 #include "media/base/video_frame.h"
39 #include "media/blink/texttrack_impl.h" 40 #include "media/blink/texttrack_impl.h"
40 #include "media/blink/webaudiosourceprovider_impl.h" 41 #include "media/blink/webaudiosourceprovider_impl.h"
41 #include "media/blink/webcontentdecryptionmodule_impl.h" 42 #include "media/blink/webcontentdecryptionmodule_impl.h"
42 #include "media/blink/webinbandtexttrack_impl.h" 43 #include "media/blink/webinbandtexttrack_impl.h"
43 #include "media/blink/webmediaplayer_delegate.h" 44 #include "media/blink/webmediaplayer_delegate.h"
44 #include "media/blink/webmediaplayer_util.h" 45 #include "media/blink/webmediaplayer_util.h"
45 #include "media/blink/webmediasource_impl.h" 46 #include "media/blink/webmediasource_impl.h"
46 #include "media/filters/chunk_demuxer.h" 47 #include "media/filters/chunk_demuxer.h"
47 #include "media/filters/ffmpeg_demuxer.h" 48 #include "media/filters/ffmpeg_demuxer.h"
49 #include "media/media_features.h"
48 #include "third_party/WebKit/public/platform/WebEncryptedMediaTypes.h" 50 #include "third_party/WebKit/public/platform/WebEncryptedMediaTypes.h"
49 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" 51 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
50 #include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient. h" 52 #include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient. h"
51 #include "third_party/WebKit/public/platform/WebMediaPlayerSource.h" 53 #include "third_party/WebKit/public/platform/WebMediaPlayerSource.h"
52 #include "third_party/WebKit/public/platform/WebMediaSource.h" 54 #include "third_party/WebKit/public/platform/WebMediaSource.h"
53 #include "third_party/WebKit/public/platform/WebRect.h" 55 #include "third_party/WebKit/public/platform/WebRect.h"
54 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" 56 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
55 #include "third_party/WebKit/public/platform/WebSize.h" 57 #include "third_party/WebKit/public/platform/WebSize.h"
56 #include "third_party/WebKit/public/platform/WebString.h" 58 #include "third_party/WebKit/public/platform/WebString.h"
57 #include "third_party/WebKit/public/platform/WebURL.h" 59 #include "third_party/WebKit/public/platform/WebURL.h"
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 << cors_mode << ")"; 264 << cors_mode << ")";
263 if (!defer_load_cb_.is_null()) { 265 if (!defer_load_cb_.is_null()) {
264 defer_load_cb_.Run(base::Bind( 266 defer_load_cb_.Run(base::Bind(
265 &WebMediaPlayerImpl::DoLoad, AsWeakPtr(), load_type, url, cors_mode)); 267 &WebMediaPlayerImpl::DoLoad, AsWeakPtr(), load_type, url, cors_mode));
266 return; 268 return;
267 } 269 }
268 DoLoad(load_type, url, cors_mode); 270 DoLoad(load_type, url, cors_mode);
269 } 271 }
270 272
271 bool WebMediaPlayerImpl::supportsOverlayFullscreenVideo() { 273 bool WebMediaPlayerImpl::supportsOverlayFullscreenVideo() {
272 #if defined(OS_ANDROID) 274 #if BUILDFLAG(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
275 return true;
276 #elif defined(OS_ANDROID)
273 // OverlayFullscreenVideo is only used when we're H/W decoding to an 277 // OverlayFullscreenVideo is only used when we're H/W decoding to an
274 // SurfaceView underlay on Android. It's possible that we haven't initialized 278 // SurfaceView underlay on Android. It's possible that we haven't initialized
275 // any decoders before entering fullscreen, so we won't know whether to use 279 // any decoders before entering fullscreen, so we won't know whether to use
276 // OverlayFullscreenVideo. In that case we'll default to 280 // OverlayFullscreenVideo. In that case we'll default to
277 // non-OverlayFullscreenVideo, which still works correctly, but has janky 281 // non-OverlayFullscreenVideo, which still works correctly, but has janky
278 // orientation changes. 282 // orientation changes.
279 283
280 // We return a consistent value while in fullscreen to avoid us getting into a 284 // We return a consistent value while in fullscreen to avoid us getting into a
281 // state where some of the OverlayFullscreenVideo adjustments are applied and 285 // state where some of the OverlayFullscreenVideo adjustments are applied and
282 // some aren't. 286 // some aren't.
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 media_task_runner_, worker_task_runner_, audio_source_provider_.get(), 1290 media_task_runner_, worker_task_runner_, audio_source_provider_.get(),
1287 compositor_, request_surface_cb); 1291 compositor_, request_surface_cb);
1288 } 1292 }
1289 1293
1290 void WebMediaPlayerImpl::StartPipeline() { 1294 void WebMediaPlayerImpl::StartPipeline() {
1291 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1295 DCHECK(main_task_runner_->BelongsToCurrentThread());
1292 1296
1293 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = 1297 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
1294 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnEncryptedMediaInitData); 1298 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnEncryptedMediaInitData);
1295 1299
1300 #if BUILDFLAG(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
1301 demuxer_.reset(new UrlDemuxerStreamProvider(GURL()));
1302 pipeline_controller_.Start(demuxer_.get(), this, true, true);
1303 return;
Julien Isorce Samsung 2016/08/08 13:01:58 Hi, not sure what CL is the most up to date with h
1304 #endif
1305
1296 // Figure out which demuxer to use. 1306 // Figure out which demuxer to use.
1297 if (load_type_ != LoadTypeMediaSource) { 1307 if (load_type_ != LoadTypeMediaSource) {
1298 DCHECK(!chunk_demuxer_); 1308 DCHECK(!chunk_demuxer_);
1299 DCHECK(data_source_); 1309 DCHECK(data_source_);
1300 1310
1301 #if !defined(MEDIA_DISABLE_FFMPEG) 1311 #if !defined(MEDIA_DISABLE_FFMPEG)
1302 Demuxer::MediaTracksUpdatedCB media_tracks_updated_cb = 1312 Demuxer::MediaTracksUpdatedCB media_tracks_updated_cb =
1303 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated); 1313 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated);
1304 1314
1305 demuxer_.reset(new FFmpegDemuxer(media_task_runner_, data_source_.get(), 1315 demuxer_.reset(new FFmpegDemuxer(media_task_runner_, data_source_.get(),
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1638 if (isRemote()) 1648 if (isRemote())
1639 return; 1649 return;
1640 #endif 1650 #endif
1641 1651
1642 // Idle timeout chosen arbitrarily. 1652 // Idle timeout chosen arbitrarily.
1643 background_pause_timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(5), 1653 background_pause_timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(5),
1644 this, &WebMediaPlayerImpl::OnPause); 1654 this, &WebMediaPlayerImpl::OnPause);
1645 } 1655 }
1646 1656
1647 } // namespace media 1657 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698