diff --git a/libobs/media-io/audio-io.h b/libobs/media-io/audio-io.h index d140ef418..a495cb339 100644 --- a/libobs/media-io/audio-io.h +++ b/libobs/media-io/audio-io.h @@ -19,6 +19,7 @@ #include "media-io-defs.h" #include "../util/c99defs.h" +#include "../util/util_uint128.h" #ifdef __cplusplus extern "C" { @@ -167,6 +168,24 @@ static inline size_t get_audio_size(enum audio_format format, frames; } +static inline uint64_t audio_frames_to_ns(size_t sample_rate, + uint64_t frames) +{ + util_uint128_t val; + val = util_mul64_64(frames, 1000000000ULL); + val = util_div128_32(val, (uint32_t)sample_rate); + return val.low; +} + +static inline uint64_t ns_to_audio_frames(size_t sample_rate, + uint64_t frames) +{ + util_uint128_t val; + val = util_mul64_64(frames, sample_rate); + val = util_div128_32(val, 1000000000ULL); + return val.low; +} + #define AUDIO_OUTPUT_SUCCESS 0 #define AUDIO_OUTPUT_INVALIDPARAM -1 #define AUDIO_OUTPUT_FAIL -2