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_audio.h"
|
||||||
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
||||||
#include "webrtc/modules/rtp_rtcp/source/time_util.h"
|
#include "webrtc/modules/rtp_rtcp/source/time_util.h"
|
||||||
|
#include "webrtc/system_wrappers/include/field_trial.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
@ -1293,9 +1294,15 @@ void RTPSender::SetTransportOverhead(int transport_overhead) {
|
|||||||
void RTPSender::AddPacketToTransportFeedback(uint16_t packet_id,
|
void RTPSender::AddPacketToTransportFeedback(uint16_t packet_id,
|
||||||
const RtpPacketToSend& packet,
|
const RtpPacketToSend& packet,
|
||||||
int probe_cluster_id) {
|
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_) {
|
if (transport_feedback_observer_) {
|
||||||
transport_feedback_observer_->AddPacket(
|
transport_feedback_observer_->AddPacket(packet_id, packet_size,
|
||||||
packet_id, packet.payload_size() + packet.padding_size(),
|
|
||||||
probe_cluster_id);
|
probe_cluster_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h"
|
||||||
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
|
||||||
#include "webrtc/system_wrappers/include/stl_util.h"
|
#include "webrtc/system_wrappers/include/stl_util.h"
|
||||||
|
#include "webrtc/test/field_trial.h"
|
||||||
#include "webrtc/test/gmock.h"
|
#include "webrtc/test/gmock.h"
|
||||||
#include "webrtc/test/gtest.h"
|
#include "webrtc/test/gtest.h"
|
||||||
#include "webrtc/test/mock_transport.h"
|
#include "webrtc/test/mock_transport.h"
|
||||||
@ -1428,4 +1429,34 @@ TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) {
|
|||||||
SendGenericPayload();
|
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
|
} // namespace webrtc
|
||||||
|
|||||||
Reference in New Issue
Block a user