OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/webrtc/webrtc_video_track_adapter.h" | 5 #include "content/renderer/media/webrtc/webrtc_video_track_adapter.h" |
6 | 6 |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "content/common/media/media_stream_options.h" | 8 #include "content/common/media/media_stream_options.h" |
9 #include "content/renderer/media/media_stream_video_source.h" | 9 #include "content/renderer/media/media_stream_video_source.h" |
10 #include "content/renderer/media/media_stream_video_track.h" | 10 #include "content/renderer/media/media_stream_video_track.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 // WebRtcVideoCapturerAdapter implements a video capturer for libjingle. | 34 // WebRtcVideoCapturerAdapter implements a video capturer for libjingle. |
35 class WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter | 35 class WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter |
36 : public base::RefCountedThreadSafe<WebRtcVideoSourceAdapter> { | 36 : public base::RefCountedThreadSafe<WebRtcVideoSourceAdapter> { |
37 public: | 37 public: |
38 WebRtcVideoSourceAdapter( | 38 WebRtcVideoSourceAdapter( |
39 const scoped_refptr<base::MessageLoopProxy>& libjingle_worker_thread, | 39 const scoped_refptr<base::MessageLoopProxy>& libjingle_worker_thread, |
40 const scoped_refptr<webrtc::VideoSourceInterface>& source, | 40 const scoped_refptr<webrtc::VideoSourceInterface>& source, |
41 WebRtcVideoCapturerAdapter* capture_adapter); | 41 WebRtcVideoCapturerAdapter* capture_adapter); |
42 | 42 |
43 void OnVideoFrameOnIO(const scoped_refptr<media::VideoFrame>& frame, | 43 void OnVideoFrameOnIO(const scoped_refptr<media::VideoFrame>& frame, |
44 const media::VideoCaptureFormat& format); | 44 const media::VideoCaptureFormat& format, |
| 45 const base::TimeTicks& estimated_capture_time); |
45 | 46 |
46 private: | 47 private: |
47 void OnVideoFrameOnWorkerThread(const scoped_refptr<media::VideoFrame>& frame, | 48 void OnVideoFrameOnWorkerThread( |
48 const media::VideoCaptureFormat& format); | 49 const scoped_refptr<media::VideoFrame>& frame, |
| 50 const media::VideoCaptureFormat& format, |
| 51 const base::TimeTicks& estimated_capture_time); |
49 friend class base::RefCountedThreadSafe<WebRtcVideoSourceAdapter>; | 52 friend class base::RefCountedThreadSafe<WebRtcVideoSourceAdapter>; |
50 virtual ~WebRtcVideoSourceAdapter(); | 53 virtual ~WebRtcVideoSourceAdapter(); |
51 | 54 |
52 scoped_refptr<base::MessageLoopProxy> render_thread_message_loop_; | 55 scoped_refptr<base::MessageLoopProxy> render_thread_message_loop_; |
53 | 56 |
54 // Used to DCHECK that frames are called on the IO-thread. | 57 // Used to DCHECK that frames are called on the IO-thread. |
55 base::ThreadChecker io_thread_checker_; | 58 base::ThreadChecker io_thread_checker_; |
56 | 59 |
57 // Used for posting frames to libjingle's worker thread. Accessed on the | 60 // Used for posting frames to libjingle's worker thread. Accessed on the |
58 // IO-thread. | 61 // IO-thread. |
(...skipping 25 matching lines...) Expand all Loading... |
84 video_source_ = NULL; | 87 video_source_ = NULL; |
85 render_thread_message_loop_->PostTask( | 88 render_thread_message_loop_->PostTask( |
86 FROM_HERE, | 89 FROM_HERE, |
87 base::Bind(&ReleaseWebRtcSourceOnMainRenderThread, | 90 base::Bind(&ReleaseWebRtcSourceOnMainRenderThread, |
88 base::Unretained(source))); | 91 base::Unretained(source))); |
89 } | 92 } |
90 } | 93 } |
91 | 94 |
92 void WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnIO( | 95 void WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnIO( |
93 const scoped_refptr<media::VideoFrame>& frame, | 96 const scoped_refptr<media::VideoFrame>& frame, |
94 const media::VideoCaptureFormat& format) { | 97 const media::VideoCaptureFormat& format, |
| 98 const base::TimeTicks& estimated_capture_time) { |
95 DCHECK(io_thread_checker_.CalledOnValidThread()); | 99 DCHECK(io_thread_checker_.CalledOnValidThread()); |
96 libjingle_worker_thread_->PostTask( | 100 libjingle_worker_thread_->PostTask( |
97 FROM_HERE, | 101 FROM_HERE, |
98 base::Bind(&WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread, | 102 base::Bind(&WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread, |
99 this, frame, format)); | 103 this, frame, format, estimated_capture_time)); |
100 } | 104 } |
101 | 105 |
102 void | 106 void |
103 WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread( | 107 WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread( |
104 const scoped_refptr<media::VideoFrame>& frame, | 108 const scoped_refptr<media::VideoFrame>& frame, |
105 const media::VideoCaptureFormat& format) { | 109 const media::VideoCaptureFormat& format, |
| 110 const base::TimeTicks& estimated_capture_time) { |
106 DCHECK(libjingle_worker_thread_->BelongsToCurrentThread()); | 111 DCHECK(libjingle_worker_thread_->BelongsToCurrentThread()); |
107 capture_adapter_->OnFrameCaptured(frame); | 112 capture_adapter_->OnFrameCaptured(frame); |
108 } | 113 } |
109 | 114 |
110 WebRtcVideoTrackAdapter::WebRtcVideoTrackAdapter( | 115 WebRtcVideoTrackAdapter::WebRtcVideoTrackAdapter( |
111 const blink::WebMediaStreamTrack& track, | 116 const blink::WebMediaStreamTrack& track, |
112 PeerConnectionDependencyFactory* factory) | 117 PeerConnectionDependencyFactory* factory) |
113 : web_track_(track) { | 118 : web_track_(track) { |
114 const blink::WebMediaConstraints& constraints = | 119 const blink::WebMediaConstraints& constraints = |
115 MediaStreamVideoTrack::GetVideoTrack(track)->constraints(); | 120 MediaStreamVideoTrack::GetVideoTrack(track)->constraints(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 DVLOG(3) << "WebRtcVideoTrackAdapter dtor()."; | 154 DVLOG(3) << "WebRtcVideoTrackAdapter dtor()."; |
150 RemoveFromVideoTrack(this, web_track_); | 155 RemoveFromVideoTrack(this, web_track_); |
151 } | 156 } |
152 | 157 |
153 void WebRtcVideoTrackAdapter::OnEnabledChanged(bool enabled) { | 158 void WebRtcVideoTrackAdapter::OnEnabledChanged(bool enabled) { |
154 DCHECK(thread_checker_.CalledOnValidThread()); | 159 DCHECK(thread_checker_.CalledOnValidThread()); |
155 video_track_->set_enabled(enabled); | 160 video_track_->set_enabled(enabled); |
156 } | 161 } |
157 | 162 |
158 } // namespace content | 163 } // namespace content |
OLD | NEW |