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

Side by Side Diff: talk/session/media/channel.h

Issue 1246913005: TransportController refactoring (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 3 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 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 12 matching lines...) Expand all
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #ifndef TALK_SESSION_MEDIA_CHANNEL_H_ 28 #ifndef TALK_SESSION_MEDIA_CHANNEL_H_
29 #define TALK_SESSION_MEDIA_CHANNEL_H_ 29 #define TALK_SESSION_MEDIA_CHANNEL_H_
30 30
31 #include <string> 31 #include <string>
32 #include <vector> 32 #include <vector>
33 #include <map>
34 #include <set>
35 #include <utility>
33 36
34 #include "talk/media/base/mediachannel.h" 37 #include "talk/media/base/mediachannel.h"
35 #include "talk/media/base/mediaengine.h" 38 #include "talk/media/base/mediaengine.h"
36 #include "talk/media/base/streamparams.h" 39 #include "talk/media/base/streamparams.h"
37 #include "talk/media/base/videocapturer.h" 40 #include "talk/media/base/videocapturer.h"
38 #include "webrtc/p2p/base/session.h" 41 #include "webrtc/p2p/base/transportcontroller.h"
39 #include "webrtc/p2p/client/socketmonitor.h" 42 #include "webrtc/p2p/client/socketmonitor.h"
40 #include "talk/session/media/audiomonitor.h" 43 #include "talk/session/media/audiomonitor.h"
41 #include "talk/session/media/bundlefilter.h" 44 #include "talk/session/media/bundlefilter.h"
42 #include "talk/session/media/mediamonitor.h" 45 #include "talk/session/media/mediamonitor.h"
43 #include "talk/session/media/mediasession.h" 46 #include "talk/session/media/mediasession.h"
44 #include "talk/session/media/rtcpmuxfilter.h" 47 #include "talk/session/media/rtcpmuxfilter.h"
45 #include "talk/session/media/srtpfilter.h" 48 #include "talk/session/media/srtpfilter.h"
46 #include "webrtc/base/asyncudpsocket.h" 49 #include "webrtc/base/asyncudpsocket.h"
47 #include "webrtc/base/criticalsection.h" 50 #include "webrtc/base/criticalsection.h"
48 #include "webrtc/base/network.h" 51 #include "webrtc/base/network.h"
(...skipping 20 matching lines...) Expand all
69 // WARNING! SUBCLASSES MUST CALL Deinit() IN THEIR DESTRUCTORS! 72 // WARNING! SUBCLASSES MUST CALL Deinit() IN THEIR DESTRUCTORS!
70 // This is required to avoid a data race between the destructor modifying the 73 // This is required to avoid a data race between the destructor modifying the
71 // vtable, and the media channel's thread using BaseChannel as the 74 // vtable, and the media channel's thread using BaseChannel as the
72 // NetworkInterface. 75 // NetworkInterface.
73 76
74 class BaseChannel 77 class BaseChannel
75 : public rtc::MessageHandler, public sigslot::has_slots<>, 78 : public rtc::MessageHandler, public sigslot::has_slots<>,
76 public MediaChannel::NetworkInterface, 79 public MediaChannel::NetworkInterface,
77 public ConnectionStatsGetter { 80 public ConnectionStatsGetter {
78 public: 81 public:
79 BaseChannel(rtc::Thread* thread, MediaChannel* channel, BaseSession* session, 82 BaseChannel(rtc::Thread* thread,
80 const std::string& content_name, bool rtcp); 83 MediaChannel* channel,
84 TransportController* transport_controller,
85 const std::string& content_name,
86 bool rtcp);
81 virtual ~BaseChannel(); 87 virtual ~BaseChannel();
82 bool Init(); 88 bool Init();
83 // Deinit may be called multiple times and is simply ignored if it's alreay 89 // Deinit may be called multiple times and is simply ignored if it's alreay
84 // done. 90 // done.
85 void Deinit(); 91 void Deinit();
86 92
87 rtc::Thread* worker_thread() const { return worker_thread_; } 93 rtc::Thread* worker_thread() const { return worker_thread_; }
88 BaseSession* session() const { return session_; } 94 const std::string& content_name() const { return content_name_; }
89 const std::string& content_name() { return content_name_; } 95 const std::string& transport_name() const { return transport_name_; }
90 TransportChannel* transport_channel() const { 96 TransportChannel* transport_channel() const {
91 return transport_channel_; 97 return transport_channel_;
92 } 98 }
93 TransportChannel* rtcp_transport_channel() const { 99 TransportChannel* rtcp_transport_channel() const {
94 return rtcp_transport_channel_; 100 return rtcp_transport_channel_;
95 } 101 }
96 bool enabled() const { return enabled_; } 102 bool enabled() const { return enabled_; }
97 103
98 // This function returns true if we are using SRTP. 104 // This function returns true if we are using SRTP.
99 bool secure() const { return srtp_filter_.IsActive(); } 105 bool secure() const { return srtp_filter_.IsActive(); }
100 // The following function returns true if we are using 106 // The following function returns true if we are using
101 // DTLS-based keying. If you turned off SRTP later, however 107 // DTLS-based keying. If you turned off SRTP later, however
102 // you could have secure() == false and dtls_secure() == true. 108 // you could have secure() == false and dtls_secure() == true.
103 bool secure_dtls() const { return dtls_keyed_; } 109 bool secure_dtls() const { return dtls_keyed_; }
104 // This function returns true if we require secure channel for call setup. 110 // This function returns true if we require secure channel for call setup.
105 bool secure_required() const { return secure_required_; } 111 bool secure_required() const { return secure_required_; }
106 112
107 bool writable() const { return writable_; } 113 bool writable() const { return writable_; }
108 bool IsStreamMuted(uint32 ssrc); 114 bool IsStreamMuted(uint32 ssrc);
109 115
110 // Activate RTCP mux, regardless of the state so far. Once 116 // Activate RTCP mux, regardless of the state so far. Once
111 // activated, it can not be deactivated, and if the remote 117 // activated, it can not be deactivated, and if the remote
112 // description doesn't support RTCP mux, setting the remote 118 // description doesn't support RTCP mux, setting the remote
113 // description will fail. 119 // description will fail.
114 void ActivateRtcpMux(); 120 void ActivateRtcpMux();
121 bool SetTransport(const std::string& transport_name);
115 bool PushdownLocalDescription(const SessionDescription* local_desc, 122 bool PushdownLocalDescription(const SessionDescription* local_desc,
116 ContentAction action, 123 ContentAction action,
117 std::string* error_desc); 124 std::string* error_desc);
118 bool PushdownRemoteDescription(const SessionDescription* remote_desc, 125 bool PushdownRemoteDescription(const SessionDescription* remote_desc,
119 ContentAction action, 126 ContentAction action,
120 std::string* error_desc); 127 std::string* error_desc);
121 // Channel control 128 // Channel control
122 bool SetLocalContent(const MediaContentDescription* content, 129 bool SetLocalContent(const MediaContentDescription* content,
123 ContentAction action, 130 ContentAction action,
124 std::string* error_desc); 131 std::string* error_desc);
125 bool SetRemoteContent(const MediaContentDescription* content, 132 bool SetRemoteContent(const MediaContentDescription* content,
126 ContentAction action, 133 ContentAction action,
127 std::string* error_desc); 134 std::string* error_desc);
128 135
129 bool Enable(bool enable); 136 bool Enable(bool enable);
130 // Mute sending media on the stream with SSRC |ssrc| 137 // Mute sending media on the stream with SSRC |ssrc|
131 // If there is only one sending stream SSRC 0 can be used. 138 // If there is only one sending stream SSRC 0 can be used.
132 bool MuteStream(uint32 ssrc, bool mute); 139 bool MuteStream(uint32 ssrc, bool mute);
133 140
134 // Multiplexing 141 // Multiplexing
135 bool AddRecvStream(const StreamParams& sp); 142 bool AddRecvStream(const StreamParams& sp);
136 bool RemoveRecvStream(uint32 ssrc); 143 bool RemoveRecvStream(uint32 ssrc);
137 bool AddSendStream(const StreamParams& sp); 144 bool AddSendStream(const StreamParams& sp);
138 bool RemoveSendStream(uint32 ssrc); 145 bool RemoveSendStream(uint32 ssrc);
139 146
140 // Monitoring 147 // Monitoring
141 void StartConnectionMonitor(int cms); 148 void StartConnectionMonitor(int cms);
142 void StopConnectionMonitor(); 149 void StopConnectionMonitor();
143 // For ConnectionStatsGetter, used by ConnectionMonitor 150 // For ConnectionStatsGetter, used by ConnectionMonitor
144 virtual bool GetConnectionStats(ConnectionInfos* infos) override; 151 bool GetConnectionStats(ConnectionInfos* infos) override;
145 152
146 void set_srtp_signal_silent_time(uint32 silent_time) { 153 void set_srtp_signal_silent_time(uint32 silent_time) {
147 srtp_filter_.set_signal_silent_time(silent_time); 154 srtp_filter_.set_signal_silent_time(silent_time);
148 } 155 }
149 156
150 BundleFilter* bundle_filter() { return &bundle_filter_; } 157 BundleFilter* bundle_filter() { return &bundle_filter_; }
151 158
152 const std::vector<StreamParams>& local_streams() const { 159 const std::vector<StreamParams>& local_streams() const {
153 return local_streams_; 160 return local_streams_;
154 } 161 }
155 const std::vector<StreamParams>& remote_streams() const { 162 const std::vector<StreamParams>& remote_streams() const {
156 return remote_streams_; 163 return remote_streams_;
157 } 164 }
158 165
159 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; 166 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure;
160 void SignalDtlsSetupFailure_w(bool rtcp); 167 void SignalDtlsSetupFailure_w(bool rtcp);
161 void SignalDtlsSetupFailure_s(bool rtcp); 168 void SignalDtlsSetupFailure_s(bool rtcp);
162 169
163 // Used for latency measurements. 170 // Used for latency measurements.
164 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; 171 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived;
165 172
166 // Used to alert UI when the muted status changes, perhaps autonomously. 173 // Used to alert UI when the muted status changes, perhaps autonomously.
167 sigslot::repeater2<BaseChannel*, bool> SignalAutoMuted; 174 sigslot::repeater2<BaseChannel*, bool> SignalAutoMuted;
168 175
169 // Made public for easier testing. 176 // Made public for easier testing.
170 void SetReadyToSend(TransportChannel* channel, bool ready); 177 void SetReadyToSend(bool rtcp, bool ready);
171 178
172 // Only public for unit tests. Otherwise, consider protected. 179 // Only public for unit tests. Otherwise, consider protected.
173 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); 180 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val);
174 181
175 protected: 182 protected:
176 virtual MediaChannel* media_channel() const { return media_channel_; } 183 virtual MediaChannel* media_channel() const { return media_channel_; }
177 // Sets the transport_channel_ and rtcp_transport_channel_. If 184 // Sets the transport_channel_ (and rtcp_transport_channel_, if |rtcp_| is
178 // |rtcp| is false, set rtcp_transport_channel_ is set to NULL. Get 185 // true). Gets the transport channels from |transport_controller_|.
179 // the transport channels from |session|. 186 bool SetTransportChannels(const std::string& transport_name);
180 // TODO(pthatcher): Pass in a Transport instead of a BaseSession. 187 bool SetTransportChannels_w(const std::string& transport_name);
181 bool SetTransportChannels(BaseSession* session, bool rtcp);
182 bool SetTransportChannels_w(BaseSession* session, bool rtcp);
183 void set_transport_channel(TransportChannel* transport); 188 void set_transport_channel(TransportChannel* transport);
184 void set_rtcp_transport_channel(TransportChannel* transport); 189 void set_rtcp_transport_channel(TransportChannel* transport);
185 bool was_ever_writable() const { return was_ever_writable_; } 190 bool was_ever_writable() const { return was_ever_writable_; }
186 void set_local_content_direction(MediaContentDirection direction) { 191 void set_local_content_direction(MediaContentDirection direction) {
187 local_content_direction_ = direction; 192 local_content_direction_ = direction;
188 } 193 }
189 void set_remote_content_direction(MediaContentDirection direction) { 194 void set_remote_content_direction(MediaContentDirection direction) {
190 remote_content_direction_ = direction; 195 remote_content_direction_ = direction;
191 } 196 }
192 void set_secure_required(bool secure_required) { 197 void set_secure_required(bool secure_required) {
193 secure_required_ = secure_required; 198 secure_required_ = secure_required;
194 } 199 }
195 bool IsReadyToReceive() const; 200 bool IsReadyToReceive() const;
196 bool IsReadyToSend() const; 201 bool IsReadyToSend() const;
197 rtc::Thread* signaling_thread() { return session_->signaling_thread(); } 202 rtc::Thread* signaling_thread() {
203 return transport_controller_->signaling_thread();
204 }
198 SrtpFilter* srtp_filter() { return &srtp_filter_; } 205 SrtpFilter* srtp_filter() { return &srtp_filter_; }
199 bool rtcp() const { return rtcp_; } 206 bool rtcp_transport_enabled() const { return rtcp_transport_enabled_; }
200 207
201 void ConnectToTransportChannel(TransportChannel* tc); 208 void ConnectToTransportChannel(TransportChannel* tc);
202 void DisconnectFromTransportChannel(TransportChannel* tc); 209 void DisconnectFromTransportChannel(TransportChannel* tc);
203 210
204 void FlushRtcpMessages(); 211 void FlushRtcpMessages();
205 212
206 // NetworkInterface implementation, called by MediaEngine 213 // NetworkInterface implementation, called by MediaEngine
207 virtual bool SendPacket(rtc::Buffer* packet, 214 virtual bool SendPacket(rtc::Buffer* packet,
208 rtc::DiffServCodePoint dscp); 215 rtc::DiffServCodePoint dscp);
209 virtual bool SendRtcp(rtc::Buffer* packet, 216 virtual bool SendRtcp(rtc::Buffer* packet,
210 rtc::DiffServCodePoint dscp); 217 rtc::DiffServCodePoint dscp);
211 218
212 // From TransportChannel 219 // From TransportChannel
213 void OnWritableState(TransportChannel* channel); 220 void OnWritableState(TransportChannel* channel);
214 virtual void OnChannelRead(TransportChannel* channel, 221 virtual void OnChannelRead(TransportChannel* channel,
215 const char* data, 222 const char* data,
216 size_t len, 223 size_t len,
217 const rtc::PacketTime& packet_time, 224 const rtc::PacketTime& packet_time,
218 int flags); 225 int flags);
219 void OnReadyToSend(TransportChannel* channel); 226 void OnReadyToSend(TransportChannel* channel);
220 227
221 bool PacketIsRtcp(const TransportChannel* channel, const char* data, 228 bool PacketIsRtcp(const TransportChannel* channel, const char* data,
222 size_t len); 229 size_t len);
223 bool SendPacket(bool rtcp, rtc::Buffer* packet, 230 bool SendPacket(bool rtcp, rtc::Buffer* packet,
224 rtc::DiffServCodePoint dscp); 231 rtc::DiffServCodePoint dscp);
225 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); 232 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet);
226 void HandlePacket(bool rtcp, rtc::Buffer* packet, 233 void HandlePacket(bool rtcp, rtc::Buffer* packet,
227 const rtc::PacketTime& packet_time); 234 const rtc::PacketTime& packet_time);
228 235
229 // Apply the new local/remote session description.
230 void OnNewLocalDescription(BaseSession* session, ContentAction action);
231 void OnNewRemoteDescription(BaseSession* session, ContentAction action);
232
233 void EnableMedia_w(); 236 void EnableMedia_w();
234 void DisableMedia_w(); 237 void DisableMedia_w();
235 virtual bool MuteStream_w(uint32 ssrc, bool mute); 238 virtual bool MuteStream_w(uint32 ssrc, bool mute);
236 bool IsStreamMuted_w(uint32 ssrc); 239 bool IsStreamMuted_w(uint32 ssrc);
240 void UpdateWritableState_w();
237 void ChannelWritable_w(); 241 void ChannelWritable_w();
238 void ChannelNotWritable_w(); 242 void ChannelNotWritable_w();
239 bool AddRecvStream_w(const StreamParams& sp); 243 bool AddRecvStream_w(const StreamParams& sp);
240 bool RemoveRecvStream_w(uint32 ssrc); 244 bool RemoveRecvStream_w(uint32 ssrc);
241 bool AddSendStream_w(const StreamParams& sp); 245 bool AddSendStream_w(const StreamParams& sp);
242 bool RemoveSendStream_w(uint32 ssrc); 246 bool RemoveSendStream_w(uint32 ssrc);
243 virtual bool ShouldSetupDtlsSrtp() const; 247 virtual bool ShouldSetupDtlsSrtp() const;
244 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. 248 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters.
245 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. 249 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter.
246 bool SetupDtlsSrtp(bool rtcp_channel); 250 bool SetupDtlsSrtp(bool rtcp_channel);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 const std::vector<ConnectionInfo>& infos) = 0; 301 const std::vector<ConnectionInfo>& infos) = 0;
298 302
299 // Helper function for invoking bool-returning methods on the worker thread. 303 // Helper function for invoking bool-returning methods on the worker thread.
300 template <class FunctorT> 304 template <class FunctorT>
301 bool InvokeOnWorker(const FunctorT& functor) { 305 bool InvokeOnWorker(const FunctorT& functor) {
302 return worker_thread_->Invoke<bool>(functor); 306 return worker_thread_->Invoke<bool>(functor);
303 } 307 }
304 308
305 private: 309 private:
306 rtc::Thread* worker_thread_; 310 rtc::Thread* worker_thread_;
307 BaseSession* session_; 311 TransportController* transport_controller_;
308 MediaChannel* media_channel_; 312 MediaChannel* media_channel_;
309 std::vector<StreamParams> local_streams_; 313 std::vector<StreamParams> local_streams_;
310 std::vector<StreamParams> remote_streams_; 314 std::vector<StreamParams> remote_streams_;
311 315
312 const std::string content_name_; 316 const std::string content_name_;
313 bool rtcp_; 317 std::string transport_name_;
318 bool rtcp_transport_enabled_;
314 TransportChannel* transport_channel_; 319 TransportChannel* transport_channel_;
320 std::vector<std::pair<rtc::Socket::Option, int> > socket_options_;
315 TransportChannel* rtcp_transport_channel_; 321 TransportChannel* rtcp_transport_channel_;
322 std::vector<std::pair<rtc::Socket::Option, int> > rtcp_socket_options_;
316 SrtpFilter srtp_filter_; 323 SrtpFilter srtp_filter_;
317 RtcpMuxFilter rtcp_mux_filter_; 324 RtcpMuxFilter rtcp_mux_filter_;
318 BundleFilter bundle_filter_; 325 BundleFilter bundle_filter_;
319 rtc::scoped_ptr<ConnectionMonitor> connection_monitor_; 326 rtc::scoped_ptr<ConnectionMonitor> connection_monitor_;
320 bool enabled_; 327 bool enabled_;
321 bool writable_; 328 bool writable_;
322 bool rtp_ready_to_send_; 329 bool rtp_ready_to_send_;
323 bool rtcp_ready_to_send_; 330 bool rtcp_ready_to_send_;
324 bool was_ever_writable_; 331 bool was_ever_writable_;
325 MediaContentDirection local_content_direction_; 332 MediaContentDirection local_content_direction_;
326 MediaContentDirection remote_content_direction_; 333 MediaContentDirection remote_content_direction_;
327 std::set<uint32> muted_streams_; 334 std::set<uint32> muted_streams_;
328 bool has_received_packet_; 335 bool has_received_packet_;
329 bool dtls_keyed_; 336 bool dtls_keyed_;
330 bool secure_required_; 337 bool secure_required_;
331 int rtp_abs_sendtime_extn_id_; 338 int rtp_abs_sendtime_extn_id_;
332 }; 339 };
333 340
334 // VoiceChannel is a specialization that adds support for early media, DTMF, 341 // VoiceChannel is a specialization that adds support for early media, DTMF,
335 // and input/output level monitoring. 342 // and input/output level monitoring.
336 class VoiceChannel : public BaseChannel { 343 class VoiceChannel : public BaseChannel {
337 public: 344 public:
338 VoiceChannel(rtc::Thread* thread, MediaEngineInterface* media_engine, 345 VoiceChannel(rtc::Thread* thread,
339 VoiceMediaChannel* channel, BaseSession* session, 346 MediaEngineInterface* media_engine,
340 const std::string& content_name, bool rtcp); 347 VoiceMediaChannel* channel,
348 TransportController* transport_controller,
349 const std::string& content_name,
350 bool rtcp);
341 ~VoiceChannel(); 351 ~VoiceChannel();
342 bool Init(); 352 bool Init();
343 bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer); 353 bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer);
344 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer); 354 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer);
345 355
346 // downcasts a MediaChannel 356 // downcasts a MediaChannel
347 virtual VoiceMediaChannel* media_channel() const { 357 virtual VoiceMediaChannel* media_channel() const {
348 return static_cast<VoiceMediaChannel*>(BaseChannel::media_channel()); 358 return static_cast<VoiceMediaChannel*>(BaseChannel::media_channel());
349 } 359 }
350 360
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 // SetSendParameters. 455 // SetSendParameters.
446 AudioSendParameters last_send_params_; 456 AudioSendParameters last_send_params_;
447 // Last AudioRecvParameters sent down to the media_channel() via 457 // Last AudioRecvParameters sent down to the media_channel() via
448 // SetRecvParameters. 458 // SetRecvParameters.
449 AudioRecvParameters last_recv_params_; 459 AudioRecvParameters last_recv_params_;
450 }; 460 };
451 461
452 // VideoChannel is a specialization for video. 462 // VideoChannel is a specialization for video.
453 class VideoChannel : public BaseChannel { 463 class VideoChannel : public BaseChannel {
454 public: 464 public:
455 VideoChannel(rtc::Thread* thread, VideoMediaChannel* channel, 465 VideoChannel(rtc::Thread* thread,
456 BaseSession* session, const std::string& content_name, 466 VideoMediaChannel* channel,
467 TransportController* transport_controller,
468 const std::string& content_name,
457 bool rtcp); 469 bool rtcp);
458 ~VideoChannel(); 470 ~VideoChannel();
459 bool Init(); 471 bool Init();
460 472
461 // downcasts a MediaChannel 473 // downcasts a MediaChannel
462 virtual VideoMediaChannel* media_channel() const { 474 virtual VideoMediaChannel* media_channel() const {
463 return static_cast<VideoMediaChannel*>(BaseChannel::media_channel()); 475 return static_cast<VideoMediaChannel*>(BaseChannel::media_channel());
464 } 476 }
465 477
466 bool SetRenderer(uint32 ssrc, VideoRenderer* renderer); 478 bool SetRenderer(uint32 ssrc, VideoRenderer* renderer);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 // Last VideoRecvParameters sent down to the media_channel() via 556 // Last VideoRecvParameters sent down to the media_channel() via
545 // SetRecvParameters. 557 // SetRecvParameters.
546 VideoRecvParameters last_recv_params_; 558 VideoRecvParameters last_recv_params_;
547 }; 559 };
548 560
549 // DataChannel is a specialization for data. 561 // DataChannel is a specialization for data.
550 class DataChannel : public BaseChannel { 562 class DataChannel : public BaseChannel {
551 public: 563 public:
552 DataChannel(rtc::Thread* thread, 564 DataChannel(rtc::Thread* thread,
553 DataMediaChannel* media_channel, 565 DataMediaChannel* media_channel,
554 BaseSession* session, 566 TransportController* transport_controller,
555 const std::string& content_name, 567 const std::string& content_name,
556 bool rtcp); 568 bool rtcp);
557 ~DataChannel(); 569 ~DataChannel();
558 bool Init(); 570 bool Init();
559 571
560 virtual bool SendData(const SendDataParams& params, 572 virtual bool SendData(const SendDataParams& params,
561 const rtc::Buffer& payload, 573 const rtc::Buffer& payload,
562 SendDataResult* result); 574 SendDataResult* result);
563 575
564 void StartMediaMonitor(int cms); 576 void StartMediaMonitor(int cms);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 // SetSendParameters. 679 // SetSendParameters.
668 DataSendParameters last_send_params_; 680 DataSendParameters last_send_params_;
669 // Last DataRecvParameters sent down to the media_channel() via 681 // Last DataRecvParameters sent down to the media_channel() via
670 // SetRecvParameters. 682 // SetRecvParameters.
671 DataRecvParameters last_recv_params_; 683 DataRecvParameters last_recv_params_;
672 }; 684 };
673 685
674 } // namespace cricket 686 } // namespace cricket
675 687
676 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ 688 #endif // TALK_SESSION_MEDIA_CHANNEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698