diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2004-01-18 10:09:47 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2004-01-18 10:09:47 +0100 |
commit | dac9932ef0b219bc69b73d9d15d8c539de961045 (patch) | |
tree | b5a83e8290fd253f2e16720bfa5ff0cdcebeb1c6 | |
parent | 043fe49ff812c986ba478a3a9a8e00ce612c83f4 (diff) | |
download | vdr-dac9932ef0b219bc69b73d9d15d8c539de961045.tar.gz vdr-dac9932ef0b219bc69b73d9d15d8c539de961045.tar.bz2 |
Fixed some out of bounds parameter settings when scanning NITs for cable and satellite transponders
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | nit.c | 10 |
2 files changed, 7 insertions, 5 deletions
@@ -2602,3 +2602,5 @@ Video Disk Recorder Revision History - Excess blanks in channel names read from the SDT are now removed. - Fixed wrong parameter settings when scanning NITs for terrestrial transponders (thanks to Christian Tramnitz for pointing out this one). +- Fixed some out of bounds parameter settings when scanning NITs for cable + and satellite transponders. @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.c 1.2 2004/01/18 09:49:55 kls Exp $ + * $Id: nit.c 1.3 2004/01/18 10:09:47 kls Exp $ */ #include "nit.h" @@ -46,7 +46,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length int Frequency = BCD2INT(sd->getFrequency()) / 100; static char Polarizations[] = { 'h', 'v', 'l', 'r' }; char Polarization = Polarizations[sd->getPolarization()]; - static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE }; + static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE }; int CodeRate = CodeRates[sd->getFecInner()]; int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10; bool found = false; @@ -72,10 +72,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length int Source = cSource::FromData(cSource::stCable); int Frequency = BCD2INT(sd->getFrequency()) / 10; //XXX FEC_outer??? - static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE, FEC_NONE }; + static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE }; int CodeRate = CodeRates[sd->getFecInner()]; - static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256 }; - int Modulation = Modulations[sd->getModulation()]; + static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO }; + int Modulation = Modulations[min(sd->getModulation(), 6)]; int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10; bool found = false; for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { |