UNPKG

mpegts.js

Version:

HTML5 MPEG2-TS Stream Player

114 lines (97 loc) 2.31 kB
interface ProgramToPMTPIDMap { [program: number]: number; } export class PAT { version_number: number; network_pid: number; // program_number -> pmt_pid program_pmt_pid: ProgramToPMTPIDMap = {}; } export enum StreamType { kMPEG1Audio = 0x03, kMPEG2Audio = 0x04, kPESPrivateData = 0x06, kADTSAAC = 0x0F, kLOASAAC = 0x11, kAC3 = 0x81, kEAC3 = 0x87, kMetadata = 0x15, kSCTE35 = 0x86, kH264 = 0x1b, kH265 = 0x24 } interface PIDToStreamTypeMap { [pid: number]: StreamType; } export class PMT { program_number: number; version_number: number; pcr_pid: number; // pid -> stream_type pid_stream_type: PIDToStreamTypeMap = {}; common_pids: { h264: number | undefined, h265: number | undefined, av1: number | undefined, adts_aac: number | undefined, loas_aac: number | undefined, opus: number | undefined, ac3: number | undefined, eac3: number | undefined, mp3: number | undefined } = { h264: undefined, h265: undefined, av1: undefined, adts_aac: undefined, loas_aac: undefined, opus: undefined, ac3: undefined, eac3: undefined, mp3: undefined }; pes_private_data_pids: { [pid: number]: boolean } = {}; timed_id3_pids: { [pid: number]: boolean } = {}; synchronous_klv_pids: { [pid: number]: boolean } = {}; asynchronous_klv_pids: { [pid: number]: boolean } = {}; scte_35_pids: { [pid: number]: boolean } = {}; smpte2038_pids: { [oid: number]: boolean } = {}; } export interface ProgramToPMTMap { [program: number]: PMT; } export class PESData { pid: number; data: Uint8Array; stream_type: StreamType; file_position: number; random_access_indicator: number; } export class SectionData { pid: number; data: Uint8Array; file_position: number; random_access_indicator: number; } export class SliceQueue { slices: Uint8Array[] = []; total_length: number = 0; expected_length: number = 0; file_position: number = 0; random_access_indicator: 0; } export interface PIDToSliceQueues { [pid: number]: SliceQueue; }