videojs / mux.js

Lightweight utilities for inspecting and manipulating video container formats.
Apache License 2.0
1.11k stars 210 forks source link

function parsePat section_number, last_section_number offset wrong in lib/m2ts/m2ts.js #432

Open jjnetcn opened 1 year ago

jjnetcn commented 1 year ago

parsePat = function(payload, pat) { pat.section_number = payload[7]; // eslint-disable-line camelcase pat.last_section_number = payload[8]; // eslint-disable-line camelcase

// skip the PSI header and parse the first PMT entry
self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11];
pat.pmtPid = self.pmtPid;

};

i check ISO_IEC_13818-1 2.4.4.3 the section_number should be payload[6], last_section_number is payload[7] while program_map_PID is part of payload[10] and payload[11] .

program_association_section() { table_id 8 uimsbf section_syntax_indicator 1 bslbf '0' 1 bslbf reserved 2 bslbf section_length 12 uimsbf transport_stream_id 16 uimsbf reserved 2 bslbf version_number 5 uimsbf current_next_indicator 1 bslbf section_number 8 uimsbf last_section_number 8 uimsbf for (i = 0; i < N; i++) { program_number 16 uimsbf reserved 3 bslbf if (program_number = = '0') { network_PID 13 uimsbf } else { program_map_PID 13 uimsbf } } CRC_32 32 rpchof }