Refactor FEC code to use COW buffers
This refactoring helps to reduce unnecessary memcpy calls on the receive side. This CL replaces |uint8 data[IP_PACKET_SIZE]| with |rtc::CopyOnWriteBuffer data| in Packet class, removes |length| field there, and does necessary changes. This is a reland of these two CLs with fixes: https://webrtc-review.googlesource.com/c/src/+/144942 https://webrtc-review.googlesource.com/c/src/+/144881 Bug: webrtc:10750 Change-Id: I76f6dee5a57ade59942ea2822ca4737edfe6438b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145332 Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29035}
This commit is contained in:
committed by
Commit Bot
parent
a66395e72f
commit
eec5fff4df
@ -114,7 +114,7 @@ bool FlexfecSender::AddRtpPacketAndGenerateFec(const RtpPacketToSend& packet) {
|
||||
// protection.
|
||||
RTC_DCHECK_EQ(packet.Ssrc(), protected_media_ssrc_);
|
||||
return ulpfec_generator_.AddRtpPacketAndGenerateFec(
|
||||
packet.data(), packet.payload_size(), packet.headers_size()) == 0;
|
||||
packet.Buffer(), packet.headers_size()) == 0;
|
||||
}
|
||||
|
||||
bool FlexfecSender::FecAvailable() const {
|
||||
@ -153,8 +153,9 @@ std::vector<std::unique_ptr<RtpPacketToSend>> FlexfecSender::GetFecPackets() {
|
||||
}
|
||||
|
||||
// RTP payload.
|
||||
uint8_t* payload = fec_packet_to_send->AllocatePayload(fec_packet->length);
|
||||
memcpy(payload, fec_packet->data, fec_packet->length);
|
||||
uint8_t* payload =
|
||||
fec_packet_to_send->AllocatePayload(fec_packet->data.size());
|
||||
memcpy(payload, fec_packet->data.cdata(), fec_packet->data.size());
|
||||
|
||||
fec_packets_to_send.push_back(std::move(fec_packet_to_send));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user