/** * fMP4 Demuxer — Wraps mp4box.js for robust fMP4 demuxing. * * Extracts raw NAL units from fragmented MP4 segments (HEVC or H.264). * Uses mp4box.js for ISO BMFF parsing — supports all box types, * extended sizes, multi-track, and proper hvcC/avcC extraction. */ export interface DemuxedSample { trackId: number; /** Raw NAL units (no start code, no length prefix) */ nalUnits: Uint8Array[]; /** Presentation timestamp (in timescale units) */ pts: number; /** Decode timestamp */ dts: number; /** Duration (in timescale units) */ duration: number; /** Whether this is a keyframe (IDR/CRA) */ isKeyframe: boolean; } export interface VideoTrackInfo { trackId: number; codec: string; timescale: number; width: number; height: number; nalLengthSize: number; } /** * fMP4 Demuxer backed by mp4box.js. * * @example * ```ts * const demuxer = new FMP4Demuxer(); * await demuxer.parse(initSegmentBytes); * const samples = await demuxer.extractSamples(mediaSegmentBytes); * ``` */ export declare class FMP4Demuxer { private _mp4box; private _videoTrack; private _pendingSamples; private _offset; private _ready; private _readyPromise; private _readyResolve; constructor(); /** Get the video track info (available after parse) */ get videoTrack(): VideoTrackInfo | null; /** Whether the init segment has been parsed */ get isReady(): boolean; /** * Feed data to the demuxer. Works for both init and media segments. * Call with the init segment first, then media segments. */ feed(data: Uint8Array): void; /** * Wait for the init segment to be parsed (moov box found). */ waitReady(): Promise; /** * Drain all pending samples extracted so far. */ drainSamples(): DemuxedSample[]; /** * Convenience: parse init segment and wait for ready. */ parseInit(data: Uint8Array): Promise; /** * Convenience: feed a media segment and return extracted samples. */ parseSegment(data: Uint8Array): DemuxedSample[]; /** Flush any remaining data in the parser */ flush(): void; private _onReady; } //# sourceMappingURL=fmp4-demuxer.d.ts.map