UNPKG

npaw-plugin-nwf

Version:
96 lines (95 loc) 3.19 kB
export declare enum ManifestProtocol { HLS = "HLS", DASH = "DASH" } export declare enum TrackType { VIDEO = "VIDEO", AUDIO = "AUDIO", TEXT = "TEXT" } export declare enum UrlType { MASTER_MANIFEST = "MASTER_MANIFEST", SUB_MANIFEST = "SUB_MANIFEST", INIT_SEGMENT = "INIT_SEGMENT", MEDIA_SEGMENT = "MEDIA_SEGMENT" } export interface SegmentMatchInfo { segmentNumber: number; estimatedTimeSecs: number; estimatedDurationSecs: number; } export interface SegmentIndex { readonly segmentCount: number; readonly startNumber: number; readonly targetDurationSecs: number; readonly totalDurationSecs: number; readonly isLive: boolean; readonly hasUniqueSegmentUris: boolean; getSegmentUri(segmentNumber: number): string | undefined; getSegmentInfoForUri(chunkUri: string, byteRangeOffset?: number): SegmentMatchInfo | undefined; matchesInitUri(chunkUri: string): boolean; getSegmentInfoByNumber(segmentNumber: number): SegmentMatchInfo | undefined; } export interface UrlMatch { urlType: UrlType; manifest: Manifest; track: Manifest | undefined; segmentNumber: number | undefined; segmentTimeSecs: number | undefined; segmentDurationSecs: number | undefined; } export interface ManifestData { uri: string; id?: string; protocol: ManifestProtocol; isMasterManifest: boolean; isLive?: boolean; durationMs?: number; trackType?: TrackType; bitrate?: number; videoCodecs?: string; audioCodecs?: string; width?: number; height?: number; language?: string; containerMimeType?: string; frameRate?: number; tracks?: Map<string, Manifest[]>; segmentIndex?: SegmentIndex; sourceUrl?: string; } export declare class Manifest { readonly uri: string; readonly id: string | undefined; readonly protocol: ManifestProtocol; readonly isMasterManifest: boolean; readonly isLive: boolean; readonly durationMs: number; readonly trackType: TrackType | undefined; readonly bitrate: number; readonly videoCodecs: string | undefined; readonly audioCodecs: string | undefined; readonly width: number; readonly height: number; readonly language: string | undefined; readonly containerMimeType: string | undefined; readonly frameRate: number; readonly tracks: Map<string, Manifest[]>; readonly segmentIndex: SegmentIndex | undefined; readonly sourceUrl: string | undefined; constructor(data: ManifestData); copy(overrides: Partial<ManifestData>): Manifest; /** * Multi-level URL resolution aligned with Android Manifest.resolveUrl(). * Level 1: O(1) directory key lookup * Level 2: reverse-contains on track keys * Level 2b: flattened sub-manifest filenames * Own segmentIndex check * Level 3: brute-force (if force=true) */ resolveUrl(dirPathOrFullPath: string, filenameOrUndefined?: string, skipPathChecks?: boolean, force?: boolean, byteRangeOffset?: number, preferredTrackUri?: string): UrlMatch | undefined; private matchTrackList; private isStrongMatch; private matchTrack; private matchSegmentIndex; }