OLD | NEW |
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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 // This function returns true if we are using SRTP. | 98 // This function returns true if we are using SRTP. |
99 bool secure() const { return srtp_filter_.IsActive(); } | 99 bool secure() const { return srtp_filter_.IsActive(); } |
100 // The following function returns true if we are using | 100 // The following function returns true if we are using |
101 // DTLS-based keying. If you turned off SRTP later, however | 101 // DTLS-based keying. If you turned off SRTP later, however |
102 // you could have secure() == false and dtls_secure() == true. | 102 // you could have secure() == false and dtls_secure() == true. |
103 bool secure_dtls() const { return dtls_keyed_; } | 103 bool secure_dtls() const { return dtls_keyed_; } |
104 // This function returns true if we require secure channel for call setup. | 104 // This function returns true if we require secure channel for call setup. |
105 bool secure_required() const { return secure_required_; } | 105 bool secure_required() const { return secure_required_; } |
106 | 106 |
107 bool writable() const { return writable_; } | 107 bool writable() const { return writable_; } |
108 bool IsStreamMuted(uint32 ssrc); | |
109 | 108 |
110 // Activate RTCP mux, regardless of the state so far. Once | 109 // Activate RTCP mux, regardless of the state so far. Once |
111 // activated, it can not be deactivated, and if the remote | 110 // activated, it can not be deactivated, and if the remote |
112 // description doesn't support RTCP mux, setting the remote | 111 // description doesn't support RTCP mux, setting the remote |
113 // description will fail. | 112 // description will fail. |
114 void ActivateRtcpMux(); | 113 void ActivateRtcpMux(); |
115 bool PushdownLocalDescription(const SessionDescription* local_desc, | 114 bool PushdownLocalDescription(const SessionDescription* local_desc, |
116 ContentAction action, | 115 ContentAction action, |
117 std::string* error_desc); | 116 std::string* error_desc); |
118 bool PushdownRemoteDescription(const SessionDescription* remote_desc, | 117 bool PushdownRemoteDescription(const SessionDescription* remote_desc, |
119 ContentAction action, | 118 ContentAction action, |
120 std::string* error_desc); | 119 std::string* error_desc); |
121 // Channel control | 120 // Channel control |
122 bool SetLocalContent(const MediaContentDescription* content, | 121 bool SetLocalContent(const MediaContentDescription* content, |
123 ContentAction action, | 122 ContentAction action, |
124 std::string* error_desc); | 123 std::string* error_desc); |
125 bool SetRemoteContent(const MediaContentDescription* content, | 124 bool SetRemoteContent(const MediaContentDescription* content, |
126 ContentAction action, | 125 ContentAction action, |
127 std::string* error_desc); | 126 std::string* error_desc); |
128 | 127 |
129 bool Enable(bool enable); | 128 bool Enable(bool enable); |
130 // Mute sending media on the stream with SSRC |ssrc| | |
131 // If there is only one sending stream SSRC 0 can be used. | |
132 bool MuteStream(uint32 ssrc, bool mute); | |
133 | 129 |
134 // Multiplexing | 130 // Multiplexing |
135 bool AddRecvStream(const StreamParams& sp); | 131 bool AddRecvStream(const StreamParams& sp); |
136 bool RemoveRecvStream(uint32 ssrc); | 132 bool RemoveRecvStream(uint32 ssrc); |
137 bool AddSendStream(const StreamParams& sp); | 133 bool AddSendStream(const StreamParams& sp); |
138 bool RemoveSendStream(uint32 ssrc); | 134 bool RemoveSendStream(uint32 ssrc); |
139 | 135 |
140 // Monitoring | 136 // Monitoring |
141 void StartConnectionMonitor(int cms); | 137 void StartConnectionMonitor(int cms); |
142 void StopConnectionMonitor(); | 138 void StopConnectionMonitor(); |
(...skipping 13 matching lines...) Expand all Loading... |
156 return remote_streams_; | 152 return remote_streams_; |
157 } | 153 } |
158 | 154 |
159 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; | 155 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; |
160 void SignalDtlsSetupFailure_w(bool rtcp); | 156 void SignalDtlsSetupFailure_w(bool rtcp); |
161 void SignalDtlsSetupFailure_s(bool rtcp); | 157 void SignalDtlsSetupFailure_s(bool rtcp); |
162 | 158 |
163 // Used for latency measurements. | 159 // Used for latency measurements. |
164 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; | 160 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; |
165 | 161 |
166 // Used to alert UI when the muted status changes, perhaps autonomously. | |
167 sigslot::repeater2<BaseChannel*, bool> SignalAutoMuted; | |
168 | |
169 // Made public for easier testing. | 162 // Made public for easier testing. |
170 void SetReadyToSend(TransportChannel* channel, bool ready); | 163 void SetReadyToSend(TransportChannel* channel, bool ready); |
171 | 164 |
172 // Only public for unit tests. Otherwise, consider protected. | 165 // Only public for unit tests. Otherwise, consider protected. |
173 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); | 166 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); |
174 | 167 |
175 protected: | 168 protected: |
176 virtual MediaChannel* media_channel() const { return media_channel_; } | 169 virtual MediaChannel* media_channel() const { return media_channel_; } |
177 // Sets the transport_channel_ and rtcp_transport_channel_. If | 170 // Sets the transport_channel_ and rtcp_transport_channel_. If |
178 // |rtcp| is false, set rtcp_transport_channel_ is set to NULL. Get | 171 // |rtcp| is false, set rtcp_transport_channel_ is set to NULL. Get |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); | 218 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); |
226 void HandlePacket(bool rtcp, rtc::Buffer* packet, | 219 void HandlePacket(bool rtcp, rtc::Buffer* packet, |
227 const rtc::PacketTime& packet_time); | 220 const rtc::PacketTime& packet_time); |
228 | 221 |
229 // Apply the new local/remote session description. | 222 // Apply the new local/remote session description. |
230 void OnNewLocalDescription(BaseSession* session, ContentAction action); | 223 void OnNewLocalDescription(BaseSession* session, ContentAction action); |
231 void OnNewRemoteDescription(BaseSession* session, ContentAction action); | 224 void OnNewRemoteDescription(BaseSession* session, ContentAction action); |
232 | 225 |
233 void EnableMedia_w(); | 226 void EnableMedia_w(); |
234 void DisableMedia_w(); | 227 void DisableMedia_w(); |
235 virtual bool MuteStream_w(uint32 ssrc, bool mute); | |
236 bool IsStreamMuted_w(uint32 ssrc); | |
237 void ChannelWritable_w(); | 228 void ChannelWritable_w(); |
238 void ChannelNotWritable_w(); | 229 void ChannelNotWritable_w(); |
239 bool AddRecvStream_w(const StreamParams& sp); | 230 bool AddRecvStream_w(const StreamParams& sp); |
240 bool RemoveRecvStream_w(uint32 ssrc); | 231 bool RemoveRecvStream_w(uint32 ssrc); |
241 bool AddSendStream_w(const StreamParams& sp); | 232 bool AddSendStream_w(const StreamParams& sp); |
242 bool RemoveSendStream_w(uint32 ssrc); | 233 bool RemoveSendStream_w(uint32 ssrc); |
243 virtual bool ShouldSetupDtlsSrtp() const; | 234 virtual bool ShouldSetupDtlsSrtp() const; |
244 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. | 235 // 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. | 236 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. |
246 bool SetupDtlsSrtp(bool rtcp_channel); | 237 bool SetupDtlsSrtp(bool rtcp_channel); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 RtcpMuxFilter rtcp_mux_filter_; | 308 RtcpMuxFilter rtcp_mux_filter_; |
318 BundleFilter bundle_filter_; | 309 BundleFilter bundle_filter_; |
319 rtc::scoped_ptr<ConnectionMonitor> connection_monitor_; | 310 rtc::scoped_ptr<ConnectionMonitor> connection_monitor_; |
320 bool enabled_; | 311 bool enabled_; |
321 bool writable_; | 312 bool writable_; |
322 bool rtp_ready_to_send_; | 313 bool rtp_ready_to_send_; |
323 bool rtcp_ready_to_send_; | 314 bool rtcp_ready_to_send_; |
324 bool was_ever_writable_; | 315 bool was_ever_writable_; |
325 MediaContentDirection local_content_direction_; | 316 MediaContentDirection local_content_direction_; |
326 MediaContentDirection remote_content_direction_; | 317 MediaContentDirection remote_content_direction_; |
327 std::set<uint32> muted_streams_; | |
328 bool has_received_packet_; | 318 bool has_received_packet_; |
329 bool dtls_keyed_; | 319 bool dtls_keyed_; |
330 bool secure_required_; | 320 bool secure_required_; |
331 int rtp_abs_sendtime_extn_id_; | 321 int rtp_abs_sendtime_extn_id_; |
332 }; | 322 }; |
333 | 323 |
334 // VoiceChannel is a specialization that adds support for early media, DTMF, | 324 // VoiceChannel is a specialization that adds support for early media, DTMF, |
335 // and input/output level monitoring. | 325 // and input/output level monitoring. |
336 class VoiceChannel : public BaseChannel { | 326 class VoiceChannel : public BaseChannel { |
337 public: | 327 public: |
338 VoiceChannel(rtc::Thread* thread, MediaEngineInterface* media_engine, | 328 VoiceChannel(rtc::Thread* thread, MediaEngineInterface* media_engine, |
339 VoiceMediaChannel* channel, BaseSession* session, | 329 VoiceMediaChannel* channel, BaseSession* session, |
340 const std::string& content_name, bool rtcp); | 330 const std::string& content_name, bool rtcp); |
341 ~VoiceChannel(); | 331 ~VoiceChannel(); |
342 bool Init(); | 332 bool Init(); |
343 bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer); | 333 bool SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer); |
344 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer); | 334 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer); |
345 | 335 |
| 336 // Mute sending media on the stream with SSRC |ssrc| |
| 337 // If there is only one sending stream SSRC 0 can be used. |
| 338 bool MuteStream(uint32 ssrc, bool mute, const AudioOptions* options); |
| 339 bool IsStreamMuted(uint32 ssrc); |
| 340 |
346 // downcasts a MediaChannel | 341 // downcasts a MediaChannel |
347 virtual VoiceMediaChannel* media_channel() const { | 342 virtual VoiceMediaChannel* media_channel() const { |
348 return static_cast<VoiceMediaChannel*>(BaseChannel::media_channel()); | 343 return static_cast<VoiceMediaChannel*>(BaseChannel::media_channel()); |
349 } | 344 } |
350 | 345 |
351 bool SetRingbackTone(const void* buf, int len); | 346 bool SetRingbackTone(const void* buf, int len); |
352 void SetEarlyMedia(bool enable); | 347 void SetEarlyMedia(bool enable); |
353 // This signal is emitted when we have gone a period of time without | 348 // This signal is emitted when we have gone a period of time without |
354 // receiving early media. When received, a UI should start playing its | 349 // receiving early media. When received, a UI should start playing its |
355 // own ringing sound | 350 // own ringing sound |
(...skipping 24 matching lines...) Expand all Loading... |
380 | 375 |
381 void StartAudioMonitor(int cms); | 376 void StartAudioMonitor(int cms); |
382 void StopAudioMonitor(); | 377 void StopAudioMonitor(); |
383 bool IsAudioMonitorRunning() const; | 378 bool IsAudioMonitorRunning() const; |
384 sigslot::signal2<VoiceChannel*, const AudioInfo&> SignalAudioMonitor; | 379 sigslot::signal2<VoiceChannel*, const AudioInfo&> SignalAudioMonitor; |
385 | 380 |
386 void StartTypingMonitor(const TypingMonitorOptions& settings); | 381 void StartTypingMonitor(const TypingMonitorOptions& settings); |
387 void StopTypingMonitor(); | 382 void StopTypingMonitor(); |
388 bool IsTypingMonitorRunning() const; | 383 bool IsTypingMonitorRunning() const; |
389 | 384 |
390 // Overrides BaseChannel::MuteStream_w. | |
391 virtual bool MuteStream_w(uint32 ssrc, bool mute); | |
392 | |
393 int GetInputLevel_w(); | 385 int GetInputLevel_w(); |
394 int GetOutputLevel_w(); | 386 int GetOutputLevel_w(); |
395 void GetActiveStreams_w(AudioInfo::StreamList* actives); | 387 void GetActiveStreams_w(AudioInfo::StreamList* actives); |
396 | 388 |
397 // Signal errors from VoiceMediaChannel. Arguments are: | 389 // Signal errors from VoiceMediaChannel. Arguments are: |
398 // ssrc(uint32), and error(VoiceMediaChannel::Error). | 390 // ssrc(uint32), and error(VoiceMediaChannel::Error). |
399 sigslot::signal3<VoiceChannel*, uint32, VoiceMediaChannel::Error> | 391 sigslot::signal3<VoiceChannel*, uint32, VoiceMediaChannel::Error> |
400 SignalMediaError; | 392 SignalMediaError; |
401 | 393 |
402 // Configuration and setting. | 394 // Used to alert UI when the muted status changes, perhaps autonomously. |
403 bool SetChannelOptions(const AudioOptions& options); | 395 sigslot::repeater2<BaseChannel*, bool> SignalAutoMuted; |
404 | 396 |
405 private: | 397 private: |
406 // overrides from BaseChannel | 398 // overrides from BaseChannel |
407 virtual void OnChannelRead(TransportChannel* channel, | 399 virtual void OnChannelRead(TransportChannel* channel, |
408 const char* data, size_t len, | 400 const char* data, size_t len, |
409 const rtc::PacketTime& packet_time, | 401 const rtc::PacketTime& packet_time, |
410 int flags); | 402 int flags); |
411 virtual void ChangeState(); | 403 virtual void ChangeState(); |
412 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); | 404 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); |
413 virtual bool SetLocalContent_w(const MediaContentDescription* content, | 405 virtual bool SetLocalContent_w(const MediaContentDescription* content, |
414 ContentAction action, | 406 ContentAction action, |
415 std::string* error_desc); | 407 std::string* error_desc); |
416 virtual bool SetRemoteContent_w(const MediaContentDescription* content, | 408 virtual bool SetRemoteContent_w(const MediaContentDescription* content, |
417 ContentAction action, | 409 ContentAction action, |
418 std::string* error_desc); | 410 std::string* error_desc); |
| 411 bool MuteStream_w(uint32 ssrc, bool mute, const AudioOptions* options); |
| 412 bool IsStreamMuted_w(uint32 ssrc); |
419 bool SetRingbackTone_w(const void* buf, int len); | 413 bool SetRingbackTone_w(const void* buf, int len); |
420 bool PlayRingbackTone_w(uint32 ssrc, bool play, bool loop); | 414 bool PlayRingbackTone_w(uint32 ssrc, bool play, bool loop); |
421 void HandleEarlyMediaTimeout(); | 415 void HandleEarlyMediaTimeout(); |
422 bool InsertDtmf_w(uint32 ssrc, int event, int duration, int flags); | 416 bool InsertDtmf_w(uint32 ssrc, int event, int duration, int flags); |
423 bool SetOutputScaling_w(uint32 ssrc, double left, double right); | 417 bool SetOutputScaling_w(uint32 ssrc, double left, double right); |
424 bool GetStats_w(VoiceMediaInfo* stats); | 418 bool GetStats_w(VoiceMediaInfo* stats); |
425 | 419 |
426 virtual void OnMessage(rtc::Message* pmsg); | 420 virtual void OnMessage(rtc::Message* pmsg); |
427 virtual void GetSrtpCiphers(std::vector<std::string>* ciphers) const; | 421 virtual void GetSrtpCiphers(std::vector<std::string>* ciphers) const; |
428 virtual void OnConnectionMonitorUpdate( | 422 virtual void OnConnectionMonitorUpdate( |
429 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); | 423 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); |
430 virtual void OnMediaMonitorUpdate( | 424 virtual void OnMediaMonitorUpdate( |
431 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); | 425 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); |
432 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); | 426 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); |
433 void OnVoiceChannelError(uint32 ssrc, VoiceMediaChannel::Error error); | 427 void OnVoiceChannelError(uint32 ssrc, VoiceMediaChannel::Error error); |
434 void SendLastMediaError(); | 428 void SendLastMediaError(); |
435 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); | 429 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); |
436 | 430 |
437 static const int kEarlyMediaTimeout = 1000; | 431 static const int kEarlyMediaTimeout = 1000; |
438 MediaEngineInterface* media_engine_; | 432 MediaEngineInterface* media_engine_; |
439 bool received_media_; | 433 bool received_media_; |
440 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; | 434 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; |
441 rtc::scoped_ptr<AudioMonitor> audio_monitor_; | 435 rtc::scoped_ptr<AudioMonitor> audio_monitor_; |
442 rtc::scoped_ptr<TypingMonitor> typing_monitor_; | 436 rtc::scoped_ptr<TypingMonitor> typing_monitor_; |
| 437 std::set<uint32> muted_streams_; |
443 | 438 |
444 // Last AudioSendParameters sent down to the media_channel() via | 439 // Last AudioSendParameters sent down to the media_channel() via |
445 // SetSendParameters. | 440 // SetSendParameters. |
446 AudioSendParameters last_send_params_; | 441 AudioSendParameters last_send_params_; |
447 // Last AudioRecvParameters sent down to the media_channel() via | 442 // Last AudioRecvParameters sent down to the media_channel() via |
448 // SetRecvParameters. | 443 // SetRecvParameters. |
449 AudioRecvParameters last_recv_params_; | 444 AudioRecvParameters last_recv_params_; |
450 }; | 445 }; |
451 | 446 |
452 // VideoChannel is a specialization for video. | 447 // VideoChannel is a specialization for video. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 void StartMediaMonitor(int cms); | 481 void StartMediaMonitor(int cms); |
487 void StopMediaMonitor(); | 482 void StopMediaMonitor(); |
488 sigslot::signal2<VideoChannel*, const VideoMediaInfo&> SignalMediaMonitor; | 483 sigslot::signal2<VideoChannel*, const VideoMediaInfo&> SignalMediaMonitor; |
489 sigslot::signal2<uint32, rtc::WindowEvent> SignalScreencastWindowEvent; | 484 sigslot::signal2<uint32, rtc::WindowEvent> SignalScreencastWindowEvent; |
490 | 485 |
491 bool SendIntraFrame(); | 486 bool SendIntraFrame(); |
492 bool RequestIntraFrame(); | 487 bool RequestIntraFrame(); |
493 sigslot::signal3<VideoChannel*, uint32, VideoMediaChannel::Error> | 488 sigslot::signal3<VideoChannel*, uint32, VideoMediaChannel::Error> |
494 SignalMediaError; | 489 SignalMediaError; |
495 | 490 |
496 // Configuration and setting. | 491 // Mute sending media on the stream with SSRC |ssrc| |
497 bool SetChannelOptions(const VideoOptions& options); | 492 // If there is only one sending stream SSRC 0 can be used. |
| 493 bool MuteStream(uint32 ssrc, bool mute, const VideoOptions* options); |
498 | 494 |
499 private: | 495 private: |
500 typedef std::map<uint32, VideoCapturer*> ScreencastMap; | 496 typedef std::map<uint32, VideoCapturer*> ScreencastMap; |
501 struct ScreencastDetailsData; | 497 struct ScreencastDetailsData; |
502 | 498 |
503 // overrides from BaseChannel | 499 // overrides from BaseChannel |
504 virtual void ChangeState(); | 500 virtual void ChangeState(); |
505 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); | 501 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); |
506 virtual bool SetLocalContent_w(const MediaContentDescription* content, | 502 virtual bool SetLocalContent_w(const MediaContentDescription* content, |
507 ContentAction action, | 503 ContentAction action, |
(...skipping 16 matching lines...) Expand all Loading... |
524 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); | 520 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); |
525 virtual void OnMediaMonitorUpdate( | 521 virtual void OnMediaMonitorUpdate( |
526 VideoMediaChannel* media_channel, const VideoMediaInfo& info); | 522 VideoMediaChannel* media_channel, const VideoMediaInfo& info); |
527 virtual void OnScreencastWindowEvent(uint32 ssrc, | 523 virtual void OnScreencastWindowEvent(uint32 ssrc, |
528 rtc::WindowEvent event); | 524 rtc::WindowEvent event); |
529 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); | 525 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); |
530 bool GetLocalSsrc(const VideoCapturer* capturer, uint32* ssrc); | 526 bool GetLocalSsrc(const VideoCapturer* capturer, uint32* ssrc); |
531 | 527 |
532 void OnVideoChannelError(uint32 ssrc, VideoMediaChannel::Error error); | 528 void OnVideoChannelError(uint32 ssrc, VideoMediaChannel::Error error); |
533 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); | 529 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); |
| 530 bool MuteStream_w(uint32 ssrc, bool mute, const VideoOptions* options); |
534 | 531 |
535 VideoRenderer* renderer_; | 532 VideoRenderer* renderer_; |
536 ScreencastMap screencast_capturers_; | 533 ScreencastMap screencast_capturers_; |
537 rtc::scoped_ptr<VideoMediaMonitor> media_monitor_; | 534 rtc::scoped_ptr<VideoMediaMonitor> media_monitor_; |
538 | 535 |
539 rtc::WindowEvent previous_we_; | 536 rtc::WindowEvent previous_we_; |
540 | 537 |
541 // Last VideoSendParameters sent down to the media_channel() via | 538 // Last VideoSendParameters sent down to the media_channel() via |
542 // SetSendParameters. | 539 // SetSendParameters. |
543 VideoSendParameters last_send_params_; | 540 VideoSendParameters last_send_params_; |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 // SetSendParameters. | 664 // SetSendParameters. |
668 DataSendParameters last_send_params_; | 665 DataSendParameters last_send_params_; |
669 // Last DataRecvParameters sent down to the media_channel() via | 666 // Last DataRecvParameters sent down to the media_channel() via |
670 // SetRecvParameters. | 667 // SetRecvParameters. |
671 DataRecvParameters last_recv_params_; | 668 DataRecvParameters last_recv_params_; |
672 }; | 669 }; |
673 | 670 |
674 } // namespace cricket | 671 } // namespace cricket |
675 | 672 |
676 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ | 673 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ |
OLD | NEW |