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

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

Issue 699613002: Change DtmfSenderHandler to handle events on the signaling thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 const media::VideoCaptureFormat& format) { 124 const media::VideoCaptureFormat& format) {
125 DCHECK(io_message_loop_->BelongsToCurrentThread()); 125 DCHECK(io_message_loop_->BelongsToCurrentThread());
126 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::DoRenderFrameOnIOThread"); 126 TRACE_EVENT0("webrtc", "RemoteVideoSourceDelegate::DoRenderFrameOnIOThread");
127 // TODO(hclam): Give the estimated capture time. 127 // TODO(hclam): Give the estimated capture time.
128 frame_callback_.Run(video_frame, format, base::TimeTicks()); 128 frame_callback_.Run(video_frame, format, base::TimeTicks());
129 } 129 }
130 130
131 MediaStreamRemoteVideoSource::Observer::Observer( 131 MediaStreamRemoteVideoSource::Observer::Observer(
132 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread, 132 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread,
133 webrtc::VideoTrackInterface* track) 133 webrtc::VideoTrackInterface* track)
134 : main_thread_(main_thread), track_(track), state_(track->state()) { 134 : main_thread_(main_thread),
135 source_set_(false),
136 track_(track),
137 state_(track->state()) {
135 track->RegisterObserver(this); 138 track->RegisterObserver(this);
136 } 139 }
137 140
138 const scoped_refptr<webrtc::VideoTrackInterface>& 141 const scoped_refptr<webrtc::VideoTrackInterface>&
139 MediaStreamRemoteVideoSource::Observer::track() { 142 MediaStreamRemoteVideoSource::Observer::track() {
140 DCHECK(main_thread_->BelongsToCurrentThread()); 143 DCHECK(main_thread_->BelongsToCurrentThread());
141 return track_; 144 return track_;
142 } 145 }
143 146
144 webrtc::MediaStreamTrackInterface::TrackState 147 webrtc::MediaStreamTrackInterface::TrackState
145 MediaStreamRemoteVideoSource::Observer::state() const { 148 MediaStreamRemoteVideoSource::Observer::state() const {
146 DCHECK(main_thread_->BelongsToCurrentThread()); 149 DCHECK(main_thread_->BelongsToCurrentThread());
147 return state_; 150 return state_;
148 } 151 }
149 152
150 MediaStreamRemoteVideoSource::Observer::~Observer() { 153 MediaStreamRemoteVideoSource::Observer::~Observer() {
151 DCHECK(main_thread_->BelongsToCurrentThread()); 154 DCHECK(main_thread_->BelongsToCurrentThread());
152 track_->UnregisterObserver(this); 155 track_->UnregisterObserver(this);
153 } 156 }
154 157
155 void MediaStreamRemoteVideoSource::Observer::SetSource( 158 void MediaStreamRemoteVideoSource::Observer::SetSource(
156 const base::WeakPtr<MediaStreamRemoteVideoSource>& source) { 159 const base::WeakPtr<MediaStreamRemoteVideoSource>& source) {
157 DCHECK(main_thread_->BelongsToCurrentThread()); 160 DCHECK(main_thread_->BelongsToCurrentThread());
158 DCHECK(!source_); 161 DCHECK(!source_);
162 DLOG(ERROR) << "SetSource";
tommi (sloooow) - chröme 2014/11/03 13:49:56 remove? (and the rest of the debug logging)
perkj_chrome 2014/11/03 14:53:33 sorry....
159 source_ = source; 163 source_ = source;
164 // |source_set_| means that there is a MediaStreamRemoteVideoSource that
165 // should handle all state changes. Since an Observer is always created when
166 // a remote MediaStream changes in RemoteMediaStreamImpl::Observer::OnChanged,
167 // it can happen that an Observer is created but SetSource is never called.
168 source_set_ = true;
160 } 169 }
161 170
162 void MediaStreamRemoteVideoSource::Observer::OnChanged() { 171 void MediaStreamRemoteVideoSource::Observer::OnChanged() {
163 webrtc::MediaStreamTrackInterface::TrackState state = track_->state(); 172 webrtc::MediaStreamTrackInterface::TrackState state = track_->state();
173 DLOG(ERROR) << ":Observer::OnChanged" << state;
164 main_thread_->PostTask(FROM_HERE, 174 main_thread_->PostTask(FROM_HERE,
165 base::Bind(&MediaStreamRemoteVideoSource::Observer::OnChangedImpl, 175 base::Bind(&MediaStreamRemoteVideoSource::Observer::OnChangedImpl,
166 this, state)); 176 this, state));
167 } 177 }
168 178
169 void MediaStreamRemoteVideoSource::Observer::OnChangedImpl( 179 void MediaStreamRemoteVideoSource::Observer::OnChangedImpl(
170 webrtc::MediaStreamTrackInterface::TrackState state) { 180 webrtc::MediaStreamTrackInterface::TrackState state) {
171 DCHECK(main_thread_->BelongsToCurrentThread()); 181 DCHECK(main_thread_->BelongsToCurrentThread());
172 DCHECK(source_) << "Dropping a state change event. " << state; 182 DCHECK(source_ || !source_set_) << "Dropping a state change event. " << state;
173 if (source_ && state != state_) 183 if (source_ && state != state_)
174 source_->OnChanged(state); 184 source_->OnChanged(state);
175 state_ = state; 185 state_ = state;
176 } 186 }
177 187
178 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource( 188 MediaStreamRemoteVideoSource::MediaStreamRemoteVideoSource(
179 const scoped_refptr<MediaStreamRemoteVideoSource::Observer>& observer) 189 const scoped_refptr<MediaStreamRemoteVideoSource::Observer>& observer)
180 : observer_(observer), weak_factory_(this) { 190 : observer_(observer), weak_factory_(this) {
181 observer->SetSource(weak_factory_.GetWeakPtr()); 191 observer->SetSource(weak_factory_.GetWeakPtr());
192 DLOG(ERROR) << "MediaStreamRemoteVideoSource";
182 } 193 }
183 194
184 MediaStreamRemoteVideoSource::~MediaStreamRemoteVideoSource() { 195 MediaStreamRemoteVideoSource::~MediaStreamRemoteVideoSource() {
196 DLOG(ERROR) << "~MediaStreamRemoteVideoSource";
185 DCHECK(CalledOnValidThread()); 197 DCHECK(CalledOnValidThread());
186 } 198 }
187 199
188 void MediaStreamRemoteVideoSource::GetCurrentSupportedFormats( 200 void MediaStreamRemoteVideoSource::GetCurrentSupportedFormats(
189 int max_requested_width, 201 int max_requested_width,
190 int max_requested_height, 202 int max_requested_height,
191 double max_requested_frame_rate, 203 double max_requested_frame_rate,
192 const VideoCaptureDeviceFormatsCB& callback) { 204 const VideoCaptureDeviceFormatsCB& callback) {
193 DCHECK(CalledOnValidThread()); 205 DCHECK(CalledOnValidThread());
194 media::VideoCaptureFormats formats; 206 media::VideoCaptureFormats formats;
(...skipping 19 matching lines...) Expand all
214 } 226 }
215 227
216 webrtc::VideoRendererInterface* 228 webrtc::VideoRendererInterface*
217 MediaStreamRemoteVideoSource::RenderInterfaceForTest() { 229 MediaStreamRemoteVideoSource::RenderInterfaceForTest() {
218 return delegate_.get(); 230 return delegate_.get();
219 } 231 }
220 232
221 void MediaStreamRemoteVideoSource::OnChanged( 233 void MediaStreamRemoteVideoSource::OnChanged(
222 webrtc::MediaStreamTrackInterface::TrackState state) { 234 webrtc::MediaStreamTrackInterface::TrackState state) {
223 DCHECK(CalledOnValidThread()); 235 DCHECK(CalledOnValidThread());
236 DLOG(ERROR) << "OnChanged" << state;
224 switch (state) { 237 switch (state) {
225 case webrtc::MediaStreamTrackInterface::kInitializing: 238 case webrtc::MediaStreamTrackInterface::kInitializing:
226 // Ignore the kInitializing state since there is no match in 239 // Ignore the kInitializing state since there is no match in
227 // WebMediaStreamSource::ReadyState. 240 // WebMediaStreamSource::ReadyState.
228 break; 241 break;
229 case webrtc::MediaStreamTrackInterface::kLive: 242 case webrtc::MediaStreamTrackInterface::kLive:
230 SetReadyState(blink::WebMediaStreamSource::ReadyStateLive); 243 SetReadyState(blink::WebMediaStreamSource::ReadyStateLive);
231 break; 244 break;
232 case webrtc::MediaStreamTrackInterface::kEnded: 245 case webrtc::MediaStreamTrackInterface::kEnded:
233 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded); 246 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
234 break; 247 break;
235 default: 248 default:
236 NOTREACHED(); 249 NOTREACHED();
237 break; 250 break;
238 } 251 }
239 } 252 }
240 253
241 } // namespace content 254 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698