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

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: Created 6 years, 7 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& 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698