| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/rtc_video_renderer.h" | 5 #include "content/renderer/media/rtc_video_renderer.h" |
| 6 | 6 |
| 7 #include "base/bind_to_current_loop.h" |
| 7 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
| 8 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 9 #include "media/base/bind_to_current_loop.h" | |
| 10 #include "media/base/video_frame.h" | 10 #include "media/base/video_frame.h" |
| 11 #include "media/base/video_util.h" | 11 #include "media/base/video_util.h" |
| 12 | 12 |
| 13 const int kMinFrameSize = 2; | 13 const int kMinFrameSize = 2; |
| 14 | 14 |
| 15 namespace content { | 15 namespace content { |
| 16 | 16 |
| 17 RTCVideoRenderer::RTCVideoRenderer( | 17 RTCVideoRenderer::RTCVideoRenderer( |
| 18 const blink::WebMediaStreamTrack& video_track, | 18 const blink::WebMediaStreamTrack& video_track, |
| 19 const base::Closure& error_cb, | 19 const base::Closure& error_cb, |
| 20 const RepaintCB& repaint_cb) | 20 const RepaintCB& repaint_cb) |
| 21 : error_cb_(error_cb), | 21 : error_cb_(error_cb), |
| 22 repaint_cb_(repaint_cb), | 22 repaint_cb_(repaint_cb), |
| 23 message_loop_proxy_(base::MessageLoopProxy::current()), | 23 message_loop_proxy_(base::MessageLoopProxy::current()), |
| 24 state_(STOPPED), | 24 state_(STOPPED), |
| 25 frame_size_(kMinFrameSize, kMinFrameSize), | 25 frame_size_(kMinFrameSize, kMinFrameSize), |
| 26 video_track_(video_track), | 26 video_track_(video_track), |
| 27 weak_factory_(this) { | 27 weak_factory_(this) { |
| 28 } | 28 } |
| 29 | 29 |
| 30 RTCVideoRenderer::~RTCVideoRenderer() { | 30 RTCVideoRenderer::~RTCVideoRenderer() { |
| 31 } | 31 } |
| 32 | 32 |
| 33 void RTCVideoRenderer::Start() { | 33 void RTCVideoRenderer::Start() { |
| 34 DCHECK(message_loop_proxy_->BelongsToCurrentThread()); | 34 DCHECK(message_loop_proxy_->BelongsToCurrentThread()); |
| 35 DCHECK_EQ(state_, STOPPED); | 35 DCHECK_EQ(state_, STOPPED); |
| 36 | 36 |
| 37 AddToVideoTrack( | 37 AddToVideoTrack( |
| 38 this, | 38 this, |
| 39 media::BindToCurrentLoop( | 39 base::BindToCurrentLoop( |
| 40 base::Bind( | 40 base::Bind( |
| 41 &RTCVideoRenderer::OnVideoFrame, | 41 &RTCVideoRenderer::OnVideoFrame, |
| 42 weak_factory_.GetWeakPtr())), | 42 weak_factory_.GetWeakPtr())), |
| 43 video_track_); | 43 video_track_); |
| 44 state_ = STARTED; | 44 state_ = STARTED; |
| 45 | 45 |
| 46 if (video_track_.source().readyState() == | 46 if (video_track_.source().readyState() == |
| 47 blink::WebMediaStreamSource::ReadyStateEnded || | 47 blink::WebMediaStreamSource::ReadyStateEnded || |
| 48 !video_track_.isEnabled()) { | 48 !video_track_.isEnabled()) { |
| 49 RenderSignalingFrame(); | 49 RenderSignalingFrame(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 // It also ensure that the renderer don't hold a reference to a real video | 102 // It also ensure that the renderer don't hold a reference to a real video |
| 103 // frame if no more frames are provided. This is since there might be a | 103 // frame if no more frames are provided. This is since there might be a |
| 104 // finite number of available buffers. E.g, video that | 104 // finite number of available buffers. E.g, video that |
| 105 // originates from a video camera. | 105 // originates from a video camera. |
| 106 scoped_refptr<media::VideoFrame> video_frame = | 106 scoped_refptr<media::VideoFrame> video_frame = |
| 107 media::VideoFrame::CreateBlackFrame(frame_size_); | 107 media::VideoFrame::CreateBlackFrame(frame_size_); |
| 108 OnVideoFrame(video_frame, base::TimeTicks()); | 108 OnVideoFrame(video_frame, base::TimeTicks()); |
| 109 } | 109 } |
| 110 | 110 |
| 111 } // namespace content | 111 } // namespace content |
| OLD | NEW |