Add framesToDuration helper
This commit is contained in:
parent
ed964cb58f
commit
d8173cdace
|
@ -0,0 +1,29 @@
|
|||
import framesToDuration from './framesToDuration';
|
||||
|
||||
describe('framesToDuration', () => {
|
||||
it('returns the expected result for 0 frames at 44100hz', () => {
|
||||
expect(framesToDuration(0, 44100)).toEqual({ seconds: 0, nanos: 0 });
|
||||
});
|
||||
|
||||
it('returns the expected result for 44100 frames at 44100hz', () => {
|
||||
expect(framesToDuration(44100, 44100)).toEqual({ seconds: 1, nanos: 0 });
|
||||
});
|
||||
|
||||
it('returns the expected result for 88200 frames at 44100hz', () => {
|
||||
expect(framesToDuration(88200, 44100)).toEqual({ seconds: 2, nanos: 0 });
|
||||
});
|
||||
|
||||
it('returns the expected result for 88201 frames at 44100hz', () => {
|
||||
expect(framesToDuration(88201, 44100)).toEqual({
|
||||
seconds: 2,
|
||||
nanos: 22675,
|
||||
});
|
||||
});
|
||||
|
||||
it('returns the expected result for 110250 frames at 44100hz', () => {
|
||||
expect(framesToDuration(110250, 44100)).toEqual({
|
||||
seconds: 2,
|
||||
nanos: 500_000_000,
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,11 @@
|
|||
import { Duration } from '../generated/google/protobuf/duration';
|
||||
|
||||
function framesToDuration(frames: number, sampleRate: number): Duration {
|
||||
const secs = Math.floor(frames / sampleRate);
|
||||
const nanos = Math.floor(
|
||||
((frames % sampleRate) / sampleRate) * 1_000_000_000
|
||||
);
|
||||
return { seconds: secs, nanos: nanos };
|
||||
}
|
||||
|
||||
export default framesToDuration;
|
Loading…
Reference in New Issue