Add overhead to transport feedback observer.
BUG=webrtc:6762 Review-Url: https://codereview.webrtc.org/2525283002 Cr-Commit-Position: refs/heads/master@{#15291}
This commit is contained in:
@ -29,6 +29,7 @@
|
||||
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h"
|
||||
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
||||
#include "webrtc/modules/rtp_rtcp/source/time_util.h"
|
||||
#include "webrtc/system_wrappers/include/field_trial.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -1293,10 +1294,16 @@ void RTPSender::SetTransportOverhead(int transport_overhead) {
|
||||
void RTPSender::AddPacketToTransportFeedback(uint16_t packet_id,
|
||||
const RtpPacketToSend& packet,
|
||||
int probe_cluster_id) {
|
||||
size_t packet_size = packet.payload_size() + packet.padding_size();
|
||||
if (webrtc::field_trial::FindFullName("WebRTC-SendSideBwe-WithOverhead") ==
|
||||
"Enabled") {
|
||||
rtc::CritScope lock(&send_critsect_);
|
||||
packet_size = packet.size() + transport_overhead_bytes_per_packet_;
|
||||
}
|
||||
|
||||
if (transport_feedback_observer_) {
|
||||
transport_feedback_observer_->AddPacket(
|
||||
packet_id, packet.payload_size() + packet.padding_size(),
|
||||
probe_cluster_id);
|
||||
transport_feedback_observer_->AddPacket(packet_id, packet_size,
|
||||
probe_cluster_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
||||
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
|
||||
#include "webrtc/system_wrappers/include/stl_util.h"
|
||||
#include "webrtc/test/field_trial.h"
|
||||
#include "webrtc/test/gmock.h"
|
||||
#include "webrtc/test/gtest.h"
|
||||
#include "webrtc/test/mock_transport.h"
|
||||
@ -1428,4 +1429,34 @@ TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) {
|
||||
SendGenericPayload();
|
||||
}
|
||||
|
||||
TEST_F(RtpSenderTest, AddOverheadToTransportFeedbackObserver) {
|
||||
constexpr int kTransportOverheadBytesPerPacket = 28;
|
||||
constexpr int kRtpOverheadBytesPerPacket = 12 + 8;
|
||||
test::ScopedFieldTrials override_field_trials(
|
||||
"WebRTC-SendSideBwe-WithOverhead/Enabled/");
|
||||
testing::NiceMock<MockOverheadObserver> mock_overhead_observer;
|
||||
rtp_sender_.reset(new RTPSender(
|
||||
false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_,
|
||||
&feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_,
|
||||
nullptr, &retransmission_rate_limiter_, &mock_overhead_observer));
|
||||
rtp_sender_->SetTransportOverhead(kTransportOverheadBytesPerPacket);
|
||||
EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension(
|
||||
kRtpExtensionTransportSequenceNumber,
|
||||
kTransportSequenceNumberExtensionId));
|
||||
EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber())
|
||||
.WillOnce(testing::Return(kTransportSequenceNumber));
|
||||
EXPECT_CALL(feedback_observer_,
|
||||
AddPacket(kTransportSequenceNumber,
|
||||
sizeof(kPayloadData) + kGenericHeaderLength +
|
||||
kRtpOverheadBytesPerPacket +
|
||||
kTransportOverheadBytesPerPacket,
|
||||
PacketInfo::kNotAProbe))
|
||||
.Times(1);
|
||||
EXPECT_CALL(mock_overhead_observer,
|
||||
OnOverheadChanged(kTransportOverheadBytesPerPacket +
|
||||
kRtpOverheadBytesPerPacket))
|
||||
.Times(1);
|
||||
SendGenericPayload();
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user