Now handling 'turbo fec' transponders

This commit is contained in:
Klaus Schmidinger 2010-04-25 13:05:37 +02:00
parent 515966cdea
commit b79436fd76
3 changed files with 15 additions and 5 deletions

View File

@ -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 <frostworks@gmx.de>
for adding cRecordingInfo::GetEvent()

11
HISTORY
View File

@ -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.

View File

@ -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()))