Fix rtp header marker bit error

This commit is contained in:
dijunkun
2023-11-14 18:58:47 -08:00
parent 5c0a6646c8
commit 31b5d7f2e3

View File

@@ -53,12 +53,12 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::high_resolution_clock::now().time_since_epoch().count();
for (size_t index = 0; index < num_of_total_packets; index++) { for (size_t index = 0; index < num_of_total_packets; index++) {
if (index < num_of_source_packets) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
if (index < num_of_source_packets) {
rtp_packet.SetVerion(version_); rtp_packet.SetVerion(version_);
rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasPadding(has_padding_);
rtp_packet.SetHasExtension(has_extension_); 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.SetPayloadType(RtpPacket::PAYLOAD_TYPE::H264);
rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetSequenceNumber(sequence_number_++);
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
@@ -96,14 +96,13 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
} else { } else {
rtp_packet.EncodeH264Fua(fec_packets[index], MAX_NALU_LEN); rtp_packet.EncodeH264Fua(fec_packets[index], MAX_NALU_LEN);
} }
packets.emplace_back(rtp_packet);
} else if (index >= num_of_source_packets && } else if (index >= num_of_source_packets &&
index < num_of_total_packets) { index < num_of_total_packets) {
RtpPacket rtp_packet;
rtp_packet.SetVerion(version_); rtp_packet.SetVerion(version_);
rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasPadding(has_padding_);
rtp_packet.SetHasExtension(has_extension_); 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.SetPayloadType(RtpPacket::PAYLOAD_TYPE::H264_FEC);
rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetSequenceNumber(sequence_number_++);
rtp_packet.SetTimestamp(timestamp_); 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.SetExtensionData(extension_data_, extension_len_);
} }
rtp_packet.EncodeH264Fec(fec_packets[index], MAX_NALU_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) { // if (index < num_of_source_packets) {
// rtp_packet.EncodeH264Fua(fec_packets[index], MAX_NALU_LEN); // 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.SetVerion(version_);
rtp_packet.SetHasPadding(has_padding_); rtp_packet.SetHasPadding(has_padding_);
rtp_packet.SetHasExtension(has_extension_); 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.SetPayloadType(RtpPacket::PAYLOAD_TYPE(payload_type_));
rtp_packet.SetSequenceNumber(sequence_number_++); rtp_packet.SetSequenceNumber(sequence_number_++);
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);