diff -Naur main/libmpdemux/dvbin.c main-new/libmpdemux/dvbin.c --- main/libmpdemux/dvbin.c 2003-08-11 02:02:46.000000000 +0200 +++ main-new/libmpdemux/dvbin.c 2003-08-25 22:36:21.000000000 +0200 @@ -156,9 +156,10 @@ 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 @@ 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 @@ 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")) @@ -206,14 +221,14 @@ ptr->cr =FEC_2_3; else if(! strcmp(cr, "FEC_3_4")) ptr->cr =FEC_3_4; -#ifdef HAVE_DVB_HEAD + #ifdef HAVE_DVB_HEAD else if(! strcmp(cr, "FEC_4_5")) ptr->cr =FEC_4_5; else if(! strcmp(cr, "FEC_6_7")) ptr->cr =FEC_6_7; else if(! strcmp(cr, "FEC_8_9")) ptr->cr =FEC_8_9; -#endif + #endif else if(! strcmp(cr, "FEC_5_6")) ptr->cr =FEC_5_6; else if(! strcmp(cr, "FEC_7_8")) @@ -222,6 +237,7 @@ ptr->cr =FEC_NONE; else ptr->cr =FEC_AUTO; + if(! strcmp(mod, "QAM_128")) ptr->mod = QAM_128; else if(! strcmp(mod, "QAM_256")) diff -Naur main/mplayer.c main-new/mplayer.c --- main/mplayer.c 2003-08-25 11:08:06.000000000 +0200 +++ main-new/mplayer.c 2003-08-25 22:44:00.000000000 +0200 @@ -100,6 +100,7 @@ #ifdef HAS_DVBIN_SUPPORT #include "libmpdemux/dvbin.h" +static int last_dvb_step = 1; #endif @@ -1532,6 +1533,27 @@ if(!sh_video && !sh_audio){ mp_msg(MSGT_CPLAYER,MSGL_FATAL, MSGTR_NoStreamFound); +#ifdef HAS_DVBIN_SUPPORT + if((stream->type == STREAMTYPE_DVB) && stream->priv) + { + dvb_priv_t *priv = (dvb_priv_t*) stream->priv; + if(priv->is_on) + { + int dir; + int v = last_dvb_step; + if(v > 0) + dir = DVB_CHANNEL_HIGHER; + else + dir = DVB_CHANNEL_LOWER; + + if(dvb_step_channel(priv, dir)) + { + uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); + goto goto_open_demuxer; + } + } + } +#endif goto goto_next_file; // exit_player(MSGTR_Exit_error); } @@ -2868,7 +2890,8 @@ { int dir; int v = cmd->args[0].v.i; - + + last_dvb_step = v; if(v > 0) dir = DVB_CHANNEL_HIGHER; else @@ -2877,7 +2900,7 @@ if(dvb_step_channel(priv, dir)) { - uninit_player(INITED_ALL-(INITED_STREAM)); + uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); printf("UNINIT COMPLETE\n"); goto goto_open_demuxer; } @@ -2904,9 +2927,14 @@ dvb_priv_t *priv = (dvb_priv_t*) stream->priv; if(priv->is_on) { + if(priv->list->current <= cmd->args[0].v.i) + last_dvb_step = 1; + else + last_dvb_step = -1; + if(dvb_set_channel(priv, cmd->args[0].v.i)) { - uninit_player(INITED_ALL-(INITED_STREAM)); + uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); goto goto_open_demuxer; } }