| 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 167 |
| 168 // Made public for easier testing. | 168 // Made public for easier testing. |
| 169 void SetReadyToSend(bool rtcp, bool ready); | 169 void SetReadyToSend(bool rtcp, bool ready); |
| 170 | 170 |
| 171 // Only public for unit tests. Otherwise, consider protected. | 171 // Only public for unit tests. Otherwise, consider protected. |
| 172 int SetOption(SocketType type, rtc::Socket::Option o, int val) | 172 int SetOption(SocketType type, rtc::Socket::Option o, int val) |
| 173 override; | 173 override; |
| 174 | 174 |
| 175 SrtpFilter* srtp_filter() { return &srtp_filter_; } | 175 SrtpFilter* srtp_filter() { return &srtp_filter_; } |
| 176 | 176 |
| 177 bool SetEnableGcmCryptoSuites(bool enable); |
| 178 |
| 177 protected: | 179 protected: |
| 178 virtual MediaChannel* media_channel() const { return media_channel_; } | 180 virtual MediaChannel* media_channel() const { return media_channel_; } |
| 179 // Sets the |transport_channel_| (and |rtcp_transport_channel_|, if |rtcp_| is | 181 // Sets the |transport_channel_| (and |rtcp_transport_channel_|, if |rtcp_| is |
| 180 // true). Gets the transport channels from |transport_controller_|. | 182 // true). Gets the transport channels from |transport_controller_|. |
| 181 bool SetTransport_w(const std::string& transport_name); | 183 bool SetTransport_w(const std::string& transport_name); |
| 182 void set_transport_channel(TransportChannel* transport); | 184 void set_transport_channel(TransportChannel* transport); |
| 183 void set_rtcp_transport_channel(TransportChannel* transport); | 185 void set_rtcp_transport_channel(TransportChannel* transport); |
| 184 bool was_ever_writable() const { return was_ever_writable_; } | 186 bool was_ever_writable() const { return was_ever_writable_; } |
| 185 void set_local_content_direction(MediaContentDirection direction) { | 187 void set_local_content_direction(MediaContentDirection direction) { |
| 186 local_content_direction_ = direction; | 188 local_content_direction_ = direction; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 bool SetRtcpMux_w(bool enable, | 286 bool SetRtcpMux_w(bool enable, |
| 285 ContentAction action, | 287 ContentAction action, |
| 286 ContentSource src, | 288 ContentSource src, |
| 287 std::string* error_desc); | 289 std::string* error_desc); |
| 288 | 290 |
| 289 // From MessageHandler | 291 // From MessageHandler |
| 290 void OnMessage(rtc::Message* pmsg) override; | 292 void OnMessage(rtc::Message* pmsg) override; |
| 291 | 293 |
| 292 // Handled in derived classes | 294 // Handled in derived classes |
| 293 // Get the SRTP crypto suites to use for RTP media | 295 // Get the SRTP crypto suites to use for RTP media |
| 294 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const = 0; | 296 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites, |
| 297 const MediaSessionOptions& options) const = 0; |
| 295 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor, | 298 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor, |
| 296 const std::vector<ConnectionInfo>& infos) = 0; | 299 const std::vector<ConnectionInfo>& infos) = 0; |
| 297 | 300 |
| 298 // Helper function for invoking bool-returning methods on the worker thread. | 301 // Helper function for invoking bool-returning methods on the worker thread. |
| 299 template <class FunctorT> | 302 template <class FunctorT> |
| 300 bool InvokeOnWorker(const FunctorT& functor) { | 303 bool InvokeOnWorker(const FunctorT& functor) { |
| 301 return worker_thread_->Invoke<bool>(functor); | 304 return worker_thread_->Invoke<bool>(functor); |
| 302 } | 305 } |
| 303 | 306 |
| 304 private: | 307 private: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 322 bool enabled_; | 325 bool enabled_; |
| 323 bool writable_; | 326 bool writable_; |
| 324 bool rtp_ready_to_send_; | 327 bool rtp_ready_to_send_; |
| 325 bool rtcp_ready_to_send_; | 328 bool rtcp_ready_to_send_; |
| 326 bool was_ever_writable_; | 329 bool was_ever_writable_; |
| 327 MediaContentDirection local_content_direction_; | 330 MediaContentDirection local_content_direction_; |
| 328 MediaContentDirection remote_content_direction_; | 331 MediaContentDirection remote_content_direction_; |
| 329 bool has_received_packet_; | 332 bool has_received_packet_; |
| 330 bool dtls_keyed_; | 333 bool dtls_keyed_; |
| 331 bool secure_required_; | 334 bool secure_required_; |
| 335 bool enable_gcm_crypto_suites_; |
| 332 int rtp_abs_sendtime_extn_id_; | 336 int rtp_abs_sendtime_extn_id_; |
| 333 }; | 337 }; |
| 334 | 338 |
| 335 // VoiceChannel is a specialization that adds support for early media, DTMF, | 339 // VoiceChannel is a specialization that adds support for early media, DTMF, |
| 336 // and input/output level monitoring. | 340 // and input/output level monitoring. |
| 337 class VoiceChannel : public BaseChannel { | 341 class VoiceChannel : public BaseChannel { |
| 338 public: | 342 public: |
| 339 VoiceChannel(rtc::Thread* thread, | 343 VoiceChannel(rtc::Thread* thread, |
| 340 MediaEngineInterface* media_engine, | 344 MediaEngineInterface* media_engine, |
| 341 VoiceMediaChannel* channel, | 345 VoiceMediaChannel* channel, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 std::string* error_desc); | 412 std::string* error_desc); |
| 409 virtual bool SetRemoteContent_w(const MediaContentDescription* content, | 413 virtual bool SetRemoteContent_w(const MediaContentDescription* content, |
| 410 ContentAction action, | 414 ContentAction action, |
| 411 std::string* error_desc); | 415 std::string* error_desc); |
| 412 void HandleEarlyMediaTimeout(); | 416 void HandleEarlyMediaTimeout(); |
| 413 bool InsertDtmf_w(uint32_t ssrc, int event, int duration); | 417 bool InsertDtmf_w(uint32_t ssrc, int event, int duration); |
| 414 bool SetOutputVolume_w(uint32_t ssrc, double volume); | 418 bool SetOutputVolume_w(uint32_t ssrc, double volume); |
| 415 bool GetStats_w(VoiceMediaInfo* stats); | 419 bool GetStats_w(VoiceMediaInfo* stats); |
| 416 | 420 |
| 417 virtual void OnMessage(rtc::Message* pmsg); | 421 virtual void OnMessage(rtc::Message* pmsg); |
| 418 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; | 422 void GetSrtpCryptoSuites(std::vector<int>* crypto_suites, |
| 423 const MediaSessionOptions& options) const override; |
| 419 virtual void OnConnectionMonitorUpdate( | 424 virtual void OnConnectionMonitorUpdate( |
| 420 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); | 425 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); |
| 421 virtual void OnMediaMonitorUpdate( | 426 virtual void OnMediaMonitorUpdate( |
| 422 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); | 427 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); |
| 423 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); | 428 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); |
| 424 | 429 |
| 425 static const int kEarlyMediaTimeout = 1000; | 430 static const int kEarlyMediaTimeout = 1000; |
| 426 MediaEngineInterface* media_engine_; | 431 MediaEngineInterface* media_engine_; |
| 427 bool received_media_; | 432 bool received_media_; |
| 428 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; | 433 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 bool ApplyViewRequest_w(const ViewRequest& request); | 503 bool ApplyViewRequest_w(const ViewRequest& request); |
| 499 | 504 |
| 500 bool AddScreencast_w(uint32_t ssrc, VideoCapturer* capturer); | 505 bool AddScreencast_w(uint32_t ssrc, VideoCapturer* capturer); |
| 501 bool RemoveScreencast_w(uint32_t ssrc); | 506 bool RemoveScreencast_w(uint32_t ssrc); |
| 502 void OnScreencastWindowEvent_s(uint32_t ssrc, rtc::WindowEvent we); | 507 void OnScreencastWindowEvent_s(uint32_t ssrc, rtc::WindowEvent we); |
| 503 bool IsScreencasting_w() const; | 508 bool IsScreencasting_w() const; |
| 504 void GetScreencastDetails_w(ScreencastDetailsData* d) const; | 509 void GetScreencastDetails_w(ScreencastDetailsData* d) const; |
| 505 bool GetStats_w(VideoMediaInfo* stats); | 510 bool GetStats_w(VideoMediaInfo* stats); |
| 506 | 511 |
| 507 virtual void OnMessage(rtc::Message* pmsg); | 512 virtual void OnMessage(rtc::Message* pmsg); |
| 508 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; | 513 void GetSrtpCryptoSuites(std::vector<int>* crypto_suites, |
| 514 const MediaSessionOptions& options) const override; |
| 509 virtual void OnConnectionMonitorUpdate( | 515 virtual void OnConnectionMonitorUpdate( |
| 510 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); | 516 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); |
| 511 virtual void OnMediaMonitorUpdate( | 517 virtual void OnMediaMonitorUpdate( |
| 512 VideoMediaChannel* media_channel, const VideoMediaInfo& info); | 518 VideoMediaChannel* media_channel, const VideoMediaInfo& info); |
| 513 virtual void OnScreencastWindowEvent(uint32_t ssrc, rtc::WindowEvent event); | 519 virtual void OnScreencastWindowEvent(uint32_t ssrc, rtc::WindowEvent event); |
| 514 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); | 520 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); |
| 515 bool GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc); | 521 bool GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc); |
| 516 | 522 |
| 517 VideoRenderer* renderer_; | 523 VideoRenderer* renderer_; |
| 518 ScreencastMap screencast_capturers_; | 524 ScreencastMap screencast_capturers_; |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 virtual bool SetLocalContent_w(const MediaContentDescription* content, | 621 virtual bool SetLocalContent_w(const MediaContentDescription* content, |
| 616 ContentAction action, | 622 ContentAction action, |
| 617 std::string* error_desc); | 623 std::string* error_desc); |
| 618 virtual bool SetRemoteContent_w(const MediaContentDescription* content, | 624 virtual bool SetRemoteContent_w(const MediaContentDescription* content, |
| 619 ContentAction action, | 625 ContentAction action, |
| 620 std::string* error_desc); | 626 std::string* error_desc); |
| 621 virtual void ChangeState(); | 627 virtual void ChangeState(); |
| 622 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); | 628 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); |
| 623 | 629 |
| 624 virtual void OnMessage(rtc::Message* pmsg); | 630 virtual void OnMessage(rtc::Message* pmsg); |
| 625 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; | 631 void GetSrtpCryptoSuites(std::vector<int>* crypto_suites, |
| 632 const MediaSessionOptions& options) const override; |
| 626 virtual void OnConnectionMonitorUpdate( | 633 virtual void OnConnectionMonitorUpdate( |
| 627 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); | 634 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); |
| 628 virtual void OnMediaMonitorUpdate( | 635 virtual void OnMediaMonitorUpdate( |
| 629 DataMediaChannel* media_channel, const DataMediaInfo& info); | 636 DataMediaChannel* media_channel, const DataMediaInfo& info); |
| 630 virtual bool ShouldSetupDtlsSrtp() const; | 637 virtual bool ShouldSetupDtlsSrtp() const; |
| 631 void OnDataReceived( | 638 void OnDataReceived( |
| 632 const ReceiveDataParams& params, const char* data, size_t len); | 639 const ReceiveDataParams& params, const char* data, size_t len); |
| 633 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error); | 640 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error); |
| 634 void OnDataChannelReadyToSend(bool writable); | 641 void OnDataChannelReadyToSend(bool writable); |
| 635 void OnStreamClosedRemotely(uint32_t sid); | 642 void OnStreamClosedRemotely(uint32_t sid); |
| 636 | 643 |
| 637 rtc::scoped_ptr<DataMediaMonitor> media_monitor_; | 644 rtc::scoped_ptr<DataMediaMonitor> media_monitor_; |
| 638 // TODO(pthatcher): Make a separate SctpDataChannel and | 645 // TODO(pthatcher): Make a separate SctpDataChannel and |
| 639 // RtpDataChannel instead of using this. | 646 // RtpDataChannel instead of using this. |
| 640 DataChannelType data_channel_type_; | 647 DataChannelType data_channel_type_; |
| 641 bool ready_to_send_data_; | 648 bool ready_to_send_data_; |
| 642 | 649 |
| 643 // Last DataSendParameters sent down to the media_channel() via | 650 // Last DataSendParameters sent down to the media_channel() via |
| 644 // SetSendParameters. | 651 // SetSendParameters. |
| 645 DataSendParameters last_send_params_; | 652 DataSendParameters last_send_params_; |
| 646 // Last DataRecvParameters sent down to the media_channel() via | 653 // Last DataRecvParameters sent down to the media_channel() via |
| 647 // SetRecvParameters. | 654 // SetRecvParameters. |
| 648 DataRecvParameters last_recv_params_; | 655 DataRecvParameters last_recv_params_; |
| 649 }; | 656 }; |
| 650 | 657 |
| 651 } // namespace cricket | 658 } // namespace cricket |
| 652 | 659 |
| 653 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ | 660 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ |
| OLD | NEW |