From 5dd804026cb579b164ffff09270eba1e9dc325a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Tue, 22 Apr 2008 20:53:22 +0000 Subject: [PATCH] Use transport's quality index when chosing which transport to use for a subscription. --- dvb.c | Bin 16381 -> 16778 bytes transports.c | 21 +++++++++++++++++++++ tvhead.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/dvb.c b/dvb.c index 6b078939591763d616569e62d7b2c8c7d99899c1..36714cb4c2c7829aff7b7b5ea14f4c3eb23c38f6 100644 GIT binary patch delta 322 zcmZvYJx;?w5QSw5M{EH_qyU0QuM8GA2S70ehoH2UcuZDtcEj#CgenE1q1}R-6M*EC za0yCofW#(|sWQcAG(T_Vo8Q&zbM*Ng`;WMDqBNse+~sVgc5`Dnf2d`p_{o38z1Xp2 zHTLfZ-6rZB9j1Jl@#McHSGu4jM!N;BM04DG8T7?4Ndywy$f}|OY;aGEcFWJ`bhWPD z5~f6RggeGlm=Ziu4yCanAdqHd3A1{MfhzGxa1^rE8tcw4;EYMrwTdOKtqvoSv5-|w n2-%_7Vj!@J9jtpB*skBdhNtYTk6^7(F;f9K`1UQ$TUJJYs_Ahf delta 23 ecmeBbX8c>f;ThXzDRv|N%~fKp8k@Bo5*Pt?e+a4o diff --git a/transports.c b/transports.c index f3dc3f85..4842e25b 100644 --- a/transports.c +++ b/transports.c @@ -235,6 +235,22 @@ transport_get_prio(th_transport_t *t) } } +/** + * Return quality index for given transport + * + * We invert the result (providers say that negative numbers are worse) + * + * But for sorting, we want low numbers first + * + */ +static int +transport_get_quality(th_transport_t *t) +{ + return t->tht_quality_index ? -(t->tht_quality_index(t)) : 0; +} + + + /** * a - b -> lowest number first @@ -245,6 +261,11 @@ transportcmp(const void *A, const void *B) th_transport_t *a = *(th_transport_t **)A; th_transport_t *b = *(th_transport_t **)B; + int q = transport_get_quality(a) - transport_get_quality(b); + + if(q != 0) + return q; /* Quality precedes priority */ + return transport_get_prio(a) - transport_get_prio(b); } diff --git a/tvhead.h b/tvhead.h index 08fa8f95..2c19ec76 100644 --- a/tvhead.h +++ b/tvhead.h @@ -431,6 +431,8 @@ typedef struct th_transport { const char *(*tht_sourcename)(struct th_transport *t); + int (*tht_quality_index)(struct th_transport *t); + struct th_muxer_list tht_muxers; /* muxers */ /*