--- src/input/mpegts/satip/satip_frontend.orig 2015-12-16 18:33:33.000000000 +0100 +++ src/input/mpegts/satip/satip_frontend.c 2016-07-20 08:23:14.000000000 +0200 @@ -754,9 +754,11 @@ return 0; } - if (tr->sf_pids.all) { + mpegts_pid_weighted(&wpid, &tr->sf_pids, lfe->sf_device->sd_pids_max); + + if (tr->sf_pids.all || (lfe->sf_device->sd_fullmux_ok && wpid.count > max_pids_count)) { + mpegts_pid_done(&wpid); -all: i = tr->sf_pids_tuned.all; mpegts_pid_done(&tr->sf_pids_tuned); tr->sf_pids_tuned.all = 1; @@ -771,7 +773,6 @@ tr->sf_pids_tuned.all || tr->sf_pids.count == 0) { - mpegts_pid_weighted(&wpid, &tr->sf_pids, lfe->sf_device->sd_pids_max); j = MIN(wpid.count, lfe->sf_device->sd_pids_max); add = alloca(1 + j * 5); add[0] = '\0'; @@ -790,15 +791,6 @@ } else { - mpegts_pid_weighted(&wpid, &tr->sf_pids, lfe->sf_device->sd_pids_max); - - if (wpid.count > max_pids_count) { - if (lfe->sf_device->sd_fullmux_ok) { - mpegts_pid_done(&wpid); - goto all; - } - } - mpegts_pid_compare(&wpid, &tr->sf_pids_tuned, &padd, &pdel); add = alloca(1 + padd.count * 5);