mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 12:45:35 +08:00
[fix] fix video frame capture timestamp
This commit is contained in:
@@ -22,11 +22,11 @@ class RtpPacketizer {
|
||||
virtual ~RtpPacketizer() = default;
|
||||
|
||||
virtual std::vector<std::unique_ptr<RtpPacket>> Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) = 0;
|
||||
|
||||
virtual std::vector<std::unique_ptr<RtpPacket>> BuildPadding(
|
||||
uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ RtpPacketizerAv1::RtpPacketizerAv1(uint32_t ssrc) {}
|
||||
RtpPacketizerAv1::~RtpPacketizerAv1() {}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerAv1::Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
std::vector<std::unique_ptr<RtpPacket>> rtp_packets;
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@ class RtpPacketizerAv1 : public RtpPacketizer {
|
||||
virtual ~RtpPacketizerAv1();
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override;
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> BuildPadding(
|
||||
uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override {
|
||||
return std::vector<std::unique_ptr<RtpPacket>>{};
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ void RtpPacketizerGeneric::AddAbsSendTimeExtension(
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerGeneric::Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
uint32_t last_packet_size = payload_size % MAX_NALU_LEN;
|
||||
uint32_t packet_num =
|
||||
|
||||
@@ -16,11 +16,11 @@ class RtpPacketizerGeneric : public RtpPacketizer {
|
||||
virtual ~RtpPacketizerGeneric();
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override;
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> BuildPadding(
|
||||
uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override {
|
||||
return std::vector<std::unique_ptr<RtpPacket>>{};
|
||||
};
|
||||
|
||||
@@ -61,19 +61,19 @@ void RtpPacketizerH264::AddAbsSendTimeExtension(
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
if (payload_size <= MAX_NALU_LEN) {
|
||||
return BuildNalu(payload, payload_size, capture_timestamp_ms,
|
||||
return BuildNalu(payload, payload_size, capture_timestamp_us,
|
||||
use_rtp_packet_to_send);
|
||||
} else {
|
||||
return BuildFua(payload, payload_size, capture_timestamp_ms,
|
||||
return BuildFua(payload, payload_size, capture_timestamp_us,
|
||||
use_rtp_packet_to_send);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildNalu(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
std::vector<std::unique_ptr<RtpPacket>> rtp_packets;
|
||||
|
||||
@@ -84,7 +84,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildNalu(
|
||||
marker_ = 1;
|
||||
payload_type_ = rtp::PAYLOAD_TYPE(payload_type_);
|
||||
sequence_number_++;
|
||||
timestamp_ = kMsToRtpTimestamp * static_cast<uint32_t>(capture_timestamp_ms);
|
||||
timestamp_ = kMsToRtpTimestamp * static_cast<uint32_t>(capture_timestamp_us);
|
||||
|
||||
if (!csrc_count_) {
|
||||
}
|
||||
@@ -142,7 +142,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildNalu(
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildFua(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
std::vector<std::unique_ptr<RtpPacket>> rtp_packets;
|
||||
|
||||
@@ -242,7 +242,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildFua(
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildPadding(
|
||||
uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) {
|
||||
std::vector<std::unique_ptr<RtpPacket>> rtp_packets;
|
||||
|
||||
@@ -259,7 +259,7 @@ std::vector<std::unique_ptr<RtpPacket>> RtpPacketizerH264::BuildPadding(
|
||||
uint8_t payload_type = rtp::PAYLOAD_TYPE(payload_type_ - 1);
|
||||
sequence_number_++;
|
||||
timestamp_ =
|
||||
kMsToRtpTimestamp * static_cast<uint32_t>(capture_timestamp_ms);
|
||||
kMsToRtpTimestamp * static_cast<uint32_t>(capture_timestamp_us);
|
||||
|
||||
rtp_packet_frame_.clear();
|
||||
rtp_packet_frame_.push_back((version_ << 6) | (has_padding_ << 5) |
|
||||
|
||||
@@ -16,20 +16,20 @@ class RtpPacketizerH264 : public RtpPacketizer {
|
||||
virtual ~RtpPacketizerH264();
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> Build(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override;
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> BuildNalu(
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint8_t* payload, uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send);
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> BuildFua(uint8_t* payload,
|
||||
uint32_t payload_size,
|
||||
int64_t capture_timestamp_ms,
|
||||
int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send);
|
||||
|
||||
std::vector<std::unique_ptr<RtpPacket>> BuildPadding(
|
||||
uint32_t payload_size, int64_t capture_timestamp_ms,
|
||||
uint32_t payload_size, int64_t capture_timestamp_us,
|
||||
bool use_rtp_packet_to_send) override;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user