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

Side by Side Diff: webrtc/pc/channel.h

Issue 1903393004: Added network thread to rtc::BaseChannel (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase & Post NetworkRouteChange to worker thread. Created 4 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 /* 1 /*
2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 29 matching lines...) Expand all
40 40
41 namespace webrtc { 41 namespace webrtc {
42 class AudioSinkInterface; 42 class AudioSinkInterface;
43 } // namespace webrtc 43 } // namespace webrtc
44 44
45 namespace cricket { 45 namespace cricket {
46 46
47 struct CryptoParams; 47 struct CryptoParams;
48 class MediaContentDescription; 48 class MediaContentDescription;
49 49
50 enum SinkType {
51 SINK_PRE_CRYPTO, // Sink packets before encryption or after decryption.
52 SINK_POST_CRYPTO // Sink packets after encryption or before decryption.
53 };
54
55 // BaseChannel contains logic common to voice and video, including 50 // BaseChannel contains logic common to voice and video, including
56 // enable, marshaling calls to a worker thread, and 51 // enable, marshaling calls to a worker thread, and
57 // connection and media monitors. 52 // connection and media monitors.
58 // 53 //
59 // WARNING! SUBCLASSES MUST CALL Deinit() IN THEIR DESTRUCTORS! 54 // WARNING! SUBCLASSES MUST CALL Deinit() IN THEIR DESTRUCTORS!
60 // This is required to avoid a data race between the destructor modifying the 55 // This is required to avoid a data race between the destructor modifying the
61 // vtable, and the media channel's thread using BaseChannel as the 56 // vtable, and the media channel's thread using BaseChannel as the
62 // NetworkInterface. 57 // NetworkInterface.
63 58
64 class BaseChannel 59 class BaseChannel
65 : public rtc::MessageHandler, public sigslot::has_slots<>, 60 : public rtc::MessageHandler, public sigslot::has_slots<>,
66 public MediaChannel::NetworkInterface, 61 public MediaChannel::NetworkInterface,
67 public ConnectionStatsGetter { 62 public ConnectionStatsGetter {
68 public: 63 public:
69 BaseChannel(rtc::Thread* thread, 64 BaseChannel(rtc::Thread* worker_thread,
65 rtc::Thread* network_thread,
70 MediaChannel* channel, 66 MediaChannel* channel,
71 TransportController* transport_controller, 67 TransportController* transport_controller,
72 const std::string& content_name, 68 const std::string& content_name,
73 bool rtcp); 69 bool rtcp);
74 virtual ~BaseChannel(); 70 virtual ~BaseChannel();
75 bool Init(); 71 bool Init();
76 // Deinit may be called multiple times and is simply ignored if it's alreay 72 // Deinit may be called multiple times and is simply ignored if it's alreay
77 // done. 73 // done.
78 void Deinit(); 74 void Deinit();
79 75
80 rtc::Thread* worker_thread() const { return worker_thread_; } 76 rtc::Thread* worker_thread() const { return worker_thread_; }
77 rtc::Thread* network_thread() const { return network_thread_; }
81 const std::string& content_name() const { return content_name_; } 78 const std::string& content_name() const { return content_name_; }
82 const std::string& transport_name() const { return transport_name_; } 79 const std::string& transport_name() const { return transport_name_; }
83 TransportChannel* transport_channel() const { 80 TransportChannel* transport_channel() const {
84 return transport_channel_; 81 return transport_channel_;
85 } 82 }
86 TransportChannel* rtcp_transport_channel() const { 83 TransportChannel* rtcp_transport_channel() const {
87 return rtcp_transport_channel_; 84 return rtcp_transport_channel_;
88 } 85 }
89 bool enabled() const { return enabled_; } 86 bool enabled() const { return enabled_; }
90 87
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 BundleFilter* bundle_filter() { return &bundle_filter_; } 133 BundleFilter* bundle_filter() { return &bundle_filter_; }
137 134
138 const std::vector<StreamParams>& local_streams() const { 135 const std::vector<StreamParams>& local_streams() const {
139 return local_streams_; 136 return local_streams_;
140 } 137 }
141 const std::vector<StreamParams>& remote_streams() const { 138 const std::vector<StreamParams>& remote_streams() const {
142 return remote_streams_; 139 return remote_streams_;
143 } 140 }
144 141
145 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; 142 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure;
146 void SignalDtlsSetupFailure_w(bool rtcp); 143 void SignalDtlsSetupFailure_n(bool rtcp);
147 void SignalDtlsSetupFailure_s(bool rtcp); 144 void SignalDtlsSetupFailure_s(bool rtcp);
148 145
149 // Used for latency measurements. 146 // Used for latency measurements.
150 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; 147 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived;
151 148
152 // Made public for easier testing. 149 // Made public for easier testing.
153 void SetReadyToSend(bool rtcp, bool ready); 150 void SetReadyToSend(bool rtcp, bool ready);
154 151
155 // Only public for unit tests. Otherwise, consider protected. 152 // Only public for unit tests. Otherwise, consider protected.
156 int SetOption(SocketType type, rtc::Socket::Option o, int val) 153 int SetOption(SocketType type, rtc::Socket::Option o, int val)
157 override; 154 override;
158 155
159 SrtpFilter* srtp_filter() { return &srtp_filter_; } 156 SrtpFilter* srtp_filter() { return &srtp_filter_; }
160 157
161 protected: 158 protected:
162 virtual MediaChannel* media_channel() const { return media_channel_; } 159 virtual MediaChannel* media_channel() const { return media_channel_; }
163 // Sets the |transport_channel_| (and |rtcp_transport_channel_|, if |rtcp_| is 160 // Sets the |transport_channel_| (and |rtcp_transport_channel_|, if |rtcp_| is
164 // true). Gets the transport channels from |transport_controller_|. 161 // true). Gets the transport channels from |transport_controller_|.
165 bool SetTransport_w(const std::string& transport_name); 162 bool SetTransport_n(const std::string& transport_name);
166 163
167 void set_transport_channel(TransportChannel* transport); 164 void set_transport_channel(TransportChannel* transport);
168 void set_rtcp_transport_channel(TransportChannel* transport, 165 void set_rtcp_transport_channel(TransportChannel* transport,
169 bool update_writablity); 166 bool update_writablity);
170 167
171 bool was_ever_writable() const { return was_ever_writable_; } 168 bool was_ever_writable() const { return was_ever_writable_; }
172 void set_local_content_direction(MediaContentDirection direction) { 169 void set_local_content_direction(MediaContentDirection direction) {
173 local_content_direction_ = direction; 170 local_content_direction_ = direction;
174 } 171 }
175 void set_remote_content_direction(MediaContentDirection direction) { 172 void set_remote_content_direction(MediaContentDirection direction) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 void OnSelectedCandidatePairChanged( 207 void OnSelectedCandidatePairChanged(
211 TransportChannel* channel, 208 TransportChannel* channel,
212 CandidatePairInterface* selected_candidate_pair, 209 CandidatePairInterface* selected_candidate_pair,
213 int last_sent_packet_id); 210 int last_sent_packet_id);
214 211
215 bool PacketIsRtcp(const TransportChannel* channel, const char* data, 212 bool PacketIsRtcp(const TransportChannel* channel, const char* data,
216 size_t len); 213 size_t len);
217 bool SendPacket(bool rtcp, 214 bool SendPacket(bool rtcp,
218 rtc::CopyOnWriteBuffer* packet, 215 rtc::CopyOnWriteBuffer* packet,
219 const rtc::PacketOptions& options); 216 const rtc::PacketOptions& options);
217
220 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet); 218 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet);
221 void HandlePacket(bool rtcp, rtc::CopyOnWriteBuffer* packet, 219 void HandlePacket(bool rtcp, rtc::CopyOnWriteBuffer* packet,
222 const rtc::PacketTime& packet_time); 220 const rtc::PacketTime& packet_time);
223 221
224 void EnableMedia_w(); 222 void EnableMedia_w();
225 void DisableMedia_w(); 223 void DisableMedia_w();
226 void UpdateWritableState_w(); 224 void UpdateWritableState_n();
227 void ChannelWritable_w(); 225 void ChannelWritable_n();
228 void ChannelNotWritable_w(); 226 void ChannelNotWritable_n();
229 bool AddRecvStream_w(const StreamParams& sp); 227 bool AddRecvStream_w(const StreamParams& sp);
230 bool RemoveRecvStream_w(uint32_t ssrc); 228 bool RemoveRecvStream_w(uint32_t ssrc);
231 bool AddSendStream_w(const StreamParams& sp); 229 bool AddSendStream_w(const StreamParams& sp);
232 bool RemoveSendStream_w(uint32_t ssrc); 230 bool RemoveSendStream_w(uint32_t ssrc);
233 virtual bool ShouldSetupDtlsSrtp() const; 231 virtual bool ShouldSetupDtlsSrtp() const;
234 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. 232 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters.
235 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. 233 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter.
236 bool SetupDtlsSrtp(bool rtcp_channel); 234 bool SetupDtlsSrtp_n(bool rtcp_channel);
237 void MaybeSetupDtlsSrtp_w(); 235 void MaybeSetupDtlsSrtp_n();
238 // Set the DTLS-SRTP cipher policy on this channel as appropriate. 236 // Set the DTLS-SRTP cipher policy on this channel as appropriate.
239 bool SetDtlsSrtpCryptoSuites(TransportChannel* tc, bool rtcp); 237 bool SetDtlsSrtpCryptoSuites(TransportChannel* tc, bool rtcp);
240 238
241 virtual void ChangeState() = 0; 239 void ChangeState();
240 virtual void ChangeState_w() = 0;
242 241
243 // Gets the content info appropriate to the channel (audio or video). 242 // Gets the content info appropriate to the channel (audio or video).
244 virtual const ContentInfo* GetFirstContent( 243 virtual const ContentInfo* GetFirstContent(
245 const SessionDescription* sdesc) = 0; 244 const SessionDescription* sdesc) = 0;
246 bool UpdateLocalStreams_w(const std::vector<StreamParams>& streams, 245 bool UpdateLocalStreams_w(const std::vector<StreamParams>& streams,
247 ContentAction action, 246 ContentAction action,
248 std::string* error_desc); 247 std::string* error_desc);
249 bool UpdateRemoteStreams_w(const std::vector<StreamParams>& streams, 248 bool UpdateRemoteStreams_w(const std::vector<StreamParams>& streams,
250 ContentAction action, 249 ContentAction action,
251 std::string* error_desc); 250 std::string* error_desc);
252 virtual bool SetLocalContent_w(const MediaContentDescription* content, 251 virtual bool SetLocalContent_w(const MediaContentDescription* content,
253 ContentAction action, 252 ContentAction action,
254 std::string* error_desc) = 0; 253 std::string* error_desc) = 0;
255 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 254 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
256 ContentAction action, 255 ContentAction action,
257 std::string* error_desc) = 0; 256 std::string* error_desc) = 0;
258 bool SetRtpTransportParameters_w(const MediaContentDescription* content, 257 bool SetRtpTransportParameters(const MediaContentDescription* content,
259 ContentAction action, 258 ContentAction action,
260 ContentSource src, 259 ContentSource src,
261 std::string* error_desc); 260 std::string* error_desc);
262 261
263 // Helper method to get RTP Absoulute SendTime extension header id if 262 // Helper method to get RTP Absoulute SendTime extension header id if
264 // present in remote supported extensions list. 263 // present in remote supported extensions list.
265 void MaybeCacheRtpAbsSendTimeHeaderExtension( 264 void MaybeCacheRtpAbsSendTimeHeaderExtension(
266 const std::vector<RtpHeaderExtension>& extensions); 265 const std::vector<RtpHeaderExtension>& extensions);
267 266
268 bool CheckSrtpConfig(const std::vector<CryptoParams>& cryptos, 267 bool CheckSrtpConfig(const std::vector<CryptoParams>& cryptos,
269 bool* dtls, 268 bool* dtls,
270 std::string* error_desc); 269 std::string* error_desc);
271 bool SetSrtp_w(const std::vector<CryptoParams>& params, 270 bool SetSrtp_n(const std::vector<CryptoParams>& params,
272 ContentAction action, 271 ContentAction action,
273 ContentSource src, 272 ContentSource src,
274 std::string* error_desc); 273 std::string* error_desc);
275 void ActivateRtcpMux_w(); 274 void ActivateRtcpMux_n();
276 bool SetRtcpMux_w(bool enable, 275 bool SetRtcpMux_n(bool enable,
277 ContentAction action, 276 ContentAction action,
278 ContentSource src, 277 ContentSource src,
279 std::string* error_desc); 278 std::string* error_desc);
280 279
281 // From MessageHandler 280 // From MessageHandler
282 void OnMessage(rtc::Message* pmsg) override; 281 void OnMessage(rtc::Message* pmsg) override;
283 282
284 // Handled in derived classes 283 // Handled in derived classes
285 // Get the SRTP crypto suites to use for RTP media 284 // Get the SRTP crypto suites to use for RTP media
286 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const = 0; 285 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const = 0;
287 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor, 286 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor,
288 const std::vector<ConnectionInfo>& infos) = 0; 287 const std::vector<ConnectionInfo>& infos) = 0;
289 288
290 // Helper function for invoking bool-returning methods on the worker thread. 289 // Helper function for invoking bool-returning methods on the worker thread.
291 template <class FunctorT> 290 template <class FunctorT>
292 bool InvokeOnWorker(const FunctorT& functor) { 291 bool InvokeOnWorker(const FunctorT& functor) {
293 return worker_thread_->Invoke<bool>(functor); 292 return worker_thread_->Invoke<bool>(functor);
294 } 293 }
295 294
296 private: 295 private:
297 rtc::Thread* worker_thread_; 296 rtc::Thread* const worker_thread_;
298 TransportController* transport_controller_; 297 rtc::Thread* const network_thread_;
299 MediaChannel* media_channel_; 298 TransportController* const transport_controller_;
299 MediaChannel* const media_channel_;
300 std::vector<StreamParams> local_streams_; 300 std::vector<StreamParams> local_streams_;
301 std::vector<StreamParams> remote_streams_; 301 std::vector<StreamParams> remote_streams_;
302 302
303 const std::string content_name_; 303 const std::string content_name_;
304 std::string transport_name_; 304 std::string transport_name_;
305 bool rtcp_transport_enabled_; 305 bool rtcp_transport_enabled_;
306 TransportChannel* transport_channel_; 306 TransportChannel* transport_channel_;
307 std::vector<std::pair<rtc::Socket::Option, int> > socket_options_; 307 std::vector<std::pair<rtc::Socket::Option, int> > socket_options_;
308 TransportChannel* rtcp_transport_channel_; 308 TransportChannel* rtcp_transport_channel_;
309 std::vector<std::pair<rtc::Socket::Option, int> > rtcp_socket_options_; 309 std::vector<std::pair<rtc::Socket::Option, int> > rtcp_socket_options_;
(...skipping 11 matching lines...) Expand all
321 bool has_received_packet_; 321 bool has_received_packet_;
322 bool dtls_keyed_; 322 bool dtls_keyed_;
323 bool secure_required_; 323 bool secure_required_;
324 int rtp_abs_sendtime_extn_id_; 324 int rtp_abs_sendtime_extn_id_;
325 }; 325 };
326 326
327 // VoiceChannel is a specialization that adds support for early media, DTMF, 327 // VoiceChannel is a specialization that adds support for early media, DTMF,
328 // and input/output level monitoring. 328 // and input/output level monitoring.
329 class VoiceChannel : public BaseChannel { 329 class VoiceChannel : public BaseChannel {
330 public: 330 public:
331 VoiceChannel(rtc::Thread* thread, 331 VoiceChannel(rtc::Thread* worker_thread,
332 rtc::Thread* network_thread,
332 MediaEngineInterface* media_engine, 333 MediaEngineInterface* media_engine,
333 VoiceMediaChannel* channel, 334 VoiceMediaChannel* channel,
334 TransportController* transport_controller, 335 TransportController* transport_controller,
335 const std::string& content_name, 336 const std::string& content_name,
336 bool rtcp); 337 bool rtcp);
337 ~VoiceChannel(); 338 ~VoiceChannel();
338 bool Init(); 339 bool Init();
339 340
340 // Configure sending media on the stream with SSRC |ssrc| 341 // Configure sending media on the stream with SSRC |ssrc|
341 // If there is only one sending stream SSRC 0 can be used. 342 // If there is only one sending stream SSRC 0 can be used.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 void GetActiveStreams_w(AudioInfo::StreamList* actives); 391 void GetActiveStreams_w(AudioInfo::StreamList* actives);
391 webrtc::RtpParameters GetRtpParameters_w(uint32_t ssrc) const; 392 webrtc::RtpParameters GetRtpParameters_w(uint32_t ssrc) const;
392 bool SetRtpParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters); 393 bool SetRtpParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters);
393 394
394 private: 395 private:
395 // overrides from BaseChannel 396 // overrides from BaseChannel
396 virtual void OnChannelRead(TransportChannel* channel, 397 virtual void OnChannelRead(TransportChannel* channel,
397 const char* data, size_t len, 398 const char* data, size_t len,
398 const rtc::PacketTime& packet_time, 399 const rtc::PacketTime& packet_time,
399 int flags); 400 int flags);
400 virtual void ChangeState(); 401 void ChangeState_w() override;
401 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); 402 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc);
402 virtual bool SetLocalContent_w(const MediaContentDescription* content, 403 virtual bool SetLocalContent_w(const MediaContentDescription* content,
403 ContentAction action, 404 ContentAction action,
404 std::string* error_desc); 405 std::string* error_desc);
405 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 406 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
406 ContentAction action, 407 ContentAction action,
407 std::string* error_desc); 408 std::string* error_desc);
408 void HandleEarlyMediaTimeout(); 409 void HandleEarlyMediaTimeout();
409 bool InsertDtmf_w(uint32_t ssrc, int event, int duration); 410 bool InsertDtmf_w(uint32_t ssrc, int event, int duration);
410 bool SetOutputVolume_w(uint32_t ssrc, double volume); 411 bool SetOutputVolume_w(uint32_t ssrc, double volume);
(...skipping 17 matching lines...) Expand all
428 // SetSendParameters. 429 // SetSendParameters.
429 AudioSendParameters last_send_params_; 430 AudioSendParameters last_send_params_;
430 // Last AudioRecvParameters sent down to the media_channel() via 431 // Last AudioRecvParameters sent down to the media_channel() via
431 // SetRecvParameters. 432 // SetRecvParameters.
432 AudioRecvParameters last_recv_params_; 433 AudioRecvParameters last_recv_params_;
433 }; 434 };
434 435
435 // VideoChannel is a specialization for video. 436 // VideoChannel is a specialization for video.
436 class VideoChannel : public BaseChannel { 437 class VideoChannel : public BaseChannel {
437 public: 438 public:
438 VideoChannel(rtc::Thread* thread, 439 VideoChannel(rtc::Thread* worker_thread,
440 rtc::Thread* netwokr_thread,
439 VideoMediaChannel* channel, 441 VideoMediaChannel* channel,
440 TransportController* transport_controller, 442 TransportController* transport_controller,
441 const std::string& content_name, 443 const std::string& content_name,
442 bool rtcp); 444 bool rtcp);
443 ~VideoChannel(); 445 ~VideoChannel();
444 bool Init(); 446 bool Init();
445 447
446 // downcasts a MediaChannel 448 // downcasts a MediaChannel
447 virtual VideoMediaChannel* media_channel() const { 449 virtual VideoMediaChannel* media_channel() const {
448 return static_cast<VideoMediaChannel*>(BaseChannel::media_channel()); 450 return static_cast<VideoMediaChannel*>(BaseChannel::media_channel());
(...skipping 13 matching lines...) Expand all
462 void StartMediaMonitor(int cms); 464 void StartMediaMonitor(int cms);
463 void StopMediaMonitor(); 465 void StopMediaMonitor();
464 sigslot::signal2<VideoChannel*, const VideoMediaInfo&> SignalMediaMonitor; 466 sigslot::signal2<VideoChannel*, const VideoMediaInfo&> SignalMediaMonitor;
465 467
466 bool SetVideoSend(uint32_t ssrc, bool enable, const VideoOptions* options); 468 bool SetVideoSend(uint32_t ssrc, bool enable, const VideoOptions* options);
467 webrtc::RtpParameters GetRtpParameters(uint32_t ssrc) const; 469 webrtc::RtpParameters GetRtpParameters(uint32_t ssrc) const;
468 bool SetRtpParameters(uint32_t ssrc, const webrtc::RtpParameters& parameters); 470 bool SetRtpParameters(uint32_t ssrc, const webrtc::RtpParameters& parameters);
469 471
470 private: 472 private:
471 // overrides from BaseChannel 473 // overrides from BaseChannel
472 virtual void ChangeState(); 474 void ChangeState_w() override;
473 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); 475 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc);
474 virtual bool SetLocalContent_w(const MediaContentDescription* content, 476 virtual bool SetLocalContent_w(const MediaContentDescription* content,
475 ContentAction action, 477 ContentAction action,
476 std::string* error_desc); 478 std::string* error_desc);
477 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 479 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
478 ContentAction action, 480 ContentAction action,
479 std::string* error_desc); 481 std::string* error_desc);
480 bool GetStats_w(VideoMediaInfo* stats); 482 bool GetStats_w(VideoMediaInfo* stats);
481 webrtc::RtpParameters GetRtpParameters_w(uint32_t ssrc) const; 483 webrtc::RtpParameters GetRtpParameters_w(uint32_t ssrc) const;
482 bool SetRtpParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters); 484 bool SetRtpParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters);
(...skipping 11 matching lines...) Expand all
494 // SetSendParameters. 496 // SetSendParameters.
495 VideoSendParameters last_send_params_; 497 VideoSendParameters last_send_params_;
496 // Last VideoRecvParameters sent down to the media_channel() via 498 // Last VideoRecvParameters sent down to the media_channel() via
497 // SetRecvParameters. 499 // SetRecvParameters.
498 VideoRecvParameters last_recv_params_; 500 VideoRecvParameters last_recv_params_;
499 }; 501 };
500 502
501 // DataChannel is a specialization for data. 503 // DataChannel is a specialization for data.
502 class DataChannel : public BaseChannel { 504 class DataChannel : public BaseChannel {
503 public: 505 public:
504 DataChannel(rtc::Thread* thread, 506 DataChannel(rtc::Thread* worker_thread,
507 rtc::Thread* network_thread,
505 DataMediaChannel* media_channel, 508 DataMediaChannel* media_channel,
506 TransportController* transport_controller, 509 TransportController* transport_controller,
507 const std::string& content_name, 510 const std::string& content_name,
508 bool rtcp); 511 bool rtcp);
509 ~DataChannel(); 512 ~DataChannel();
510 bool Init(); 513 bool Init();
511 514
512 virtual bool SendData(const SendDataParams& params, 515 virtual bool SendData(const SendDataParams& params,
513 const rtc::CopyOnWriteBuffer& payload, 516 const rtc::CopyOnWriteBuffer& payload,
514 SendDataResult* result); 517 SendDataResult* result);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 // Same as SetDataChannelType, but extracts the type from the 584 // Same as SetDataChannelType, but extracts the type from the
582 // DataContentDescription. 585 // DataContentDescription.
583 bool SetDataChannelTypeFromContent(const DataContentDescription* content, 586 bool SetDataChannelTypeFromContent(const DataContentDescription* content,
584 std::string* error_desc); 587 std::string* error_desc);
585 virtual bool SetLocalContent_w(const MediaContentDescription* content, 588 virtual bool SetLocalContent_w(const MediaContentDescription* content,
586 ContentAction action, 589 ContentAction action,
587 std::string* error_desc); 590 std::string* error_desc);
588 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 591 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
589 ContentAction action, 592 ContentAction action,
590 std::string* error_desc); 593 std::string* error_desc);
591 virtual void ChangeState(); 594 void ChangeState_w() override;
592 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet); 595 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet);
593 596
594 virtual void OnMessage(rtc::Message* pmsg); 597 virtual void OnMessage(rtc::Message* pmsg);
595 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; 598 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const;
596 virtual void OnConnectionMonitorUpdate( 599 virtual void OnConnectionMonitorUpdate(
597 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); 600 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos);
598 virtual void OnMediaMonitorUpdate( 601 virtual void OnMediaMonitorUpdate(
599 DataMediaChannel* media_channel, const DataMediaInfo& info); 602 DataMediaChannel* media_channel, const DataMediaInfo& info);
600 virtual bool ShouldSetupDtlsSrtp() const; 603 virtual bool ShouldSetupDtlsSrtp() const;
601 void OnDataReceived( 604 void OnDataReceived(
(...skipping 12 matching lines...) Expand all
614 // SetSendParameters. 617 // SetSendParameters.
615 DataSendParameters last_send_params_; 618 DataSendParameters last_send_params_;
616 // Last DataRecvParameters sent down to the media_channel() via 619 // Last DataRecvParameters sent down to the media_channel() via
617 // SetRecvParameters. 620 // SetRecvParameters.
618 DataRecvParameters last_recv_params_; 621 DataRecvParameters last_recv_params_;
619 }; 622 };
620 623
621 } // namespace cricket 624 } // namespace cricket
622 625
623 #endif // WEBRTC_PC_CHANNEL_H_ 626 #endif // WEBRTC_PC_CHANNEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698