Files
mediabunny/packages/ac3/src/shared.ts
T

104 lines
1.6 KiB
TypeScript

/*!
* Copyright (c) 2026-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
export type WorkerCommand = {
type: 'init-decoder';
data: {
codec: string;
};
} | {
type: 'decode';
data: {
ctx: number;
encodedData: ArrayBuffer;
timestamp: number;
};
} | {
type: 'flush-decoder';
data: {
ctx: number;
};
} | {
type: 'close-decoder';
data: {
ctx: number;
};
} | {
type: 'init-encoder';
data: {
codec: string;
numberOfChannels: number;
sampleRate: number;
bitrate: number;
};
} | {
type: 'encode';
data: {
ctx: number;
audioData: ArrayBuffer;
timestamp: number;
};
} | {
type: 'flush-encoder';
data: {
ctx: number;
};
} | {
type: 'close-encoder';
data: {
ctx: number;
};
};
export type WorkerResponseData = {
type: 'init-decoder';
ctx: number;
frameSize: number;
} | {
type: 'decode';
pcmData: ArrayBuffer;
format: AudioSampleFormat;
channels: number;
sampleRate: number;
sampleCount: number;
pts: number;
} | {
type: 'flush-decoder';
} | {
type: 'close-decoder';
} | {
type: 'init-encoder';
ctx: number;
frameSize: number;
} | {
type: 'encode';
encodedData: ArrayBuffer;
pts: number;
duration: number;
} | {
type: 'flush-encoder';
} | {
type: 'close-encoder';
};
export type WorkerResponse = {
id: number;
} & ({
success: true;
data: WorkerResponseData;
} | {
success: false;
error: unknown;
});
export function assert(x: unknown): asserts x {
if (!x) {
throw new Error('Assertion failed.');
}
}