| 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& start_ticks); |
| 45 | 46 |
| 46 private: | 47 private: |
| 47 void OnVideoFrameOnWorkerThread(const scoped_refptr<media::VideoFrame>& frame, | 48 void OnVideoFrameOnWorkerThread(const scoped_refptr<media::VideoFrame>& frame, |
| 48 const media::VideoCaptureFormat& format); | 49 const media::VideoCaptureFormat& format, |
| 50 const base::TimeTicks& start_ticks); |
| 49 friend class base::RefCountedThreadSafe<WebRtcVideoSourceAdapter>; | 51 friend class base::RefCountedThreadSafe<WebRtcVideoSourceAdapter>; |
| 50 virtual ~WebRtcVideoSourceAdapter(); | 52 virtual ~WebRtcVideoSourceAdapter(); |
| 51 | 53 |
| 52 scoped_refptr<base::MessageLoopProxy> render_thread_message_loop_; | 54 scoped_refptr<base::MessageLoopProxy> render_thread_message_loop_; |
| 53 | 55 |
| 54 // Used to DCHECK that frames are called on the IO-thread. | 56 // Used to DCHECK that frames are called on the IO-thread. |
| 55 base::ThreadChecker io_thread_checker_; | 57 base::ThreadChecker io_thread_checker_; |
| 56 | 58 |
| 57 // Used for posting frames to libjingle's worker thread. Accessed on the | 59 // Used for posting frames to libjingle's worker thread. Accessed on the |
| 58 // IO-thread. | 60 // IO-thread. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 84 video_source_ = NULL; | 86 video_source_ = NULL; |
| 85 render_thread_message_loop_->PostTask( | 87 render_thread_message_loop_->PostTask( |
| 86 FROM_HERE, | 88 FROM_HERE, |
| 87 base::Bind(&ReleaseWebRtcSourceOnMainRenderThread, | 89 base::Bind(&ReleaseWebRtcSourceOnMainRenderThread, |
| 88 base::Unretained(source))); | 90 base::Unretained(source))); |
| 89 } | 91 } |
| 90 } | 92 } |
| 91 | 93 |
| 92 void WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnIO( | 94 void WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnIO( |
| 93 const scoped_refptr<media::VideoFrame>& frame, | 95 const scoped_refptr<media::VideoFrame>& frame, |
| 94 const media::VideoCaptureFormat& format) { | 96 const media::VideoCaptureFormat& format, |
| 97 const base::TimeTicks& start_ticks) { |
| 95 DCHECK(io_thread_checker_.CalledOnValidThread()); | 98 DCHECK(io_thread_checker_.CalledOnValidThread()); |
| 96 libjingle_worker_thread_->PostTask( | 99 libjingle_worker_thread_->PostTask( |
| 97 FROM_HERE, | 100 FROM_HERE, |
| 98 base::Bind(&WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread, | 101 base::Bind(&WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread, |
| 99 this, frame, format)); | 102 this, frame, format, start_ticks)); |
| 100 } | 103 } |
| 101 | 104 |
| 102 void | 105 void |
| 103 WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread( | 106 WebRtcVideoTrackAdapter::WebRtcVideoSourceAdapter::OnVideoFrameOnWorkerThread( |
| 104 const scoped_refptr<media::VideoFrame>& frame, | 107 const scoped_refptr<media::VideoFrame>& frame, |
| 105 const media::VideoCaptureFormat& format) { | 108 const media::VideoCaptureFormat& format, |
| 109 const base::TimeTicks& start_ticks) { |
| 106 DCHECK(libjingle_worker_thread_->BelongsToCurrentThread()); | 110 DCHECK(libjingle_worker_thread_->BelongsToCurrentThread()); |
| 107 capture_adapter_->OnFrameCaptured(frame); | 111 capture_adapter_->OnFrameCaptured(frame); |
| 108 } | 112 } |
| 109 | 113 |
| 110 WebRtcVideoTrackAdapter::WebRtcVideoTrackAdapter( | 114 WebRtcVideoTrackAdapter::WebRtcVideoTrackAdapter( |
| 111 const blink::WebMediaStreamTrack& track, | 115 const blink::WebMediaStreamTrack& track, |
| 112 PeerConnectionDependencyFactory* factory) | 116 PeerConnectionDependencyFactory* factory) |
| 113 : web_track_(track) { | 117 : web_track_(track) { |
| 114 const blink::WebMediaConstraints& constraints = | 118 const blink::WebMediaConstraints& constraints = |
| 115 MediaStreamVideoTrack::GetVideoTrack(track)->constraints(); | 119 MediaStreamVideoTrack::GetVideoTrack(track)->constraints(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 DVLOG(3) << "WebRtcVideoTrackAdapter dtor()."; | 153 DVLOG(3) << "WebRtcVideoTrackAdapter dtor()."; |
| 150 RemoveFromVideoTrack(this, web_track_); | 154 RemoveFromVideoTrack(this, web_track_); |
| 151 } | 155 } |
| 152 | 156 |
| 153 void WebRtcVideoTrackAdapter::OnEnabledChanged(bool enabled) { | 157 void WebRtcVideoTrackAdapter::OnEnabledChanged(bool enabled) { |
| 154 DCHECK(thread_checker_.CalledOnValidThread()); | 158 DCHECK(thread_checker_.CalledOnValidThread()); |
| 155 video_track_->set_enabled(enabled); | 159 video_track_->set_enabled(enabled); |
| 156 } | 160 } |
| 157 | 161 |
| 158 } // namespace content | 162 } // namespace content |
| OLD | NEW |