Move the linuxdvb mux code to the shared mpegts network code

... introduce $CFG/input/dvb/networks/... structure
This commit is contained in:
Jaroslav Kysela 2014-03-31 19:52:36 +02:00
parent 23d330de12
commit d1ad5631b5
11 changed files with 220 additions and 262 deletions

View file

@ -180,6 +180,7 @@ SRCS-$(CONFIG_MPEGTS) += \
# MPEGTS DVB
SRCS-${CONFIG_MPEGTS_DVB} += \
src/input/mpegts/mpegts_network_dvb.c \
src/input/mpegts/mpegts_mux_dvb.c \
src/input/mpegts/scanfile.c
# MPEGTS EPG
@ -194,7 +195,6 @@ SRCS-${CONFIG_LINUXDVB} += \
src/input/mpegts/linuxdvb/linuxdvb.c \
src/input/mpegts/linuxdvb/linuxdvb_adapter.c \
src/input/mpegts/linuxdvb/linuxdvb_frontend.c \
src/input/mpegts/linuxdvb/linuxdvb_mux.c \
src/input/mpegts/linuxdvb/linuxdvb_satconf.c \
src/input/mpegts/linuxdvb/linuxdvb_lnb.c \
src/input/mpegts/linuxdvb/linuxdvb_switch.c \

View file

@ -143,7 +143,7 @@ const idclass_t linuxdvb_en50494_class =
static int
linuxdvb_en50494_tune
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *sc, int fd )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm, linuxdvb_satconf_ele_t *sc, int fd )
{
int ret = 0;
int i;

View file

@ -375,7 +375,7 @@ linuxdvb_frontend_network_list ( mpegts_input_t *mi )
static void
linuxdvb_frontend_default_tables
( linuxdvb_frontend_t *lfe, linuxdvb_mux_t *lm )
( linuxdvb_frontend_t *lfe, dvb_mux_t *lm )
{
mpegts_mux_t *mm = (mpegts_mux_t*)lm;
@ -486,7 +486,7 @@ linuxdvb_frontend_monitor ( void *aux )
pthread_mutex_unlock(&lfe->lfe_dvr_lock);
/* Table handlers */
linuxdvb_frontend_default_tables(lfe, (linuxdvb_mux_t*)mm);
linuxdvb_frontend_default_tables(lfe, (dvb_mux_t*)mm);
/* Locked - ensure everything is open */
pthread_mutex_lock(&lfe->mi_delivery_mutex);
@ -861,7 +861,7 @@ linuxdvb_frontend_tune0
struct dvb_frontend_event ev;
char buf1[256];
mpegts_mux_instance_t *cur = LIST_FIRST(&lfe->mi_mux_active);
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mmi->mmi_mux;
dvb_mux_t *lm = (dvb_mux_t*)mmi->mmi_mux;
dvb_mux_conf_t *dmc;
struct dvb_frontend_parameters p;

View file

@ -72,7 +72,7 @@ const idclass_t linuxdvb_lnb_class =
static uint32_t
linuxdvb_lnb_standard_freq
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
linuxdvb_lnb_conf_t *lnb = (linuxdvb_lnb_conf_t*)l;
int32_t f = (int32_t)lm->lm_tuning.dmc_fe_freq;
@ -85,7 +85,7 @@ linuxdvb_lnb_standard_freq
static int
linuxdvb_lnb_standard_band
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
linuxdvb_lnb_conf_t *lnb = (linuxdvb_lnb_conf_t*)l;
uint32_t f = lm->lm_tuning.dmc_fe_freq;
@ -94,7 +94,7 @@ linuxdvb_lnb_standard_band
static int
linuxdvb_lnb_standard_pol
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
dvb_mux_conf_t *dmc = &lm->lm_tuning;
return dmc->u.dmc_fe_qpsk.polarisation == DVB_POLARISATION_HORIZONTAL ||
@ -103,7 +103,7 @@ linuxdvb_lnb_standard_pol
static int
linuxdvb_lnb_standard_tune
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
{
int pol = linuxdvb_lnb_standard_pol((linuxdvb_lnb_t*)ld, lm);
return linuxdvb_diseqc_set_volt(fd, pol);
@ -115,7 +115,7 @@ linuxdvb_lnb_standard_tune
static uint32_t
linuxdvb_lnb_bandstack_freq
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
linuxdvb_lnb_conf_t *lnb = (linuxdvb_lnb_conf_t*)l;
int32_t f = (int32_t)lm->lm_tuning.dmc_fe_freq;
@ -131,7 +131,7 @@ linuxdvb_lnb_bandstack_freq
static int
linuxdvb_lnb_bandstack_band
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
dvb_mux_conf_t *dmc = &lm->lm_tuning;
int pol = dmc->u.dmc_fe_qpsk.polarisation == DVB_POLARISATION_HORIZONTAL ||
@ -141,14 +141,14 @@ linuxdvb_lnb_bandstack_band
static int
linuxdvb_lnb_bandstack_pol
( linuxdvb_lnb_t *l, linuxdvb_mux_t *lm )
( linuxdvb_lnb_t *l, dvb_mux_t *lm )
{
return 0;
}
static int
linuxdvb_lnb_bandstack_tune
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
{
int pol = linuxdvb_lnb_bandstack_pol((linuxdvb_lnb_t*)ld, lm);
return linuxdvb_diseqc_set_volt(fd, pol);

View file

@ -40,7 +40,6 @@ typedef struct linuxdvb_satconf_ele linuxdvb_satconf_ele_t;
typedef struct linuxdvb_diseqc linuxdvb_diseqc_t;
typedef struct linuxdvb_lnb linuxdvb_lnb_t;
typedef struct linuxdvb_network linuxdvb_network_t;
typedef struct linuxdvb_mux linuxdvb_mux_t;
typedef struct linuxdvb_en50494 linuxdvb_en50494_t;
typedef LIST_HEAD(,linuxdvb_hardware) linuxdvb_hardware_list_t;
@ -184,17 +183,17 @@ struct linuxdvb_diseqc
idnode_t ld_id;
const char *ld_type;
linuxdvb_satconf_ele_t *ld_satconf;
int (*ld_grace) (linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm);
int (*ld_tune) (linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm,
int (*ld_grace) (linuxdvb_diseqc_t *ld, dvb_mux_t *lm);
int (*ld_tune) (linuxdvb_diseqc_t *ld, dvb_mux_t *lm,
linuxdvb_satconf_ele_t *ls, int fd);
};
struct linuxdvb_lnb
{
linuxdvb_diseqc_t;
uint32_t (*lnb_freq)(linuxdvb_lnb_t*, linuxdvb_mux_t*);
int (*lnb_band)(linuxdvb_lnb_t*, linuxdvb_mux_t*);
int (*lnb_pol) (linuxdvb_lnb_t*, linuxdvb_mux_t*);
uint32_t (*lnb_freq)(linuxdvb_lnb_t*, dvb_mux_t*);
int (*lnb_band)(linuxdvb_lnb_t*, dvb_mux_t*);
int (*lnb_pol) (linuxdvb_lnb_t*, dvb_mux_t*);
};
struct linuxdvb_en50494
@ -245,27 +244,6 @@ int linuxdvb_frontend_tune0
int linuxdvb_frontend_tune1
( linuxdvb_frontend_t *lfe, mpegts_mux_instance_t *mmi, uint32_t freq );
/*
*
*/
struct linuxdvb_mux
{
mpegts_mux_t;
/*
* Tuning information
*/
dvb_mux_conf_t lm_tuning;
};
linuxdvb_mux_t *linuxdvb_mux_create0
(dvb_network_t *ln, uint16_t onid, uint16_t tsid,
const dvb_mux_conf_t *dmc, const char *uuid, htsmsg_t *conf);
#define linuxdvb_mux_create1(n, u, c)\
linuxdvb_mux_create0(n, MPEGTS_ONID_NONE, MPEGTS_TSID_NONE,\
NULL, u, c)
/*
* Diseqc gear
*/

View file

@ -132,7 +132,7 @@ const idclass_t linuxdvb_rotor_usals_class =
/* GotoX */
static int
linuxdvb_rotor_gotox_tune
( linuxdvb_rotor_t *lr, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
( linuxdvb_rotor_t *lr, dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
{
int i;
for (i = 0; i <= ls->lse_parent->ls_diseqc_repeats; i++) {
@ -150,7 +150,7 @@ linuxdvb_rotor_gotox_tune
/* USALS */
static int
linuxdvb_rotor_usals_tune
( linuxdvb_rotor_t *lr, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
( linuxdvb_rotor_t *lr, dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
{
/*
* Code originally written in PR #238 by Jason Millard jsm174
@ -219,7 +219,7 @@ linuxdvb_rotor_usals_tune
static int
linuxdvb_rotor_tune
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls, int fd )
{
linuxdvb_rotor_t *lr = (linuxdvb_rotor_t*)ld;
@ -240,7 +240,7 @@ linuxdvb_rotor_tune
static int
linuxdvb_rotor_grace
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm )
{
return 120; // TODO: calculate approx period
}

View file

@ -596,7 +596,7 @@ linuxdvb_satconf_get_grace
/* Add diseqc delay */
for (i = 0; i < 3; i++) {
if (lds[i] && lds[i]->ld_grace)
r += lds[i]->ld_grace(lds[i], (linuxdvb_mux_t*)mm);
r += lds[i]->ld_grace(lds[i], (dvb_mux_t*)mm);
}
return r;
@ -614,7 +614,7 @@ linuxdvb_satconf_ele_tune ( linuxdvb_satconf_ele_t *lse )
/* Get beans in a row */
mpegts_mux_instance_t *mmi = ls->ls_mmi;
linuxdvb_frontend_t *lfe = (linuxdvb_frontend_t*)ls->ls_frontend;
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mmi->mmi_mux;
dvb_mux_t *lm = (dvb_mux_t*)mmi->mmi_mux;
linuxdvb_diseqc_t *lds[] = {
lse->lse_rotor ? (linuxdvb_diseqc_t*)lse->lse_switch : NULL,
(linuxdvb_diseqc_t*)lse->lse_rotor,
@ -680,7 +680,7 @@ linuxdvb_satconf_start_mux
uint32_t f;
linuxdvb_satconf_ele_t *lse = linuxdvb_satconf_find_ele(ls, mmi->mmi_mux);
linuxdvb_frontend_t *lfe = (linuxdvb_frontend_t*)ls->ls_frontend;
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mmi->mmi_mux;
dvb_mux_t *lm = (dvb_mux_t*)mmi->mmi_mux;
/* Test run */
// Note: basically this ensures the tuning params are acceptable

View file

@ -113,7 +113,7 @@ const idclass_t linuxdvb_switch_class =
static int
linuxdvb_switch_tune
( linuxdvb_diseqc_t *ld, linuxdvb_mux_t *lm, linuxdvb_satconf_ele_t *sc, int fd )
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm, linuxdvb_satconf_ele_t *sc, int fd )
{
int i, com, r1 = 0, r2 = 0;
int pol, band;

View file

@ -46,4 +46,29 @@ dvb_network_t *dvb_network_find_by_uuid(const char *uuid);
dvb_network_t *dvb_network_create0
( const char *uuid, const idclass_t *idc, htsmsg_t *conf );
/*
*
*/
typedef struct dvb_mux
{
mpegts_mux_t;
/*
* Tuning information
*/
dvb_mux_conf_t lm_tuning;
} dvb_mux_t;
extern const idclass_t dvb_mux_dvbt_class;
extern const idclass_t dvb_mux_dvbc_class;
extern const idclass_t dvb_mux_dvbs_class;
extern const idclass_t dvb_mux_atsc_class;
dvb_mux_t *dvb_mux_create0
(dvb_network_t *ln, uint16_t onid, uint16_t tsid,
const dvb_mux_conf_t *dmc, const char *uuid, htsmsg_t *conf);
#define dvb_mux_create1(n, u, c)\
dvb_mux_create0(n, MPEGTS_ONID_NONE, MPEGTS_TSID_NONE, NULL, u, c)
#endif /* __TVH_MPEGTS_DVB_H__ */

View file

@ -19,7 +19,7 @@
#include "tvheadend.h"
#include "input.h"
#include "linuxdvb_private.h"
#include "mpegts_dvb.h"
#include "queue.h"
#include "settings.h"
@ -36,7 +36,7 @@
* *************************************************************************/
static void
linuxdvb_mux_delete ( mpegts_mux_t *mm, int delconf );
dvb_mux_delete ( mpegts_mux_t *mm, int delconf );
extern const idclass_t mpegts_mux_class;
@ -45,24 +45,24 @@ extern const idclass_t mpegts_mux_class;
*/
/* Macro to define mux class str get/set */
#define linuxdvb_mux_class_R(c, f, l, ...)\
#define dvb_mux_class_R(c, f, l, ...)\
static const void * \
linuxdvb_mux_##c##_class_##l##_get (void *o)\
dvb_mux_##c##_class_##l##_get (void *o)\
{\
static const char *s;\
linuxdvb_mux_t *lm = o;\
dvb_mux_t *lm = o;\
s = dvb_##l##2str(lm->lm_tuning.dmc_fe_##f);\
return &s;\
}\
static int \
linuxdvb_mux_##c##_class_##l##_set (void *o, const void *v)\
dvb_mux_##c##_class_##l##_set (void *o, const void *v)\
{\
linuxdvb_mux_t *lm = o;\
dvb_mux_t *lm = o;\
lm->lm_tuning.dmc_fe_##f = dvb_str2##l ((const char*)v);\
return 1;\
}\
static htsmsg_t *\
linuxdvb_mux_##c##_class_##l##_enum (void *o)\
dvb_mux_##c##_class_##l##_enum (void *o)\
{\
static const int t[] = { __VA_ARGS__ };\
int i;\
@ -71,24 +71,24 @@ linuxdvb_mux_##c##_class_##l##_enum (void *o)\
htsmsg_add_str(m, NULL, dvb_##l##2str(t[i]));\
return m;\
}
#define linuxdvb_mux_class_X(c, f, p, l, ...)\
#define dvb_mux_class_X(c, f, p, l, ...)\
static const void * \
linuxdvb_mux_##c##_class_##l##_get (void *o)\
dvb_mux_##c##_class_##l##_get (void *o)\
{\
static const char *s;\
linuxdvb_mux_t *lm = o;\
dvb_mux_t *lm = o;\
s = dvb_##l##2str(lm->lm_tuning.u.dmc_fe_##f.p);\
return &s;\
}\
static int \
linuxdvb_mux_##c##_class_##l##_set (void *o, const void *v)\
dvb_mux_##c##_class_##l##_set (void *o, const void *v)\
{\
linuxdvb_mux_t *lm = o;\
dvb_mux_t *lm = o;\
lm->lm_tuning.u.dmc_fe_##f.p = dvb_str2##l ((const char*)v);\
return 1;\
}\
static htsmsg_t *\
linuxdvb_mux_##c##_class_##l##_enum (void *o)\
dvb_mux_##c##_class_##l##_enum (void *o)\
{\
static const int t[] = { __VA_ARGS__ };\
int i;\
@ -101,38 +101,37 @@ linuxdvb_mux_##c##_class_##l##_enum (void *o)\
.type = PT_STR,\
.id = _id,\
.name = _name,\
.get = linuxdvb_mux_##t##_class_##l##_get,\
.set = linuxdvb_mux_##t##_class_##l##_set,\
.list = linuxdvb_mux_##t##_class_##l##_enum,\
.get = dvb_mux_##t##_class_##l##_get,\
.set = dvb_mux_##t##_class_##l##_set,\
.list = dvb_mux_##t##_class_##l##_enum,\
.def.s = d
static const void *
linuxdvb_mux_class_delsys_get (void *o)
dvb_mux_class_delsys_get (void *o)
{
static const char *s;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
s = dvb_delsys2str(lm->lm_tuning.dmc_fe_delsys);
return &s;
}
static int
linuxdvb_mux_class_delsys_set (void *o, const void *v)
dvb_mux_class_delsys_set (void *o, const void *v)
{
#if DVB_VER_ATLEAST(5,0)
const char *s = v;
int delsys = dvb_str2delsys(s);
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
if (delsys != lm->lm_tuning.dmc_fe_delsys) {
lm->lm_tuning.dmc_fe_delsys = dvb_str2delsys(s);
return 1;
}
#endif
return 0;
}
const idclass_t linuxdvb_mux_class =
const idclass_t dvb_mux_class =
{
.ic_super = &mpegts_mux_class,
.ic_class = "linuxdvb_mux",
.ic_class = "dvb_mux",
.ic_caption = "Linux DVB Multiplex",
.ic_properties = (const property_t[]){
{}
@ -143,78 +142,50 @@ const idclass_t linuxdvb_mux_class =
* DVB-T
*/
linuxdvb_mux_class_X(dvbt, ofdm, bandwidth, bw,
DVB_BANDWIDTH_AUTO
, DVB_BANDWIDTH_8_MHZ, DVB_BANDWIDTH_7_MHZ
, DVB_BANDWIDTH_6_MHZ
#if DVB_VER_ATLEAST(5,4)
, DVB_BANDWIDTH_5_MHZ
, DVB_BANDWIDTH_10_MHZ
, DVB_BANDWIDTH_1_712_MHZ
#endif
);
linuxdvb_mux_class_R(dvbt, modulation, qam,
dvb_mux_class_X(dvbt, ofdm, bandwidth, bw,
DVB_BANDWIDTH_AUTO, DVB_BANDWIDTH_10_MHZ,
DVB_BANDWIDTH_8_MHZ, DVB_BANDWIDTH_7_MHZ,
DVB_BANDWIDTH_6_MHZ, DVB_BANDWIDTH_5_MHZ,
DVB_BANDWIDTH_1_712_MHZ);
dvb_mux_class_R(dvbt, modulation, qam,
DVB_MOD_QAM_AUTO, DVB_MOD_QPSK, DVB_MOD_QAM_16,
DVB_MOD_QAM_64, DVB_MOD_QAM_256
);
linuxdvb_mux_class_X(dvbt, ofdm, transmission_mode, mode,
DVB_TRANSMISSION_MODE_AUTO,
DVB_TRANSMISSION_MODE_2K, DVB_TRANSMISSION_MODE_8K
#if DVB_VER_ATLEAST(5,4)
, DVB_TRANSMISSION_MODE_1K, DVB_TRANSMISSION_MODE_16K
, DVB_TRANSMISSION_MODE_32K
#endif
);
linuxdvb_mux_class_X(dvbt, ofdm, guard_interval, guard,
DVB_GUARD_INTERVAL_AUTO, DVB_GUARD_INTERVAL_1_4,
DVB_GUARD_INTERVAL_1_8, DVB_GUARD_INTERVAL_1_16,
DVB_GUARD_INTERVAL_1_32
#if DVB_VER_ATLEAST(5,4)
, DVB_GUARD_INTERVAL_1_128, DVB_GUARD_INTERVAL_19_128
, DVB_GUARD_INTERVAL_19_256
#endif
);
linuxdvb_mux_class_X(dvbt, ofdm, hierarchy_information, hier,
DVB_MOD_QAM_64, DVB_MOD_QAM_256);
dvb_mux_class_X(dvbt, ofdm, transmission_mode, mode,
DVB_TRANSMISSION_MODE_AUTO, DVB_TRANSMISSION_MODE_32K,
DVB_TRANSMISSION_MODE_16K, DVB_TRANSMISSION_MODE_8K,
DVB_TRANSMISSION_MODE_2K, DVB_TRANSMISSION_MODE_1K);
dvb_mux_class_X(dvbt, ofdm, guard_interval, guard,
DVB_GUARD_INTERVAL_AUTO, DVB_GUARD_INTERVAL_1_32,
DVB_GUARD_INTERVAL_1_16, DVB_GUARD_INTERVAL_1_8,
DVB_GUARD_INTERVAL_1_4, DVB_GUARD_INTERVAL_1_128,
DVB_GUARD_INTERVAL_19_128, DVB_GUARD_INTERVAL_19_256);
dvb_mux_class_X(dvbt, ofdm, hierarchy_information, hier,
DVB_HIERARCHY_AUTO, DVB_HIERARCHY_NONE,
DVB_HIERARCHY_1, DVB_HIERARCHY_2, DVB_HIERARCHY_4
);
linuxdvb_mux_class_X(dvbt, ofdm, code_rate_HP, fechi,
DVB_FEC_AUTO,
DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4, DVB_FEC_4_5,
DVB_FEC_5_6, DVB_FEC_7_8
#if DVB_VER_ATLEAST(5,4)
, DVB_FEC_3_5
#endif
);
linuxdvb_mux_class_X(dvbt, ofdm, code_rate_LP, feclo,
DVB_FEC_AUTO,
DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4,
DVB_FEC_4_5, DVB_FEC_5_6, DVB_FEC_7_8
#if DVB_VER_ATLEAST(5,4)
, DVB_FEC_3_5
#endif
);
DVB_HIERARCHY_1, DVB_HIERARCHY_2, DVB_HIERARCHY_4);
dvb_mux_class_X(dvbt, ofdm, code_rate_HP, fechi,
DVB_FEC_AUTO, DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4,
DVB_FEC_3_5, DVB_FEC_4_5, DVB_FEC_5_6, DVB_FEC_7_8);
dvb_mux_class_X(dvbt, ofdm, code_rate_LP, feclo,
DVB_FEC_AUTO, DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4,
DVB_FEC_3_5, DVB_FEC_4_5, DVB_FEC_5_6, DVB_FEC_7_8);
#define dvb_mux_dvbt_class_delsys_get dvb_mux_class_delsys_get
#define dvb_mux_dvbt_class_delsys_set dvb_mux_class_delsys_set
#define linuxdvb_mux_dvbt_class_delsys_get linuxdvb_mux_class_delsys_get
#define linuxdvb_mux_dvbt_class_delsys_set linuxdvb_mux_class_delsys_set
static htsmsg_t *
linuxdvb_mux_dvbt_class_delsys_enum (void *o)
dvb_mux_dvbt_class_delsys_enum (void *o)
{
htsmsg_t *list = htsmsg_create_list();
#if DVB_VER_ATLEAST(5,0)
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBT));
#endif
#if DVB_VER_ATLEAST(5,4)
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBT2));
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_TURBO));
#endif
return list;
}
const idclass_t linuxdvb_mux_dvbt_class =
const idclass_t dvb_mux_dvbt_class =
{
.ic_super = &linuxdvb_mux_class,
.ic_class = "linuxdvb_mux_dvbt",
.ic_super = &dvb_mux_class,
.ic_class = "dvb_mux_dvbt",
.ic_caption = "Linux DVB-T Multiplex",
.ic_properties = (const property_t[]){
{
@ -225,7 +196,7 @@ const idclass_t linuxdvb_mux_dvbt_class =
.id = "frequency",
.name = "Frequency (Hz)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.dmc_fe_freq),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
},
{
MUX_PROP_STR("bandwidth", "Bandwidth", dvbt, bw, "AUTO")
@ -256,39 +227,30 @@ const idclass_t linuxdvb_mux_dvbt_class =
* DVB-C
*/
linuxdvb_mux_class_R(dvbc, modulation, qam,
dvb_mux_class_R(dvbc, modulation, qam,
DVB_MOD_QAM_AUTO, DVB_MOD_QAM_16, DVB_MOD_QAM_32,
DVB_MOD_QAM_64, DVB_MOD_QAM_128, DVB_MOD_QAM_256
);
linuxdvb_mux_class_X(dvbc, qam, fec_inner, fec,
DVB_MOD_QAM_64, DVB_MOD_QAM_128, DVB_MOD_QAM_256);
dvb_mux_class_X(dvbc, qam, fec_inner, fec,
DVB_FEC_AUTO, DVB_FEC_NONE,
DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4, DVB_FEC_4_5,
DVB_FEC_5_6, DVB_FEC_8_9
#if DVB_VER_ATLEAST(5,4)
, DVB_FEC_9_10
#endif
);
DVB_FEC_5_6, DVB_FEC_8_9, DVB_FEC_9_10);
#define linuxdvb_mux_dvbc_class_delsys_get linuxdvb_mux_class_delsys_get
#define linuxdvb_mux_dvbc_class_delsys_set linuxdvb_mux_class_delsys_set
#define dvb_mux_dvbc_class_delsys_get dvb_mux_class_delsys_get
#define dvb_mux_dvbc_class_delsys_set dvb_mux_class_delsys_set
static htsmsg_t *
linuxdvb_mux_dvbc_class_delsys_enum (void *o)
dvb_mux_dvbc_class_delsys_enum (void *o)
{
htsmsg_t *list = htsmsg_create_list();
#if DVB_VER_ATLEAST(5,0)
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBC_ANNEX_A));
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBC_ANNEX_B));
#if DVB_VER_ATLEAST(5,3)
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBC_ANNEX_C));
#endif
#endif
return list;
}
const idclass_t linuxdvb_mux_dvbc_class =
const idclass_t dvb_mux_dvbc_class =
{
.ic_super = &linuxdvb_mux_class,
.ic_class = "linuxdvb_mux_dvbc",
.ic_super = &dvb_mux_class,
.ic_class = "dvb_mux_dvbc",
.ic_caption = "Linux DVB-C Multiplex",
.ic_properties = (const property_t[]){
{
@ -299,14 +261,14 @@ const idclass_t linuxdvb_mux_dvbc_class =
.id = "frequency",
.name = "Frequency (Hz)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.dmc_fe_freq),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
},
{
.type = PT_U32,
.id = "symbolrate",
.name = "Symbol Rate (Sym/s)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.u.dmc_fe_qam.symbol_rate),
.off = offsetof(dvb_mux_t, lm_tuning.u.dmc_fe_qam.symbol_rate),
},
{
MUX_PROP_STR("constellation", "Constellation", dvbc, qam, "AUTO")
@ -318,31 +280,31 @@ const idclass_t linuxdvb_mux_dvbc_class =
}
};
linuxdvb_mux_class_X(dvbs, qpsk, fec_inner, fec,
dvb_mux_class_X(dvbs, qpsk, fec_inner, fec,
DVB_FEC_AUTO, DVB_FEC_NONE,
DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4, DVB_FEC_4_5,
DVB_FEC_5_6, DVB_FEC_7_8, DVB_FEC_8_9
#if DVB_VER_ATLEAST(5,4)
, DVB_FEC_3_5, DVB_FEC_9_10
#endif
);
DVB_FEC_1_2, DVB_FEC_2_3, DVB_FEC_3_4, DVB_FEC_3_5,
DVB_FEC_4_5, DVB_FEC_5_6, DVB_FEC_7_8, DVB_FEC_8_9,
DVB_FEC_9_10);
static const void *
linuxdvb_mux_dvbs_class_polarity_get (void *o)
dvb_mux_dvbs_class_polarity_get (void *o)
{
static const char *s;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
s = dvb_pol2str(lm->lm_tuning.u.dmc_fe_qpsk.polarisation);
return &s;
}
static int
linuxdvb_mux_dvbs_class_polarity_set (void *o, const void *s)
dvb_mux_dvbs_class_polarity_set (void *o, const void *s)
{
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
lm->lm_tuning.u.dmc_fe_qpsk.polarisation = dvb_str2pol((const char*)s);
return 1;
}
static htsmsg_t *
linuxdvb_mux_dvbs_class_polarity_enum (void *o)
dvb_mux_dvbs_class_polarity_enum (void *o)
{
htsmsg_t *list = htsmsg_create_list();
htsmsg_add_str(list, NULL, dvb_pol2str(DVB_POLARISATION_VERTICAL));
@ -353,57 +315,58 @@ linuxdvb_mux_dvbs_class_polarity_enum (void *o)
}
static const void *
linuxdvb_mux_dvbs_class_modulation_get ( void *o )
dvb_mux_dvbs_class_modulation_get ( void *o )
{
static const char *s;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
s = dvb_qam2str(lm->lm_tuning.dmc_fe_modulation);
return &s;
}
static int
linuxdvb_mux_dvbs_class_modulation_set (void *o, const void *s)
dvb_mux_dvbs_class_modulation_set (void *o, const void *s)
{
int mod = dvb_str2qam(s);
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
if (mod != lm->lm_tuning.dmc_fe_modulation) {
lm->lm_tuning.dmc_fe_modulation = mod;
return 1;
}
return 0;
}
static htsmsg_t *
linuxdvb_mux_dvbs_class_modulation_list ( void *o )
dvb_mux_dvbs_class_modulation_list ( void *o )
{
htsmsg_t *list = htsmsg_create_list();
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_QAM_AUTO));
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_AUTO));
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_QPSK));
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_QAM_16));
#if DVB_VER_ATLEAST(5,4)
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_PSK_8));
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_APSK_16));
htsmsg_add_str(list, NULL, dvb_qam2str(DVB_MOD_APSK_32));
#endif
return list;
}
#if DVB_VER_ATLEAST(5,0)
static const void *
linuxdvb_mux_dvbs_class_rolloff_get ( void *o )
dvb_mux_dvbs_class_rolloff_get ( void *o )
{
static const char *s;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
s = dvb_rolloff2str(lm->lm_tuning.dmc_fe_rolloff);
return &s;
}
static int
linuxdvb_mux_dvbs_class_rolloff_set ( void *o, const void *s )
dvb_mux_dvbs_class_rolloff_set ( void *o, const void *s )
{
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
lm->lm_tuning.dmc_fe_rolloff = dvb_str2rolloff(s);
return 1;
}
static htsmsg_t *
linuxdvb_mux_dvbs_class_rolloff_list ( void *o )
dvb_mux_dvbs_class_rolloff_list ( void *o )
{
htsmsg_t *list = htsmsg_create_list();
htsmsg_add_str(list, NULL, dvb_rolloff2str(DVB_ROLLOFF_35));
@ -416,22 +379,23 @@ linuxdvb_mux_dvbs_class_rolloff_list ( void *o )
}
static const void *
linuxdvb_mux_dvbs_class_pilot_get ( void *o )
dvb_mux_dvbs_class_pilot_get ( void *o )
{
static const char *s;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
s = dvb_pilot2str(lm->lm_tuning.dmc_fe_pilot);
return &s;
}
static int
linuxdvb_mux_dvbs_class_pilot_set ( void *o, const void *s )
dvb_mux_dvbs_class_pilot_set ( void *o, const void *s )
{
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
lm->lm_tuning.dmc_fe_pilot = dvb_str2pilot(s);
return 1;
}
static htsmsg_t *
linuxdvb_mux_dvbs_class_pilot_list ( void *o )
dvb_mux_dvbs_class_pilot_list ( void *o )
{
htsmsg_t *list = htsmsg_create_list();
htsmsg_add_str(list, NULL, dvb_pilot2str(DVB_PILOT_AUTO));
@ -439,12 +403,12 @@ linuxdvb_mux_dvbs_class_pilot_list ( void *o )
htsmsg_add_str(list, NULL, dvb_pilot2str(DVB_PILOT_OFF));
return list;
}
#endif
#define linuxdvb_mux_dvbs_class_delsys_get linuxdvb_mux_class_delsys_get
#define linuxdvb_mux_dvbs_class_delsys_set linuxdvb_mux_class_delsys_set
#define dvb_mux_dvbs_class_delsys_get dvb_mux_class_delsys_get
#define dvb_mux_dvbs_class_delsys_set dvb_mux_class_delsys_set
static htsmsg_t *
linuxdvb_mux_dvbs_class_delsys_enum (void *o)
dvb_mux_dvbs_class_delsys_enum (void *o)
{
htsmsg_t *list = htsmsg_create_list();
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_DVBS));
@ -453,10 +417,10 @@ linuxdvb_mux_dvbs_class_delsys_enum (void *o)
}
static const void *
linuxdvb_mux_dvbs_class_orbital_get ( void *o )
dvb_mux_dvbs_class_orbital_get ( void *o )
{
static char buf[256], *s = buf;
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
snprintf(buf, sizeof(buf), "%0.1f%c",
lm->lm_tuning.u.dmc_fe_qpsk.orbital_pos / 10.0,
lm->lm_tuning.u.dmc_fe_qpsk.orbital_dir);
@ -464,12 +428,12 @@ linuxdvb_mux_dvbs_class_orbital_get ( void *o )
}
static int
linuxdvb_mux_dvbs_class_orbital_set ( void *o, const void *s )
dvb_mux_dvbs_class_orbital_set ( void *o, const void *s )
{
int pos, save = 0;
char dir;
char *tmp = tvh_strdupa(s);
linuxdvb_mux_t *lm = o;
dvb_mux_t *lm = o;
dir = tmp[strlen(tmp)-1];
tmp[strlen(tmp)-1] = '\0';
@ -484,10 +448,10 @@ linuxdvb_mux_dvbs_class_orbital_set ( void *o, const void *s )
return save;
}
const idclass_t linuxdvb_mux_dvbs_class =
const idclass_t dvb_mux_dvbs_class =
{
.ic_super = &linuxdvb_mux_class,
.ic_class = "linuxdvb_mux_dvbs",
.ic_super = &dvb_mux_class,
.ic_class = "dvb_mux_dvbs",
.ic_caption = "Linux DVB-S Multiplex",
.ic_properties = (const property_t[]){
{
@ -498,14 +462,14 @@ const idclass_t linuxdvb_mux_dvbs_class =
.id = "frequency",
.name = "Frequency (kHz)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.dmc_fe_freq),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
},
{
.type = PT_U32,
.id = "symbolrate",
.name = "Symbol Rate (Sym/s)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.u.dmc_fe_qpsk.symbol_rate),
.off = offsetof(dvb_mux_t, lm_tuning.u.dmc_fe_qpsk.symbol_rate),
},
{
MUX_PROP_STR("polarisation", "Polarisation", dvbs, polarity, NULL)
@ -514,22 +478,21 @@ const idclass_t linuxdvb_mux_dvbs_class =
.type = PT_STR,
.id = "modulation",
.name = "Modulation",
.set = linuxdvb_mux_dvbs_class_modulation_set,
.get = linuxdvb_mux_dvbs_class_modulation_get,
.list = linuxdvb_mux_dvbs_class_modulation_list,
.set = dvb_mux_dvbs_class_modulation_set,
.get = dvb_mux_dvbs_class_modulation_get,
.list = dvb_mux_dvbs_class_modulation_list,
.def.s = "AUTO",
},
{
MUX_PROP_STR("fec", "FEC", dvbs, fec, "AUTO")
},
#if DVB_VER_ATLEAST(5,0)
{
.type = PT_STR,
.id = "rolloff",
.name = "Rolloff",
.set = linuxdvb_mux_dvbs_class_rolloff_set,
.get = linuxdvb_mux_dvbs_class_rolloff_get,
.list = linuxdvb_mux_dvbs_class_rolloff_list,
.set = dvb_mux_dvbs_class_rolloff_set,
.get = dvb_mux_dvbs_class_rolloff_get,
.list = dvb_mux_dvbs_class_rolloff_list,
.def.s = "AUTO"
},
{
@ -537,43 +500,41 @@ const idclass_t linuxdvb_mux_dvbs_class =
.id = "pilot",
.name = "Pilot",
.opts = PO_ADVANCED,
.set = linuxdvb_mux_dvbs_class_pilot_set,
.get = linuxdvb_mux_dvbs_class_pilot_get,
.list = linuxdvb_mux_dvbs_class_pilot_list,
.set = dvb_mux_dvbs_class_pilot_set,
.get = dvb_mux_dvbs_class_pilot_get,
.list = dvb_mux_dvbs_class_pilot_list,
},
#endif
{
.type = PT_STR,
.id = "orbital",
.name = "Orbital Pos.",
.set = linuxdvb_mux_dvbs_class_orbital_set,
.get = linuxdvb_mux_dvbs_class_orbital_get,
.set = dvb_mux_dvbs_class_orbital_set,
.get = dvb_mux_dvbs_class_orbital_get,
.opts = PO_ADVANCED | PO_RDONLY
},
{}
}
};
#define linuxdvb_mux_atsc_class_delsys_get linuxdvb_mux_class_delsys_get
#define linuxdvb_mux_atsc_class_delsys_set linuxdvb_mux_class_delsys_set
#define dvb_mux_atsc_class_delsys_get dvb_mux_class_delsys_get
#define dvb_mux_atsc_class_delsys_set dvb_mux_class_delsys_set
static htsmsg_t *
linuxdvb_mux_atsc_class_delsys_enum (void *o)
dvb_mux_atsc_class_delsys_enum (void *o)
{
htsmsg_t *list = htsmsg_create_list();
#if DVB_VER_ATLEAST(5,0)
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_ATSC));
htsmsg_add_str(list, NULL, dvb_delsys2str(DVB_SYS_ATSCMH));
#endif
return list;
}
linuxdvb_mux_class_R(atsc, modulation, qam,
dvb_mux_class_R(atsc, modulation, qam,
DVB_MOD_QAM_AUTO, DVB_MOD_QAM_256, DVB_MOD_VSB_8);
const idclass_t linuxdvb_mux_atsc_class =
const idclass_t dvb_mux_atsc_class =
{
.ic_super = &linuxdvb_mux_class,
.ic_class = "linuxdvb_mux_atsc",
.ic_super = &dvb_mux_class,
.ic_class = "dvb_mux_atsc",
.ic_caption = "Linux ATSC Multiplex",
.ic_properties = (const property_t[]){
{
@ -584,7 +545,7 @@ const idclass_t linuxdvb_mux_atsc_class =
.id = "frequency",
.name = "Frequency (kHz)",
.opts = PO_WRONCE,
.off = offsetof(linuxdvb_mux_t, lm_tuning.dmc_fe_freq),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
},
{
MUX_PROP_STR("modulation", "Modulation", atsc, qam, "AUTO")
@ -598,20 +559,20 @@ const idclass_t linuxdvb_mux_atsc_class =
* *************************************************************************/
static void
linuxdvb_mux_config_save ( mpegts_mux_t *mm )
dvb_mux_config_save ( mpegts_mux_t *mm )
{
htsmsg_t *c = htsmsg_create_map();
mpegts_mux_save(mm, c);
hts_settings_save(c, "input/linuxdvb/networks/%s/muxes/%s/config",
hts_settings_save(c, "input/dvb/networks/%s/muxes/%s/config",
idnode_uuid_as_str(&mm->mm_network->mn_id),
idnode_uuid_as_str(&mm->mm_id));
htsmsg_destroy(c);
}
static void
linuxdvb_mux_display_name ( mpegts_mux_t *mm, char *buf, size_t len )
dvb_mux_display_name ( mpegts_mux_t *mm, char *buf, size_t len )
{
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mm;
dvb_mux_t *lm = (dvb_mux_t*)mm;
dvb_network_t *ln = (dvb_network_t*)mm->mm_network;
uint32_t freq = lm->lm_tuning.dmc_fe_freq;
char pol[2] = { 0 };
@ -626,7 +587,7 @@ linuxdvb_mux_display_name ( mpegts_mux_t *mm, char *buf, size_t len )
}
static void
linuxdvb_mux_create_instances ( mpegts_mux_t *mm )
dvb_mux_create_instances ( mpegts_mux_t *mm )
{
mpegts_network_link_t *mnl;
LIST_FOREACH(mnl, &mm->mm_network->mn_inputs, mnl_mn_link) {
@ -637,11 +598,11 @@ linuxdvb_mux_create_instances ( mpegts_mux_t *mm )
}
static void
linuxdvb_mux_delete ( mpegts_mux_t *mm, int delconf )
dvb_mux_delete ( mpegts_mux_t *mm, int delconf )
{
/* Remove config */
if (delconf)
hts_settings_remove("input/linuxdvb/networks/%s/muxes/%s",
hts_settings_remove("input/dvb/networks/%s/muxes/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id),
idnode_uuid_as_str(&mm->mm_id));
@ -653,15 +614,15 @@ linuxdvb_mux_delete ( mpegts_mux_t *mm, int delconf )
* Creation/Config
* *************************************************************************/
linuxdvb_mux_t *
linuxdvb_mux_create0
dvb_mux_t *
dvb_mux_create0
( dvb_network_t *ln,
uint16_t onid, uint16_t tsid, const dvb_mux_conf_t *dmc,
const char *uuid, htsmsg_t *conf )
{
const idclass_t *idc;
mpegts_mux_t *mm;
linuxdvb_mux_t *lm;
dvb_mux_t *lm;
htsmsg_t *c, *e;
htsmsg_field_t *f;
mpegts_service_t *ts;
@ -669,23 +630,23 @@ linuxdvb_mux_create0
/* Class */
if (ln->ln_type == DVB_TYPE_S)
idc = &linuxdvb_mux_dvbs_class;
idc = &dvb_mux_dvbs_class;
else if (ln->ln_type == DVB_TYPE_C)
idc = &linuxdvb_mux_dvbc_class;
idc = &dvb_mux_dvbc_class;
else if (ln->ln_type == DVB_TYPE_T)
idc = &linuxdvb_mux_dvbt_class;
idc = &dvb_mux_dvbt_class;
else if (ln->ln_type == DVB_TYPE_ATSC)
idc = &linuxdvb_mux_atsc_class;
idc = &dvb_mux_atsc_class;
else {
tvherror("linuxdvb", "unknown FE type %d", ln->ln_type);
tvherror("dvb", "unknown FE type %d", ln->ln_type);
return NULL;
}
/* Create */
if (!(mm = mpegts_mux_create0(calloc(1, sizeof(linuxdvb_mux_t)), idc, uuid,
if (!(mm = mpegts_mux_create0(calloc(1, sizeof(dvb_mux_t)), idc, uuid,
(mpegts_network_t*)ln, onid, tsid, conf)))
return NULL;
lm = (linuxdvb_mux_t*)mm;
lm = (dvb_mux_t*)mm;
lm->lm_tuning.dmc_fe_type = ln->ln_type;
/* Tuning */
@ -695,17 +656,15 @@ linuxdvb_mux_create0
}
/* Callbacks */
lm->mm_delete = linuxdvb_mux_delete;
lm->mm_display_name = linuxdvb_mux_display_name;
lm->mm_config_save = linuxdvb_mux_config_save;
lm->mm_create_instances = linuxdvb_mux_create_instances;
lm->mm_delete = dvb_mux_delete;
lm->mm_display_name = dvb_mux_display_name;
lm->mm_config_save = dvb_mux_config_save;
lm->mm_create_instances = dvb_mux_create_instances;
/* Defaults */
if (dmc == NULL) {
lm->lm_tuning.dmc_fe_inversion = DVB_INVERSION_AUTO;
#if DVB_VER_ATLEAST(5,0)
lm->lm_tuning.dmc_fe_pilot = DVB_PILOT_AUTO;
#endif
}
/* No config */

View file

@ -78,10 +78,10 @@ dvb_network_class_scanfile_set ( void *o, const void *s )
/* Create */
LIST_FOREACH(dmc, &sfn->sfn_muxes, dmc_link) {
if (!(mm = dvb_network_find_mux(o, dmc))) {
mm = (mpegts_mux_t*)linuxdvb_mux_create0(o,
MPEGTS_ONID_NONE,
MPEGTS_TSID_NONE,
dmc, NULL, NULL);
mm = (mpegts_mux_t*)dvb_mux_create0(o,
MPEGTS_ONID_NONE,
MPEGTS_TSID_NONE,
dmc, NULL, NULL);
if (mm)
mm->mm_config_save(mm);
}
@ -217,7 +217,7 @@ dvb_network_find_mux
{
mpegts_mux_t *mm;
LIST_FOREACH(mm, &ln->mn_muxes, mm_network_link) {
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mm;
dvb_mux_t *lm = (dvb_mux_t*)mm;
if (abs(lm->lm_tuning.dmc_fe_freq
- dmc->dmc_fe_freq) > LINUXDVB_FREQ_TOL) continue;
if (lm->lm_tuning.u.dmc_fe_qpsk.polarisation != dmc->u.dmc_fe_qpsk.polarisation) continue;
@ -245,10 +245,10 @@ dvb_network_create_mux
dvb_network_t *ln = (dvb_network_t*)mm->mm_network;
mm = dvb_network_find_mux(ln, dmc);
if (!mm && ln->mn_autodiscovery) {
mm = (mpegts_mux_t*)linuxdvb_mux_create0(ln, onid, tsid, dmc, NULL, NULL);
mm = (mpegts_mux_t*)dvb_mux_create0(ln, onid, tsid, dmc, NULL, NULL);
save = 1;
} else if (mm) {
linuxdvb_mux_t *lm = (linuxdvb_mux_t*)mm;
dvb_mux_t *lm = (dvb_mux_t*)mm;
dmc->dmc_fe_freq = lm->lm_tuning.dmc_fe_freq;
// Note: keep original freq, else it can bounce around if diff transponders
// report it slightly differently.
@ -274,18 +274,14 @@ static const idclass_t *
dvb_network_mux_class
( mpegts_network_t *mn )
{
extern const idclass_t linuxdvb_mux_dvbt_class;
extern const idclass_t linuxdvb_mux_dvbc_class;
extern const idclass_t linuxdvb_mux_dvbs_class;
extern const idclass_t linuxdvb_mux_atsc_class;
if (idnode_is_instance(&mn->mn_id, &dvb_network_dvbt_class))
return &linuxdvb_mux_dvbt_class;
return &dvb_mux_dvbt_class;
if (idnode_is_instance(&mn->mn_id, &dvb_network_dvbc_class))
return &linuxdvb_mux_dvbc_class;
return &dvb_mux_dvbc_class;
if (idnode_is_instance(&mn->mn_id, &dvb_network_dvbs_class))
return &linuxdvb_mux_dvbs_class;
return &dvb_mux_dvbs_class;
if (idnode_is_instance(&mn->mn_id, &dvb_network_atsc_class))
return &linuxdvb_mux_atsc_class;
return &dvb_mux_atsc_class;
return NULL;
}
@ -295,8 +291,8 @@ dvb_network_mux_create2
{
dvb_network_t *ln = (dvb_network_t*)mn;
return (mpegts_mux_t*)
linuxdvb_mux_create0(ln, MPEGTS_ONID_NONE, MPEGTS_TSID_NONE,
NULL, NULL, conf);
dvb_mux_create0(ln, MPEGTS_ONID_NONE, MPEGTS_TSID_NONE,
NULL, NULL, conf);
}
/* ****************************************************************************
@ -349,7 +345,7 @@ dvb_network_create0
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_get_map_by_field(f))) continue;
if (!(e = htsmsg_get_map(e, "config"))) continue;
mm = (mpegts_mux_t *)linuxdvb_mux_create1(ln, f->hmf_name, e);
mm = (mpegts_mux_t *)dvb_mux_create1(ln, f->hmf_name, e);
if (mm && move)
mm->mm_config_save(mm);
}