| 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   if (!web_stream.isNull()) | 111   web_stream.videoTracks(video_tracks); | 
| 112     web_stream.videoTracks(video_tracks); |  | 
| 113 | 112 | 
| 114   const bool remote_video = | 113   const bool remote_video = | 
| 115       video_tracks.size() && video_tracks[0].source().remote(); | 114       video_tracks.size() && video_tracks[0].source().remote(); | 
| 116 | 115 | 
| 117   if (remote_video && | 116   if (remote_video && | 
| 118       !base::CommandLine::ForCurrentProcess()->HasSwitch( | 117       !base::CommandLine::ForCurrentProcess()->HasSwitch( | 
| 119           switches::kDisableRTCSmoothnessAlgorithm)) { | 118           switches::kDisableRTCSmoothnessAlgorithm)) { | 
| 120     base::AutoLock auto_lock(current_frame_lock_); | 119     base::AutoLock auto_lock(current_frame_lock_); | 
| 121     rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 120     rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 
| 122         base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 121         base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 365 void WebMediaPlayerMSCompositor::SetCurrentFrame( | 364 void WebMediaPlayerMSCompositor::SetCurrentFrame( | 
| 366     const scoped_refptr<media::VideoFrame>& frame) { | 365     const scoped_refptr<media::VideoFrame>& frame) { | 
| 367   current_frame_lock_.AssertAcquired(); | 366   current_frame_lock_.AssertAcquired(); | 
| 368   if (!current_frame_used_by_compositor_) | 367   if (!current_frame_used_by_compositor_) | 
| 369     ++dropped_frame_count_; | 368     ++dropped_frame_count_; | 
| 370   current_frame_used_by_compositor_ = false; | 369   current_frame_used_by_compositor_ = false; | 
| 371   current_frame_ = frame; | 370   current_frame_ = frame; | 
| 372   main_message_loop_->PostTask( | 371   main_message_loop_->PostTask( | 
| 373       FROM_HERE, base::Bind(&WebMediaPlayerMS::ResetCanvasCache, player_)); | 372       FROM_HERE, base::Bind(&WebMediaPlayerMS::ResetCanvasCache, player_)); | 
| 374 } | 373 } | 
| 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   } |  | 
| 388 } | 374 } | 
| 389 |  | 
| 390 }  // namespace content |  | 
| OLD | NEW | 
|---|