]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts pid: another fix in mpegts_pid_weighted()
authorJaroslav Kysela <perex@perex.cz>
Mon, 5 Mar 2018 20:21:54 +0000 (21:21 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 5 Mar 2018 20:21:54 +0000 (21:21 +0100)
src/input/mpegts/mpegts_pid.c

index d5a4b006abac9ce4d8f9789402c840a7fc09f8f2..dcd06abc3def32189132529f954e331b30e98192 100644 (file)
@@ -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;