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_);