in src/cubeb_aaudio.cpp [194:220]
uint64_t elapsed_time_since_callback(uint64_t now,
uint64_t last_callback_timestamp)
{
if (in_state<Play>()) {
if (callback_timestamp != last_callback_timestamp) {
callback_timestamp = last_callback_timestamp;
}
return now - last_callback_timestamp;
} else if (in_state<Resume>()) {
if (callback_timestamp == last_callback_timestamp) {
// Stream was stopped and no callback emited yet: exclude elapsed time
// in Pause state.
return now - last_callback_timestamp - get_pause_time();
}
// Callback emitted: update callback timestamp and change to Play.
callback_timestamp = last_callback_timestamp;
set_state<Play>();
return now - last_callback_timestamp;
} else if (in_state<Pause>()) {
assert(callback_timestamp == last_callback_timestamp);
// Use recorded timestamps when Paused.
return get_pause_timestamp() - callback_timestamp;
} else {
assert(in_state<None>());
return 0;
}
}