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

Side by Side Diff: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h

Issue 2946663003: content::RTCRtpSenders/Receivers using track adapter references. (Closed)
Patch Set: 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 const WebRTCConfiguration&, 224 const WebRTCConfiguration&,
225 WebMediaConstraints, 225 WebMediaConstraints,
226 ExceptionState&); 226 ExceptionState&);
227 void Dispose(); 227 void Dispose();
228 228
229 void ScheduleDispatchEvent(Event*); 229 void ScheduleDispatchEvent(Event*);
230 void ScheduleDispatchEvent(Event*, std::unique_ptr<BoolFunction>); 230 void ScheduleDispatchEvent(Event*, std::unique_ptr<BoolFunction>);
231 void DispatchScheduledEvent(); 231 void DispatchScheduledEvent();
232 MediaStreamTrack* GetLocalTrackById(const String& track_id) const; 232 MediaStreamTrack* GetLocalTrackById(const String& track_id) const;
233 MediaStreamTrack* GetRemoteTrackById(const String& track_id) const; 233 MediaStreamTrack* GetRemoteTrackById(const String& track_id) const;
234 // Senders and receivers returned by the handler are in use by the peer
235 // connection, a sender or receiver that is no longer in use is permanently
236 // inactive and does not need to be referenced anymore. These methods removes
237 // such senders/receivers from |rtp_senders_|/|rtp_receivers_|.
238 void RemoveInactiveSenders();
239 void RemoveInactiveReceivers();
240 234
241 void ChangeSignalingState(WebRTCPeerConnectionHandlerClient::SignalingState); 235 void ChangeSignalingState(WebRTCPeerConnectionHandlerClient::SignalingState);
242 void ChangeIceGatheringState( 236 void ChangeIceGatheringState(
243 WebRTCPeerConnectionHandlerClient::ICEGatheringState); 237 WebRTCPeerConnectionHandlerClient::ICEGatheringState);
244 // Changes the state immediately; does not fire an event. 238 // Changes the state immediately; does not fire an event.
245 // Returns true if the state was changed. 239 // Returns true if the state was changed.
246 bool SetIceConnectionState( 240 bool SetIceConnectionState(
247 WebRTCPeerConnectionHandlerClient::ICEConnectionState); 241 WebRTCPeerConnectionHandlerClient::ICEConnectionState);
248 // Changes the state asynchronously and fires an event immediately after 242 // Changes the state asynchronously and fires an event immediately after
249 // changing the state. 243 // changing the state.
250 void ChangeIceConnectionState( 244 void ChangeIceConnectionState(
251 WebRTCPeerConnectionHandlerClient::ICEConnectionState); 245 WebRTCPeerConnectionHandlerClient::ICEConnectionState);
252 246
253 void CloseInternal(); 247 void CloseInternal();
254 248
255 void RecordRapporMetrics(); 249 void RecordRapporMetrics();
256 250
257 SignalingState signaling_state_; 251 SignalingState signaling_state_;
258 ICEGatheringState ice_gathering_state_; 252 ICEGatheringState ice_gathering_state_;
259 ICEConnectionState ice_connection_state_; 253 ICEConnectionState ice_connection_state_;
260 254
261 // TODO(hbos): Move away from "addStream" and "removeStream" in favor of 255 // TODO(hbos): Move away from "addStream" and "removeStream" in favor of
262 // "addTrack" and "removeTrack". Update tracks, senders and receivers on 256 // "addTrack" and "removeTrack". Update tracks, senders and receivers on
263 // relevant events. https://crbug.com/705901 257 // relevant events. https://crbug.com/705901
264 MediaStreamVector local_streams_; 258 MediaStreamVector local_streams_;
265 MediaStreamVector remote_streams_; 259 MediaStreamVector remote_streams_;
266 HeapHashMap<uintptr_t, Member<RTCRtpSender>> rtp_senders_; 260 HeapHashMap<uintptr_t, WeakMember<RTCRtpSender>> rtp_senders_;
267 HeapHashMap<uintptr_t, Member<RTCRtpReceiver>> rtp_receivers_; 261 HeapHashMap<uintptr_t, WeakMember<RTCRtpReceiver>> rtp_receivers_;
268 262
269 std::unique_ptr<WebRTCPeerConnectionHandler> peer_handler_; 263 std::unique_ptr<WebRTCPeerConnectionHandler> peer_handler_;
270 264
271 Member<AsyncMethodRunner<RTCPeerConnection>> dispatch_scheduled_event_runner_; 265 Member<AsyncMethodRunner<RTCPeerConnection>> dispatch_scheduled_event_runner_;
272 HeapVector<Member<EventWrapper>> scheduled_events_; 266 HeapVector<Member<EventWrapper>> scheduled_events_;
273 267
274 // This handle notifies scheduler about an active connection associated 268 // This handle notifies scheduler about an active connection associated
275 // with a frame. Handle should be destroyed when connection is closed. 269 // with a frame. Handle should be destroyed when connection is closed.
276 std::unique_ptr<WebFrameScheduler::ActiveConnectionHandle> 270 std::unique_ptr<WebFrameScheduler::ActiveConnectionHandle>
277 connection_handle_for_scheduler_; 271 connection_handle_for_scheduler_;
278 272
279 bool stopped_; 273 bool stopped_;
280 bool closed_; 274 bool closed_;
281 275
282 bool has_data_channels_; // For RAPPOR metrics 276 bool has_data_channels_; // For RAPPOR metrics
283 }; 277 };
284 278
285 } // namespace blink 279 } // namespace blink
286 280
287 #endif // RTCPeerConnection_h 281 #endif // RTCPeerConnection_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698