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 |