Home Reference Source

src/utils/timescale-conversion.ts

  1. const MPEG_TS_CLOCK_FREQ_HZ = 90000;
  2.  
  3. export function toTimescaleFromBase(
  4. value,
  5. destScale: number,
  6. srcBase: number = 1,
  7. round: boolean = false
  8. ): number {
  9. const result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`
  10. return round ? Math.round(result) : result;
  11. }
  12.  
  13. export function toTimescaleFromScale(
  14. value,
  15. destScale: number,
  16. srcScale: number = 1,
  17. round: boolean = false
  18. ): number {
  19. return toTimescaleFromBase(value, destScale, 1 / srcScale, round);
  20. }
  21.  
  22. export function toMsFromMpegTsClock(
  23. value: number,
  24. round: boolean = false
  25. ): number {
  26. return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);
  27. }
  28.  
  29. export function toMpegTsClockFromTimescale(
  30. value: number,
  31. srcScale: number = 1
  32. ): number {
  33. return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);
  34. }