summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-08-27 17:08:58 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-08-27 17:08:58 +0000
commit78c69838c0135eb16942d96fe3c5f9754096e8d8 (patch)
tree7eb517cd282f165ae918b61d6bd482ea7bf3bb3e /libmpdemux
parent9bbeb0f65215e329b5b1cb51783ac20177a2a259 (diff)
downloadmpv-78c69838c0135eb16942d96fe3c5f9754096e8d8.tar.bz2
mpv-78c69838c0135eb16942d96fe3c5f9754096e8d8.tar.xz
This patch fixes:
1) if channels (in the list) are invalid excludes them 2) on encrypted/unreadable channels mplayer goes to the next/previous 3) when changing channel uninit all components but stream and input. Nico <nsabbi@libero.it> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10709 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/dvbin.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/libmpdemux/dvbin.c b/libmpdemux/dvbin.c
index fc5dd6c13c..c6437c1b1a 100644
--- a/libmpdemux/dvbin.c
+++ b/libmpdemux/dvbin.c
@@ -156,9 +156,10 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
row_count = 0;
while(! feof(f) && row_count < 512)
{
- if( fgets(line, CHANNEL_LINE_LEN, f) == NULL ) continue;
+ if( fgets(line, CHANNEL_LINE_LEN, f) == NULL )
+ continue;
- if(line[0] == '#')
+ if((line[0] == '#') || (strlen(line) == 0))
continue;
ptr = &(list->channels[list->NUM_CHANNELS]);
@@ -168,12 +169,22 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
fields = sscanf(line, ter_conf,
&ptr->name, &ptr->freq, &inv, &bw, &cr, &tmp_lcr, &mod,
&transm, &gi, &tmp_hier, &ptr->vpid, &ptr->apid1);
+ /*
+ mp_msg(MSGT_DEMUX, MSGL_V,
+ "NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, VPID: %d, APID1: %d\n",
+ list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->vpid, ptr->apid1);
+ */
}
else if(type == TUNER_CBL)
{
fields = sscanf(line, cbl_conf,
&ptr->name, &ptr->freq, &inv, &ptr->srate,
&cr, &mod, &ptr->vpid, &ptr->apid1);
+ /*
+ mp_msg(MSGT_DEMUX, MSGL_V,
+ "NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d, VPID: %d, APID1: %d\n",
+ list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate, ptr->vpid, ptr->apid1);
+ */
}
else //SATELLITE
{
@@ -185,11 +196,15 @@ static dvb_channels_list *dvb_get_channels(char *filename, int type)
ptr->srate *= 1000UL;
ptr->tone = -1;
mp_msg(MSGT_DEMUX, MSGL_V,
- "NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d, POL: %c, DISEQC: %d, TONE: %d, VPID: %d, APID1: %d, APID2: %d, TPID: %d, PROGID: %d, NUM: %d\n",
- fields, ptr->name, ptr->freq, ptr->srate, ptr->pol, ptr->diseqc, ptr->tone, ptr->vpid, ptr->apid1, ptr->apid2, ptr->tpid, ptr->progid, list->NUM_CHANNELS);
+ "NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d, POL: %c, DISEQC: %d, TONE: %d, VPID: %d, APID1: %d, APID2: %d, TPID: %d, PROGID: %d\n",
+ list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate, ptr->pol, ptr->diseqc, ptr->tone, ptr->vpid, ptr->apid1, ptr->apid2, ptr->tpid, ptr->progid);
}
+ if(((ptr->vpid <= 0) && (ptr->apid1 <=0)) || (ptr->freq == 0))
+ continue;
+
+
if((type == TUNER_TER) || (type == TUNER_CBL))
{
if(! strcmp(inv, "INVERSION_ON"))