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

Side by Side Diff: webrtc/video/video_send_stream.cc

Issue 2789843002: Delete VieRemb class, move functionality to PacketRouter. (Closed)
Patch Set: Delete obsolete suppression for PacketRouterTest.SendTransportFeedback. Created 3 years, 8 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 | « webrtc/video/video_send_stream.h ('k') | webrtc/video/vie_remb.h » ('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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include "webrtc/video/video_send_stream.h" 10 #include "webrtc/video/video_send_stream.h"
(...skipping 16 matching lines...) Expand all
27 #include "webrtc/common_video/include/video_bitrate_allocator.h" 27 #include "webrtc/common_video/include/video_bitrate_allocator.h"
28 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" 28 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
29 #include "webrtc/modules/congestion_controller/include/send_side_congestion_cont roller.h" 29 #include "webrtc/modules/congestion_controller/include/send_side_congestion_cont roller.h"
30 #include "webrtc/modules/pacing/packet_router.h" 30 #include "webrtc/modules/pacing/packet_router.h"
31 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" 31 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
32 #include "webrtc/modules/utility/include/process_thread.h" 32 #include "webrtc/modules/utility/include/process_thread.h"
33 #include "webrtc/modules/video_coding/utility/ivf_file_writer.h" 33 #include "webrtc/modules/video_coding/utility/ivf_file_writer.h"
34 #include "webrtc/system_wrappers/include/field_trial.h" 34 #include "webrtc/system_wrappers/include/field_trial.h"
35 #include "webrtc/video/call_stats.h" 35 #include "webrtc/video/call_stats.h"
36 #include "webrtc/video/payload_router.h" 36 #include "webrtc/video/payload_router.h"
37 #include "webrtc/video/vie_remb.h"
38 #include "webrtc/video_send_stream.h" 37 #include "webrtc/video_send_stream.h"
39 38
40 namespace webrtc { 39 namespace webrtc {
41 40
42 static const int kMinSendSidePacketHistorySize = 600; 41 static const int kMinSendSidePacketHistorySize = 600;
43 namespace { 42 namespace {
44 43
45 // We don't do MTU discovery, so assume that we have the standard ethernet MTU. 44 // We don't do MTU discovery, so assume that we have the standard ethernet MTU.
46 const size_t kPathMTU = 1500; 45 const size_t kPathMTU = 1500;
47 46
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 public webrtc::VCMProtectionCallback, 326 public webrtc::VCMProtectionCallback,
328 public ViEEncoder::EncoderSink, 327 public ViEEncoder::EncoderSink,
329 public VideoBitrateAllocationObserver { 328 public VideoBitrateAllocationObserver {
330 public: 329 public:
331 VideoSendStreamImpl(SendStatisticsProxy* stats_proxy, 330 VideoSendStreamImpl(SendStatisticsProxy* stats_proxy,
332 rtc::TaskQueue* worker_queue, 331 rtc::TaskQueue* worker_queue,
333 CallStats* call_stats, 332 CallStats* call_stats,
334 RtpTransportControllerSendInterface* transport, 333 RtpTransportControllerSendInterface* transport,
335 BitrateAllocator* bitrate_allocator, 334 BitrateAllocator* bitrate_allocator,
336 SendDelayStats* send_delay_stats, 335 SendDelayStats* send_delay_stats,
337 VieRemb* remb,
338 ViEEncoder* vie_encoder, 336 ViEEncoder* vie_encoder,
339 RtcEventLog* event_log, 337 RtcEventLog* event_log,
340 const VideoSendStream::Config* config, 338 const VideoSendStream::Config* config,
341 int initial_encoder_max_bitrate, 339 int initial_encoder_max_bitrate,
342 std::map<uint32_t, RtpState> suspended_ssrcs); 340 std::map<uint32_t, RtpState> suspended_ssrcs);
343 ~VideoSendStreamImpl() override; 341 ~VideoSendStreamImpl() override;
344 342
345 // RegisterProcessThread register |module_process_thread| with those objects 343 // RegisterProcessThread register |module_process_thread| with those objects
346 // that use it. Registration has to happen on the thread were 344 // that use it. Registration has to happen on the thread were
347 // |module_process_thread| was created (libjingle's worker thread). 345 // |module_process_thread| was created (libjingle's worker thread).
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 rtc::ThreadChecker module_process_thread_checker_; 409 rtc::ThreadChecker module_process_thread_checker_;
412 rtc::TaskQueue* const worker_queue_; 410 rtc::TaskQueue* const worker_queue_;
413 411
414 rtc::CriticalSection encoder_activity_crit_sect_; 412 rtc::CriticalSection encoder_activity_crit_sect_;
415 CheckEncoderActivityTask* check_encoder_activity_task_ 413 CheckEncoderActivityTask* check_encoder_activity_task_
416 GUARDED_BY(encoder_activity_crit_sect_); 414 GUARDED_BY(encoder_activity_crit_sect_);
417 415
418 CallStats* const call_stats_; 416 CallStats* const call_stats_;
419 RtpTransportControllerSendInterface* const transport_; 417 RtpTransportControllerSendInterface* const transport_;
420 BitrateAllocator* const bitrate_allocator_; 418 BitrateAllocator* const bitrate_allocator_;
421 VieRemb* const remb_;
422 419
423 // TODO(brandtr): Move ownership to PayloadRouter. 420 // TODO(brandtr): Move ownership to PayloadRouter.
424 std::unique_ptr<FlexfecSender> flexfec_sender_; 421 std::unique_ptr<FlexfecSender> flexfec_sender_;
425 422
426 rtc::CriticalSection ivf_writers_crit_; 423 rtc::CriticalSection ivf_writers_crit_;
427 std::unique_ptr<IvfFileWriter> file_writers_[kMaxSimulcastStreams] GUARDED_BY( 424 std::unique_ptr<IvfFileWriter> file_writers_[kMaxSimulcastStreams] GUARDED_BY(
428 ivf_writers_crit_); 425 ivf_writers_crit_);
429 426
430 int max_padding_bitrate_; 427 int max_padding_bitrate_;
431 int encoder_min_bitrate_bps_; 428 int encoder_min_bitrate_bps_;
(...skipping 28 matching lines...) Expand all
460 public: 457 public:
461 ConstructionTask(std::unique_ptr<VideoSendStreamImpl>* send_stream, 458 ConstructionTask(std::unique_ptr<VideoSendStreamImpl>* send_stream,
462 rtc::Event* done_event, 459 rtc::Event* done_event,
463 SendStatisticsProxy* stats_proxy, 460 SendStatisticsProxy* stats_proxy,
464 ViEEncoder* vie_encoder, 461 ViEEncoder* vie_encoder,
465 ProcessThread* module_process_thread, 462 ProcessThread* module_process_thread,
466 CallStats* call_stats, 463 CallStats* call_stats,
467 RtpTransportControllerSendInterface* transport, 464 RtpTransportControllerSendInterface* transport,
468 BitrateAllocator* bitrate_allocator, 465 BitrateAllocator* bitrate_allocator,
469 SendDelayStats* send_delay_stats, 466 SendDelayStats* send_delay_stats,
470 VieRemb* remb,
471 RtcEventLog* event_log, 467 RtcEventLog* event_log,
472 const VideoSendStream::Config* config, 468 const VideoSendStream::Config* config,
473 int initial_encoder_max_bitrate, 469 int initial_encoder_max_bitrate,
474 const std::map<uint32_t, RtpState>& suspended_ssrcs) 470 const std::map<uint32_t, RtpState>& suspended_ssrcs)
475 : send_stream_(send_stream), 471 : send_stream_(send_stream),
476 done_event_(done_event), 472 done_event_(done_event),
477 stats_proxy_(stats_proxy), 473 stats_proxy_(stats_proxy),
478 vie_encoder_(vie_encoder), 474 vie_encoder_(vie_encoder),
479 call_stats_(call_stats), 475 call_stats_(call_stats),
480 transport_(transport), 476 transport_(transport),
481 bitrate_allocator_(bitrate_allocator), 477 bitrate_allocator_(bitrate_allocator),
482 send_delay_stats_(send_delay_stats), 478 send_delay_stats_(send_delay_stats),
483 remb_(remb),
484 event_log_(event_log), 479 event_log_(event_log),
485 config_(config), 480 config_(config),
486 initial_encoder_max_bitrate_(initial_encoder_max_bitrate), 481 initial_encoder_max_bitrate_(initial_encoder_max_bitrate),
487 suspended_ssrcs_(suspended_ssrcs) {} 482 suspended_ssrcs_(suspended_ssrcs) {}
488 483
489 ~ConstructionTask() override { done_event_->Set(); } 484 ~ConstructionTask() override { done_event_->Set(); }
490 485
491 private: 486 private:
492 bool Run() override { 487 bool Run() override {
493 send_stream_->reset(new VideoSendStreamImpl( 488 send_stream_->reset(new VideoSendStreamImpl(
494 stats_proxy_, rtc::TaskQueue::Current(), call_stats_, transport_, 489 stats_proxy_, rtc::TaskQueue::Current(), call_stats_, transport_,
495 bitrate_allocator_, send_delay_stats_, remb_, vie_encoder_, event_log_, 490 bitrate_allocator_, send_delay_stats_, vie_encoder_, event_log_,
496 config_, initial_encoder_max_bitrate_, std::move(suspended_ssrcs_))); 491 config_, initial_encoder_max_bitrate_, std::move(suspended_ssrcs_)));
497 return true; 492 return true;
498 } 493 }
499 494
500 std::unique_ptr<VideoSendStreamImpl>* const send_stream_; 495 std::unique_ptr<VideoSendStreamImpl>* const send_stream_;
501 rtc::Event* const done_event_; 496 rtc::Event* const done_event_;
502 SendStatisticsProxy* const stats_proxy_; 497 SendStatisticsProxy* const stats_proxy_;
503 ViEEncoder* const vie_encoder_; 498 ViEEncoder* const vie_encoder_;
504 CallStats* const call_stats_; 499 CallStats* const call_stats_;
505 RtpTransportControllerSendInterface* const transport_; 500 RtpTransportControllerSendInterface* const transport_;
506 BitrateAllocator* const bitrate_allocator_; 501 BitrateAllocator* const bitrate_allocator_;
507 SendDelayStats* const send_delay_stats_; 502 SendDelayStats* const send_delay_stats_;
508 VieRemb* const remb_;
509 RtcEventLog* const event_log_; 503 RtcEventLog* const event_log_;
510 const VideoSendStream::Config* config_; 504 const VideoSendStream::Config* config_;
511 int initial_encoder_max_bitrate_; 505 int initial_encoder_max_bitrate_;
512 std::map<uint32_t, RtpState> suspended_ssrcs_; 506 std::map<uint32_t, RtpState> suspended_ssrcs_;
513 }; 507 };
514 508
515 class VideoSendStream::DestructAndGetRtpStateTask : public rtc::QueuedTask { 509 class VideoSendStream::DestructAndGetRtpStateTask : public rtc::QueuedTask {
516 public: 510 public:
517 DestructAndGetRtpStateTask(VideoSendStream::RtpStateMap* state_map, 511 DestructAndGetRtpStateTask(VideoSendStream::RtpStateMap* state_map,
518 std::unique_ptr<VideoSendStreamImpl> send_stream, 512 std::unique_ptr<VideoSendStreamImpl> send_stream,
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 }; 606 };
613 607
614 VideoSendStream::VideoSendStream( 608 VideoSendStream::VideoSendStream(
615 int num_cpu_cores, 609 int num_cpu_cores,
616 ProcessThread* module_process_thread, 610 ProcessThread* module_process_thread,
617 rtc::TaskQueue* worker_queue, 611 rtc::TaskQueue* worker_queue,
618 CallStats* call_stats, 612 CallStats* call_stats,
619 RtpTransportControllerSendInterface* transport, 613 RtpTransportControllerSendInterface* transport,
620 BitrateAllocator* bitrate_allocator, 614 BitrateAllocator* bitrate_allocator,
621 SendDelayStats* send_delay_stats, 615 SendDelayStats* send_delay_stats,
622 VieRemb* remb,
623 RtcEventLog* event_log, 616 RtcEventLog* event_log,
624 VideoSendStream::Config config, 617 VideoSendStream::Config config,
625 VideoEncoderConfig encoder_config, 618 VideoEncoderConfig encoder_config,
626 const std::map<uint32_t, RtpState>& suspended_ssrcs) 619 const std::map<uint32_t, RtpState>& suspended_ssrcs)
627 : worker_queue_(worker_queue), 620 : worker_queue_(worker_queue),
628 thread_sync_event_(false /* manual_reset */, false), 621 thread_sync_event_(false /* manual_reset */, false),
629 stats_proxy_(Clock::GetRealTimeClock(), 622 stats_proxy_(Clock::GetRealTimeClock(),
630 config, 623 config,
631 encoder_config.content_type), 624 encoder_config.content_type),
632 config_(std::move(config)), 625 config_(std::move(config)),
633 content_type_(encoder_config.content_type) { 626 content_type_(encoder_config.content_type) {
634 vie_encoder_.reset(new ViEEncoder( 627 vie_encoder_.reset(new ViEEncoder(
635 num_cpu_cores, &stats_proxy_, config_.encoder_settings, 628 num_cpu_cores, &stats_proxy_, config_.encoder_settings,
636 config_.pre_encode_callback, config_.post_encode_callback)); 629 config_.pre_encode_callback, config_.post_encode_callback));
637 worker_queue_->PostTask(std::unique_ptr<rtc::QueuedTask>(new ConstructionTask( 630 worker_queue_->PostTask(std::unique_ptr<rtc::QueuedTask>(new ConstructionTask(
638 &send_stream_, &thread_sync_event_, &stats_proxy_, vie_encoder_.get(), 631 &send_stream_, &thread_sync_event_, &stats_proxy_, vie_encoder_.get(),
639 module_process_thread, call_stats, transport, bitrate_allocator, 632 module_process_thread, call_stats, transport, bitrate_allocator,
640 send_delay_stats, remb, event_log, &config_, 633 send_delay_stats, event_log, &config_,
641 encoder_config.max_bitrate_bps, suspended_ssrcs))); 634 encoder_config.max_bitrate_bps, suspended_ssrcs)));
642 635
643 // Wait for ConstructionTask to complete so that |send_stream_| can be used. 636 // Wait for ConstructionTask to complete so that |send_stream_| can be used.
644 // |module_process_thread| must be registered and deregistered on the thread 637 // |module_process_thread| must be registered and deregistered on the thread
645 // it was created on. 638 // it was created on.
646 thread_sync_event_.Wait(rtc::Event::kForever); 639 thread_sync_event_.Wait(rtc::Event::kForever);
647 send_stream_->RegisterProcessThread(module_process_thread); 640 send_stream_->RegisterProcessThread(module_process_thread);
648 // TODO(sprang): Enable this also for regular video calls if it works well. 641 // TODO(sprang): Enable this also for regular video calls if it works well.
649 if (encoder_config.content_type == VideoEncoderConfig::ContentType::kScreen) { 642 if (encoder_config.content_type == VideoEncoderConfig::ContentType::kScreen) {
650 // Only signal target bitrate for screenshare streams, for now. 643 // Only signal target bitrate for screenshare streams, for now.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 send_stream_->EnableEncodedFrameRecording(files, byte_limit); 738 send_stream_->EnableEncodedFrameRecording(files, byte_limit);
746 } 739 }
747 740
748 VideoSendStreamImpl::VideoSendStreamImpl( 741 VideoSendStreamImpl::VideoSendStreamImpl(
749 SendStatisticsProxy* stats_proxy, 742 SendStatisticsProxy* stats_proxy,
750 rtc::TaskQueue* worker_queue, 743 rtc::TaskQueue* worker_queue,
751 CallStats* call_stats, 744 CallStats* call_stats,
752 RtpTransportControllerSendInterface* transport, 745 RtpTransportControllerSendInterface* transport,
753 BitrateAllocator* bitrate_allocator, 746 BitrateAllocator* bitrate_allocator,
754 SendDelayStats* send_delay_stats, 747 SendDelayStats* send_delay_stats,
755 VieRemb* remb,
756 ViEEncoder* vie_encoder, 748 ViEEncoder* vie_encoder,
757 RtcEventLog* event_log, 749 RtcEventLog* event_log,
758 const VideoSendStream::Config* config, 750 const VideoSendStream::Config* config,
759 int initial_encoder_max_bitrate, 751 int initial_encoder_max_bitrate,
760 std::map<uint32_t, RtpState> suspended_ssrcs) 752 std::map<uint32_t, RtpState> suspended_ssrcs)
761 : send_side_bwe_with_overhead_( 753 : send_side_bwe_with_overhead_(
762 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")), 754 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
763 stats_proxy_(stats_proxy), 755 stats_proxy_(stats_proxy),
764 config_(config), 756 config_(config),
765 suspended_ssrcs_(std::move(suspended_ssrcs)), 757 suspended_ssrcs_(std::move(suspended_ssrcs)),
766 module_process_thread_(nullptr), 758 module_process_thread_(nullptr),
767 worker_queue_(worker_queue), 759 worker_queue_(worker_queue),
768 check_encoder_activity_task_(nullptr), 760 check_encoder_activity_task_(nullptr),
769 call_stats_(call_stats), 761 call_stats_(call_stats),
770 transport_(transport), 762 transport_(transport),
771 bitrate_allocator_(bitrate_allocator), 763 bitrate_allocator_(bitrate_allocator),
772 remb_(remb),
773 flexfec_sender_(MaybeCreateFlexfecSender(*config_)), 764 flexfec_sender_(MaybeCreateFlexfecSender(*config_)),
774 max_padding_bitrate_(0), 765 max_padding_bitrate_(0),
775 encoder_min_bitrate_bps_(0), 766 encoder_min_bitrate_bps_(0),
776 encoder_max_bitrate_bps_(initial_encoder_max_bitrate), 767 encoder_max_bitrate_bps_(initial_encoder_max_bitrate),
777 encoder_target_rate_bps_(0), 768 encoder_target_rate_bps_(0),
778 vie_encoder_(vie_encoder), 769 vie_encoder_(vie_encoder),
779 encoder_feedback_(Clock::GetRealTimeClock(), 770 encoder_feedback_(Clock::GetRealTimeClock(),
780 config_->rtp.ssrcs, 771 config_->rtp.ssrcs,
781 vie_encoder), 772 vie_encoder),
782 protection_bitrate_calculator_(Clock::GetRealTimeClock(), this), 773 protection_bitrate_calculator_(Clock::GetRealTimeClock(), this),
(...skipping 18 matching lines...) Expand all
801 weak_ptr_factory_(this), 792 weak_ptr_factory_(this),
802 overhead_bytes_per_packet_(0), 793 overhead_bytes_per_packet_(0),
803 transport_overhead_bytes_per_packet_(0) { 794 transport_overhead_bytes_per_packet_(0) {
804 RTC_DCHECK_RUN_ON(worker_queue_); 795 RTC_DCHECK_RUN_ON(worker_queue_);
805 LOG(LS_INFO) << "VideoSendStreamInternal: " << config_->ToString(); 796 LOG(LS_INFO) << "VideoSendStreamInternal: " << config_->ToString();
806 weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); 797 weak_ptr_ = weak_ptr_factory_.GetWeakPtr();
807 module_process_thread_checker_.DetachFromThread(); 798 module_process_thread_checker_.DetachFromThread();
808 799
809 RTC_DCHECK(!config_->rtp.ssrcs.empty()); 800 RTC_DCHECK(!config_->rtp.ssrcs.empty());
810 RTC_DCHECK(call_stats_); 801 RTC_DCHECK(call_stats_);
811 RTC_DCHECK(remb_);
812 RTC_DCHECK(transport_); 802 RTC_DCHECK(transport_);
813 RTC_DCHECK(transport_->send_side_cc()); 803 RTC_DCHECK(transport_->send_side_cc());
814 804
815 transport->send_side_cc()->EnablePeriodicAlrProbing( 805 transport->send_side_cc()->EnablePeriodicAlrProbing(
816 config_->periodic_alr_bandwidth_probing); 806 config_->periodic_alr_bandwidth_probing);
817 807
818 // RTP/RTCP initialization. 808 // RTP/RTCP initialization.
819 809
820 // We add the highest spatial layer first to ensure it'll be prioritized 810 // We add the highest spatial layer first to ensure it'll be prioritized
821 // when sending padding, with the hope that the packet rate will be smaller, 811 // when sending padding, with the hope that the packet rate will be smaller,
822 // and that it's more important to protect than the lower layers. 812 // and that it's more important to protect than the lower layers.
823 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) 813 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
824 transport->packet_router()->AddSendRtpModule(rtp_rtcp); 814 transport->packet_router()->AddSendRtpModule(rtp_rtcp);
825 815
826 for (size_t i = 0; i < config_->rtp.extensions.size(); ++i) { 816 for (size_t i = 0; i < config_->rtp.extensions.size(); ++i) {
827 const std::string& extension = config_->rtp.extensions[i].uri; 817 const std::string& extension = config_->rtp.extensions[i].uri;
828 int id = config_->rtp.extensions[i].id; 818 int id = config_->rtp.extensions[i].id;
829 // One-byte-extension local identifiers are in the range 1-14 inclusive. 819 // One-byte-extension local identifiers are in the range 1-14 inclusive.
830 RTC_DCHECK_GE(id, 1); 820 RTC_DCHECK_GE(id, 1);
831 RTC_DCHECK_LE(id, 14); 821 RTC_DCHECK_LE(id, 14);
832 RTC_DCHECK(RtpExtension::IsSupportedForVideo(extension)); 822 RTC_DCHECK(RtpExtension::IsSupportedForVideo(extension));
833 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 823 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
834 RTC_CHECK_EQ(0, rtp_rtcp->RegisterSendRtpHeaderExtension( 824 RTC_CHECK_EQ(0, rtp_rtcp->RegisterSendRtpHeaderExtension(
835 StringToRtpExtensionType(extension), id)); 825 StringToRtpExtensionType(extension), id));
836 } 826 }
837 } 827 }
838 828
839 remb_->AddRembSender(rtp_rtcp_modules_[0]);
840 rtp_rtcp_modules_[0]->SetREMBStatus(true);
841
842 ConfigureProtection(); 829 ConfigureProtection();
843 ConfigureSsrcs(); 830 ConfigureSsrcs();
844 831
845 // TODO(pbos): Should we set CNAME on all RTP modules? 832 // TODO(pbos): Should we set CNAME on all RTP modules?
846 rtp_rtcp_modules_.front()->SetCNAME(config_->rtp.c_name.c_str()); 833 rtp_rtcp_modules_.front()->SetCNAME(config_->rtp.c_name.c_str());
847 834
848 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 835 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
849 rtp_rtcp->RegisterRtcpStatisticsCallback(stats_proxy_); 836 rtp_rtcp->RegisterRtcpStatisticsCallback(stats_proxy_);
850 rtp_rtcp->RegisterSendChannelRtpStatisticsCallback(stats_proxy_); 837 rtp_rtcp->RegisterSendChannelRtpStatisticsCallback(stats_proxy_);
851 rtp_rtcp->SetMaxRtpPacketSize(config_->rtp.max_packet_size); 838 rtp_rtcp->SetMaxRtpPacketSize(config_->rtp.max_packet_size);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) 876 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
890 module_process_thread_->DeRegisterModule(rtp_rtcp); 877 module_process_thread_->DeRegisterModule(rtp_rtcp);
891 } 878 }
892 879
893 VideoSendStreamImpl::~VideoSendStreamImpl() { 880 VideoSendStreamImpl::~VideoSendStreamImpl() {
894 RTC_DCHECK_RUN_ON(worker_queue_); 881 RTC_DCHECK_RUN_ON(worker_queue_);
895 RTC_DCHECK(!payload_router_.IsActive()) 882 RTC_DCHECK(!payload_router_.IsActive())
896 << "VideoSendStreamImpl::Stop not called"; 883 << "VideoSendStreamImpl::Stop not called";
897 LOG(LS_INFO) << "~VideoSendStreamInternal: " << config_->ToString(); 884 LOG(LS_INFO) << "~VideoSendStreamInternal: " << config_->ToString();
898 885
899 rtp_rtcp_modules_[0]->SetREMBStatus(false);
900 remb_->RemoveRembSender(rtp_rtcp_modules_[0]);
901
902 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 886 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
903 transport_->packet_router()->RemoveSendRtpModule(rtp_rtcp); 887 transport_->packet_router()->RemoveSendRtpModule(rtp_rtcp);
904 delete rtp_rtcp; 888 delete rtp_rtcp;
905 } 889 }
906 } 890 }
907 891
908 bool VideoSendStreamImpl::DeliverRtcp(const uint8_t* packet, size_t length) { 892 bool VideoSendStreamImpl::DeliverRtcp(const uint8_t* packet, size_t length) {
909 // Runs on a network thread. 893 // Runs on a network thread.
910 RTC_DCHECK(!worker_queue_->IsCurrent()); 894 RTC_DCHECK(!worker_queue_->IsCurrent());
911 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) 895 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_)
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 std::min(config_->rtp.max_packet_size, 1322 std::min(config_->rtp.max_packet_size,
1339 kPathMTU - transport_overhead_bytes_per_packet_); 1323 kPathMTU - transport_overhead_bytes_per_packet_);
1340 1324
1341 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 1325 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
1342 rtp_rtcp->SetMaxRtpPacketSize(rtp_packet_size); 1326 rtp_rtcp->SetMaxRtpPacketSize(rtp_packet_size);
1343 } 1327 }
1344 } 1328 }
1345 1329
1346 } // namespace internal 1330 } // namespace internal
1347 } // namespace webrtc 1331 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_send_stream.h ('k') | webrtc/video/vie_remb.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698