From 5bb2c4febfa249566c89e64668218579540e082d Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 5 Mar 2018 21:21:54 +0100 Subject: [PATCH] mpegts pid: another fix in mpegts_pid_weighted() --- src/input/mpegts/mpegts_pid.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/input/mpegts/mpegts_pid.c b/src/input/mpegts/mpegts_pid.c index d5a4b006a..dcd06abc3 100644 --- a/src/input/mpegts/mpegts_pid.c +++ b/src/input/mpegts/mpegts_pid.c @@ -340,9 +340,9 @@ mpegts_pid_compare_weight(mpegts_apids_t *dst, mpegts_apids_t *src, 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); @@ -350,9 +350,12 @@ mpegts_pid_weighted(mpegts_apids_t *dst, mpegts_apids_t *pids, int limit) 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; -- 2.47.3