summaryrefslogtreecommitdiffstats
path: root/libmpdemux/dvbin.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/dvbin.c')
-rw-r--r--libmpdemux/dvbin.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/libmpdemux/dvbin.c b/libmpdemux/dvbin.c
index 29fd74f712..92632eaf51 100644
--- a/libmpdemux/dvbin.c
+++ b/libmpdemux/dvbin.c
@@ -133,6 +133,7 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
const char *cbl_conf = "%a[^:]:%d:%a[^:]:%d:%a[^:]:%a[^:]:%a[^:]:%a[^:]\n";
const char *sat_conf = "%a[^:]:%d:%c:%d:%d:%a[^:]:%a[^:]\n";
const char *ter_conf = "%a[^:]:%d:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]:%a[^:]\n";
+ const char *atsc_conf = "%a[^:]:%d:%a[^:]:%a[^:]:%a[^:]\n";
mp_msg(MSGT_DEMUX, MSGL_V, "CONFIG_READ FILE: %s, type: %d\n", filename, type);
if((f=fopen(filename, "r"))==NULL)
@@ -180,6 +181,16 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
"CBL, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d",
list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate);
}
+#ifdef DVB_ATSC
+ else if(type == TUNER_ATSC)
+ {
+ fields = sscanf(line, atsc_conf,
+ &ptr->name, &ptr->freq, &mod, &vpid_str, &apid_str);
+ mp_msg(MSGT_DEMUX, MSGL_V,
+ "ATSC, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d\n",
+ list->NUM_CHANNELS, fields, ptr->name, ptr->freq);
+ }
+#endif
else //SATELLITE
{
fields = sscanf(line, sat_conf,
@@ -264,7 +275,11 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
else if(! strcmp(cr, "FEC_NONE"))
ptr->cr =FEC_NONE;
else ptr->cr =FEC_AUTO;
+ }
+
+ if((type == TUNER_TER) || (type == TUNER_CBL) || (type == TUNER_ATSC))
+ {
if(! strcmp(mod, "QAM_128"))
ptr->mod = QAM_128;
else if(! strcmp(mod, "QAM_256"))
@@ -275,9 +290,15 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
ptr->mod = QAM_32;
else if(! strcmp(mod, "QAM_16"))
ptr->mod = QAM_16;
- //else ptr->mod = QPSK;
- }
+#ifdef DVB_ATSC
+ else if(! strcmp(mod, "VSB_8") || ! strcmp(mod, "8VSB"))
+ ptr->mod = VSB_8;
+ else if(! strcmp(mod, "VSB_16") || !strcmp(mod, "16VSB"))
+ ptr->mod = VSB_16;
+ ptr->inv = INVERSION_AUTO;
+#endif
+ }
if(type == TUNER_TER)
{
@@ -487,6 +508,11 @@ int dvb_set_channel(dvb_priv_t *priv, int card, int n)
sprintf(priv->new_tuning, "%d|%09d|%d|%d|%d|%d", priv->card, channel->freq, channel->inv, channel->srate,
channel->cr, channel->mod);
break;
+#ifdef DVB_ATSC
+ case TUNER_ATSC:
+ sprintf(priv->new_tuning, "%d|%09d|%d", priv->card, channel->freq, channel->mod);
+ break;
+#endif
}
@@ -752,7 +778,7 @@ dvb_config_t *dvb_get_config()
type = dvb_get_tuner_type(fd);
close(fd);
- if(type != TUNER_SAT && type != TUNER_TER && type != TUNER_CBL)
+ if(type != TUNER_SAT && type != TUNER_TER && type != TUNER_CBL && type != TUNER_ATSC)
{
mp_msg(MSGT_DEMUX, MSGL_V, "DVB_CONFIG, can't detect tuner type of card %d, skipping\n", i);
continue;
@@ -769,6 +795,9 @@ dvb_config_t *dvb_get_config()
case TUNER_SAT:
conf_file = get_path("channels.conf.sat");
break;
+ case TUNER_ATSC:
+ conf_file = get_path("channels.conf.atsc");
+ break;
}
if((access(conf_file, F_OK | R_OK) != 0))