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

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

Issue 1142063003: content/child: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Build fix. Created 5 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
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/media_stream_remote_video_source.h" 5 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/message_loop/message_loop_proxy.h"
11 #include "base/threading/thread_checker.h" 10 #include "base/threading/thread_checker.h"
12 #include "base/trace_event/trace_event.h" 11 #include "base/trace_event/trace_event.h"
13 #include "content/renderer/media/webrtc/track_observer.h" 12 #include "content/renderer/media/webrtc/track_observer.h"
14 #include "media/base/bind_to_current_loop.h" 13 #include "media/base/bind_to_current_loop.h"
15 #include "media/base/video_frame.h" 14 #include "media/base/video_frame.h"
16 #include "media/base/video_util.h" 15 #include "media/base/video_util.h"
17 #include "third_party/libjingle/source/talk/media/base/videoframe.h" 16 #include "third_party/libjingle/source/talk/media/base/videoframe.h"
18 17
19 namespace content { 18 namespace content {
20 19
21 // Internal class used for receiving frames from the webrtc track on a 20 // Internal class used for receiving frames from the webrtc track on a
22 // libjingle thread and forward it to the IO-thread. 21 // libjingle thread and forward it to the IO-thread.
23 class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate 22 class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate
24 : public base::RefCountedThreadSafe<RemoteVideoSourceDelegate>, 23 : public base::RefCountedThreadSafe<RemoteVideoSourceDelegate>,
25 public webrtc::VideoRendererInterface { 24 public webrtc::VideoRendererInterface {
26 public: 25 public:
27 RemoteVideoSourceDelegate( 26 RemoteVideoSourceDelegate(
28 const scoped_refptr<base::MessageLoopProxy>& io_message_loop, 27 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
29 const VideoCaptureDeliverFrameCB& new_frame_callback); 28 const VideoCaptureDeliverFrameCB& new_frame_callback);
30 29
31 protected: 30 protected:
32 friend class base::RefCountedThreadSafe<RemoteVideoSourceDelegate>; 31 friend class base::RefCountedThreadSafe<RemoteVideoSourceDelegate>;
33 ~RemoteVideoSourceDelegate() override; 32 ~RemoteVideoSourceDelegate() override;
34 33
35 // Implements webrtc::VideoRendererInterface used for receiving video frames 34 // Implements webrtc::VideoRendererInterface used for receiving video frames
36 // from the PeerConnection video track. May be called on a libjingle internal 35 // from the PeerConnection video track. May be called on a libjingle internal
37 // thread. 36 // thread.
38 void RenderFrame(const cricket::VideoFrame* frame) override; 37 void RenderFrame(const cricket::VideoFrame* frame) override;
39 38
40 void DoRenderFrameOnIOThread( 39 void DoRenderFrameOnIOThread(
41 const scoped_refptr<media::VideoFrame>& video_frame); 40 const scoped_refptr<media::VideoFrame>& video_frame);
42 41
43 private: 42 private:
44 // Bound to the render thread. 43 // Bound to the render thread.
45 base::ThreadChecker thread_checker_; 44 base::ThreadChecker thread_checker_;
46 45
47 scoped_refptr<base::MessageLoopProxy> io_message_loop_; 46 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
48 47
49 // |frame_callback_| is accessed on the IO thread. 48 // |frame_callback_| is accessed on the IO thread.
50 VideoCaptureDeliverFrameCB frame_callback_; 49 VideoCaptureDeliverFrameCB frame_callback_;
51 }; 50 };
52 51
53 MediaStreamRemoteVideoSource:: 52 MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::
54 RemoteVideoSourceDelegate::RemoteVideoSourceDelegate( 53 RemoteVideoSourceDelegate(
55 const scoped_refptr<base::MessageLoopProxy>& io_message_loop, 54 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
56 const VideoCaptureDeliverFrameCB& new_frame_callback) 55 const VideoCaptureDeliverFrameCB& new_frame_callback)
57 : io_message_loop_(io_message_loop), 56 : io_task_runner_(io_task_runner), frame_callback_(new_frame_callback) {
58 frame_callback_(new_frame_callback) {
59 } 57 }
60 58
61 MediaStreamRemoteVideoSource:: 59 MediaStreamRemoteVideoSource::
62 RemoteVideoSourceDelegate::~RemoteVideoSourceDelegate() { 60 RemoteVideoSourceDelegate::~RemoteVideoSourceDelegate() {
63 } 61 }
64 62
65 void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::RenderFrame( 63 void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::RenderFrame(
66 const cricket::VideoFrame* incoming_frame) { 64 const cricket::VideoFrame* incoming_frame) {
67 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::RenderFrame"); 65 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::RenderFrame");
68 base::TimeDelta timestamp = base::TimeDelta::FromMicroseconds( 66 base::TimeDelta timestamp = base::TimeDelta::FromMicroseconds(
(...skipping 21 matching lines...) Expand all
90 // need to const cast here. 88 // need to const cast here.
91 video_frame = media::VideoFrame::WrapExternalYuvData( 89 video_frame = media::VideoFrame::WrapExternalYuvData(
92 media::VideoFrame::YV12, size, gfx::Rect(size), size, 90 media::VideoFrame::YV12, size, gfx::Rect(size), size,
93 frame->GetYPitch(), frame->GetUPitch(), frame->GetVPitch(), 91 frame->GetYPitch(), frame->GetUPitch(), frame->GetVPitch(),
94 const_cast<uint8_t*>(frame->GetYPlane()), 92 const_cast<uint8_t*>(frame->GetYPlane()),
95 const_cast<uint8_t*>(frame->GetUPlane()), 93 const_cast<uint8_t*>(frame->GetUPlane()),
96 const_cast<uint8_t*>(frame->GetVPlane()), timestamp, 94 const_cast<uint8_t*>(frame->GetVPlane()), timestamp,
97 base::Bind(&base::DeletePointer<cricket::VideoFrame>, frame->Copy())); 95 base::Bind(&base::DeletePointer<cricket::VideoFrame>, frame->Copy()));
98 } 96 }
99 97
100 io_message_loop_->PostTask( 98 io_task_runner_->PostTask(
101 FROM_HERE, 99 FROM_HERE, base::Bind(&RemoteVideoSourceDelegate::DoRenderFrameOnIOThread,
102 base::Bind(&RemoteVideoSourceDelegate::DoRenderFrameOnIOThread, 100 this, video_frame));
103 this, video_frame));
104 } 101 }
105 102
106 void MediaStreamRemoteVideoSource:: 103 void MediaStreamRemoteVideoSource::
107 RemoteVideoSourceDelegate::DoRenderFrameOnIOThread( 104 RemoteVideoSourceDelegate::DoRenderFrameOnIOThread(
108 const scoped_refptr<media::VideoFrame>& video_frame) { 105 const scoped_refptr<media::VideoFrame>& video_frame) {
109 DCHECK(io_message_loop_->BelongsToCurrentThread()); 106 DCHECK(io_task_runner_->BelongsToCurrentThread());
110 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::DoRenderFrameOnIOThread"); 107 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::DoRenderFrameOnIOThread");
111 // TODO(hclam): Give the estimated capture time. 108 // TODO(hclam): Give the estimated capture time.
112 frame_callback_.Run(video_frame, base::TimeTicks()); 109 frame_callback_.Run(video_frame, base::TimeTicks());
113 } 110 }
114 111
115 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource( 112 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource(
116 scoped_ptr<TrackObserver> observer) 113 scoped_ptr<TrackObserver> observer)
117 : observer_(observer.Pass()) { 114 : observer_(observer.Pass()) {
118 // The callback will be automatically cleared when 'observer_' goes out of 115 // The callback will be automatically cleared when 'observer_' goes out of
119 // scope and no further callbacks will occur. 116 // scope and no further callbacks will occur.
(...skipping 16 matching lines...) Expand all
136 // the supported formats are unknown. 133 // the supported formats are unknown.
137 callback.Run(formats); 134 callback.Run(formats);
138 } 135 }
139 136
140 void MediaStreamRemoteVideoSource::StartSourceImpl( 137 void MediaStreamRemoteVideoSource::StartSourceImpl(
141 const media::VideoCaptureFormat& format, 138 const media::VideoCaptureFormat& format,
142 const blink::WebMediaConstraints& constraints, 139 const blink::WebMediaConstraints& constraints,
143 const VideoCaptureDeliverFrameCB& frame_callback) { 140 const VideoCaptureDeliverFrameCB& frame_callback) {
144 DCHECK(CalledOnValidThread()); 141 DCHECK(CalledOnValidThread());
145 DCHECK(!delegate_.get()); 142 DCHECK(!delegate_.get());
146 delegate_ = new RemoteVideoSourceDelegate(io_message_loop(), frame_callback); 143 delegate_ = new RemoteVideoSourceDelegate(io_task_runner(), frame_callback);
147 scoped_refptr<webrtc::VideoTrackInterface> video_track( 144 scoped_refptr<webrtc::VideoTrackInterface> video_track(
148 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get())); 145 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get()));
149 video_track->AddRenderer(delegate_.get()); 146 video_track->AddRenderer(delegate_.get());
150 OnStartDone(MEDIA_DEVICE_OK); 147 OnStartDone(MEDIA_DEVICE_OK);
151 } 148 }
152 149
153 void MediaStreamRemoteVideoSource::StopSourceImpl() { 150 void MediaStreamRemoteVideoSource::StopSourceImpl() {
154 DCHECK(CalledOnValidThread()); 151 DCHECK(CalledOnValidThread());
155 DCHECK(state() != MediaStreamVideoSource::ENDED); 152 DCHECK(state() != MediaStreamVideoSource::ENDED);
156 scoped_refptr<webrtc::VideoTrackInterface> video_track( 153 scoped_refptr<webrtc::VideoTrackInterface> video_track(
(...skipping 20 matching lines...) Expand all
177 case webrtc::MediaStreamTrackInterface::kEnded: 174 case webrtc::MediaStreamTrackInterface::kEnded:
178 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded); 175 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
179 break; 176 break;
180 default: 177 default:
181 NOTREACHED(); 178 NOTREACHED();
182 break; 179 break;
183 } 180 }
184 } 181 }
185 182
186 } // namespace content 183 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/video_track_adapter.cc ('k') | content/renderer/media/webrtc/video_destination_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698