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

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

Issue 1561073006: Consolidate SetSendParameters into one setter. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 11 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 | « no previous file | 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does 121 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does
122 // not take the ownership of |decoder_factory|. The caller needs to make sure 122 // not take the ownership of |decoder_factory|. The caller needs to make sure
123 // that |decoder_factory| outlives the video engine. 123 // that |decoder_factory| outlives the video engine.
124 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory); 124 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory);
125 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does 125 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does
126 // not take the ownership of |encoder_factory|. The caller needs to make sure 126 // not take the ownership of |encoder_factory|. The caller needs to make sure
127 // that |encoder_factory| outlives the video engine. 127 // that |encoder_factory| outlives the video engine.
128 virtual void SetExternalEncoderFactory( 128 virtual void SetExternalEncoderFactory(
129 WebRtcVideoEncoderFactory* encoder_factory); 129 WebRtcVideoEncoderFactory* encoder_factory);
130 130
131 bool EnableTimedRender();
132
133 bool FindCodec(const VideoCodec& in); 131 bool FindCodec(const VideoCodec& in);
134 // Check whether the supplied trace should be ignored. 132 // Check whether the supplied trace should be ignored.
135 bool ShouldIgnoreTrace(const std::string& trace); 133 bool ShouldIgnoreTrace(const std::string& trace);
136 134
137 private: 135 private:
138 std::vector<VideoCodec> GetSupportedCodecs() const; 136 std::vector<VideoCodec> GetSupportedCodecs() const;
139 137
140 std::vector<VideoCodec> video_codecs_; 138 std::vector<VideoCodec> video_codecs_;
141 139
142 bool initialized_; 140 bool initialized_;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 186
189 void OnMessage(rtc::Message* msg) override; 187 void OnMessage(rtc::Message* msg) override;
190 188
191 void OnLoadUpdate(Load load) override; 189 void OnLoadUpdate(Load load) override;
192 190
193 // Implemented for VideoMediaChannelTest. 191 // Implemented for VideoMediaChannelTest.
194 bool sending() const { return sending_; } 192 bool sending() const { return sending_; }
195 uint32_t GetDefaultSendChannelSsrc() { return default_send_ssrc_; } 193 uint32_t GetDefaultSendChannelSsrc() { return default_send_ssrc_; }
196 194
197 private: 195 private:
196 struct VideoCodecSettings {
197 VideoCodecSettings();
198
199 bool operator==(const VideoCodecSettings& other) const;
200 bool operator!=(const VideoCodecSettings& other) const;
201
202 VideoCodec codec;
203 webrtc::FecConfig fec;
204 int rtx_payload_type;
205 };
206
207 struct ChangedSendParameters {
208 // These optionals are unset if not changed.
209 rtc::Optional<VideoCodecSettings> codec;
210 rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions;
211 rtc::Optional<int> max_bandwidth_bps;
212 rtc::Optional<VideoOptions> options;
213 rtc::Optional<webrtc::RtcpMode> rtcp_mode;
214 };
215 bool GetChangedSendParameters(const VideoSendParameters& params,
216 ChangedSendParameters* changed_params) const;
198 bool MuteStream(uint32_t ssrc, bool mute); 217 bool MuteStream(uint32_t ssrc, bool mute);
199 class WebRtcVideoReceiveStream; 218 class WebRtcVideoReceiveStream;
200 219
201 bool SetSendCodecs(const std::vector<VideoCodec>& codecs); 220 void SetMaxSendBandwidth(int bps);
202 bool SetSendRtpHeaderExtensions( 221 void SetOptions(const VideoOptions& options);
203 const std::vector<RtpHeaderExtension>& extensions);
204 bool SetMaxSendBandwidth(int bps);
205 bool SetOptions(const VideoOptions& options);
206 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs); 222 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs);
207 bool SetRecvRtpHeaderExtensions( 223 bool SetRecvRtpHeaderExtensions(
208 const std::vector<RtpHeaderExtension>& extensions); 224 const std::vector<RtpHeaderExtension>& extensions);
209 225
210 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config, 226 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config,
211 const StreamParams& sp) const; 227 const StreamParams& sp) const;
212 bool CodecIsExternallySupported(const std::string& name) const; 228 bool CodecIsExternallySupported(const std::string& name) const;
213 bool ValidateSendSsrcAvailability(const StreamParams& sp) const 229 bool ValidateSendSsrcAvailability(const StreamParams& sp) const
214 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); 230 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_);
215 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const 231 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const
216 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); 232 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_);
217 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream) 233 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream)
218 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); 234 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_);
219 235
220 struct VideoCodecSettings {
221 VideoCodecSettings();
222
223 bool operator==(const VideoCodecSettings& other) const;
224 bool operator!=(const VideoCodecSettings& other) const;
225
226 VideoCodec codec;
227 webrtc::FecConfig fec;
228 int rtx_payload_type;
229 };
230
231 static std::string CodecSettingsVectorToString( 236 static std::string CodecSettingsVectorToString(
232 const std::vector<VideoCodecSettings>& codecs); 237 const std::vector<VideoCodecSettings>& codecs);
233 238
234 // Wrapper for the sender part, this is where the capturer is connected and 239 // Wrapper for the sender part, this is where the capturer is connected and
235 // frames are then converted from cricket frames to webrtc frames. 240 // frames are then converted from cricket frames to webrtc frames.
236 class WebRtcVideoSendStream : public sigslot::has_slots<> { 241 class WebRtcVideoSendStream : public sigslot::has_slots<> {
237 public: 242 public:
238 WebRtcVideoSendStream( 243 WebRtcVideoSendStream(
239 webrtc::Call* call, 244 webrtc::Call* call,
240 const StreamParams& sp, 245 const StreamParams& sp,
241 const webrtc::VideoSendStream::Config& config, 246 const webrtc::VideoSendStream::Config& config,
242 WebRtcVideoEncoderFactory* external_encoder_factory, 247 WebRtcVideoEncoderFactory* external_encoder_factory,
243 const VideoOptions& options, 248 const VideoOptions& options,
244 int max_bitrate_bps, 249 int max_bitrate_bps,
245 const rtc::Optional<VideoCodecSettings>& codec_settings, 250 const rtc::Optional<VideoCodecSettings>& codec_settings,
246 const std::vector<webrtc::RtpExtension>& rtp_extensions, 251 const std::vector<webrtc::RtpExtension>& rtp_extensions,
247 const VideoSendParameters& send_params); 252 const VideoSendParameters& send_params);
248 ~WebRtcVideoSendStream(); 253 ~WebRtcVideoSendStream();
249 254
250 void SetOptions(const VideoOptions& options); 255 void SetOptions(const VideoOptions& options);
251 void SetCodec(const VideoCodecSettings& codec); 256 // TODO(pbos): Move logic from SetOptions into this method.
252 void SetRtpExtensions( 257 void SetSendParameters(const ChangedSendParameters& send_params);
253 const std::vector<webrtc::RtpExtension>& rtp_extensions);
254 // TODO(deadbeef): Move logic from SetCodec/SetRtpExtensions/etc.
255 // into this method. Currently this method only sets the RTCP mode.
256 void SetSendParameters(const VideoSendParameters& send_params);
257 258
258 void InputFrame(VideoCapturer* capturer, const VideoFrame* frame); 259 void InputFrame(VideoCapturer* capturer, const VideoFrame* frame);
259 bool SetCapturer(VideoCapturer* capturer); 260 bool SetCapturer(VideoCapturer* capturer);
260 bool SetVideoFormat(const VideoFormat& format); 261 bool SetVideoFormat(const VideoFormat& format);
261 void MuteStream(bool mute); 262 void MuteStream(bool mute);
262 bool DisconnectCapturer(); 263 bool DisconnectCapturer();
263 264
264 void SetApplyRotation(bool apply_rotation);
265
266 void Start(); 265 void Start();
267 void Stop(); 266 void Stop();
268 267
269 const std::vector<uint32_t>& GetSsrcs() const; 268 const std::vector<uint32_t>& GetSsrcs() const;
270 VideoSenderInfo GetVideoSenderInfo(); 269 VideoSenderInfo GetVideoSenderInfo();
271 void FillBandwidthEstimationInfo(BandwidthEstimationInfo* bwe_info); 270 void FillBandwidthEstimationInfo(BandwidthEstimationInfo* bwe_info);
272 271
273 void SetMaxBitrateBps(int max_bitrate_bps);
274
275 private: 272 private:
276 // Parameters needed to reconstruct the underlying stream. 273 // Parameters needed to reconstruct the underlying stream.
277 // webrtc::VideoSendStream doesn't support setting a lot of options on the 274 // webrtc::VideoSendStream doesn't support setting a lot of options on the
278 // fly, so when those need to be changed we tear down and reconstruct with 275 // fly, so when those need to be changed we tear down and reconstruct with
279 // similar parameters depending on which options changed etc. 276 // similar parameters depending on which options changed etc.
280 struct VideoSendStreamParameters { 277 struct VideoSendStreamParameters {
281 VideoSendStreamParameters( 278 VideoSendStreamParameters(
282 const webrtc::VideoSendStream::Config& config, 279 const webrtc::VideoSendStream::Config& config,
283 const VideoOptions& options, 280 const VideoOptions& options,
284 int max_bitrate_bps, 281 int max_bitrate_bps,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 352
356 const std::vector<uint32_t> ssrcs_; 353 const std::vector<uint32_t> ssrcs_;
357 const std::vector<SsrcGroup> ssrc_groups_; 354 const std::vector<SsrcGroup> ssrc_groups_;
358 webrtc::Call* const call_; 355 webrtc::Call* const call_;
359 WebRtcVideoEncoderFactory* const external_encoder_factory_ 356 WebRtcVideoEncoderFactory* const external_encoder_factory_
360 GUARDED_BY(lock_); 357 GUARDED_BY(lock_);
361 358
362 rtc::CriticalSection lock_; 359 rtc::CriticalSection lock_;
363 webrtc::VideoSendStream* stream_ GUARDED_BY(lock_); 360 webrtc::VideoSendStream* stream_ GUARDED_BY(lock_);
364 VideoSendStreamParameters parameters_ GUARDED_BY(lock_); 361 VideoSendStreamParameters parameters_ GUARDED_BY(lock_);
362 bool pending_encoder_reconfiguration_ GUARDED_BY(lock_);
365 VideoEncoderSettings encoder_settings_ GUARDED_BY(lock_); 363 VideoEncoderSettings encoder_settings_ GUARDED_BY(lock_);
366 AllocatedEncoder allocated_encoder_ GUARDED_BY(lock_); 364 AllocatedEncoder allocated_encoder_ GUARDED_BY(lock_);
367 Dimensions last_dimensions_ GUARDED_BY(lock_); 365 Dimensions last_dimensions_ GUARDED_BY(lock_);
368 366
369 VideoCapturer* capturer_ GUARDED_BY(lock_); 367 VideoCapturer* capturer_ GUARDED_BY(lock_);
370 bool sending_ GUARDED_BY(lock_); 368 bool sending_ GUARDED_BY(lock_);
371 bool muted_ GUARDED_BY(lock_); 369 bool muted_ GUARDED_BY(lock_);
372 VideoFormat format_ GUARDED_BY(lock_); 370 VideoFormat format_ GUARDED_BY(lock_);
373 int old_adapt_changes_ GUARDED_BY(lock_); 371 int old_adapt_changes_ GUARDED_BY(lock_);
374 372
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 VideoOptions options_; 525 VideoOptions options_;
528 // TODO(deadbeef): Don't duplicate information between 526 // TODO(deadbeef): Don't duplicate information between
529 // send_params/recv_params, rtp_extensions, options, etc. 527 // send_params/recv_params, rtp_extensions, options, etc.
530 VideoSendParameters send_params_; 528 VideoSendParameters send_params_;
531 VideoRecvParameters recv_params_; 529 VideoRecvParameters recv_params_;
532 }; 530 };
533 531
534 } // namespace cricket 532 } // namespace cricket
535 533
536 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_ 534 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_
OLDNEW
« no previous file with comments | « no previous file | talk/media/webrtc/webrtcvideoengine2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698