if((st = service_stream_find(t, pid)) == NULL) {
r |= PMT_UPDATE_NEW_STREAM;
st = service_stream_create(t, pid, SCT_TEXTSUB);
+ st->es_delete_me = 1;
}
- st->es_delete_me = 0;
lang = lang_code_get2((const char*)ptr, 3);
if(memcmp(st->es_lang,lang,3)) {
st->es_parent_pid = parent_pid;
}
- if(st->es_position != *position) {
+ // Check es_delete_me so we only compute position once per PMT update
+ if(st->es_position != *position && st->es_delete_me) {
st->es_position = *position;
r |= PMT_REORDERED;
}
+ st->es_delete_me = 0;
(*position)++;
}
ptr += 5;