Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
epggrab: ota - sort muxes to improve scan algorithm
  • Loading branch information
perexg committed Mar 21, 2016
1 parent 39df47d commit 79c4432
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 19 deletions.
14 changes: 12 additions & 2 deletions src/epggrab/otamux.c
Expand Up @@ -81,6 +81,16 @@ om_id_cmp ( epggrab_ota_mux_t *a, epggrab_ota_mux_t *b )
return strcmp(a->om_mux_uuid, b->om_mux_uuid);
}

static int
om_mux_cmp ( epggrab_ota_mux_t *a, epggrab_ota_mux_t *b )
{
mpegts_mux_t *a1 = mpegts_mux_find(a->om_mux_uuid);
mpegts_mux_t *b1 = mpegts_mux_find(b->om_mux_uuid);
assert(a1);
assert(b1);
return mpegts_mux_compare(a1, b1);
}

static int
om_svcl_cmp ( epggrab_ota_svc_link_t *a, epggrab_ota_svc_link_t *b )
{
Expand All @@ -107,7 +117,7 @@ epggrab_ota_queue_one( epggrab_ota_mux_t *om )
om->om_requeue = 1;
if (om->om_q_type != EPGGRAB_OTA_MUX_IDLE)
return 0;
TAILQ_INSERT_TAIL(&epggrab_ota_pending, om, om_q_link);
TAILQ_INSERT_SORTED(&epggrab_ota_pending, om, om_q_link, om_mux_cmp);
om->om_q_type = EPGGRAB_OTA_MUX_PENDING;
return 1;
}
Expand Down Expand Up @@ -346,7 +356,7 @@ epggrab_ota_register
ota = epggrab_ota_mux_skel;
SKEL_USED(epggrab_ota_mux_skel);
ota->om_mux_uuid = strdup(uuid);
TAILQ_INSERT_TAIL(&epggrab_ota_pending, ota, om_q_link);
TAILQ_INSERT_SORTED(&epggrab_ota_pending, ota, om_q_link, om_mux_cmp);
ota->om_q_type = EPGGRAB_OTA_MUX_PENDING;
if (TAILQ_FIRST(&epggrab_ota_pending) == ota)
epggrab_ota_kick(1);
Expand Down
2 changes: 2 additions & 0 deletions src/input/mpegts.h
Expand Up @@ -917,6 +917,8 @@ mpegts_mux_find_pid(mpegts_mux_t *mm, int pid, int create)

void mpegts_mux_update_pids ( mpegts_mux_t *mm );

int mpegts_mux_compare ( mpegts_mux_t *a, mpegts_mux_t *b );

void mpegts_input_recv_packets
(mpegts_input_t *mi, mpegts_mux_instance_t *mmi, sbuf_t *sb,
int flags, mpegts_pcr_t *pcr);
Expand Down
25 changes: 25 additions & 0 deletions src/input/mpegts/mpegts_mux.c
Expand Up @@ -1403,6 +1403,31 @@ mpegts_mux_find_pid_ ( mpegts_mux_t *mm, int pid, int create )
return mp;
}

/* **************************************************************************
* Misc
* *************************************************************************/

int
mpegts_mux_compare ( mpegts_mux_t *a, mpegts_mux_t *b )
{
int r = uuid_cmp(&a->mm_network->mn_id.in_uuid,
&b->mm_network->mn_id.in_uuid);
if (r)
return r;
if (idnode_is_instance(&a->mm_id, &dvb_mux_dvbs_class) &&
idnode_is_instance(&b->mm_id, &dvb_mux_dvbs_class)) {
dvb_mux_conf_t *mc1 = &((dvb_mux_t *)a)->lm_tuning;
dvb_mux_conf_t *mc2 = &((dvb_mux_t *)b)->lm_tuning;
assert(mc1->dmc_fe_type == DVB_TYPE_S);
assert(mc2->dmc_fe_type == DVB_TYPE_S);
r = (int)mc1->u.dmc_fe_qpsk.polarisation -
(int)mc2->u.dmc_fe_qpsk.polarisation;
if (r == 0)
r = mc1->dmc_fe_freq - mc2->dmc_fe_freq;
}
return r;
}

/******************************************************************************
* Editor Configuration
*
Expand Down
19 changes: 2 additions & 17 deletions src/input/mpegts/mpegts_network_scan.c
Expand Up @@ -35,23 +35,8 @@ static int
mm_cmp ( mpegts_mux_t *a, mpegts_mux_t *b )
{
int r = b->mm_scan_weight - a->mm_scan_weight;
if (r == 0) {
r = uuid_cmp(&a->mm_network->mn_id.in_uuid,
&b->mm_network->mn_id.in_uuid);
if (r)
return r;
if (idnode_is_instance(&a->mm_id, &dvb_mux_dvbs_class) &&
idnode_is_instance(&b->mm_id, &dvb_mux_dvbs_class)) {
dvb_mux_conf_t *mc1 = &((dvb_mux_t *)a)->lm_tuning;
dvb_mux_conf_t *mc2 = &((dvb_mux_t *)b)->lm_tuning;
assert(mc1->dmc_fe_type == DVB_TYPE_S);
assert(mc2->dmc_fe_type == DVB_TYPE_S);
r = (int)mc1->u.dmc_fe_qpsk.polarisation -
(int)mc2->u.dmc_fe_qpsk.polarisation;
if (r == 0)
r = mc1->dmc_fe_freq - mc2->dmc_fe_freq;
}
}
if (r == 0)
return mpegts_mux_compare(a, b);
return r;
}

Expand Down

0 comments on commit 79c4432

Please sign in to comment.