From 31b5d7f2e35bdb4b600bd3668fec166a91d83dff Mon Sep 17 00:00:00 2001 From: dijunkun Date: Tue, 14 Nov 2023 18:58:47 -0800 Subject: [PATCH] Fix rtp header marker bit error --- src/rtp/rtp_codec.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/rtp/rtp_codec.cpp b/src/rtp/rtp_codec.cpp index 7f6ecc2..3f81139 100644 --- a/src/rtp/rtp_codec.cpp +++ b/src/rtp/rtp_codec.cpp @@ -53,12 +53,12 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size, std::chrono::high_resolution_clock::now().time_since_epoch().count(); for (size_t index = 0; index < num_of_total_packets; index++) { + RtpPacket rtp_packet; if (index < num_of_source_packets) { - RtpPacket rtp_packet; rtp_packet.SetVerion(version_); rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasExtension(has_extension_); - rtp_packet.SetMarker(index == num_of_source_packets ? 1 : 0); + rtp_packet.SetMarker(index == num_of_source_packets - 1 ? 1 : 0); rtp_packet.SetPayloadType(RtpPacket::PAYLOAD_TYPE::H264); rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetTimestamp(timestamp_); @@ -96,14 +96,13 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size, } else { rtp_packet.EncodeH264Fua(fec_packets[index], MAX_NALU_LEN); } - packets.emplace_back(rtp_packet); + } else if (index >= num_of_source_packets && index < num_of_total_packets) { - RtpPacket rtp_packet; rtp_packet.SetVerion(version_); rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasExtension(has_extension_); - rtp_packet.SetMarker(index == num_of_total_packets ? 1 : 0); + rtp_packet.SetMarker(index == num_of_total_packets - 1 ? 1 : 0); rtp_packet.SetPayloadType(RtpPacket::PAYLOAD_TYPE::H264_FEC); rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetTimestamp(timestamp_); @@ -118,8 +117,8 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size, rtp_packet.SetExtensionData(extension_data_, extension_len_); } rtp_packet.EncodeH264Fec(fec_packets[index], MAX_NALU_LEN); - packets.emplace_back(rtp_packet); } + packets.emplace_back(rtp_packet); // if (index < num_of_source_packets) { // rtp_packet.EncodeH264Fua(fec_packets[index], MAX_NALU_LEN); @@ -174,7 +173,7 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size, rtp_packet.SetVerion(version_); rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasExtension(has_extension_); - rtp_packet.SetMarker(index == packet_num ? 1 : 0); + rtp_packet.SetMarker(index == packet_num - 1 ? 1 : 0); rtp_packet.SetPayloadType(RtpPacket::PAYLOAD_TYPE(payload_type_)); rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetTimestamp(timestamp_);