mediabunny
Version:
Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.
97 lines • 4.03 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 { MetadataTags, TrackDisposition } from '../metadata.js';
import { AsyncMutex } from '../misc.js';
import { EncodedPacket } from '../packet.js';
import { Reader } from '../reader.js';
import { OggCodecInfo } from './ogg-misc.js';
import { Page } from './ogg-reader.js';
type LogicalBitstream = {
serialNumber: number;
bosPage: Page;
description: Uint8Array | null;
numberOfChannels: number;
sampleRate: number;
codecInfo: OggCodecInfo;
lastMetadataPacket: Packet | null;
};
type Packet = {
data: Uint8Array;
endPage: Page;
endSegmentIndex: number;
};
export declare class OggDemuxer extends Demuxer {
reader: Reader;
metadataPromise: Promise<void> | null;
bitstreams: LogicalBitstream[];
trackBackings: OggAudioTrackBacking[];
metadataTags: MetadataTags;
constructor(input: Input);
readMetadata(): Promise<void>;
readVorbisMetadata(firstPacket: Packet, bitstream: LogicalBitstream): Promise<void>;
readOpusMetadata(firstPacket: Packet, bitstream: LogicalBitstream): Promise<void>;
readPacket(startPage: Page, startSegmentIndex: number): Promise<Packet | null>;
findNextPacketStart(lastPacket: Packet): Promise<{
startPage: Page;
startSegmentIndex: number;
} | null>;
getMimeType(): Promise<string>;
getTrackBackings(): Promise<OggAudioTrackBacking[]>;
getMetadataTags(): Promise<MetadataTags>;
}
type EncodedPacketMetadata = {
packet: Packet;
timestampInSamples: number;
durationInSamples: number;
vorbisLastBlockSize: number | null;
vorbisBlockSize: number | null;
};
declare class OggAudioTrackBacking implements InputAudioTrackBacking {
bitstream: LogicalBitstream;
demuxer: OggDemuxer;
internalSampleRate: number;
encodedPacketToMetadata: WeakMap<EncodedPacket, EncodedPacketMetadata>;
sequentialScanCache: EncodedPacketMetadata[];
sequentialScanMutex: AsyncMutex;
constructor(bitstream: LogicalBitstream, demuxer: OggDemuxer);
getType(): "audio";
getId(): number;
getNumber(): number;
getNumberOfChannels(): number;
getSampleRate(): number;
getTimeResolution(): number;
isRelativeToUnixEpoch(): boolean;
getPairingMask(): bigint;
getBitrate(): null;
getAverageBitrate(): null;
getDurationFromMetadata(): Promise<null>;
getLiveRefreshInterval(): Promise<null>;
getCodec(): "vorbis" | "opus" | null;
getInternalCodecId(): null;
getDecoderConfig(): Promise<AudioDecoderConfig | null>;
getName(): null;
getLanguageCode(): string;
getDisposition(): TrackDisposition;
granulePositionToTimestampInSamples(granulePosition: number): number;
createEncodedPacketFromOggPacket(packet: Packet | null, additional: {
timestampInSamples: number;
vorbisLastBlocksize: number | null;
}, options: PacketRetrievalOptions): EncodedPacket | null;
getFirstPacket(options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getNextPacket(prevPacket: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getPacketSequential(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getKeyPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
getNextKeyPacket(packet: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
}
export {};
//# sourceMappingURL=ogg-demuxer.d.ts.map