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

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

Issue 2469093003: Remove RED/RTX workaround from sender/receiver and VideoEngine2. (Closed)
Patch Set: Fix warning message. Created 4 years, 1 month 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 | webrtc/media/engine/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 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 // rtc::VideoSinkInterface<cricket::VideoFrame>. 382 // rtc::VideoSinkInterface<cricket::VideoFrame>.
383 class WebRtcVideoReceiveStream 383 class WebRtcVideoReceiveStream
384 : public rtc::VideoSinkInterface<webrtc::VideoFrame> { 384 : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
385 public: 385 public:
386 WebRtcVideoReceiveStream( 386 WebRtcVideoReceiveStream(
387 webrtc::Call* call, 387 webrtc::Call* call,
388 const StreamParams& sp, 388 const StreamParams& sp,
389 webrtc::VideoReceiveStream::Config config, 389 webrtc::VideoReceiveStream::Config config,
390 WebRtcVideoDecoderFactory* external_decoder_factory, 390 WebRtcVideoDecoderFactory* external_decoder_factory,
391 bool default_stream, 391 bool default_stream,
392 const std::vector<VideoCodecSettings>& recv_codecs, 392 const std::vector<VideoCodecSettings>& recv_codecs);
393 bool red_disabled_by_remote_side);
394 ~WebRtcVideoReceiveStream(); 393 ~WebRtcVideoReceiveStream();
395 394
396 const std::vector<uint32_t>& GetSsrcs() const; 395 const std::vector<uint32_t>& GetSsrcs() const;
397 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const; 396 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const;
398 397
399 void SetLocalSsrc(uint32_t local_ssrc); 398 void SetLocalSsrc(uint32_t local_ssrc);
400 // TODO(deadbeef): Move these feedback parameters into the recv parameters. 399 // TODO(deadbeef): Move these feedback parameters into the recv parameters.
401 void SetFeedbackParameters(bool nack_enabled, 400 void SetFeedbackParameters(bool nack_enabled,
402 bool remb_enabled, 401 bool remb_enabled,
403 bool transport_cc_enabled, 402 bool transport_cc_enabled,
404 webrtc::RtcpMode rtcp_mode); 403 webrtc::RtcpMode rtcp_mode);
405 void SetRecvParameters(const ChangedRecvParameters& recv_params); 404 void SetRecvParameters(const ChangedRecvParameters& recv_params);
406 405
407 void OnFrame(const webrtc::VideoFrame& frame) override; 406 void OnFrame(const webrtc::VideoFrame& frame) override;
408 bool IsDefaultStream() const; 407 bool IsDefaultStream() const;
409 408
410 void SetSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink); 409 void SetSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink);
411 410
412 VideoReceiverInfo GetVideoReceiverInfo(bool log_stats); 411 VideoReceiverInfo GetVideoReceiverInfo(bool log_stats);
413 412
414 // Used to disable RED/FEC when the remote description doesn't contain those
415 // codecs. This is needed to be able to work around an RTX bug which is only
416 // happening if the remote side doesn't send RED, but the local side is
417 // configured to receive RED.
418 // TODO(holmer): Remove this after a couple of Chrome versions, M53-54
419 // time frame.
420 void SetUlpfecDisabledRemotely(bool disable);
421
422 private: 413 private:
423 struct AllocatedDecoder { 414 struct AllocatedDecoder {
424 AllocatedDecoder(webrtc::VideoDecoder* decoder, 415 AllocatedDecoder(webrtc::VideoDecoder* decoder,
425 webrtc::VideoCodecType type, 416 webrtc::VideoCodecType type,
426 bool external); 417 bool external);
427 webrtc::VideoDecoder* decoder; 418 webrtc::VideoDecoder* decoder;
428 // Decoder wrapped into a fallback decoder to permit software fallback. 419 // Decoder wrapped into a fallback decoder to permit software fallback.
429 webrtc::VideoDecoder* external_decoder; 420 webrtc::VideoDecoder* external_decoder;
430 webrtc::VideoCodecType type; 421 webrtc::VideoCodecType type;
431 bool external; 422 bool external;
432 }; 423 };
433 424
434 void RecreateWebRtcStream(); 425 void RecreateWebRtcStream();
435 426
436 void ConfigureCodecs(const std::vector<VideoCodecSettings>& recv_codecs, 427 void ConfigureCodecs(const std::vector<VideoCodecSettings>& recv_codecs,
437 std::vector<AllocatedDecoder>* old_codecs); 428 std::vector<AllocatedDecoder>* old_codecs);
438 AllocatedDecoder CreateOrReuseVideoDecoder( 429 AllocatedDecoder CreateOrReuseVideoDecoder(
439 std::vector<AllocatedDecoder>* old_decoder, 430 std::vector<AllocatedDecoder>* old_decoder,
440 const VideoCodec& codec); 431 const VideoCodec& codec);
441 void ClearDecoders(std::vector<AllocatedDecoder>* allocated_decoders); 432 void ClearDecoders(std::vector<AllocatedDecoder>* allocated_decoders);
442 433
443 std::string GetCodecNameFromPayloadType(int payload_type); 434 std::string GetCodecNameFromPayloadType(int payload_type);
444 435
445 webrtc::Call* const call_; 436 webrtc::Call* const call_;
446 StreamParams stream_params_; 437 StreamParams stream_params_;
447 438
448 webrtc::VideoReceiveStream* stream_; 439 webrtc::VideoReceiveStream* stream_;
449 const bool default_stream_; 440 const bool default_stream_;
450 webrtc::VideoReceiveStream::Config config_; 441 webrtc::VideoReceiveStream::Config config_;
451 bool red_disabled_by_remote_side_;
452 442
453 WebRtcVideoDecoderFactory* const external_decoder_factory_; 443 WebRtcVideoDecoderFactory* const external_decoder_factory_;
454 std::vector<AllocatedDecoder> allocated_decoders_; 444 std::vector<AllocatedDecoder> allocated_decoders_;
455 445
456 rtc::CriticalSection sink_lock_; 446 rtc::CriticalSection sink_lock_;
457 rtc::VideoSinkInterface<cricket::VideoFrame>* sink_ GUARDED_BY(sink_lock_); 447 rtc::VideoSinkInterface<cricket::VideoFrame>* sink_ GUARDED_BY(sink_lock_);
458 // Expands remote RTP timestamps to int64_t to be able to estimate how long 448 // Expands remote RTP timestamps to int64_t to be able to estimate how long
459 // the stream has been running. 449 // the stream has been running.
460 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ 450 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_
461 GUARDED_BY(sink_lock_); 451 GUARDED_BY(sink_lock_);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 WebRtcVideoEncoderFactory* const external_encoder_factory_; 504 WebRtcVideoEncoderFactory* const external_encoder_factory_;
515 WebRtcVideoDecoderFactory* const external_decoder_factory_; 505 WebRtcVideoDecoderFactory* const external_decoder_factory_;
516 std::vector<VideoCodecSettings> recv_codecs_; 506 std::vector<VideoCodecSettings> recv_codecs_;
517 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; 507 std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
518 webrtc::Call::Config::BitrateConfig bitrate_config_; 508 webrtc::Call::Config::BitrateConfig bitrate_config_;
519 // TODO(deadbeef): Don't duplicate information between 509 // TODO(deadbeef): Don't duplicate information between
520 // send_params/recv_params, rtp_extensions, options, etc. 510 // send_params/recv_params, rtp_extensions, options, etc.
521 VideoSendParameters send_params_; 511 VideoSendParameters send_params_;
522 VideoOptions default_send_options_; 512 VideoOptions default_send_options_;
523 VideoRecvParameters recv_params_; 513 VideoRecvParameters recv_params_;
524 bool red_disabled_by_remote_side_;
525 int64_t last_stats_log_ms_; 514 int64_t last_stats_log_ms_;
526 }; 515 };
527 516
528 } // namespace cricket 517 } // namespace cricket
529 518
530 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ 519 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/media/engine/webrtcvideoengine2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698