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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #include "webrtc/base/asyncudpsocket.h" | 46 #include "webrtc/base/asyncudpsocket.h" |
47 #include "webrtc/base/criticalsection.h" | 47 #include "webrtc/base/criticalsection.h" |
48 #include "webrtc/base/network.h" | 48 #include "webrtc/base/network.h" |
49 #include "webrtc/base/sigslot.h" | 49 #include "webrtc/base/sigslot.h" |
50 #include "webrtc/base/window.h" | 50 #include "webrtc/base/window.h" |
51 | 51 |
52 namespace cricket { | 52 namespace cricket { |
53 | 53 |
54 struct CryptoParams; | 54 struct CryptoParams; |
55 class MediaContentDescription; | 55 class MediaContentDescription; |
56 struct TypingMonitorOptions; | |
57 class TypingMonitor; | |
58 struct ViewRequest; | 56 struct ViewRequest; |
59 | 57 |
60 enum SinkType { | 58 enum SinkType { |
61 SINK_PRE_CRYPTO, // Sink packets before encryption or after decryption. | 59 SINK_PRE_CRYPTO, // Sink packets before encryption or after decryption. |
62 SINK_POST_CRYPTO // Sink packets after encryption or before decryption. | 60 SINK_POST_CRYPTO // Sink packets after encryption or before decryption. |
63 }; | 61 }; |
64 | 62 |
65 // BaseChannel contains logic common to voice and video, including | 63 // BaseChannel contains logic common to voice and video, including |
66 // enable/mute, marshaling calls to a worker thread, and | 64 // enable/mute, marshaling calls to a worker thread, and |
67 // connection and media monitors. | 65 // connection and media monitors. |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 return remote_streams_; | 154 return remote_streams_; |
157 } | 155 } |
158 | 156 |
159 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; | 157 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure; |
160 void SignalDtlsSetupFailure_w(bool rtcp); | 158 void SignalDtlsSetupFailure_w(bool rtcp); |
161 void SignalDtlsSetupFailure_s(bool rtcp); | 159 void SignalDtlsSetupFailure_s(bool rtcp); |
162 | 160 |
163 // Used for latency measurements. | 161 // Used for latency measurements. |
164 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; | 162 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; |
165 | 163 |
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. | 164 // Made public for easier testing. |
170 void SetReadyToSend(TransportChannel* channel, bool ready); | 165 void SetReadyToSend(TransportChannel* channel, bool ready); |
171 | 166 |
172 // Only public for unit tests. Otherwise, consider protected. | 167 // Only public for unit tests. Otherwise, consider protected. |
173 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); | 168 virtual int SetOption(SocketType type, rtc::Socket::Option o, int val); |
174 | 169 |
175 protected: | 170 protected: |
176 virtual MediaChannel* media_channel() const { return media_channel_; } | 171 virtual MediaChannel* media_channel() const { return media_channel_; } |
177 // Sets the transport_channel_ and rtcp_transport_channel_. If | 172 // Sets the transport_channel_ and rtcp_transport_channel_. If |
178 // |rtcp| is false, set rtcp_transport_channel_ is set to NULL. Get | 173 // |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); | 220 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); |
226 void HandlePacket(bool rtcp, rtc::Buffer* packet, | 221 void HandlePacket(bool rtcp, rtc::Buffer* packet, |
227 const rtc::PacketTime& packet_time); | 222 const rtc::PacketTime& packet_time); |
228 | 223 |
229 // Apply the new local/remote session description. | 224 // Apply the new local/remote session description. |
230 void OnNewLocalDescription(BaseSession* session, ContentAction action); | 225 void OnNewLocalDescription(BaseSession* session, ContentAction action); |
231 void OnNewRemoteDescription(BaseSession* session, ContentAction action); | 226 void OnNewRemoteDescription(BaseSession* session, ContentAction action); |
232 | 227 |
233 void EnableMedia_w(); | 228 void EnableMedia_w(); |
234 void DisableMedia_w(); | 229 void DisableMedia_w(); |
235 virtual bool MuteStream_w(uint32 ssrc, bool mute); | 230 bool MuteStream_w(uint32 ssrc, bool mute); |
236 bool IsStreamMuted_w(uint32 ssrc); | 231 bool IsStreamMuted_w(uint32 ssrc); |
237 void ChannelWritable_w(); | 232 void ChannelWritable_w(); |
238 void ChannelNotWritable_w(); | 233 void ChannelNotWritable_w(); |
239 bool AddRecvStream_w(const StreamParams& sp); | 234 bool AddRecvStream_w(const StreamParams& sp); |
240 bool RemoveRecvStream_w(uint32 ssrc); | 235 bool RemoveRecvStream_w(uint32 ssrc); |
241 bool AddSendStream_w(const StreamParams& sp); | 236 bool AddSendStream_w(const StreamParams& sp); |
242 bool RemoveSendStream_w(uint32 ssrc); | 237 bool RemoveSendStream_w(uint32 ssrc); |
243 virtual bool ShouldSetupDtlsSrtp() const; | 238 virtual bool ShouldSetupDtlsSrtp() const; |
244 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. | 239 // 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. | 240 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 | 371 |
377 void StartMediaMonitor(int cms); | 372 void StartMediaMonitor(int cms); |
378 void StopMediaMonitor(); | 373 void StopMediaMonitor(); |
379 sigslot::signal2<VoiceChannel*, const VoiceMediaInfo&> SignalMediaMonitor; | 374 sigslot::signal2<VoiceChannel*, const VoiceMediaInfo&> SignalMediaMonitor; |
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); | |
387 void StopTypingMonitor(); | |
388 bool IsTypingMonitorRunning() const; | |
389 | |
390 // Overrides BaseChannel::MuteStream_w. | |
391 virtual bool MuteStream_w(uint32 ssrc, bool mute); | |
392 | |
393 int GetInputLevel_w(); | 381 int GetInputLevel_w(); |
394 int GetOutputLevel_w(); | 382 int GetOutputLevel_w(); |
395 void GetActiveStreams_w(AudioInfo::StreamList* actives); | 383 void GetActiveStreams_w(AudioInfo::StreamList* actives); |
396 | 384 |
397 // Signal errors from VoiceMediaChannel. Arguments are: | 385 // Signal errors from VoiceMediaChannel. Arguments are: |
398 // ssrc(uint32), and error(VoiceMediaChannel::Error). | 386 // ssrc(uint32), and error(VoiceMediaChannel::Error). |
399 sigslot::signal3<VoiceChannel*, uint32, VoiceMediaChannel::Error> | 387 sigslot::signal3<VoiceChannel*, uint32, VoiceMediaChannel::Error> |
400 SignalMediaError; | 388 SignalMediaError; |
401 | 389 |
402 // Configuration and setting. | 390 // Configuration and setting. |
(...skipping 29 matching lines...) Expand all Loading... |
432 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); | 420 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); |
433 void OnVoiceChannelError(uint32 ssrc, VoiceMediaChannel::Error error); | 421 void OnVoiceChannelError(uint32 ssrc, VoiceMediaChannel::Error error); |
434 void SendLastMediaError(); | 422 void SendLastMediaError(); |
435 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); | 423 void OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, SrtpFilter::Error error); |
436 | 424 |
437 static const int kEarlyMediaTimeout = 1000; | 425 static const int kEarlyMediaTimeout = 1000; |
438 MediaEngineInterface* media_engine_; | 426 MediaEngineInterface* media_engine_; |
439 bool received_media_; | 427 bool received_media_; |
440 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; | 428 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; |
441 rtc::scoped_ptr<AudioMonitor> audio_monitor_; | 429 rtc::scoped_ptr<AudioMonitor> audio_monitor_; |
442 rtc::scoped_ptr<TypingMonitor> typing_monitor_; | |
443 | 430 |
444 // Last AudioSendParameters sent down to the media_channel() via | 431 // Last AudioSendParameters sent down to the media_channel() via |
445 // SetSendParameters. | 432 // SetSendParameters. |
446 AudioSendParameters last_send_params_; | 433 AudioSendParameters last_send_params_; |
447 // Last AudioRecvParameters sent down to the media_channel() via | 434 // Last AudioRecvParameters sent down to the media_channel() via |
448 // SetRecvParameters. | 435 // SetRecvParameters. |
449 AudioRecvParameters last_recv_params_; | 436 AudioRecvParameters last_recv_params_; |
450 }; | 437 }; |
451 | 438 |
452 // VideoChannel is a specialization for video. | 439 // VideoChannel is a specialization for video. |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 // SetSendParameters. | 654 // SetSendParameters. |
668 DataSendParameters last_send_params_; | 655 DataSendParameters last_send_params_; |
669 // Last DataRecvParameters sent down to the media_channel() via | 656 // Last DataRecvParameters sent down to the media_channel() via |
670 // SetRecvParameters. | 657 // SetRecvParameters. |
671 DataRecvParameters last_recv_params_; | 658 DataRecvParameters last_recv_params_; |
672 }; | 659 }; |
673 | 660 |
674 } // namespace cricket | 661 } // namespace cricket |
675 | 662 |
676 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ | 663 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ |
OLD | NEW |