Batches video frame packets when posting to pacer
All plumbing was landed a while ago, but this call site was not updated. This change aims to reduce contention/overhead when posting large number of packets to the paced sender. Bug: webrtc:10809 Change-Id: I5486131b980e55331a38151bceee1cb96e35a942 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158203 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29599}
This commit is contained in:
parent
2040dcf9fc
commit
fc78aaceea
@ -1228,22 +1228,20 @@ TEST_P(RtpSenderTest, SendFlexfecPackets) {
|
||||
std::unique_ptr<RtpPacketToSend> fec_packet;
|
||||
|
||||
EXPECT_CALL(mock_paced_sender_, EnqueuePackets)
|
||||
.Times(2)
|
||||
.WillRepeatedly(
|
||||
[&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
|
||||
for (auto& packet : packets) {
|
||||
if (packet->packet_type() == RtpPacketToSend::Type::kVideo) {
|
||||
EXPECT_EQ(packet->Ssrc(), kSsrc);
|
||||
EXPECT_EQ(packet->SequenceNumber(), kSeqNum);
|
||||
media_packet = std::move(packet);
|
||||
} else {
|
||||
EXPECT_EQ(packet->packet_type(),
|
||||
RtpPacketToSend::Type::kForwardErrorCorrection);
|
||||
EXPECT_EQ(packet->Ssrc(), kFlexFecSsrc);
|
||||
fec_packet = std::move(packet);
|
||||
}
|
||||
}
|
||||
});
|
||||
.WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
|
||||
for (auto& packet : packets) {
|
||||
if (packet->packet_type() == RtpPacketToSend::Type::kVideo) {
|
||||
EXPECT_EQ(packet->Ssrc(), kSsrc);
|
||||
EXPECT_EQ(packet->SequenceNumber(), kSeqNum);
|
||||
media_packet = std::move(packet);
|
||||
} else {
|
||||
EXPECT_EQ(packet->packet_type(),
|
||||
RtpPacketToSend::Type::kForwardErrorCorrection);
|
||||
EXPECT_EQ(packet->Ssrc(), kFlexFecSsrc);
|
||||
fec_packet = std::move(packet);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
video_header.frame_type = VideoFrameType::kVideoFrameKey;
|
||||
EXPECT_TRUE(rtp_sender_video.SendVideo(
|
||||
@ -1365,22 +1363,20 @@ TEST_P(RtpSenderTest, NoFlexfecForTimingFrames) {
|
||||
std::unique_ptr<RtpPacketToSend> fec_packet;
|
||||
|
||||
EXPECT_CALL(mock_paced_sender_, EnqueuePackets)
|
||||
.Times(2)
|
||||
.WillRepeatedly(
|
||||
[&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
|
||||
for (auto& packet : packets) {
|
||||
if (packet->packet_type() == RtpPacketToSend::Type::kVideo) {
|
||||
EXPECT_EQ(packet->Ssrc(), kSsrc);
|
||||
EXPECT_EQ(packet->SequenceNumber(), kSeqNum + 1);
|
||||
media_packet2 = std::move(packet);
|
||||
} else {
|
||||
EXPECT_EQ(packet->packet_type(),
|
||||
RtpPacketToSend::Type::kForwardErrorCorrection);
|
||||
EXPECT_EQ(packet->Ssrc(), kFlexFecSsrc);
|
||||
fec_packet = std::move(packet);
|
||||
}
|
||||
}
|
||||
});
|
||||
.WillOnce([&](std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
|
||||
for (auto& packet : packets) {
|
||||
if (packet->packet_type() == RtpPacketToSend::Type::kVideo) {
|
||||
EXPECT_EQ(packet->Ssrc(), kSsrc);
|
||||
EXPECT_EQ(packet->SequenceNumber(), kSeqNum + 1);
|
||||
media_packet2 = std::move(packet);
|
||||
} else {
|
||||
EXPECT_EQ(packet->packet_type(),
|
||||
RtpPacketToSend::Type::kForwardErrorCorrection);
|
||||
EXPECT_EQ(packet->Ssrc(), kFlexFecSsrc);
|
||||
fec_packet = std::move(packet);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
video_header.video_timing.flags = VideoSendTiming::kInvalid;
|
||||
video_header.frame_type = VideoFrameType::kVideoFrameKey;
|
||||
@ -1723,8 +1719,7 @@ TEST_P(RtpSenderTest, FecOverheadRate) {
|
||||
constexpr size_t kNumMediaPackets = 10;
|
||||
constexpr size_t kNumFecPackets = kNumMediaPackets;
|
||||
constexpr int64_t kTimeBetweenPacketsMs = 10;
|
||||
EXPECT_CALL(mock_paced_sender_, EnqueuePackets)
|
||||
.Times(kNumMediaPackets + kNumFecPackets);
|
||||
EXPECT_CALL(mock_paced_sender_, EnqueuePackets).Times(kNumMediaPackets);
|
||||
for (size_t i = 0; i < kNumMediaPackets; ++i) {
|
||||
RTPVideoHeader video_header;
|
||||
|
||||
|
||||
@ -372,10 +372,7 @@ void RTPSenderVideo::LogAndSendToNetwork(
|
||||
clock_->TimeInMilliseconds());
|
||||
}
|
||||
|
||||
// TODO(sprang): Replace with bulk send method.
|
||||
for (auto& packet : packets) {
|
||||
rtp_sender_->SendToNetwork(std::move(packet));
|
||||
}
|
||||
rtp_sender_->EnqueuePackets(std::move(packets));
|
||||
}
|
||||
|
||||
size_t RTPSenderVideo::FecPacketOverhead() const {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user