int
mpegts_pid_weighted(mpegts_apids_t *dst, mpegts_apids_t *pids, int limit)
{
- int i;
+ int i, j;
mpegts_apids_t sorted;
- uint16_t pid;
+ mpegts_apid_t *p;
mpegts_pid_init(&sorted);
mpegts_pid_copy(&sorted, pids);
mpegts_pid_init(dst);
for (i = 0; i < sorted.count && dst->count < limit; i++) {
- pid = sorted.pids[i].pid;
- if (mpegts_pid_find_rindex(dst, pid) < 0)
- mpegts_pid_add(dst, pid, sorted.pids[i].weight);
+ p = &sorted.pids[i];
+ j = mpegts_pid_find_rindex(dst, p->pid);
+ if (j < 0)
+ mpegts_pid_add(dst, p->pid, p->weight);
+ else
+ mpegts_pid_update_max_weight_by_index(dst, j, p->weight);
}
dst->all = pids->all;