jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.3KB

  1. // ----------------------------------------------------------------------------
  2. //
  3. // Copyright (C) 2012-2018 Fons Adriaensen <fons@linuxaudio.org>
  4. //
  5. // This program is free software; you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation; either version 3 of the License, or
  8. // (at your option) any later version.
  9. //
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. // GNU General Public License for more details.
  14. //
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. //
  18. // ----------------------------------------------------------------------------
  19. #ifndef __TIMERS_H
  20. #define __TIMERS_H
  21. #include <math.h>
  22. #include <sys/time.h>
  23. #include <jack/jack.h>
  24. #define tjack_mod ldexp (1e-6f, 32)
  25. inline double tjack_diff (double a, double b)
  26. {
  27. double d, m;
  28. d = a - b;
  29. m = tjack_mod;
  30. while (d < -m / 2) d += m;
  31. while (d >= m / 2) d -= m;
  32. return d;
  33. }
  34. inline double tjack (jack_time_t t, double dt = 0)
  35. {
  36. int32_t u = (int32_t)(t & 0xFFFFFFFFLL);
  37. return 1e-6 * u;
  38. }
  39. #endif