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:
michaelt
2016-11-29 02:24:18 -08:00
committed by Commit bot
parent 19223ace65
commit 668eb3b71c
2 changed files with 41 additions and 3 deletions

View File

@ -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,9 +1294,15 @@ 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(),
transport_feedback_observer_->AddPacket(packet_id, packet_size,
probe_cluster_id);
}
}

View File

@ -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