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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc

Issue 1959013003: TMMBRHelp moved from member object/base class to stack object, (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: includes adjusted Created 4 years, 7 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 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 18 matching lines...) Expand all
29 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h" 29 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
30 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h" 30 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h"
31 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h" 31 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h"
32 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h" 32 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h"
33 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h" 33 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
34 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sli.h" 34 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sli.h"
35 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h" 35 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h"
36 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h" 36 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h"
37 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" 37 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
38 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h" 38 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h"
39 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h"
39 40
40 namespace webrtc { 41 namespace webrtc {
41 42
42 NACKStringBuilder::NACKStringBuilder() 43 NACKStringBuilder::NACKStringBuilder()
43 : stream_(""), count_(0), prevNack_(0), consecutive_(false) {} 44 : stream_(""), count_(0), prevNack_(0), consecutive_(false) {}
44 45
45 NACKStringBuilder::~NACKStringBuilder() {} 46 NACKStringBuilder::~NACKStringBuilder() {}
46 47
47 void NACKStringBuilder::PushNACK(uint16_t nack) { 48 void NACKStringBuilder::PushNACK(uint16_t nack) {
48 if (count_ == 0) { 49 if (count_ == 0) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 last_rtp_timestamp_(0), 163 last_rtp_timestamp_(0),
163 last_frame_capture_time_ms_(-1), 164 last_frame_capture_time_ms_(-1),
164 ssrc_(0), 165 ssrc_(0),
165 remote_ssrc_(0), 166 remote_ssrc_(0),
166 receive_statistics_(receive_statistics), 167 receive_statistics_(receive_statistics),
167 168
168 sequence_number_fir_(0), 169 sequence_number_fir_(0),
169 170
170 remb_bitrate_(0), 171 remb_bitrate_(0),
171 172
172 tmmbr_help_(),
173 tmmbr_send_(0), 173 tmmbr_send_(0),
174 packet_oh_send_(0), 174 packet_oh_send_(0),
175 max_payload_length_(IP_PACKET_SIZE - 28), // IPv4 + UDP by default. 175 max_payload_length_(IP_PACKET_SIZE - 28), // IPv4 + UDP by default.
176 176
177 app_sub_type_(0), 177 app_sub_type_(0),
178 app_name_(0), 178 app_name_(0),
179 app_data_(nullptr), 179 app_data_(nullptr),
180 app_length_(0), 180 app_length_(0),
181 181
182 xr_send_receiver_reference_time_enabled_(false), 182 xr_send_receiver_reference_time_enabled_(false),
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 578
579 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildTMMBR( 579 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildTMMBR(
580 const RtcpContext& ctx) { 580 const RtcpContext& ctx) {
581 if (ctx.feedback_state_.module == nullptr) 581 if (ctx.feedback_state_.module == nullptr)
582 return nullptr; 582 return nullptr;
583 // Before sending the TMMBR check the received TMMBN, only an owner is 583 // Before sending the TMMBR check the received TMMBN, only an owner is
584 // allowed to raise the bitrate: 584 // allowed to raise the bitrate:
585 // * If the sender is an owner of the TMMBN -> send TMMBR 585 // * If the sender is an owner of the TMMBN -> send TMMBR
586 // * If not an owner but the TMMBR would enter the TMMBN -> send TMMBR 586 // * If not an owner but the TMMBR would enter the TMMBN -> send TMMBR
587 587
588 TMMBRHelp tmmbr_help;
588 // get current bounding set from RTCP receiver 589 // get current bounding set from RTCP receiver
589 bool tmmbrOwner = false; 590 bool tmmbrOwner = false;
590 // store in candidateSet, allocates one extra slot 591 // store in candidateSet, allocates one extra slot
591 TMMBRSet* candidateSet = tmmbr_help_.CandidateSet(); 592 TMMBRSet* candidateSet = tmmbr_help.CandidateSet();
592 593
593 // holding critical_section_rtcp_sender_ while calling RTCPreceiver which 594 // holding critical_section_rtcp_sender_ while calling RTCPreceiver which
594 // will accuire criticalSectionRTCPReceiver_ is a potental deadlock but 595 // will accuire criticalSectionRTCPReceiver_ is a potental deadlock but
595 // since RTCPreceiver is not doing the reverse we should be fine 596 // since RTCPreceiver is not doing the reverse we should be fine
596 int32_t lengthOfBoundingSet = 597 int32_t lengthOfBoundingSet =
597 ctx.feedback_state_.module->BoundingSet(&tmmbrOwner, candidateSet); 598 ctx.feedback_state_.module->BoundingSet(&tmmbrOwner, candidateSet);
598 599
599 if (lengthOfBoundingSet > 0) { 600 if (lengthOfBoundingSet > 0) {
600 for (int32_t i = 0; i < lengthOfBoundingSet; i++) { 601 for (int32_t i = 0; i < lengthOfBoundingSet; i++) {
601 if (candidateSet->Tmmbr(i) == tmmbr_send_ && 602 if (candidateSet->Tmmbr(i) == tmmbr_send_ &&
602 candidateSet->PacketOH(i) == packet_oh_send_) { 603 candidateSet->PacketOH(i) == packet_oh_send_) {
603 // Do not send the same tuple. 604 // Do not send the same tuple.
604 return nullptr; 605 return nullptr;
605 } 606 }
606 } 607 }
607 if (!tmmbrOwner) { 608 if (!tmmbrOwner) {
608 // use received bounding set as candidate set 609 // use received bounding set as candidate set
609 // add current tuple 610 // add current tuple
610 candidateSet->SetEntry(lengthOfBoundingSet, tmmbr_send_, packet_oh_send_, 611 candidateSet->SetEntry(lengthOfBoundingSet, tmmbr_send_, packet_oh_send_,
611 ssrc_); 612 ssrc_);
612 int numCandidates = lengthOfBoundingSet + 1; 613 int numCandidates = lengthOfBoundingSet + 1;
613 614
614 // find bounding set 615 // find bounding set
615 TMMBRSet* boundingSet = nullptr; 616 TMMBRSet* boundingSet = nullptr;
616 int numBoundingSet = tmmbr_help_.FindTMMBRBoundingSet(boundingSet); 617 int numBoundingSet = tmmbr_help.FindTMMBRBoundingSet(boundingSet);
617 if (numBoundingSet > 0 || numBoundingSet <= numCandidates) 618 if (numBoundingSet > 0 || numBoundingSet <= numCandidates)
618 tmmbrOwner = tmmbr_help_.IsOwner(ssrc_, numBoundingSet); 619 tmmbrOwner = tmmbr_help.IsOwner(ssrc_, numBoundingSet);
619 if (!tmmbrOwner) { 620 if (!tmmbrOwner) {
620 // Did not enter bounding set, no meaning to send this request. 621 // Did not enter bounding set, no meaning to send this request.
621 return nullptr; 622 return nullptr;
622 } 623 }
623 } 624 }
624 } 625 }
625 626
626 if (!tmmbr_send_) 627 if (!tmmbr_send_)
627 return nullptr; 628 return nullptr;
628 629
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 // but we can't because of an incorrect warning (C4822) in MVS 2013. 1037 // but we can't because of an incorrect warning (C4822) in MVS 2013.
1037 } sender(transport_, event_log_); 1038 } sender(transport_, event_log_);
1038 1039
1039 RTC_DCHECK_LE(max_payload_length_, static_cast<size_t>(IP_PACKET_SIZE)); 1040 RTC_DCHECK_LE(max_payload_length_, static_cast<size_t>(IP_PACKET_SIZE));
1040 uint8_t buffer[IP_PACKET_SIZE]; 1041 uint8_t buffer[IP_PACKET_SIZE];
1041 return packet.BuildExternalBuffer(buffer, max_payload_length_, &sender) && 1042 return packet.BuildExternalBuffer(buffer, max_payload_length_, &sender) &&
1042 !sender.send_failure_; 1043 !sender.send_failure_;
1043 } 1044 }
1044 1045
1045 } // namespace webrtc 1046 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_sender.h ('k') | webrtc/modules/rtp_rtcp/source/tmmbr_help.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698