import type { AVOFormatContext } from "../AVFormatContext.ts"; import OFormat from "./OFormat.ts"; import type { Mp3FormatOptions } from "./mp3/type.ts"; import { FrameHeader } from "./mp3/frameHeader.ts"; import { AVFormat, AVCodecID, type AVPacket } from "@libmedia/avutil"; export interface Mp3Context { size: uint32; frames: uint32; seen: uint32; want: uint32; bag: uint32[]; pos: uint32; initialBitrate: int32; hasVariableBitrate: boolean; padding: int32; delay: int32; frameHeader: FrameHeader; xingOffset: int32; xingFrameSize: int32; xingFrameOffset: int64; xingFramePos: int64; audioSize: int32; id3SizePos: int64; } export type { Mp3FormatOptions as OMp3FormatOptions } from './mp3/type.ts'; export default class OMp3Format extends OFormat { type: AVFormat; private options; private context; private xingWriter; constructor(options?: Mp3FormatOptions); init(formatContext: AVOFormatContext): number; private writeXingTag; private xingAddFrame; private updateXing; writeHeader(formatContext: AVOFormatContext): number; writeAVPacket(formatContext: AVOFormatContext, avpacket: pointer): number; writeTrailer(formatContext: AVOFormatContext): number; flush(formatContext: AVOFormatContext): number; getCapabilities(): AVCodecID[]; static Capabilities: AVCodecID[]; }