import { get_stream , Stream } from "./stream" ; export function decode_pat ( mem , ptr , len , pids , pstart ) { if ( pstart ) { if ( len < 1 ) { return 6 ; } ptr += 1 ; len -= 1 ; } if ( mem . getUint8 ( ptr ) !== 0x00 ) { return 0 ; } if ( len < 8 ) { return 7 ; } let l = mem . getUint16 ( ptr + 1 ) ; if ( ( l & 0xb000 ) !== 0xb000 ) { return 8 ; } l &= 0x0fff ; len -= 3 ; if ( l > len ) { return 9 ; } len -= 5 ; ptr += 8 ; l -= 5 + 4 ; if ( l % 4 ) { return 10 ; } const n = l / 4 ; for ( let i = 0 ; i < n ; i ++ ) { const program = mem . getUint16 ( ptr ) ; let pid = mem . getUint16 ( ptr + 2 ) ; if ( ( pid & 0xe000 ) !== 0xe000 ) { return 11 ; } pid &= 0x1fff ; ptr += 4 ; const s = get_stream ( pids , pid ) ; s . program = program ; s . type = 0xff ; } return 0 ; }