| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/renderer/media/webmediaplayer_ms_compositor.h" | 5 #include "content/renderer/media/webmediaplayer_ms_compositor.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
| 8 #include "base/hash.h" | 8 #include "base/hash.h" | 
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" | 
| 10 #include "cc/blink/context_provider_web_context.h" | 10 #include "cc/blink/context_provider_web_context.h" | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 101       current_frame_used_by_compositor_(false), | 101       current_frame_used_by_compositor_(false), | 
| 102       last_render_length_(base::TimeDelta::FromSecondsD(1.0 / 60.0)), | 102       last_render_length_(base::TimeDelta::FromSecondsD(1.0 / 60.0)), | 
| 103       total_frame_count_(0), | 103       total_frame_count_(0), | 
| 104       dropped_frame_count_(0), | 104       dropped_frame_count_(0), | 
| 105       stopped_(true) { | 105       stopped_(true) { | 
| 106   main_message_loop_ = base::MessageLoop::current(); | 106   main_message_loop_ = base::MessageLoop::current(); | 
| 107 | 107 | 
| 108   const blink::WebMediaStream web_stream( | 108   const blink::WebMediaStream web_stream( | 
| 109       blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 109       blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 
| 110   blink::WebVector<blink::WebMediaStreamTrack> video_tracks; | 110   blink::WebVector<blink::WebMediaStreamTrack> video_tracks; | 
| 111   web_stream.videoTracks(video_tracks); | 111   if (!web_stream.isNull()) | 
|  | 112     web_stream.videoTracks(video_tracks); | 
| 112 | 113 | 
| 113   const bool remote_video = | 114   const bool remote_video = | 
| 114       video_tracks.size() && video_tracks[0].source().remote(); | 115       video_tracks.size() && video_tracks[0].source().remote(); | 
| 115 | 116 | 
| 116   if (remote_video && | 117   if (remote_video && | 
| 117       !base::CommandLine::ForCurrentProcess()->HasSwitch( | 118       !base::CommandLine::ForCurrentProcess()->HasSwitch( | 
| 118           switches::kDisableRTCSmoothnessAlgorithm)) { | 119           switches::kDisableRTCSmoothnessAlgorithm)) { | 
| 119     base::AutoLock auto_lock(current_frame_lock_); | 120     base::AutoLock auto_lock(current_frame_lock_); | 
| 120     rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 121     rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 
| 121         base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 122         base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 364 void WebMediaPlayerMSCompositor::SetCurrentFrame( | 365 void WebMediaPlayerMSCompositor::SetCurrentFrame( | 
| 365     const scoped_refptr<media::VideoFrame>& frame) { | 366     const scoped_refptr<media::VideoFrame>& frame) { | 
| 366   current_frame_lock_.AssertAcquired(); | 367   current_frame_lock_.AssertAcquired(); | 
| 367   if (!current_frame_used_by_compositor_) | 368   if (!current_frame_used_by_compositor_) | 
| 368     ++dropped_frame_count_; | 369     ++dropped_frame_count_; | 
| 369   current_frame_used_by_compositor_ = false; | 370   current_frame_used_by_compositor_ = false; | 
| 370   current_frame_ = frame; | 371   current_frame_ = frame; | 
| 371   main_message_loop_->PostTask( | 372   main_message_loop_->PostTask( | 
| 372       FROM_HERE, base::Bind(&WebMediaPlayerMS::ResetCanvasCache, player_)); | 373       FROM_HERE, base::Bind(&WebMediaPlayerMS::ResetCanvasCache, player_)); | 
| 373 } | 374 } | 
|  | 375 | 
|  | 376 void WebMediaPlayerMSCompositor::SetAlgorithmEnabledForTesting( | 
|  | 377     bool algorithm_enabled) { | 
|  | 378   if (!algorithm_enabled) { | 
|  | 379     rendering_frame_buffer_.reset(); | 
|  | 380     return; | 
|  | 381   } | 
|  | 382 | 
|  | 383   if (!rendering_frame_buffer_) { | 
|  | 384     rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 
|  | 385         base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 
|  | 386                    base::Unretained(this)))); | 
|  | 387   } | 
| 374 } | 388 } | 
|  | 389 | 
|  | 390 }  // namespace content | 
| OLD | NEW | 
|---|