Home Reference Source

src/utils/timescale-conversion.ts

const MPEG_TS_CLOCK_FREQ_HZ = 90000;

export function toTimescaleFromBase (value, destScale: number, srcBase: number = 1, round: boolean = false): number {
  const result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`
  return round ? Math.round(result) : result;
}

export function toTimescaleFromScale (value, destScale: number, srcScale: number = 1, round: boolean = false): number {
  return toTimescaleFromBase(value, destScale, 1 / srcScale, round);
}

export function toMsFromMpegTsClock (value: number, round: boolean = false): number {
  return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);
}

export function toMpegTsClockFromTimescale (value: number, srcScale: number = 1): number {
  return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);
}