uint64_t elapsed_time_since_callback()

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;
    }
  }