download
raw
1.29 kB
const MPEG_TS_CLOCK_FREQ_HZ = 90000;
export type RationalTimestamp = {
baseTime: number; // ticks
timescale: number; // ticks per second
};
export type TimestampOffset = RationalTimestamp & { trackId: number };
export function toTimescaleFromBase(
baseTime: number,
destScale: number,
srcBase: number = 1,
round: boolean = false,
): number {
const result = baseTime * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`
return round ? Math.round(result) : result;
}
export function toTimescaleFromScale(
baseTime: number,
destScale: number,
srcScale: number = 1,
round: boolean = false,
): number {
return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);
}
export function toMsFromMpegTsClock(
baseTime: number,
round: boolean = false,
): number {
return toTimescaleFromBase(baseTime, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);
}
export function toMpegTsClockFromTimescale(
baseTime: number,
srcScale: number = 1,
): number {
return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);
}
export function timestampToString(timestamp: TimestampOffset): string {
const { baseTime, timescale, trackId } = timestamp;
return `${baseTime / timescale} (${baseTime}/${timescale}) trackId: ${trackId}`;
}

Xet Storage Details

Size:
1.29 kB
·
Xet hash:
123e889222f30bd4c59c7e8eca1adb9e92b1e1a931d79c362773b0b4e644a57d

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.