mediabunny
Version:
Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.
106 lines • 3.79 kB
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/.
*/
import { Demuxer } from '../demuxer.js';
import { Input } from '../input.js';
import { InputAudioTrackBacking } from '../input-track.js';
import { PacketRetrievalOptions } from '../media-sink.js';
import { AsyncMutex } from '../misc.js';
import { EncodedPacket } from '../packet.js';
import { FileSlice, Reader } from '../reader.js';
import { MetadataTags } from '../metadata.js';
type FlacAudioInfo = {
numberOfChannels: number;
sampleRate: number;
totalSamples: number;
minimumBlockSize: number;
maximumBlockSize: number;
minimumFrameSize: number;
maximumFrameSize: number;
description: Uint8Array;
};
type Sample = {
blockOffset: number;
blockSize: number;
byteOffset: number;
byteSize: number;
};
type NextFlacFrameResult = {
num: number;
blockSize: number;
sampleRate: number;
size: number;
isLastFrame: boolean;
};
export declare class FlacDemuxer extends Demuxer {
reader: Reader;
loadedSamples: Sample[];
metadataPromise: Promise<void> | null;
trackBacking: FlacAudioTrackBacking | null;
metadataTags: MetadataTags;
audioInfo: FlacAudioInfo | null;
lastLoadedPos: number | null;
blockingBit: number | null;
readingMutex: AsyncMutex;
lastSampleLoaded: boolean;
constructor(input: Input);
getMetadataTags(): Promise<MetadataTags>;
getTrackBackings(): Promise<FlacAudioTrackBacking[]>;
getMimeType(): Promise<string>;
readMetadata(): Promise<void>;
readNextFlacFrame({ startPos, isFirstPacket, }: {
startPos: number;
isFirstPacket: boolean;
}): Promise<NextFlacFrameResult | null>;
readFlacFrameHeader({ slice, isFirstPacket, }: {
slice: FileSlice;
isFirstPacket: boolean;
}): {
num: number;
blockSize: number;
sampleRate: number;
} | null;
advanceReader(): Promise<void>;
}
declare class FlacAudioTrackBacking implements InputAudioTrackBacking {
demuxer: FlacDemuxer;
constructor(demuxer: FlacDemuxer);
getType(): "audio";
getId(): number;
getNumber(): number;
getCodec(): "flac";
getInternalCodecId(): string | number | Uint8Array | null;
getNumberOfChannels(): number;
getSampleRate(): number;
getName(): string | null;
getLanguageCode(): string;
getTimeResolution(): number;
isRelativeToUnixEpoch(): boolean;
getPairingMask(): bigint;
getBitrate(): null;
getAverageBitrate(): null;
getDurationFromMetadata(): Promise<number | null>;
getLiveRefreshInterval(): Promise<null>;
getDisposition(): {
default: boolean;
primary: boolean;
forced: boolean;
original: boolean;
commentary: boolean;
hearingImpaired: boolean;
visuallyImpaired: boolean;
};
getDecoderConfig(): Promise<AudioDecoderConfig | null>;
getPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getNextPacket(packet: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getKeyPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getNextKeyPacket(packet: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getPacketAtIndex(sampleIndex: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getFirstPacket(options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
}
export {};
//# sourceMappingURL=flac-demuxer.d.ts.map