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

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

Issue 2909103002: Deprecate NonThreadSafe in content/renderer/media in favor of SequenceChecker. (Closed)
Patch Set: fix compile Created 3 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
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 <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource( 169 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource(
170 std::unique_ptr<TrackObserver> observer) 170 std::unique_ptr<TrackObserver> observer)
171 : observer_(std::move(observer)) { 171 : observer_(std::move(observer)) {
172 // The callback will be automatically cleared when 'observer_' goes out of 172 // The callback will be automatically cleared when 'observer_' goes out of
173 // scope and no further callbacks will occur. 173 // scope and no further callbacks will occur.
174 observer_->SetCallback(base::Bind(&MediaStreamRemoteVideoSource::OnChanged, 174 observer_->SetCallback(base::Bind(&MediaStreamRemoteVideoSource::OnChanged,
175 base::Unretained(this))); 175 base::Unretained(this)));
176 } 176 }
177 177
178 MediaStreamRemoteVideoSource::~MediaStreamRemoteVideoSource() { 178 MediaStreamRemoteVideoSource::~MediaStreamRemoteVideoSource() {
179 DCHECK(CalledOnValidThread()); 179 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
180 DCHECK(!observer_); 180 DCHECK(!observer_);
181 } 181 }
182 182
183 void MediaStreamRemoteVideoSource::OnSourceTerminated() { 183 void MediaStreamRemoteVideoSource::OnSourceTerminated() {
184 DCHECK(CalledOnValidThread()); 184 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
185 StopSourceImpl(); 185 StopSourceImpl();
186 } 186 }
187 187
188 void MediaStreamRemoteVideoSource::GetCurrentSupportedFormats( 188 void MediaStreamRemoteVideoSource::GetCurrentSupportedFormats(
189 int max_requested_width, 189 int max_requested_width,
190 int max_requested_height, 190 int max_requested_height,
191 double max_requested_frame_rate, 191 double max_requested_frame_rate,
192 const VideoCaptureDeviceFormatsCB& callback) { 192 const VideoCaptureDeviceFormatsCB& callback) {
193 DCHECK(CalledOnValidThread()); 193 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
194 media::VideoCaptureFormats formats; 194 media::VideoCaptureFormats formats;
195 // Since the remote end is free to change the resolution at any point in time 195 // Since the remote end is free to change the resolution at any point in time
196 // the supported formats are unknown. 196 // the supported formats are unknown.
197 callback.Run(formats); 197 callback.Run(formats);
198 } 198 }
199 199
200 void MediaStreamRemoteVideoSource::StartSourceImpl( 200 void MediaStreamRemoteVideoSource::StartSourceImpl(
201 const media::VideoCaptureFormat& format, 201 const media::VideoCaptureFormat& format,
202 const blink::WebMediaConstraints& constraints, 202 const blink::WebMediaConstraints& constraints,
203 const VideoCaptureDeliverFrameCB& frame_callback) { 203 const VideoCaptureDeliverFrameCB& frame_callback) {
204 DCHECK(CalledOnValidThread()); 204 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
205 DCHECK(!delegate_.get()); 205 DCHECK(!delegate_.get());
206 delegate_ = new RemoteVideoSourceDelegate(io_task_runner(), frame_callback); 206 delegate_ = new RemoteVideoSourceDelegate(io_task_runner(), frame_callback);
207 scoped_refptr<webrtc::VideoTrackInterface> video_track( 207 scoped_refptr<webrtc::VideoTrackInterface> video_track(
208 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get())); 208 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get()));
209 video_track->AddOrUpdateSink(delegate_.get(), rtc::VideoSinkWants()); 209 video_track->AddOrUpdateSink(delegate_.get(), rtc::VideoSinkWants());
210 OnStartDone(MEDIA_DEVICE_OK); 210 OnStartDone(MEDIA_DEVICE_OK);
211 } 211 }
212 212
213 void MediaStreamRemoteVideoSource::StopSourceImpl() { 213 void MediaStreamRemoteVideoSource::StopSourceImpl() {
214 DCHECK(CalledOnValidThread()); 214 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
215 // StopSourceImpl is called either when MediaStreamTrack.stop is called from 215 // StopSourceImpl is called either when MediaStreamTrack.stop is called from
216 // JS or blink gc the MediaStreamSource object or when OnSourceTerminated() 216 // JS or blink gc the MediaStreamSource object or when OnSourceTerminated()
217 // is called. Garbage collection will happen after the PeerConnection no 217 // is called. Garbage collection will happen after the PeerConnection no
218 // longer receives the video track. 218 // longer receives the video track.
219 if (!observer_) 219 if (!observer_)
220 return; 220 return;
221 DCHECK(state() != MediaStreamVideoSource::ENDED); 221 DCHECK(state() != MediaStreamVideoSource::ENDED);
222 scoped_refptr<webrtc::VideoTrackInterface> video_track( 222 scoped_refptr<webrtc::VideoTrackInterface> video_track(
223 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get())); 223 static_cast<webrtc::VideoTrackInterface*>(observer_->track().get()));
224 video_track->RemoveSink(delegate_.get()); 224 video_track->RemoveSink(delegate_.get());
225 // This removes the references to the webrtc video track. 225 // This removes the references to the webrtc video track.
226 observer_.reset(); 226 observer_.reset();
227 } 227 }
228 228
229 rtc::VideoSinkInterface<webrtc::VideoFrame>* 229 rtc::VideoSinkInterface<webrtc::VideoFrame>*
230 MediaStreamRemoteVideoSource::SinkInterfaceForTest() { 230 MediaStreamRemoteVideoSource::SinkInterfaceForTest() {
231 return delegate_.get(); 231 return delegate_.get();
232 } 232 }
233 233
234 void MediaStreamRemoteVideoSource::OnChanged( 234 void MediaStreamRemoteVideoSource::OnChanged(
235 webrtc::MediaStreamTrackInterface::TrackState state) { 235 webrtc::MediaStreamTrackInterface::TrackState state) {
236 DCHECK(CalledOnValidThread()); 236 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
237 switch (state) { 237 switch (state) {
238 case webrtc::MediaStreamTrackInterface::kLive: 238 case webrtc::MediaStreamTrackInterface::kLive:
239 SetReadyState(blink::WebMediaStreamSource::kReadyStateLive); 239 SetReadyState(blink::WebMediaStreamSource::kReadyStateLive);
240 break; 240 break;
241 case webrtc::MediaStreamTrackInterface::kEnded: 241 case webrtc::MediaStreamTrackInterface::kEnded:
242 SetReadyState(blink::WebMediaStreamSource::kReadyStateEnded); 242 SetReadyState(blink::WebMediaStreamSource::kReadyStateEnded);
243 break; 243 break;
244 default: 244 default:
245 NOTREACHED(); 245 NOTREACHED();
246 break; 246 break;
247 } 247 }
248 } 248 }
249 249
250 } // namespace content 250 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698