21 lines
772 B
C++
21 lines
772 B
C++
#include "screencast/utils/clock.h"
|
|
|
|
#include <cassert>
|
|
#include <cstdint>
|
|
|
|
int main() {
|
|
assert(sc::rtp_timestamp_from_ns(0) == 0u);
|
|
assert(sc::rtp_timestamp_from_ns(1'000'000'000ULL) == 90'000u);
|
|
assert(sc::rtp_timestamp_from_ns(500'000'000ULL) == 45'000u);
|
|
assert(sc::rtp_timestamp_from_ns(16'666'667ULL) == 1'500u);
|
|
|
|
// A multiple of the wrap period should wrap back to zero.
|
|
// Period in ns = ceil(2^32 * 100_000 / 9) because the helper uses
|
|
// integer floor division (ns * 9 / 100_000).
|
|
constexpr uint64_t period_ns = ((1ULL << 32) * 100'000ULL + 9ULL - 1ULL) / 9ULL;
|
|
static_assert(sc::rtp_timestamp_from_ns(period_ns) == 0u);
|
|
static_assert(sc::rtp_timestamp_from_ns(period_ns + 1'000'000'000ULL) == 90'000u);
|
|
|
|
return 0;
|
|
}
|