时间戳改为64位

This commit is contained in:
ziyue
2022-08-08 17:13:39 +08:00
parent 143580d780
commit 9c3b8a6a95
44 changed files with 143 additions and 143 deletions

View File

@@ -28,7 +28,7 @@ using namespace std;
namespace mediakit {
bool DevChannel::inputYUV(char *yuv[3], int linesize[3], uint32_t cts) {
bool DevChannel::inputYUV(char *yuv[3], int linesize[3], uint64_t cts) {
#ifdef ENABLE_X264
//TimeTicker1(50);
if (!_pH264Enc) {
@@ -54,7 +54,7 @@ bool DevChannel::inputYUV(char *yuv[3], int linesize[3], uint32_t cts) {
#endif //ENABLE_X264
}
bool DevChannel::inputPCM(char* pcData, int iDataLen, uint32_t uiStamp) {
bool DevChannel::inputPCM(char* pcData, int iDataLen, uint64_t uiStamp) {
#ifdef ENABLE_FAAC
if (!_pAacEnc) {
_pAacEnc.reset(new AACEncoder());
@@ -77,11 +77,11 @@ bool DevChannel::inputPCM(char* pcData, int iDataLen, uint32_t uiStamp) {
#endif //ENABLE_FAAC
}
bool DevChannel::inputH264(const char *data, int len, uint32_t dts, uint32_t pts) {
if(dts == 0){
dts = (uint32_t)_aTicker[0].elapsedTime();
bool DevChannel::inputH264(const char *data, int len, uint64_t dts, uint64_t pts) {
if (dts == 0) {
dts = _aTicker[0].elapsedTime();
}
if(pts == 0){
if (pts == 0) {
pts = dts;
}
@@ -96,11 +96,11 @@ bool DevChannel::inputH264(const char *data, int len, uint32_t dts, uint32_t pts
return inputFrame(frame);
}
bool DevChannel::inputH265(const char *data, int len, uint32_t dts, uint32_t pts) {
if(dts == 0){
dts = (uint32_t)_aTicker[0].elapsedTime();
bool DevChannel::inputH265(const char *data, int len, uint64_t dts, uint64_t pts) {
if (dts == 0) {
dts = _aTicker[0].elapsedTime();
}
if(pts == 0){
if (pts == 0) {
pts = dts;
}
@@ -129,9 +129,9 @@ public:
}
};
bool DevChannel::inputAAC(const char *data_without_adts, int len, uint32_t dts, const char *adts_header){
bool DevChannel::inputAAC(const char *data_without_adts, int len, uint64_t dts, const char *adts_header){
if (dts == 0) {
dts = (uint32_t) _aTicker[1].elapsedTime();
dts = _aTicker[1].elapsedTime();
}
if (!adts_header) {
@@ -152,9 +152,9 @@ bool DevChannel::inputAAC(const char *data_without_adts, int len, uint32_t dts,
}
bool DevChannel::inputAudio(const char *data, int len, uint32_t dts){
bool DevChannel::inputAudio(const char *data, int len, uint64_t dts){
if (dts == 0) {
dts = (uint32_t) _aTicker[1].elapsedTime();
dts = _aTicker[1].elapsedTime();
}
return inputFrame(std::make_shared<FrameFromPtr>(_audio->codecId, (char *) data, len, dts, 0));
}

View File

@@ -75,7 +75,7 @@ public:
* @param dts 解码时间戳单位毫秒等于0时内部会自动生成时间戳
* @param pts 播放时间戳单位毫秒等于0时内部会赋值为dts
*/
bool inputH264(const char *data, int len, uint32_t dts, uint32_t pts = 0);
bool inputH264(const char *data, int len, uint64_t dts, uint64_t pts = 0);
/**
* 输入265帧
@@ -84,7 +84,7 @@ public:
* @param dts 解码时间戳单位毫秒等于0时内部会自动生成时间戳
* @param pts 播放时间戳单位毫秒等于0时内部会赋值为dts
*/
bool inputH265(const char *data, int len, uint32_t dts, uint32_t pts = 0);
bool inputH265(const char *data, int len, uint64_t dts, uint64_t pts = 0);
/**
* 输入aac帧
@@ -93,7 +93,7 @@ public:
* @param dts 时间戳,单位毫秒
* @param adts_header adts头
*/
bool inputAAC(const char *data_without_adts, int len, uint32_t dts, const char *adts_header);
bool inputAAC(const char *data_without_adts, int len, uint64_t dts, const char *adts_header);
/**
* 输入OPUS/G711音频帧
@@ -101,7 +101,7 @@ public:
* @param len 帧数据长度
* @param dts 时间戳,单位毫秒
*/
bool inputAudio(const char *data, int len, uint32_t dts);
bool inputAudio(const char *data, int len, uint64_t dts);
/**
* 输入yuv420p视频帧内部会完成编码并调用inputH264方法
@@ -109,7 +109,7 @@ public:
* @param linesize yuv420p数据linesize
* @param cts 采集时间戳,单位毫秒
*/
bool inputYUV(char *yuv[3], int linesize[3], uint32_t cts);
bool inputYUV(char *yuv[3], int linesize[3], uint64_t cts);
/**
* 输入pcm数据内部会完成编码并调用inputAAC方法
@@ -117,7 +117,7 @@ public:
* @param len pcm数据长度
* @param cts 采集时间戳,单位毫秒
*/
bool inputPCM(char *data, int len, uint32_t cts);
bool inputPCM(char *data, int len, uint64_t cts);
private:
MediaOriginType getOriginType(MediaSource &sender) const override;

View File

@@ -137,7 +137,7 @@ int64_t Stamp::getRelativeStamp() const {
return _relative_stamp;
}
bool DtsGenerator::getDts(uint32_t pts, uint32_t &dts){
bool DtsGenerator::getDts(uint64_t pts, uint64_t &dts){
bool ret = false;
if (pts == _last_pts) {
//pts未变说明dts也不会变返回上次dts
@@ -167,7 +167,7 @@ bool DtsGenerator::getDts(uint32_t pts, uint32_t &dts){
//该算法核心思想是对pts进行排序排序好的pts就是dts。
//排序有一定的滞后性,那么需要加上排序导致的时间戳偏移量
bool DtsGenerator::getDts_l(uint32_t pts, uint32_t &dts){
bool DtsGenerator::getDts_l(uint64_t pts, uint64_t &dts){
if(_sorter_max_size == 1){
//没有B帧dts就等于pts
dts = pts;

View File

@@ -97,20 +97,20 @@ class DtsGenerator{
public:
DtsGenerator() = default;
~DtsGenerator() = default;
bool getDts(uint32_t pts, uint32_t &dts);
bool getDts(uint64_t pts, uint64_t &dts);
private:
bool getDts_l(uint32_t pts, uint32_t &dts);
bool getDts_l(uint64_t pts, uint64_t &dts);
private:
uint32_t _dts_pts_offset = 0;
uint32_t _last_dts = 0;
uint32_t _last_pts = 0;
uint32_t _last_max_pts = 0;
uint64_t _dts_pts_offset = 0;
uint64_t _last_dts = 0;
uint64_t _last_pts = 0;
uint64_t _last_max_pts = 0;
size_t _frames_since_last_max_pts = 0;
size_t _sorter_max_size = 0;
size_t _count_sorter_max_size = 0;
std::set<uint32_t> _pts_sorter;
std::set<uint64_t> _pts_sorter;
};
class NtpStamp {