blob: 5296458faded25b48cd58abbf35ae8d493a02093 [file] [log] [blame]
/*
* Copyright (c) 2019 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VPX_VPX_UTIL_VPX_TIMESTAMP_H_
#define VPX_VPX_UTIL_VPX_TIMESTAMP_H_
#include <assert.h>
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// Rational Number with an int64 numerator
typedef struct vpx_rational64 {
int64_t num; // fraction numerator
int den; // fraction denominator
} vpx_rational64_t; // alias for struct vpx_rational64_t
static INLINE int gcd(int64_t a, int b) {
int r; // remainder
assert(a >= 0);
assert(b > 0);
while (b != 0) {
r = (int)(a % b);
a = b;
b = r;
}
return (int)a;
}
static INLINE void reduce_ratio(vpx_rational64_t *ratio) {
const int denom = gcd(ratio->num, ratio->den);
ratio->num /= denom;
ratio->den /= denom;
}
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif // VPX_VPX_UTIL_VPX_TIMESTAMP_H_