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

Side by Side Diff: talk/media/webrtc/webrtcvideoengine2.h

Issue 1269863005: MediaController/Call instantiation. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Remove redundant reset(nullptr) 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
« no previous file with comments | « talk/media/base/videoengine_unittest.h ('k') | talk/media/webrtc/webrtcvideoengine2.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 uint32_t ssrc) override; 96 uint32_t ssrc) override;
97 97
98 VideoRenderer* GetDefaultRenderer() const; 98 VideoRenderer* GetDefaultRenderer() const;
99 void SetDefaultRenderer(VideoMediaChannel* channel, VideoRenderer* renderer); 99 void SetDefaultRenderer(VideoMediaChannel* channel, VideoRenderer* renderer);
100 100
101 private: 101 private:
102 uint32_t default_recv_ssrc_; 102 uint32_t default_recv_ssrc_;
103 VideoRenderer* default_renderer_; 103 VideoRenderer* default_renderer_;
104 }; 104 };
105 105
106 // CallFactory, overridden for testing to verify that webrtc::Call is configured 106 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667).
107 // properly. 107 class WebRtcVideoEngine2 {
108 class WebRtcCallFactory {
109 public: 108 public:
110 virtual ~WebRtcCallFactory(); 109 WebRtcVideoEngine2();
111 virtual webrtc::Call* CreateCall(const webrtc::Call::Config& config); 110 ~WebRtcVideoEngine2();
112 };
113
114 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667).
115 class WebRtcVideoEngine2 : public sigslot::has_slots<> {
116 public:
117 explicit WebRtcVideoEngine2(WebRtcVoiceEngine* voice_engine);
118 virtual ~WebRtcVideoEngine2();
119
120 // Used for testing to be able to check and use the webrtc::Call config.
121 void SetCallFactory(WebRtcCallFactory* call_factory);
122 111
123 // Basic video engine implementation. 112 // Basic video engine implementation.
124 void Init(); 113 void Init();
125 114
126 int GetCapabilities(); 115 int GetCapabilities();
127 bool SetDefaultEncoderConfig(const VideoEncoderConfig& config); 116 bool SetDefaultEncoderConfig(const VideoEncoderConfig& config);
128 117
129 WebRtcVideoChannel2* CreateChannel(const VideoOptions& options, 118 WebRtcVideoChannel2* CreateChannel(webrtc::Call* call,
130 VoiceMediaChannel* voice_channel); 119 const VideoOptions& options);
131 120
132 const std::vector<VideoCodec>& codecs() const; 121 const std::vector<VideoCodec>& codecs() const;
133 const std::vector<RtpHeaderExtension>& rtp_header_extensions() const; 122 const std::vector<RtpHeaderExtension>& rtp_header_extensions() const;
134 void SetLogging(int min_sev, const char* filter); 123 void SetLogging(int min_sev, const char* filter);
135 124
136 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does 125 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does
137 // not take the ownership of |decoder_factory|. The caller needs to make sure 126 // not take the ownership of |decoder_factory|. The caller needs to make sure
138 // that |decoder_factory| outlives the video engine. 127 // that |decoder_factory| outlives the video engine.
139 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory); 128 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory);
140 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does 129 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does
141 // not take the ownership of |encoder_factory|. The caller needs to make sure 130 // not take the ownership of |encoder_factory|. The caller needs to make sure
142 // that |encoder_factory| outlives the video engine. 131 // that |encoder_factory| outlives the video engine.
143 virtual void SetExternalEncoderFactory( 132 virtual void SetExternalEncoderFactory(
144 WebRtcVideoEncoderFactory* encoder_factory); 133 WebRtcVideoEncoderFactory* encoder_factory);
145 134
146 bool EnableTimedRender(); 135 bool EnableTimedRender();
147 136
148 bool FindCodec(const VideoCodec& in); 137 bool FindCodec(const VideoCodec& in);
149 bool CanSendCodec(const VideoCodec& in, 138 bool CanSendCodec(const VideoCodec& in,
150 const VideoCodec& current, 139 const VideoCodec& current,
151 VideoCodec* out); 140 VideoCodec* out);
152 // Check whether the supplied trace should be ignored. 141 // Check whether the supplied trace should be ignored.
153 bool ShouldIgnoreTrace(const std::string& trace); 142 bool ShouldIgnoreTrace(const std::string& trace);
154 143
155 private: 144 private:
156 std::vector<VideoCodec> GetSupportedCodecs() const; 145 std::vector<VideoCodec> GetSupportedCodecs() const;
157 146
158 WebRtcVoiceEngine* voice_engine_;
159 std::vector<VideoCodec> video_codecs_; 147 std::vector<VideoCodec> video_codecs_;
160 std::vector<RtpHeaderExtension> rtp_header_extensions_; 148 std::vector<RtpHeaderExtension> rtp_header_extensions_;
161 149
162 bool initialized_; 150 bool initialized_;
163 151
164 WebRtcCallFactory default_call_factory_;
165 WebRtcCallFactory* call_factory_;
166
167 WebRtcVideoDecoderFactory* external_decoder_factory_; 152 WebRtcVideoDecoderFactory* external_decoder_factory_;
168 WebRtcVideoEncoderFactory* external_encoder_factory_; 153 WebRtcVideoEncoderFactory* external_encoder_factory_;
169 rtc::scoped_ptr<WebRtcVideoEncoderFactory> simulcast_encoder_factory_; 154 rtc::scoped_ptr<WebRtcVideoEncoderFactory> simulcast_encoder_factory_;
170 }; 155 };
171 156
172 class WebRtcVideoChannel2 : public rtc::MessageHandler, 157 class WebRtcVideoChannel2 : public rtc::MessageHandler,
173 public VideoMediaChannel, 158 public VideoMediaChannel,
174 public webrtc::newapi::Transport, 159 public webrtc::newapi::Transport,
175 public webrtc::LoadObserver { 160 public webrtc::LoadObserver {
176 public: 161 public:
177 WebRtcVideoChannel2(WebRtcCallFactory* call_factory, 162 WebRtcVideoChannel2(webrtc::Call* call,
178 WebRtcVoiceEngine* voice_engine,
179 WebRtcVoiceMediaChannel* voice_channel,
180 const VideoOptions& options, 163 const VideoOptions& options,
181 WebRtcVideoEncoderFactory* external_encoder_factory, 164 WebRtcVideoEncoderFactory* external_encoder_factory,
182 WebRtcVideoDecoderFactory* external_decoder_factory); 165 WebRtcVideoDecoderFactory* external_decoder_factory);
183 ~WebRtcVideoChannel2(); 166 ~WebRtcVideoChannel2() override;
184 bool Init();
185 167
186 // VideoMediaChannel implementation 168 // VideoMediaChannel implementation
187 void DetachVoiceChannel() override;
188 bool SetSendParameters(const VideoSendParameters& params) override; 169 bool SetSendParameters(const VideoSendParameters& params) override;
189 bool SetRecvParameters(const VideoRecvParameters& params) override; 170 bool SetRecvParameters(const VideoRecvParameters& params) override;
190 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) override; 171 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) override;
191 bool SetSendCodecs(const std::vector<VideoCodec>& codecs) override; 172 bool SetSendCodecs(const std::vector<VideoCodec>& codecs) override;
192 bool GetSendCodec(VideoCodec* send_codec) override; 173 bool GetSendCodec(VideoCodec* send_codec) override;
193 bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) override; 174 bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) override;
194 bool SetRender(bool render) override; 175 bool SetRender(bool render) override;
195 bool SetSend(bool send) override; 176 bool SetSend(bool send) override;
196 bool SetVideoSend(uint32 ssrc, bool mute, 177 bool SetVideoSend(uint32 ssrc, bool mute,
197 const VideoOptions* options) override; 178 const VideoOptions* options) override;
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 481
501 void FillSenderStats(VideoMediaInfo* info); 482 void FillSenderStats(VideoMediaInfo* info);
502 void FillReceiverStats(VideoMediaInfo* info); 483 void FillReceiverStats(VideoMediaInfo* info);
503 void FillBandwidthEstimationStats(const webrtc::Call::Stats& stats, 484 void FillBandwidthEstimationStats(const webrtc::Call::Stats& stats,
504 VideoMediaInfo* info); 485 VideoMediaInfo* info);
505 486
506 rtc::ThreadChecker thread_checker_; 487 rtc::ThreadChecker thread_checker_;
507 488
508 uint32_t rtcp_receiver_report_ssrc_; 489 uint32_t rtcp_receiver_report_ssrc_;
509 bool sending_; 490 bool sending_;
510 rtc::scoped_ptr<webrtc::Call> call_; 491 webrtc::Call* const call_;
511 WebRtcCallFactory* call_factory_;
512 492
513 uint32_t default_send_ssrc_; 493 uint32_t default_send_ssrc_;
514 494
515 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_; 495 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_;
516 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_; 496 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_;
517 497
518 // Separate list of set capturers used to signal CPU adaptation. These should 498 // Separate list of set capturers used to signal CPU adaptation. These should
519 // not be locked while calling methods that take other locks to prevent 499 // not be locked while calling methods that take other locks to prevent
520 // lock-order inversions. 500 // lock-order inversions.
521 rtc::CriticalSection capturer_crit_; 501 rtc::CriticalSection capturer_crit_;
522 bool signal_cpu_adaptation_ GUARDED_BY(capturer_crit_); 502 bool signal_cpu_adaptation_ GUARDED_BY(capturer_crit_);
523 std::map<uint32, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_); 503 std::map<uint32, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_);
524 504
525 rtc::CriticalSection stream_crit_; 505 rtc::CriticalSection stream_crit_;
526 // Using primary-ssrc (first ssrc) as key. 506 // Using primary-ssrc (first ssrc) as key.
527 std::map<uint32, WebRtcVideoSendStream*> send_streams_ 507 std::map<uint32, WebRtcVideoSendStream*> send_streams_
528 GUARDED_BY(stream_crit_); 508 GUARDED_BY(stream_crit_);
529 std::map<uint32, WebRtcVideoReceiveStream*> receive_streams_ 509 std::map<uint32, WebRtcVideoReceiveStream*> receive_streams_
530 GUARDED_BY(stream_crit_); 510 GUARDED_BY(stream_crit_);
531 std::set<uint32> send_ssrcs_ GUARDED_BY(stream_crit_); 511 std::set<uint32> send_ssrcs_ GUARDED_BY(stream_crit_);
532 std::set<uint32> receive_ssrcs_ GUARDED_BY(stream_crit_); 512 std::set<uint32> receive_ssrcs_ GUARDED_BY(stream_crit_);
533 513
534 Settable<VideoCodecSettings> send_codec_; 514 Settable<VideoCodecSettings> send_codec_;
535 std::vector<webrtc::RtpExtension> send_rtp_extensions_; 515 std::vector<webrtc::RtpExtension> send_rtp_extensions_;
536 516
537 WebRtcVoiceMediaChannel* voice_channel_;
538 const int voice_channel_id_;
539 WebRtcVideoEncoderFactory* const external_encoder_factory_; 517 WebRtcVideoEncoderFactory* const external_encoder_factory_;
540 WebRtcVideoDecoderFactory* const external_decoder_factory_; 518 WebRtcVideoDecoderFactory* const external_decoder_factory_;
541 std::vector<VideoCodecSettings> recv_codecs_; 519 std::vector<VideoCodecSettings> recv_codecs_;
542 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; 520 std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
543 webrtc::Call::Config::BitrateConfig bitrate_config_; 521 webrtc::Call::Config::BitrateConfig bitrate_config_;
544 VideoOptions options_; 522 VideoOptions options_;
545 }; 523 };
546 524
547 } // namespace cricket 525 } // namespace cricket
548 526
549 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_ 527 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_
OLDNEW
« no previous file with comments | « talk/media/base/videoengine_unittest.h ('k') | talk/media/webrtc/webrtcvideoengine2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698