aboutsummaryrefslogtreecommitdiff
path: root/sound/timestamp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/timestamp.cpp')
-rw-r--r--sound/timestamp.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/sound/timestamp.cpp b/sound/timestamp.cpp
index f705ff4521..1eb5483fc2 100644
--- a/sound/timestamp.cpp
+++ b/sound/timestamp.cpp
@@ -24,23 +24,15 @@
*/
#include "sound/timestamp.h"
+#include "common/algorithm.h"
namespace Audio {
-static uint gcd(uint a, uint b) {
- while (a > 0) {
- int tmp = a;
- a = b % a;
- b = tmp;
- }
- return b;
-}
-
Timestamp::Timestamp(uint ms, uint fr) {
assert(fr > 0);
_secs = ms / 1000;
- _framerateFactor = 1000 / gcd(1000, fr);
+ _framerateFactor = 1000 / Common::gcd<uint>(1000, fr);
_framerate = fr * _framerateFactor;
// Note that _framerate is always divisible by 1000.
@@ -51,7 +43,7 @@ Timestamp::Timestamp(uint s, uint frames, uint fr) {
assert(fr > 0);
_secs = s;
- _framerateFactor = 1000 / gcd(1000, fr);
+ _framerateFactor = 1000 / Common::gcd<uint>(1000, fr);
_framerate = fr * _framerateFactor;
_numFrames = frames * _framerateFactor;
@@ -62,10 +54,10 @@ Timestamp Timestamp::convertToFramerate(uint newFramerate) const {
Timestamp ts(*this);
if (ts.framerate() != newFramerate) {
- ts._framerateFactor = 1000 / gcd(1000, newFramerate);
+ ts._framerateFactor = 1000 / Common::gcd<uint>(1000, newFramerate);
ts._framerate = newFramerate * ts._framerateFactor;
- const uint g = gcd(_framerate, ts._framerate);
+ const uint g = Common::gcd(_framerate, ts._framerate);
const uint p = _framerate / g;
const uint q = ts._framerate / g;
@@ -122,7 +114,7 @@ bool Timestamp::operator>=(const Timestamp &ts) const {
int Timestamp::cmp(const Timestamp &ts) const {
int delta = _secs - ts._secs;
if (!delta) {
- const uint g = gcd(_framerate, ts._framerate);
+ const uint g = Common::gcd(_framerate, ts._framerate);
const uint p = _framerate / g;
const uint q = ts._framerate / g;
@@ -164,7 +156,7 @@ void Timestamp::addIntern(const Timestamp &ts) {
// We need to multiply by the quotient of the two framerates.
// We cancel the GCD in this fraction to reduce the risk of
// overflows.
- const uint g = gcd(_framerate, ts._framerate);
+ const uint g = Common::gcd(_framerate, ts._framerate);
const uint p = _framerate / g;
const uint q = ts._framerate / g;
@@ -227,7 +219,7 @@ int Timestamp::frameDiff(const Timestamp &ts) const {
// We need to multiply by the quotient of the two framerates.
// We cancel the GCD in this fraction to reduce the risk of
// overflows.
- const uint g = gcd(_framerate, ts._framerate);
+ const uint g = Common::gcd(_framerate, ts._framerate);
const uint p = _framerate / g;
const uint q = ts._framerate / g;