Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: content/renderer/media/webrtc/webrtc_video_track_adapter.cc

Issue 287313002: Pass a TimeTicks along video capture pipeline to represent capture time (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698