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

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

Issue 1608793004: Apply VideoOptions per stream. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix disable_prerenderer_smoothing setting. Use construction-time VideoOptions as defaults. 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 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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 uint32_t GetDefaultSendChannelSsrc() { return default_send_ssrc_; } 195 uint32_t GetDefaultSendChannelSsrc() { return default_send_ssrc_; }
196 196
197 private: 197 private:
198 bool MuteStream(uint32_t ssrc, bool mute); 198 bool MuteStream(uint32_t ssrc, bool mute);
199 class WebRtcVideoReceiveStream; 199 class WebRtcVideoReceiveStream;
200 200
201 bool SetSendCodecs(const std::vector<VideoCodec>& codecs); 201 bool SetSendCodecs(const std::vector<VideoCodec>& codecs);
202 bool SetSendRtpHeaderExtensions( 202 bool SetSendRtpHeaderExtensions(
203 const std::vector<RtpHeaderExtension>& extensions); 203 const std::vector<RtpHeaderExtension>& extensions);
204 bool SetMaxSendBandwidth(int bps); 204 bool SetMaxSendBandwidth(int bps);
205 bool SetOptions(const VideoOptions& options); 205 void SetSharedOptions(const VideoOptions& options);
206 bool SetOptions(uint32_t ssrc, const VideoOptions& options);
206 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs); 207 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs);
207 bool SetRecvRtpHeaderExtensions( 208 bool SetRecvRtpHeaderExtensions(
208 const std::vector<RtpHeaderExtension>& extensions); 209 const std::vector<RtpHeaderExtension>& extensions);
209 210
210 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config, 211 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config,
211 const StreamParams& sp) const; 212 const StreamParams& sp) const;
212 bool CodecIsExternallySupported(const std::string& name) const; 213 bool CodecIsExternallySupported(const std::string& name) const;
213 bool ValidateSendSsrcAvailability(const StreamParams& sp) const 214 bool ValidateSendSsrcAvailability(const StreamParams& sp) const
214 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); 215 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_);
215 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const 216 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const
(...skipping 17 matching lines...) Expand all
233 234
234 // Wrapper for the sender part, this is where the capturer is connected and 235 // Wrapper for the sender part, this is where the capturer is connected and
235 // frames are then converted from cricket frames to webrtc frames. 236 // frames are then converted from cricket frames to webrtc frames.
236 class WebRtcVideoSendStream : public sigslot::has_slots<> { 237 class WebRtcVideoSendStream : public sigslot::has_slots<> {
237 public: 238 public:
238 WebRtcVideoSendStream( 239 WebRtcVideoSendStream(
239 webrtc::Call* call, 240 webrtc::Call* call,
240 const StreamParams& sp, 241 const StreamParams& sp,
241 const webrtc::VideoSendStream::Config& config, 242 const webrtc::VideoSendStream::Config& config,
242 WebRtcVideoEncoderFactory* external_encoder_factory, 243 WebRtcVideoEncoderFactory* external_encoder_factory,
243 const VideoOptions& options,
244 int max_bitrate_bps, 244 int max_bitrate_bps,
245 const rtc::Optional<VideoCodecSettings>& codec_settings, 245 const rtc::Optional<VideoCodecSettings>& codec_settings,
246 const std::vector<webrtc::RtpExtension>& rtp_extensions, 246 const std::vector<webrtc::RtpExtension>& rtp_extensions,
247 const VideoSendParameters& send_params); 247 const VideoSendParameters& send_params);
248 ~WebRtcVideoSendStream(); 248 ~WebRtcVideoSendStream();
249 249
250 void SetOptions(const VideoOptions& options); 250 void SetOptions(const VideoOptions& options);
251 void SetCodec(const VideoCodecSettings& codec); 251 void SetCodec(const VideoCodecSettings& codec);
252 void SetRtpExtensions( 252 void SetRtpExtensions(
253 const std::vector<webrtc::RtpExtension>& rtp_extensions); 253 const std::vector<webrtc::RtpExtension>& rtp_extensions);
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 // the stream has been running. 459 // the stream has been running.
460 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ 460 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_
461 GUARDED_BY(renderer_lock_); 461 GUARDED_BY(renderer_lock_);
462 int64_t first_frame_timestamp_ GUARDED_BY(renderer_lock_); 462 int64_t first_frame_timestamp_ GUARDED_BY(renderer_lock_);
463 // Start NTP time is estimated as current remote NTP time (estimated from 463 // Start NTP time is estimated as current remote NTP time (estimated from
464 // RTCP) minus the elapsed time, as soon as remote NTP time is available. 464 // RTCP) minus the elapsed time, as soon as remote NTP time is available.
465 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(renderer_lock_); 465 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(renderer_lock_);
466 }; 466 };
467 467
468 void Construct(webrtc::Call* call, WebRtcVideoEngine2* engine); 468 void Construct(webrtc::Call* call, WebRtcVideoEngine2* engine);
469 void SetDefaultOptions();
470 469
471 bool SendRtp(const uint8_t* data, 470 bool SendRtp(const uint8_t* data,
472 size_t len, 471 size_t len,
473 const webrtc::PacketOptions& options) override; 472 const webrtc::PacketOptions& options) override;
474 bool SendRtcp(const uint8_t* data, size_t len) override; 473 bool SendRtcp(const uint8_t* data, size_t len) override;
475 474
476 void StartAllSendStreams(); 475 void StartAllSendStreams();
477 void StopAllSendStreams(); 476 void StopAllSendStreams();
478 477
479 static std::vector<VideoCodecSettings> MapCodecs( 478 static std::vector<VideoCodecSettings> MapCodecs(
(...skipping 18 matching lines...) Expand all
498 497
499 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_; 498 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_;
500 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_; 499 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_;
501 500
502 // Separate list of set capturers used to signal CPU adaptation. These should 501 // Separate list of set capturers used to signal CPU adaptation. These should
503 // not be locked while calling methods that take other locks to prevent 502 // not be locked while calling methods that take other locks to prevent
504 // lock-order inversions. 503 // lock-order inversions.
505 rtc::CriticalSection capturer_crit_; 504 rtc::CriticalSection capturer_crit_;
506 bool signal_cpu_adaptation_ GUARDED_BY(capturer_crit_); 505 bool signal_cpu_adaptation_ GUARDED_BY(capturer_crit_);
507 std::map<uint32_t, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_); 506 std::map<uint32_t, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_);
507 bool disable_prerenderer_smoothing_;
508 508
509 rtc::CriticalSection stream_crit_; 509 rtc::CriticalSection stream_crit_;
510 // Using primary-ssrc (first ssrc) as key. 510 // Using primary-ssrc (first ssrc) as key.
511 std::map<uint32_t, WebRtcVideoSendStream*> send_streams_ 511 std::map<uint32_t, WebRtcVideoSendStream*> send_streams_
512 GUARDED_BY(stream_crit_); 512 GUARDED_BY(stream_crit_);
513 std::map<uint32_t, WebRtcVideoReceiveStream*> receive_streams_ 513 std::map<uint32_t, WebRtcVideoReceiveStream*> receive_streams_
514 GUARDED_BY(stream_crit_); 514 GUARDED_BY(stream_crit_);
515 std::set<uint32_t> send_ssrcs_ GUARDED_BY(stream_crit_); 515 std::set<uint32_t> send_ssrcs_ GUARDED_BY(stream_crit_);
516 std::set<uint32_t> receive_ssrcs_ GUARDED_BY(stream_crit_); 516 std::set<uint32_t> receive_ssrcs_ GUARDED_BY(stream_crit_);
517 517
518 rtc::Optional<VideoCodecSettings> send_codec_; 518 rtc::Optional<VideoCodecSettings> send_codec_;
519 std::vector<webrtc::RtpExtension> send_rtp_extensions_; 519 std::vector<webrtc::RtpExtension> send_rtp_extensions_;
520 520
521 WebRtcVideoEncoderFactory* const external_encoder_factory_; 521 WebRtcVideoEncoderFactory* const external_encoder_factory_;
522 WebRtcVideoDecoderFactory* const external_decoder_factory_; 522 WebRtcVideoDecoderFactory* const external_decoder_factory_;
523 std::vector<VideoCodecSettings> recv_codecs_; 523 std::vector<VideoCodecSettings> recv_codecs_;
524 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; 524 std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
525 webrtc::Call::Config::BitrateConfig bitrate_config_; 525 webrtc::Call::Config::BitrateConfig bitrate_config_;
526 VideoOptions options_;
527 // TODO(deadbeef): Don't duplicate information between 526 // TODO(deadbeef): Don't duplicate information between
528 // send_params/recv_params, rtp_extensions, options, etc. 527 // send_params/recv_params, rtp_extensions, options, etc.
529 VideoSendParameters send_params_; 528 VideoSendParameters send_params_;
530 VideoRecvParameters recv_params_; 529 VideoRecvParameters recv_params_;
531 }; 530 };
532 531
533 } // namespace cricket 532 } // namespace cricket
534 533
535 #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') | talk/media/webrtc/webrtcvideoengine2.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698