mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-03-26 03:07:30 +08:00
[fix] fix pacer module crash due to multi-thread
This commit is contained in:
@@ -547,7 +547,7 @@ void RtpCodec::Encode(uint8_t* buffer, uint32_t size,
|
||||
}
|
||||
} else if (rtp::PAYLOAD_TYPE::AV1 == payload_type_) {
|
||||
std::vector<Obu> obus = ParseObus(buffer, size);
|
||||
uint64_t timestamp =
|
||||
uint32_t timestamp =
|
||||
std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch())
|
||||
.count();
|
||||
|
||||
@@ -40,7 +40,7 @@ class RtpCodec {
|
||||
bool marker_ = false;
|
||||
uint32_t payload_type_ = 0;
|
||||
uint16_t sequence_number_ = 0;
|
||||
uint64_t timestamp_ = 0;
|
||||
uint32_t timestamp_ = 0;
|
||||
uint32_t ssrc_ = 0;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
uint16_t profile_ = 0;
|
||||
|
||||
@@ -52,7 +52,7 @@ struct RTPHeader {
|
||||
bool marker_ = false;
|
||||
uint8_t payload_type_ = 0;
|
||||
uint16_t sequence_number_ = 1;
|
||||
uint64_t timestamp_ = 0;
|
||||
uint32_t timestamp_ = 0;
|
||||
uint32_t ssrc_ = 0;
|
||||
uint32_t csrcs_[kMaxRtpCsrcSize];
|
||||
size_t padding_len;
|
||||
|
||||
@@ -204,7 +204,7 @@ class RtpPacket {
|
||||
void SetSequenceNumber(uint16_t sequence_number) {
|
||||
sequence_number_ = sequence_number;
|
||||
}
|
||||
void SetTimestamp(uint64_t timestamp) { timestamp_ = timestamp; }
|
||||
void SetTimestamp(uint32_t timestamp) { timestamp_ = timestamp; }
|
||||
void SetSsrc(uint32_t ssrc) { ssrc_ = ssrc; }
|
||||
void SetCsrcs(std::vector<uint32_t> &csrcs) { csrcs_ = csrcs; }
|
||||
void SetSize(size_t size) { size_ = size; }
|
||||
@@ -297,7 +297,7 @@ class RtpPacket {
|
||||
bool marker_ = false;
|
||||
uint8_t payload_type_ = 0;
|
||||
uint16_t sequence_number_ = 1;
|
||||
uint64_t timestamp_ = 0;
|
||||
uint32_t timestamp_ = 0;
|
||||
uint32_t ssrc_ = 0;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ class RtpPacket {
|
||||
void SetSequenceNumber(uint16_t sequence_number) {
|
||||
sequence_number_ = sequence_number;
|
||||
}
|
||||
void SetTimestamp(uint64_t timestamp) { timestamp_ = timestamp; }
|
||||
void SetTimestamp(uint32_t timestamp) { timestamp_ = timestamp; }
|
||||
void SetSsrc(uint32_t ssrc) { ssrc_ = ssrc; }
|
||||
void SetCsrcs(std::vector<uint32_t> &csrcs) { csrcs_ = csrcs; }
|
||||
|
||||
@@ -453,7 +453,7 @@ class RtpPacket {
|
||||
bool marker_ = false;
|
||||
uint8_t payload_type_ = 0;
|
||||
uint16_t sequence_number_ = 1;
|
||||
uint64_t timestamp_ = 0;
|
||||
uint32_t timestamp_ = 0;
|
||||
uint32_t ssrc_ = 0;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
uint16_t profile_ = 0;
|
||||
|
||||
@@ -33,7 +33,7 @@ class RtpPacketizerAv1 : public RtpPacketizer {
|
||||
bool marker_;
|
||||
uint32_t payload_type_;
|
||||
uint16_t sequence_number_;
|
||||
uint64_t timestamp_;
|
||||
uint32_t timestamp_;
|
||||
uint32_t ssrc_;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
uint16_t profile_;
|
||||
|
||||
@@ -54,7 +54,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerGeneric::Build(
|
||||
payload_size / MAX_NALU_LEN + (last_packet_size ? 1 : 0);
|
||||
|
||||
// TODO: use frame timestamp
|
||||
uint64_t timestamp = std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
uint32_t timestamp = std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch())
|
||||
.count();
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ class RtpPacketizerGeneric : public RtpPacketizer {
|
||||
bool marker_;
|
||||
uint32_t payload_type_;
|
||||
uint16_t sequence_number_;
|
||||
uint64_t timestamp_;
|
||||
uint32_t timestamp_;
|
||||
uint32_t ssrc_;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
uint16_t profile_;
|
||||
|
||||
@@ -82,7 +82,13 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildNalu(
|
||||
marker_ = 1;
|
||||
payload_type_ = rtp::PAYLOAD_TYPE(payload_type_);
|
||||
sequence_number_++;
|
||||
timestamp_ = rtp::kMsToRtpTimestamp * rtp_timestamp;
|
||||
|
||||
// TODO: use frame timestamp
|
||||
uint32_t timestamp = std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch())
|
||||
.count();
|
||||
|
||||
timestamp_ = timestamp;
|
||||
|
||||
if (!csrc_count_) {
|
||||
}
|
||||
@@ -149,7 +155,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildFua(
|
||||
payload_size / MAX_NALU_LEN + (last_packet_size ? 1 : 0);
|
||||
|
||||
// TODO: use frame timestamp
|
||||
uint64_t timestamp = std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
uint32_t timestamp = std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch())
|
||||
.count();
|
||||
|
||||
@@ -228,6 +234,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildFua(
|
||||
std::unique_ptr<webrtc::RtpPacketToSend> rtp_packet =
|
||||
std::make_unique<webrtc::RtpPacketToSend>();
|
||||
rtp_packet->Build(rtp_packet_frame_.data(), rtp_packet_frame_.size());
|
||||
rtp_packet->Build(rtp_packet_frame_.data(), rtp_packet_frame_.size());
|
||||
rtp_packets.emplace_back(std::move(rtp_packet));
|
||||
} else {
|
||||
std::unique_ptr<RtpPacket> rtp_packet = std::make_unique<RtpPacket>();
|
||||
|
||||
@@ -45,7 +45,7 @@ class RtpPacketizerH264 : public RtpPacketizer {
|
||||
bool marker_;
|
||||
uint32_t payload_type_;
|
||||
uint16_t sequence_number_;
|
||||
uint64_t timestamp_;
|
||||
uint32_t timestamp_;
|
||||
uint32_t ssrc_;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
uint16_t profile_;
|
||||
|
||||
Reference in New Issue
Block a user