[fix] use proper std::chrono clock

This commit is contained in:
dijunkun
2024-08-09 10:23:21 +08:00
parent a308094fbd
commit 911f209fda
10 changed files with 47 additions and 39 deletions

View File

@@ -25,7 +25,7 @@ AudioEncoder::~AudioEncoder() {
int AudioEncoder::Init() { int AudioEncoder::Init() {
last_ts = static_cast<uint32_t>( last_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::steady_clock::now().time_since_epoch())
.count()); .count());
int err; int err;
@@ -61,7 +61,7 @@ int AudioEncoder::Encode(
// uint32_t now_ts = static_cast<uint32_t>( // uint32_t now_ts = static_cast<uint32_t>(
// std::chrono::duration_cast<std::chrono::milliseconds>( // std::chrono::duration_cast<std::chrono::milliseconds>(
// std::chrono::high_resolution_clock::now().time_since_epoch()) // std::chrono::steady_clock::now().time_since_epoch())
// .count()); // .count());
// printf("1 Time cost: %d size: %d\n", now_ts - last_ts, size); // printf("1 Time cost: %d size: %d\n", now_ts - last_ts, size);

View File

@@ -18,11 +18,11 @@
#include "nvcuvid.h" #include "nvcuvid.h"
#define START_TIMER auto start = std::chrono::high_resolution_clock::now(); #define START_TIMER auto start = std::chrono::steady_clock::now();
#define STOP_TIMER(print_message) \ #define STOP_TIMER(print_message) \
std::cout << print_message \ std::cout << print_message \
<< std::chrono::duration_cast<std::chrono::milliseconds>( \ << std::chrono::duration_cast<std::chrono::milliseconds>( \
std::chrono::high_resolution_clock::now() - start) \ std::chrono::steady_clock::now() - start) \
.count() \ .count() \
<< " ms " << std::endl; << " ms " << std::endl;

View File

@@ -177,7 +177,7 @@ int OpenH264Encoder::Encode(
raw_frame_.iPicHeight = frame_height_; raw_frame_.iPicHeight = frame_height_;
raw_frame_.iColorFormat = EVideoFormatType::videoFormatI420; raw_frame_.iColorFormat = EVideoFormatType::videoFormatI420;
raw_frame_.uiTimeStamp = raw_frame_.uiTimeStamp =
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch().count();
raw_frame_.iStride[0] = frame_width_; raw_frame_.iStride[0] = frame_width_;
raw_frame_.iStride[1] = frame_width_ >> 1; raw_frame_.iStride[1] = frame_width_ >> 1;

View File

@@ -80,7 +80,7 @@ int RtpAudioReceiver::SendRtcpRR(RtcpReceiverReport& rtcp_rr) {
bool RtpAudioReceiver::CheckIsTimeSendRR() { bool RtpAudioReceiver::CheckIsTimeSendRR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) { if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) {

View File

@@ -64,8 +64,7 @@ int RtpAudioSender::SendRtpPacket(RtpPacket& rtp_packet) {
sender_info.ntp_ts_msw = (uint32_t)seconds_u32; sender_info.ntp_ts_msw = (uint32_t)seconds_u32;
sender_info.ntp_ts_lsw = (uint32_t)fraction_u32; sender_info.ntp_ts_lsw = (uint32_t)fraction_u32;
sender_info.rtp_ts = sender_info.rtp_ts =
std::chrono::high_resolution_clock::now().time_since_epoch().count() * std::chrono::system_clock::now().time_since_epoch().count() * 1000000;
1000000;
sender_info.sender_packet_count = total_rtp_packets_sent_; sender_info.sender_packet_count = total_rtp_packets_sent_;
sender_info.sender_octet_count = total_rtp_payload_sent_; sender_info.sender_octet_count = total_rtp_payload_sent_;
@@ -108,7 +107,7 @@ int RtpAudioSender::SendRtcpSR(RtcpSenderReport& rtcp_sr) {
bool RtpAudioSender::CheckIsTimeSendSR() { bool RtpAudioSender::CheckIsTimeSendSR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) { if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) {

View File

@@ -48,8 +48,9 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
fec_encoder_.GetFecPacketsParams(size, num_of_total_packets, fec_encoder_.GetFecPacketsParams(size, num_of_total_packets,
num_of_source_packets, last_packet_size); num_of_source_packets, last_packet_size);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
for (unsigned int index = 0; index < num_of_total_packets; index++) { for (unsigned int index = 0; index < num_of_total_packets; index++) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
@@ -143,8 +144,9 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
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_++);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
rtp_packet.SetSsrc(ssrc_); rtp_packet.SetSsrc(ssrc_);
@@ -169,8 +171,9 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
} else { } else {
size_t last_packet_size = size % MAX_NALU_LEN; size_t last_packet_size = size % MAX_NALU_LEN;
size_t packet_num = size / MAX_NALU_LEN + (last_packet_size ? 1 : 0); size_t packet_num = size / MAX_NALU_LEN + (last_packet_size ? 1 : 0);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
for (size_t index = 0; index < packet_num; index++) { for (size_t index = 0; index < packet_num; index++) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
@@ -230,8 +233,8 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
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_++);
timestamp_ = std::chrono::high_resolution_clock::now() timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
.time_since_epoch() std::chrono::system_clock::now().time_since_epoch())
.count(); .count();
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
rtp_packet.SetSsrc(ssrc_); rtp_packet.SetSsrc(ssrc_);
@@ -253,8 +256,8 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
size_t last_packet_size = obus[i].payload_size_ % MAX_NALU_LEN; size_t last_packet_size = obus[i].payload_size_ % MAX_NALU_LEN;
size_t packet_num = size_t packet_num =
obus[i].payload_size_ / MAX_NALU_LEN + (last_packet_size ? 1 : 0); obus[i].payload_size_ / MAX_NALU_LEN + (last_packet_size ? 1 : 0);
timestamp_ = std::chrono::high_resolution_clock::now() timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
.time_since_epoch() std::chrono::system_clock::now().time_since_epoch())
.count(); .count();
for (size_t index = 0; index < packet_num; index++) { for (size_t index = 0; index < packet_num; index++) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
@@ -300,8 +303,9 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
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_++);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
rtp_packet.SetSsrc(ssrc_); rtp_packet.SetSsrc(ssrc_);
@@ -316,8 +320,9 @@ void RtpCodec::Encode(uint8_t* buffer, size_t size,
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_++);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
rtp_packet.SetSsrc(ssrc_); rtp_packet.SetSsrc(ssrc_);
@@ -341,8 +346,9 @@ void RtpCodec::Encode(VideoFrameType frame_type, uint8_t* buffer, size_t size,
fec_encoder_.GetFecPacketsParams(size, num_of_total_packets, fec_encoder_.GetFecPacketsParams(size, num_of_total_packets,
num_of_source_packets, last_packet_size); num_of_source_packets, last_packet_size);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
for (unsigned int index = 0; index < num_of_total_packets; index++) { for (unsigned int index = 0; index < num_of_total_packets; index++) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
@@ -436,8 +442,10 @@ void RtpCodec::Encode(VideoFrameType frame_type, uint8_t* buffer, size_t size,
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_++);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
rtp_packet.SetTimestamp(timestamp_); rtp_packet.SetTimestamp(timestamp_);
rtp_packet.SetSsrc(ssrc_); rtp_packet.SetSsrc(ssrc_);
@@ -462,8 +470,9 @@ void RtpCodec::Encode(VideoFrameType frame_type, uint8_t* buffer, size_t size,
} else { } else {
size_t last_packet_size = size % MAX_NALU_LEN; size_t last_packet_size = size % MAX_NALU_LEN;
size_t packet_num = size / MAX_NALU_LEN + (last_packet_size ? 1 : 0); size_t packet_num = size / MAX_NALU_LEN + (last_packet_size ? 1 : 0);
timestamp_ = timestamp_ = std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::system_clock::now().time_since_epoch())
.count();
for (size_t index = 0; index < packet_num; index++) { for (size_t index = 0; index < packet_num; index++) {
RtpPacket rtp_packet; RtpPacket rtp_packet;
@@ -513,7 +522,9 @@ void RtpCodec::Encode(VideoFrameType frame_type, uint8_t* buffer, size_t size,
// LOG_ERROR("Total size = [{}]", size); // LOG_ERROR("Total size = [{}]", size);
uint32_t timestamp = uint32_t timestamp =
std::chrono::high_resolution_clock::now().time_since_epoch().count(); std::chrono::duration_cast<std::chrono::microseconds>(
std::chrono::system_clock::now().time_since_epoch())
.count();
for (int i = 0; i < obus.size(); i++) { for (int i = 0; i < obus.size(); i++) {
// LOG_ERROR("1 [{}] Obu size = [{}], Obu type [{}]", i, obus[i].size_, // LOG_ERROR("1 [{}] Obu size = [{}], Obu type [{}]", i, obus[i].size_,

View File

@@ -80,7 +80,7 @@ int RtpDataReceiver::SendRtcpRR(RtcpReceiverReport& rtcp_rr) {
bool RtpDataReceiver::CheckIsTimeSendRR() { bool RtpDataReceiver::CheckIsTimeSendRR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) { if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) {

View File

@@ -64,8 +64,7 @@ int RtpDataSender::SendRtpPacket(RtpPacket& rtp_packet) {
sender_info.ntp_ts_msw = (uint32_t)seconds_u32; sender_info.ntp_ts_msw = (uint32_t)seconds_u32;
sender_info.ntp_ts_lsw = (uint32_t)fraction_u32; sender_info.ntp_ts_lsw = (uint32_t)fraction_u32;
sender_info.rtp_ts = sender_info.rtp_ts =
std::chrono::high_resolution_clock::now().time_since_epoch().count() * std::chrono::system_clock::now().time_since_epoch().count() * 1000000;
1000000;
sender_info.sender_packet_count = total_rtp_packets_sent_; sender_info.sender_packet_count = total_rtp_packets_sent_;
sender_info.sender_octet_count = total_rtp_payload_sent_; sender_info.sender_octet_count = total_rtp_payload_sent_;
@@ -108,7 +107,7 @@ int RtpDataSender::SendRtcpSR(RtcpSenderReport& rtcp_sr) {
bool RtpDataSender::CheckIsTimeSendSR() { bool RtpDataSender::CheckIsTimeSendSR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) { if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) {

View File

@@ -288,7 +288,7 @@ bool RtpVideoReceiver::Process() {
compelete_video_frame_queue_.pop(video_frame); compelete_video_frame_queue_.pop(video_frame);
if (on_receive_complete_frame_) { if (on_receive_complete_frame_) {
// auto now_complete_frame_ts = // auto now_complete_frame_ts =
// std::chrono::high_resolution_clock::now().time_since_epoch().count() // std::chrono::system_clock::now().time_since_epoch().count()
// / 1000000; // / 1000000;
// uint32_t duration = now_complete_frame_ts - last_complete_frame_ts_; // uint32_t duration = now_complete_frame_ts - last_complete_frame_ts_;
// LOG_ERROR("Duration {}", 1000 / duration); // LOG_ERROR("Duration {}", 1000 / duration);
@@ -324,7 +324,7 @@ int RtpVideoReceiver::SendRtcpRR(RtcpReceiverReport& rtcp_rr) {
bool RtpVideoReceiver::CheckIsTimeSendRR() { bool RtpVideoReceiver::CheckIsTimeSendRR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) { if (now_ts - last_send_rtcp_rr_packet_ts_ >= RTCP_RR_INTERVAL) {

View File

@@ -64,8 +64,7 @@ int RtpVideoSender::SendRtpPacket(RtpPacket& rtp_packet) {
sender_info.ntp_ts_msw = (uint32_t)seconds_u32; sender_info.ntp_ts_msw = (uint32_t)seconds_u32;
sender_info.ntp_ts_lsw = (uint32_t)fraction_u32; sender_info.ntp_ts_lsw = (uint32_t)fraction_u32;
sender_info.rtp_ts = sender_info.rtp_ts =
std::chrono::high_resolution_clock::now().time_since_epoch().count() * std::chrono::system_clock::now().time_since_epoch().count() * 1000000;
1000000;
sender_info.sender_packet_count = total_rtp_packets_sent_; sender_info.sender_packet_count = total_rtp_packets_sent_;
sender_info.sender_octet_count = total_rtp_payload_sent_; sender_info.sender_octet_count = total_rtp_payload_sent_;
@@ -108,7 +107,7 @@ int RtpVideoSender::SendRtcpSR(RtcpSenderReport& rtcp_sr) {
bool RtpVideoSender::CheckIsTimeSendSR() { bool RtpVideoSender::CheckIsTimeSendSR() {
uint32_t now_ts = static_cast<uint32_t>( uint32_t now_ts = static_cast<uint32_t>(
std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()) std::chrono::system_clock::now().time_since_epoch())
.count()); .count());
if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) { if (now_ts - last_send_rtcp_sr_packet_ts_ >= RTCP_SR_INTERVAL) {