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

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

Issue 1528843005: Add support for GCM cipher suites from RFC 7714. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 4 years, 10 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 SetCryptoOptions(const rtc::CryptoOptions& crypto_options);
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 184
183 void set_transport_channel(TransportChannel* transport); 185 void set_transport_channel(TransportChannel* transport);
184 void set_rtcp_transport_channel(TransportChannel* transport, 186 void set_rtcp_transport_channel(TransportChannel* transport,
185 bool update_writablity); 187 bool update_writablity);
186 188
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 bool SetRtcpMux_w(bool enable, 289 bool SetRtcpMux_w(bool enable,
288 ContentAction action, 290 ContentAction action,
289 ContentSource src, 291 ContentSource src,
290 std::string* error_desc); 292 std::string* error_desc);
291 293
292 // From MessageHandler 294 // From MessageHandler
293 void OnMessage(rtc::Message* pmsg) override; 295 void OnMessage(rtc::Message* pmsg) override;
294 296
295 // Handled in derived classes 297 // Handled in derived classes
296 // Get the SRTP crypto suites to use for RTP media 298 // Get the SRTP crypto suites to use for RTP media
297 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const = 0; 299 virtual void GetSrtpCryptoSuites(const rtc::CryptoOptions& crypto_options,
300 std::vector<int>* crypto_suites) const = 0;
298 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor, 301 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor,
299 const std::vector<ConnectionInfo>& infos) = 0; 302 const std::vector<ConnectionInfo>& infos) = 0;
300 303
301 // Helper function for invoking bool-returning methods on the worker thread. 304 // Helper function for invoking bool-returning methods on the worker thread.
302 template <class FunctorT> 305 template <class FunctorT>
303 bool InvokeOnWorker(const FunctorT& functor) { 306 bool InvokeOnWorker(const FunctorT& functor) {
304 return worker_thread_->Invoke<bool>(functor); 307 return worker_thread_->Invoke<bool>(functor);
305 } 308 }
306 309
307 private: 310 private:
(...skipping 17 matching lines...) Expand all
325 bool enabled_; 328 bool enabled_;
326 bool writable_; 329 bool writable_;
327 bool rtp_ready_to_send_; 330 bool rtp_ready_to_send_;
328 bool rtcp_ready_to_send_; 331 bool rtcp_ready_to_send_;
329 bool was_ever_writable_; 332 bool was_ever_writable_;
330 MediaContentDirection local_content_direction_; 333 MediaContentDirection local_content_direction_;
331 MediaContentDirection remote_content_direction_; 334 MediaContentDirection remote_content_direction_;
332 bool has_received_packet_; 335 bool has_received_packet_;
333 bool dtls_keyed_; 336 bool dtls_keyed_;
334 bool secure_required_; 337 bool secure_required_;
338 rtc::CryptoOptions crypto_options_;
335 int rtp_abs_sendtime_extn_id_; 339 int rtp_abs_sendtime_extn_id_;
336 }; 340 };
337 341
338 // VoiceChannel is a specialization that adds support for early media, DTMF, 342 // VoiceChannel is a specialization that adds support for early media, DTMF,
339 // and input/output level monitoring. 343 // and input/output level monitoring.
340 class VoiceChannel : public BaseChannel { 344 class VoiceChannel : public BaseChannel {
341 public: 345 public:
342 VoiceChannel(rtc::Thread* thread, 346 VoiceChannel(rtc::Thread* thread,
343 MediaEngineInterface* media_engine, 347 MediaEngineInterface* media_engine,
344 VoiceMediaChannel* channel, 348 VoiceMediaChannel* channel,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 std::string* error_desc); 415 std::string* error_desc);
412 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 416 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
413 ContentAction action, 417 ContentAction action,
414 std::string* error_desc); 418 std::string* error_desc);
415 void HandleEarlyMediaTimeout(); 419 void HandleEarlyMediaTimeout();
416 bool InsertDtmf_w(uint32_t ssrc, int event, int duration); 420 bool InsertDtmf_w(uint32_t ssrc, int event, int duration);
417 bool SetOutputVolume_w(uint32_t ssrc, double volume); 421 bool SetOutputVolume_w(uint32_t ssrc, double volume);
418 bool GetStats_w(VoiceMediaInfo* stats); 422 bool GetStats_w(VoiceMediaInfo* stats);
419 423
420 virtual void OnMessage(rtc::Message* pmsg); 424 virtual void OnMessage(rtc::Message* pmsg);
421 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; 425 void GetSrtpCryptoSuites(const rtc::CryptoOptions& crypto_options,
426 std::vector<int>* crypto_suites) const override;
422 virtual void OnConnectionMonitorUpdate( 427 virtual void OnConnectionMonitorUpdate(
423 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); 428 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos);
424 virtual void OnMediaMonitorUpdate( 429 virtual void OnMediaMonitorUpdate(
425 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info); 430 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info);
426 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); 431 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info);
427 432
428 static const int kEarlyMediaTimeout = 1000; 433 static const int kEarlyMediaTimeout = 1000;
429 MediaEngineInterface* media_engine_; 434 MediaEngineInterface* media_engine_;
430 bool received_media_; 435 bool received_media_;
431 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_; 436 rtc::scoped_ptr<VoiceMediaMonitor> media_monitor_;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 std::string* error_desc); 502 std::string* error_desc);
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 bool GetStats_w(VideoMediaInfo* stats); 509 bool GetStats_w(VideoMediaInfo* stats);
505 510
506 virtual void OnMessage(rtc::Message* pmsg); 511 virtual void OnMessage(rtc::Message* pmsg);
507 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; 512 void GetSrtpCryptoSuites(const rtc::CryptoOptions& crypto_options,
513 std::vector<int>* crypto_suites) const override;
508 virtual void OnConnectionMonitorUpdate( 514 virtual void OnConnectionMonitorUpdate(
509 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); 515 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos);
510 virtual void OnMediaMonitorUpdate( 516 virtual void OnMediaMonitorUpdate(
511 VideoMediaChannel* media_channel, const VideoMediaInfo& info); 517 VideoMediaChannel* media_channel, const VideoMediaInfo& info);
512 virtual void OnScreencastWindowEvent(uint32_t ssrc, rtc::WindowEvent event); 518 virtual void OnScreencastWindowEvent(uint32_t ssrc, rtc::WindowEvent event);
513 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); 519 virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev);
514 bool GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc); 520 bool GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc);
515 521
516 VideoRenderer* renderer_; 522 VideoRenderer* renderer_;
517 ScreencastMap screencast_capturers_; 523 ScreencastMap screencast_capturers_;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 virtual bool SetLocalContent_w(const MediaContentDescription* content, 620 virtual bool SetLocalContent_w(const MediaContentDescription* content,
615 ContentAction action, 621 ContentAction action,
616 std::string* error_desc); 622 std::string* error_desc);
617 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 623 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
618 ContentAction action, 624 ContentAction action,
619 std::string* error_desc); 625 std::string* error_desc);
620 virtual void ChangeState(); 626 virtual void ChangeState();
621 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); 627 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet);
622 628
623 virtual void OnMessage(rtc::Message* pmsg); 629 virtual void OnMessage(rtc::Message* pmsg);
624 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; 630 void GetSrtpCryptoSuites(const rtc::CryptoOptions& crypto_options,
631 std::vector<int>* crypto_suites) const override;
625 virtual void OnConnectionMonitorUpdate( 632 virtual void OnConnectionMonitorUpdate(
626 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); 633 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos);
627 virtual void OnMediaMonitorUpdate( 634 virtual void OnMediaMonitorUpdate(
628 DataMediaChannel* media_channel, const DataMediaInfo& info); 635 DataMediaChannel* media_channel, const DataMediaInfo& info);
629 virtual bool ShouldSetupDtlsSrtp() const; 636 virtual bool ShouldSetupDtlsSrtp() const;
630 void OnDataReceived( 637 void OnDataReceived(
631 const ReceiveDataParams& params, const char* data, size_t len); 638 const ReceiveDataParams& params, const char* data, size_t len);
632 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error); 639 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error);
633 void OnDataChannelReadyToSend(bool writable); 640 void OnDataChannelReadyToSend(bool writable);
634 void OnStreamClosedRemotely(uint32_t sid); 641 void OnStreamClosedRemotely(uint32_t sid);
635 642
636 rtc::scoped_ptr<DataMediaMonitor> media_monitor_; 643 rtc::scoped_ptr<DataMediaMonitor> media_monitor_;
637 // TODO(pthatcher): Make a separate SctpDataChannel and 644 // TODO(pthatcher): Make a separate SctpDataChannel and
638 // RtpDataChannel instead of using this. 645 // RtpDataChannel instead of using this.
639 DataChannelType data_channel_type_; 646 DataChannelType data_channel_type_;
640 bool ready_to_send_data_; 647 bool ready_to_send_data_;
641 648
642 // Last DataSendParameters sent down to the media_channel() via 649 // Last DataSendParameters sent down to the media_channel() via
643 // SetSendParameters. 650 // SetSendParameters.
644 DataSendParameters last_send_params_; 651 DataSendParameters last_send_params_;
645 // Last DataRecvParameters sent down to the media_channel() via 652 // Last DataRecvParameters sent down to the media_channel() via
646 // SetRecvParameters. 653 // SetRecvParameters.
647 DataRecvParameters last_recv_params_; 654 DataRecvParameters last_recv_params_;
648 }; 655 };
649 656
650 } // namespace cricket 657 } // namespace cricket
651 658
652 #endif // TALK_SESSION_MEDIA_CHANNEL_H_ 659 #endif // TALK_SESSION_MEDIA_CHANNEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698