我正在使用来自中国视频压缩板的 API,它有点“不友好”。在从驱动程序返回的每个视频帧缓冲区中,都有一个视频时间戳。但是,时间戳分为两个独立的自由运行组件:
1) DateTime 结构定义为
struct DateTime
{
unsigned long second :6; // 0-59
unsigned long minute :6; // 0-59
unsigned long hour :5; // 0-23
unsigned long day :5; // 1-31
unsigned long month :4; // 1-12
unsigned long year :6; // 2000-2063
};
2) 一个自由运行的 16 位(2 字节)无符号毫秒计数器,它会翻转。
这两个时间戳之间没有任何同步。毫秒翻转不对应于 DateTime.second 增量。对毫秒计时器执行简单的模 1000 除法也不对应于 DateTime.second 增量。
我需要想出一种方法将这两者组合成一个统一的视频帧时间戳,该时间戳总是单调递增的。我想保留驱动程序提供的原始时间戳,但覆盖他们的时间戳并附加我自己的时间戳也是一种选择。任何建议都非常感谢!