diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 47747414..c004c078 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2528,6 +2528,7 @@ Derek Kelly (user.vdr@gmail.com) units for updating sources.conf for reporting a problem where the frame rate was not detected correctly + for testing the implementation of FE_CAN_TURBO_FEC Marcel Unbehaun for adding cRecordingInfo::GetEvent() diff --git a/HISTORY b/HISTORY index b3f4a535..ef7f1c43 100644 --- a/HISTORY +++ b/HISTORY @@ -6411,7 +6411,7 @@ Video Disk Recorder Revision History - The new setup option "Folders in timer menu" controls whether the file names in the timer menu are shown with their full folder path. -2010-04-18: Version 1.7.15 +2010-04-25: Version 1.7.15 - Added Macedonian language texts (thanks to Dimitar Petrovski). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). @@ -6437,3 +6437,12 @@ Video Disk Recorder Revision History spared. - Fixed generating PMT language descriptors for multi language PIDs (thanks to Rolf Ahrenberg). +- Transponders that use "8psk turbo fec" (a non-standard mode used by North American + providers) are now identified by assuming that all 8psk transponders on DVB-S use + "turbo fec". In order to determine whether a certain device can handle "turbo fec", + the new driver flag FE_CAN_TURBO_FEC is checked. If your device can handle "turbo + fec", and your driver doesn't have that flag, yet, you can apply the patch from + ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-add-FE_CAN_TURBO_FEC.diff. A temporary + macro in dvbdevice.c defines the flag for all those who don't need this in the + driver, so that they can continue using an unmodified driver. + Thanks to Derek Kelly for testing this. diff --git a/dvbdevice.c b/dvbdevice.c index d5310b5b..0d483d52 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 2.36 2010/04/11 10:47:00 kls Exp $ + * $Id: dvbdevice.c 2.37 2010/04/25 12:36:24 kls Exp $ */ #include "dvbdevice.h" @@ -21,7 +21,7 @@ #include "menuitems.h" #include "sourceparams.h" -#define FE_CAN_PSK_8 0x8000000 // TODO: remove this once it is defined in the driver +#define FE_CAN_TURBO_FEC 0x8000000 // TODO: remove this once it is defined in the driver #define DVBS_TUNE_TIMEOUT 9000 //ms #define DVBS_LOCK_TIMEOUT 2000 //ms @@ -712,7 +712,7 @@ cDvbDevice::cDvbDevice(int Adapter, int Frontend) if (frontendInfo.caps & FE_CAN_QAM_256) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_256, ModulationValues)); } if (frontendInfo.caps & FE_CAN_8VSB) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_8, ModulationValues)); } if (frontendInfo.caps & FE_CAN_16VSB) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_16, ModulationValues)); } - if (frontendInfo.caps & FE_CAN_PSK_8) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(PSK_8, ModulationValues)); } + if (frontendInfo.caps & FE_CAN_TURBO_FEC){numProvidedSystems++; p += sprintf(p, ",%s", "TURBO FEC"); } if (p != Modulations) p = Modulations + 1; // skips first ',' else @@ -922,7 +922,7 @@ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const dtp.Modulation() == QAM_AUTO && !(frontendInfo.caps & FE_CAN_QAM_AUTO) || dtp.Modulation() == VSB_8 && !(frontendInfo.caps & FE_CAN_8VSB) || dtp.Modulation() == VSB_16 && !(frontendInfo.caps & FE_CAN_16VSB) || - dtp.Modulation() == PSK_8 && !(frontendInfo.caps & FE_CAN_PSK_8)) + dtp.Modulation() == PSK_8 && dtp.System() == SYS_DVBS && !(frontendInfo.caps & FE_CAN_TURBO_FEC)); // "turbo fec" is a non standard FEC used by North American broadcasters - this is a best guess to determine this conditin return false; // requires modulation system which frontend doesn't provide if (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(CardIndex() + 1, Channel->Source(), Channel->Frequency(), dtp.Polarization()))