Implemented handling of DVB-S2

This commit is contained in:
Klaus Schmidinger 2008-01-27 14:35:54 +01:00
parent f8274a9a9f
commit d0af2f90e7
37 changed files with 1184 additions and 578 deletions

View File

@ -1157,6 +1157,7 @@ Reinhard Nissl <rnissl@gmx.de>
for fixing assembling PS1 packets in cTS2PES::instant_repack()
for a patch that was used to fix handling small PES packets that caused subtitles
to be displayed late in live mode
for a patch that was used to implement handling of DVB-S2
Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the
@ -1445,6 +1446,7 @@ Marco Schl
for fixing the description of DeviceSetAvailableTrack() and cReceiver(), and adding
an example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
for fixing checking compatibility mode for old subtitles plugin
for a patch that was used to implement handling of DVB-S2
Jürgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP

View File

@ -5564,7 +5564,7 @@ Video Disk Recorder Revision History
- Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
channel (thanks to Benjamin Hess).
2008-01-25: Version 1.5.14
2008-01-27: Version 1.5.14
- Fixed the Play function in the pictures plugin.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
@ -5572,3 +5572,6 @@ Video Disk Recorder Revision History
- The new option --localedir can be used to set the locale directory at runtime
(based on a patch from Stefan Huelswitt).
- Fixed finding new transponders (thanks to Winfried Köhler).
- Implemented handling of DVB-S2 (thanks to Marco Schlüßler and Reinhald Nissl
for a patch that was used to implement this). VDR now requires the "multiproto"
DVB driver, e.g. from http://jusst.de/hg/multiproto.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.c 1.55 2007/10/12 14:40:53 kls Exp $
* $Id: channels.c 1.56 2008/01/27 13:59:53 kls Exp $
*/
#include "channels.h"
@ -21,67 +21,114 @@
// -- Channel Parameter Maps -------------------------------------------------
const tChannelParameterMap InversionValues[] = {
{ 0, INVERSION_OFF },
{ 1, INVERSION_ON },
{ 999, INVERSION_AUTO },
{ 0, DVBFE_INVERSION_OFF, trNOOP("off") },
{ 1, DVBFE_INVERSION_ON, trNOOP("on") },
{ 999, DVBFE_INVERSION_AUTO },
{ -1 }
};
const tChannelParameterMap BandwidthValues[] = {
{ 6, BANDWIDTH_6_MHZ },
{ 7, BANDWIDTH_7_MHZ },
{ 8, BANDWIDTH_8_MHZ },
{ 999, BANDWIDTH_AUTO },
{ 5, DVBFE_BANDWIDTH_5_MHZ, "5 MHz" },
{ 6, DVBFE_BANDWIDTH_6_MHZ, "6 MHz" },
{ 7, DVBFE_BANDWIDTH_7_MHZ, "7 MHz" },
{ 8, DVBFE_BANDWIDTH_8_MHZ, "8 MHz" },
{ 999, DVBFE_BANDWIDTH_AUTO },
{ -1 }
};
const tChannelParameterMap CoderateValues[] = {
{ 0, FEC_NONE },
{ 12, FEC_1_2 },
{ 23, FEC_2_3 },
{ 34, FEC_3_4 },
{ 45, FEC_4_5 },
{ 56, FEC_5_6 },
{ 67, FEC_6_7 },
{ 78, FEC_7_8 },
{ 89, FEC_8_9 },
{ 999, FEC_AUTO },
{ 0, DVBFE_FEC_NONE, trNOOP("none") },
{ 12, DVBFE_FEC_1_2, "1/2" },
{ 13, DVBFE_FEC_1_3, "1/3" },
{ 14, DVBFE_FEC_1_4, "1/4" },
{ 23, DVBFE_FEC_2_3, "2/3" },
{ 25, DVBFE_FEC_2_5, "2/5" },
{ 34, DVBFE_FEC_3_4, "3/4" },
{ 35, DVBFE_FEC_3_5, "3/5" },
{ 45, DVBFE_FEC_4_5, "4/5" },
{ 56, DVBFE_FEC_5_6, "5/6" },
{ 67, DVBFE_FEC_6_7, "6/7" },
{ 78, DVBFE_FEC_7_8, "7/8" },
{ 89, DVBFE_FEC_8_9, "8/9" },
{ 910, DVBFE_FEC_9_10, "9/10" },
{ 999, DVBFE_FEC_AUTO },
{ -1 }
};
const tChannelParameterMap ModulationValues[] = {
{ 0, QPSK },
{ 16, QAM_16 },
{ 32, QAM_32 },
{ 64, QAM_64 },
{ 128, QAM_128 },
{ 256, QAM_256 },
{ 999, QAM_AUTO },
{ 0, DVBFE_MOD_NONE, trNOOP("none") },
{ 4, DVBFE_MOD_QAM4, "QAM4" },
{ 16, DVBFE_MOD_QAM16, "QAM16" },
{ 32, DVBFE_MOD_QAM32, "QAM32" },
{ 64, DVBFE_MOD_QAM64, "QAM64" },
{ 128, DVBFE_MOD_QAM128, "QAM128" },
{ 256, DVBFE_MOD_QAM256, "QAM256" },
{ 512, DVBFE_MOD_QAM512, "QAM512" },
{1024, DVBFE_MOD_QAM1024, "QAM1024" },
{ 1, DVBFE_MOD_BPSK, "BPSK" },
{ 2, DVBFE_MOD_QPSK, "QPSK" },
{ 3, DVBFE_MOD_OQPSK, "OQPSK" },
{ 5, DVBFE_MOD_8PSK, "8PSK" },
{ 6, DVBFE_MOD_16APSK, "16APSK" },
{ 7, DVBFE_MOD_32APSK, "32APSK" },
{ 8, DVBFE_MOD_OFDM, "OFDM" },
{ 9, DVBFE_MOD_COFDM, "COFDM" },
{ 10, DVBFE_MOD_VSB8, "VSB8" },
{ 11, DVBFE_MOD_VSB16, "VSB16" },
{ 998, DVBFE_MOD_QAMAUTO, "QAMAUTO" },
{ 999, DVBFE_MOD_AUTO },
{ -1 }
};
const tChannelParameterMap SystemValues[] = {
{ 0, DVBFE_DELSYS_DVBS, "DVB-S" },
{ 1, DVBFE_DELSYS_DVBS2, "DVB-S2" },
{ -1 }
};
const tChannelParameterMap TransmissionValues[] = {
{ 2, TRANSMISSION_MODE_2K },
{ 8, TRANSMISSION_MODE_8K },
{ 999, TRANSMISSION_MODE_AUTO },
{ 2, DVBFE_TRANSMISSION_MODE_2K, "2K" },
{ 4, DVBFE_TRANSMISSION_MODE_4K, "4K" },
{ 8, DVBFE_TRANSMISSION_MODE_8K, "8K" },
{ 999, DVBFE_TRANSMISSION_MODE_AUTO },
{ -1 }
};
const tChannelParameterMap GuardValues[] = {
{ 4, GUARD_INTERVAL_1_4 },
{ 8, GUARD_INTERVAL_1_8 },
{ 16, GUARD_INTERVAL_1_16 },
{ 32, GUARD_INTERVAL_1_32 },
{ 999, GUARD_INTERVAL_AUTO },
{ 4, DVBFE_GUARD_INTERVAL_1_4, "1/4" },
{ 8, DVBFE_GUARD_INTERVAL_1_8, "1/8" },
{ 16, DVBFE_GUARD_INTERVAL_1_16, "1/16" },
{ 32, DVBFE_GUARD_INTERVAL_1_32, "1/32" },
{ 999, DVBFE_GUARD_INTERVAL_AUTO },
{ -1 }
};
const tChannelParameterMap HierarchyValues[] = {
{ 0, HIERARCHY_NONE },
{ 1, HIERARCHY_1 },
{ 2, HIERARCHY_2 },
{ 4, HIERARCHY_4 },
{ 999, HIERARCHY_AUTO },
{ 0, DVBFE_HIERARCHY_OFF, trNOOP("off") },
{ 1, DVBFE_HIERARCHY_ON, trNOOP("on") },
{ 999, DVBFE_HIERARCHY_AUTO },
{ -1 }
};
const tChannelParameterMap AlphaValues[] = {
{ 0, 0 },
{ 1, DVBFE_ALPHA_1 },
{ 2, DVBFE_ALPHA_2 },
{ 4, DVBFE_ALPHA_4 },
{ -1 }
};
const tChannelParameterMap PriorityValues[] = {
{ 0, DVBFE_STREAM_PRIORITY_HP, trNOOP("high") },
{ 1, DVBFE_STREAM_PRIORITY_LP, trNOOP("low") },
{ -1 }
};
const tChannelParameterMap RollOffValues[] = {
{ 0, DVBFE_ROLLOFF_UNKNOWN },
{ 20, DVBFE_ROLLOFF_20, "0.20" },
{ 25, DVBFE_ROLLOFF_25, "0.25" },
{ 35, DVBFE_ROLLOFF_35, "0.35" },
{ -1 }
};
@ -107,11 +154,14 @@ int DriverIndex(int Value, const tChannelParameterMap *Map)
return -1;
}
int MapToUser(int Value, const tChannelParameterMap *Map)
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String)
{
int n = DriverIndex(Value, Map);
if (n >= 0)
if (n >= 0) {
if (String)
*String = tr(Map[n].userString);
return Map[n].userValue;
}
return -1;
}
@ -167,14 +217,18 @@ cChannel::cChannel(void)
provider = strdup("");
portalName = strdup("");
memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
inversion = INVERSION_AUTO;
bandwidth = BANDWIDTH_AUTO;
coderateH = FEC_AUTO;
coderateL = FEC_AUTO;
modulation = QAM_AUTO;
transmission = TRANSMISSION_MODE_AUTO;
guard = GUARD_INTERVAL_AUTO;
hierarchy = HIERARCHY_AUTO;
inversion = DVBFE_INVERSION_AUTO;
bandwidth = DVBFE_BANDWIDTH_AUTO;
coderateH = DVBFE_FEC_AUTO;
coderateL = DVBFE_FEC_AUTO;
modulation = DVBFE_MOD_AUTO;
system = DVBFE_DELSYS_DVBS;
transmission = DVBFE_TRANSMISSION_MODE_AUTO;
guard = DVBFE_GUARD_INTERVAL_AUTO;
hierarchy = DVBFE_HIERARCHY_AUTO;
alpha = 0;
priority = DVBFE_STREAM_PRIORITY_HP;
rollOff = DVBFE_ROLLOFF_UNKNOWN;
modification = CHANNELMOD_NONE;
schedule = NULL;
linkChannels = NULL;
@ -277,13 +331,17 @@ void cChannel::CopyTransponderData(const cChannel *Channel)
coderateH = Channel->coderateH;
coderateL = Channel->coderateL;
modulation = Channel->modulation;
system = Channel->system;
transmission = Channel->transmission;
guard = Channel->guard;
hierarchy = Channel->hierarchy;
alpha = Channel->alpha;
priority = Channel->priority;
rollOff = Channel->rollOff;
}
}
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH)
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff)
{
// Workarounds for broadcaster stupidity:
// Some providers broadcast the transponder frequency of their channels with two different
@ -297,19 +355,22 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
if (abs(srate - Srate) <= 1)
Srate = srate;
if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH) {
if (Number()) {
dsyslog("changing transponder data of channel %d from %s:%d:%c:%d:%d to %s:%d:%c:%d:%d", Number(), *cSource::ToString(source), frequency, polarization, srate, coderateH, *cSource::ToString(Source), Frequency, Polarization, Srate, CoderateH);
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH || modulation != Modulation || system != System || rollOff != RollOff) {
cString OldParameters = ParametersToString();
source = Source;
frequency = Frequency;
polarization = Polarization;
srate = Srate;
coderateH = CoderateH;
modulation = QPSK;
modulation = Modulation;
system = System;
rollOff = RollOff;
schedule = NULL;
if (Number()) {
dsyslog("changing transponder data of channel %d from %d:%s:%s:%d to %d:%s:%s:%d", Number(), frequency, *OldParameters, *cSource::ToString(source), srate, Frequency, *ParametersToString(), *cSource::ToString(Source), Srate);
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
}
return true;
}
@ -317,29 +378,26 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
bool cChannel::SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH)
{
if (source != Source || frequency != Frequency || modulation != Modulation || srate != Srate || coderateH != CoderateH) {
if (Number()) {
dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d to %s:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, modulation, srate, coderateH, *cSource::ToString(Source), Frequency, Modulation, Srate, CoderateH);
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
cString OldParameters = ParametersToString();
source = Source;
frequency = Frequency;
modulation = Modulation;
srate = Srate;
coderateH = CoderateH;
schedule = NULL;
if (Number()) {
dsyslog("changing transponder data of channel %d from %d:%s:%s:%d to %d:%s:%s:%d", Number(), frequency, *OldParameters, *cSource::ToString(source), srate, Frequency, *ParametersToString(), *cSource::ToString(Source), Srate);
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
}
return true;
}
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission)
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission, int Alpha, int Priority)
{
if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission) {
if (Number()) {
dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d:%d:%d:%d:%d to %s:%d:%d:%d:%d:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, bandwidth, modulation, hierarchy, coderateH, coderateL, guard, transmission, *cSource::ToString(Source), Frequency, Bandwidth, Modulation, Hierarchy, CoderateH, CoderateL, Guard, Transmission);
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission || alpha != Alpha || priority != Priority) {
cString OldParameters = ParametersToString();
source = Source;
frequency = Frequency;
bandwidth = Bandwidth;
@ -349,7 +407,14 @@ bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth,
coderateL = CoderateL;
guard = Guard;
transmission = Transmission;
alpha = Alpha;
priority = Priority;
schedule = NULL;
if (Number()) {
dsyslog("changing transponder data of channel %d from %d:%s:%s to %d:%s:%s", Number(), frequency, *OldParameters, *cSource::ToString(source), Frequency, *ParametersToString(), *cSource::ToString(Source));
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
}
return true;
}
@ -597,13 +662,17 @@ cString cChannel::ParametersToString(void) const
char *q = buffer;
*q = 0;
ST(" S ") q += sprintf(q, "%c", polarization);
ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
ST(" T") q += PrintParameter(q, 'A', MapToUser(alpha, AlphaValues));
ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
ST("CST") q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
ST(" T") q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
ST("C T") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
ST(" T") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
ST("CST") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
ST(" S ") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
ST(" T") q += PrintParameter(q, 'P', MapToUser(priority, PriorityValues));
ST(" S ") q += PrintParameter(q, 'S', MapToUser(system, SystemValues));
ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
return buffer;
}
@ -628,6 +697,7 @@ bool cChannel::StringToParameters(const char *s)
{
while (s && *s) {
switch (toupper(*s)) {
case 'A': s = ParseParameter(s, alpha, AlphaValues); break;
case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
@ -636,7 +706,11 @@ bool cChannel::StringToParameters(const char *s)
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
case 'L': polarization = *s++; break;
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
case 'Z':// for compatibility with the original DVB-S2 patch - may be removed in future versions
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
case 'P': s = ParseParameter(s, priority, PriorityValues); break;
case 'R': polarization = *s++; break;
case 'S': s = ParseParameter(s, system, SystemValues); break;
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
case 'V': polarization = *s++; break;
case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.h 1.45 2007/09/02 10:23:11 kls Exp $
* $Id: channels.h 1.46 2008/01/26 16:04:26 kls Exp $
*/
#ifndef __CHANNELS_H
@ -50,10 +50,10 @@
struct tChannelParameterMap {
int userValue;
int driverValue;
const char *userString;
};
//XXX into cChannel???
int MapToUser(int Value, const tChannelParameterMap *Map);
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String = NULL);
int MapToDriver(int Value, const tChannelParameterMap *Map);
int UserIndex(int Value, const tChannelParameterMap *Map);
int DriverIndex(int Value, const tChannelParameterMap *Map);
@ -62,9 +62,13 @@ extern const tChannelParameterMap InversionValues[];
extern const tChannelParameterMap BandwidthValues[];
extern const tChannelParameterMap CoderateValues[];
extern const tChannelParameterMap ModulationValues[];
extern const tChannelParameterMap SystemValues[];
extern const tChannelParameterMap TransmissionValues[];
extern const tChannelParameterMap GuardValues[];
extern const tChannelParameterMap HierarchyValues[];
extern const tChannelParameterMap AlphaValues[];
extern const tChannelParameterMap PriorityValues[];
extern const tChannelParameterMap RollOffValues[];
struct tChannelID {
private:
@ -140,9 +144,13 @@ private:
int coderateH;
int coderateL;
int modulation;
int system;
int transmission;
int guard;
int hierarchy;
int alpha;
int priority;
int rollOff;
int __EndData__;
int modification;
mutable const cSchedule *schedule;
@ -194,9 +202,13 @@ public:
int CoderateH(void) const { return coderateH; }
int CoderateL(void) const { return coderateL; }
int Modulation(void) const { return modulation; }
int System(void) const { return system; }
int Transmission(void) const { return transmission; }
int Guard(void) const { return guard; }
int Hierarchy(void) const { return hierarchy; }
int Alpha(void) const { return alpha; }
int Priority(void) const { return priority; }
int RollOff(void) const { return rollOff; }
const cLinkChannels* LinkChannels(void) const { return linkChannels; }
const cChannel *RefChannel(void) const { return refChannel; }
bool IsCable(void) const { return cSource::IsCable(source); }
@ -206,9 +218,9 @@ public:
bool HasTimer(void) const;
int Modification(int Mask = CHANNELMOD_ALL);
void CopyTransponderData(const cChannel *Channel);
bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH);
bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff);
bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH);
bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission);
bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission, int Alpha, int Priority);
void SetId(int Nid, int Tid, int Sid, int Rid = 0);
void SetName(const char *Name, const char *ShortName, const char *Provider);
void SetPortalName(const char *PortalName);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 1.148 2007/11/17 15:39:28 kls Exp $
* $Id: device.c 1.149 2008/01/27 10:40:46 kls Exp $
*/
#include "device.h"
@ -359,6 +359,21 @@ cDevice *cDevice::GetDevice(int Index)
return (0 <= Index && Index < numDevices) ? device[Index] : NULL;
}
static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
{
int MaxNumProvidedSystems = 1 << AvailableBits;
int NumProvidedSystems = Device->NumProvidedSystems();
if (NumProvidedSystems > MaxNumProvidedSystems) {
esyslog("ERROR: device %d supports %d modulation systems but cDevice::GetDevice() currently only supports %d delivery systems which should be fixed", Device->CardIndex() + 1, NumProvidedSystems, MaxNumProvidedSystems);
NumProvidedSystems = MaxNumProvidedSystems;
}
else if (NumProvidedSystems <= 0) {
esyslog("ERROR: device %d reported an invalid number (%d) of supported delivery systems - assuming 1", Device->CardIndex() + 1, NumProvidedSystems);
NumProvidedSystems = 1;
}
return NumProvidedSystems;
}
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView)
{
// Collect the current priorities of all CAM slots that can decrypt the channel:
@ -408,6 +423,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
imp <<= 1; imp |= LiveView ? !device[i]->IsPrimaryDevice() || ndr : 0; // prefer the primary device for live viewing if we don't need to detach existing receivers
imp <<= 1; imp |= !device[i]->Receiving() && (device[i] != cTransferControl::ReceiverDevice() || device[i]->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode
imp <<= 1; imp |= device[i]->Receiving(); // avoid devices that are receiving
imp <<= 2; imp |= GetClippedNumProvidedSystems(2, device[i]) - 1; // avoid cards which support multiple delivery systems
imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
imp <<= 8; imp |= min(max(device[i]->Priority() + MAXPRIORITY, 0), 0xFF); // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
@ -696,6 +712,11 @@ bool cDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Needs
return false;
}
int cDevice::NumProvidedSystems(void) const
{
return 0;
}
bool cDevice::IsTunedToTransponder(const cChannel *Channel)
{
return false;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.h 1.86 2007/11/03 13:30:00 kls Exp $
* $Id: device.h 1.87 2008/01/27 10:35:18 kls Exp $
*/
#ifndef __DEVICE_H
@ -224,6 +224,12 @@ public:
///< function itself actually returns true.
///< The default implementation always returns false, so a derived cDevice
///< class that can provide channels must implement this function.
virtual int NumProvidedSystems(void) const;
///< Returns the number of individual "delivery systems" this device provides.
///< The default implementation returns 0, so any derived class that can
///< actually provide channels must implement this function.
///< The result of this function is used when selecting a device, in order
///< to avoid devices that provide more than one system.
virtual bool IsTunedToTransponder(const cChannel *Channel);
///< Returns true if this device is currently tuned to the given Channel's
///< transponder.

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 1.167 2007/10/14 12:56:03 kls Exp $
* $Id: dvbdevice.c 1.168 2008/01/27 14:35:54 kls Exp $
*/
#include "dvbdevice.h"
@ -76,7 +76,7 @@ private:
int tuneTimeout;
int lockTimeout;
time_t lastTimeoutReport;
fe_type_t frontendType;
dvbfe_delsys frontendType;
cChannel channel;
const char *diseqcCommands;
eTunerStatus tunerStatus;
@ -87,14 +87,14 @@ private:
bool SetFrontend(void);
virtual void Action(void);
public:
cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType);
cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType);
virtual ~cDvbTuner();
bool IsTunedTo(const cChannel *Channel) const;
void Set(const cChannel *Channel, bool Tune);
bool Locked(int TimeoutMs = 0);
};
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType)
{
fd_frontend = Fd_Frontend;
cardIndex = CardIndex;
@ -104,7 +104,7 @@ cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
lastTimeoutReport = 0;
diseqcCommands = NULL;
tunerStatus = tsIdle;
if (frontendType == FE_QPSK)
if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
SetDescription("tuner on device %d", cardIndex + 1);
Start();
@ -120,7 +120,26 @@ cDvbTuner::~cDvbTuner()
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
{
return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Transponder() == Channel->Transponder();
if (tunerStatus == tsIdle)
return false; // not tuned to
if (channel.Source() != Channel->Source() || channel.Transponder() != Channel->Transponder())
return false; // sufficient mismatch
char Type = **cSource::ToString(Channel->Source());
#define ST(s, p) if (strchr(s, Type)) if (channel.p() != Channel->p()) return false;
// Polarization is already checked as part of the Transponder.
ST(" T", Alpha);
ST(" T", Bandwidth);
ST("CST", CoderateH);
ST(" T", CoderateL);
ST(" T", Guard);
ST("CST", Inversion);
ST("CST", Modulation);
ST(" S ", RollOff);
ST(" T", Priority);
ST(" S ", System);
ST(" T", Transmission);
ST(" T", Hierarchy);
return true;
}
void cDvbTuner::Set(const cChannel *Channel, bool Tune)
@ -173,114 +192,126 @@ static unsigned int FrequencyToHz(unsigned int f)
bool cDvbTuner::SetFrontend(void)
{
dvb_frontend_parameters Frontend;
dvbfe_params Frontend;
memset(&Frontend, 0, sizeof(Frontend));
switch (frontendType) {
case FE_QPSK: { // DVB-S
unsigned int frequency = channel.Frequency();
if (Setup.DiSEqC) {
cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
if (diseqc) {
if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
cDiseqc::eDiseqcActions da;
for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
switch (da) {
case cDiseqc::daNone: break;
case cDiseqc::daToneOff: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break;
case cDiseqc::daToneOn: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break;
case cDiseqc::daVoltage13: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break;
case cDiseqc::daVoltage18: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break;
case cDiseqc::daMiniA: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break;
case cDiseqc::daMiniB: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break;
case cDiseqc::daCodes: {
int n = 0;
uchar *codes = diseqc->Codes(n);
if (codes) {
struct dvb_diseqc_master_cmd cmd;
memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
cmd.msg_len = n;
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
}
}
break;
}
}
diseqcCommands = diseqc->Commands();
if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2)) {
unsigned int frequency = channel.Frequency();
if (Setup.DiSEqC) {
cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
if (diseqc) {
if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
cDiseqc::eDiseqcActions da;
for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
switch (da) {
case cDiseqc::daNone: break;
case cDiseqc::daToneOff: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break;
case cDiseqc::daToneOn: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break;
case cDiseqc::daVoltage13: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break;
case cDiseqc::daVoltage18: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break;
case cDiseqc::daMiniA: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break;
case cDiseqc::daMiniB: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break;
case cDiseqc::daCodes: {
int n = 0;
uchar *codes = diseqc->Codes(n);
if (codes) {
struct dvb_diseqc_master_cmd cmd;
memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
cmd.msg_len = n;
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
}
}
break;
}
}
frequency -= diseqc->Lof();
}
else {
esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
return false;
}
}
else {
int tone = SEC_TONE_OFF;
diseqcCommands = diseqc->Commands();
}
frequency -= diseqc->Lof();
}
else {
esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
return false;
}
}
else {
int tone = SEC_TONE_OFF;
if (frequency < (unsigned int)Setup.LnbSLOF) {
frequency -= Setup.LnbFrequLo;
tone = SEC_TONE_OFF;
}
else {
frequency -= Setup.LnbFrequHi;
tone = SEC_TONE_ON;
}
int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
}
frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
if (frequency < (unsigned int)Setup.LnbSLOF) {
frequency -= Setup.LnbFrequLo;
tone = SEC_TONE_OFF;
}
else {
frequency -= Setup.LnbFrequHi;
tone = SEC_TONE_ON;
}
int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
}
Frontend.delivery = dvbfe_delsys(channel.System());
Frontend.frequency = frequency * 1000UL;
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
if (Frontend.delivery == DVBFE_DELSYS_DVBS) {
Frontend.delsys.dvbs.modulation = dvbfe_modulation(channel.Modulation());
Frontend.delsys.dvbs.symbol_rate = channel.Srate() * 1000UL;
Frontend.delsys.dvbs.fec = dvbfe_fec(channel.CoderateH());
}
else {
Frontend.delsys.dvbs2.modulation = dvbfe_modulation(channel.Modulation());
Frontend.delsys.dvbs2.symbol_rate = channel.Srate() * 1000UL;
Frontend.delsys.dvbs2.fec = dvbfe_fec(channel.CoderateH());
Frontend.delsys.dvbs2.rolloff = dvbfe_rolloff(channel.RollOff());
}
frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
Frontend.frequency = frequency * 1000UL;
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
Frontend.u.qpsk.symbol_rate = channel.Srate() * 1000UL;
Frontend.u.qpsk.fec_inner = fe_code_rate_t(channel.CoderateH());
tuneTimeout = DVBS_TUNE_TIMEOUT;
lockTimeout = DVBS_LOCK_TIMEOUT;
tuneTimeout = DVBS_TUNE_TIMEOUT;
lockTimeout = DVBS_LOCK_TIMEOUT;
}
break;
case FE_QAM: { // DVB-C
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
else if (frontendType & DVBFE_DELSYS_DVBC) {
Frontend.delivery = DVBFE_DELSYS_DVBC;
Frontend.frequency = FrequencyToHz(channel.Frequency());
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
Frontend.delsys.dvbc.symbol_rate = channel.Srate() * 1000UL;
Frontend.delsys.dvbc.fec = dvbfe_fec(channel.CoderateH());
Frontend.delsys.dvbc.modulation = dvbfe_modulation(channel.Modulation());
// Frequency and symbol rate:
tuneTimeout = DVBC_TUNE_TIMEOUT;
lockTimeout = DVBC_LOCK_TIMEOUT;
Frontend.frequency = FrequencyToHz(channel.Frequency());
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
Frontend.u.qam.symbol_rate = channel.Srate() * 1000UL;
Frontend.u.qam.fec_inner = fe_code_rate_t(channel.CoderateH());
Frontend.u.qam.modulation = fe_modulation_t(channel.Modulation());
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
else if (frontendType & DVBFE_DELSYS_DVBT) {
Frontend.delivery = DVBFE_DELSYS_DVBT;
Frontend.frequency = FrequencyToHz(channel.Frequency());
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
Frontend.delsys.dvbt.bandwidth = dvbfe_bandwidth(channel.Bandwidth());
Frontend.delsys.dvbt.code_rate_HP = dvbfe_fec(channel.CoderateH());
Frontend.delsys.dvbt.code_rate_LP = dvbfe_fec(channel.CoderateL());
Frontend.delsys.dvbt.constellation = dvbfe_modulation(channel.Modulation());
Frontend.delsys.dvbt.transmission_mode = dvbfe_transmission_mode(channel.Transmission());
Frontend.delsys.dvbt.guard_interval = dvbfe_guard_interval(channel.Guard());
Frontend.delsys.dvbt.hierarchy = dvbfe_hierarchy(channel.Hierarchy());
Frontend.delsys.dvbt.alpha = dvbfe_alpha(channel.Alpha());
Frontend.delsys.dvbt.priority = dvbfe_stream_priority(channel.Priority());
tuneTimeout = DVBC_TUNE_TIMEOUT;
lockTimeout = DVBC_LOCK_TIMEOUT;
}
break;
case FE_OFDM: { // DVB-T
tuneTimeout = DVBT_TUNE_TIMEOUT;
lockTimeout = DVBT_LOCK_TIMEOUT;
// Frequency and OFDM paramaters:
Frontend.frequency = FrequencyToHz(channel.Frequency());
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
Frontend.u.ofdm.bandwidth = fe_bandwidth_t(channel.Bandwidth());
Frontend.u.ofdm.code_rate_HP = fe_code_rate_t(channel.CoderateH());
Frontend.u.ofdm.code_rate_LP = fe_code_rate_t(channel.CoderateL());
Frontend.u.ofdm.constellation = fe_modulation_t(channel.Modulation());
Frontend.u.ofdm.transmission_mode = fe_transmit_mode_t(channel.Transmission());
Frontend.u.ofdm.guard_interval = fe_guard_interval_t(channel.Guard());
Frontend.u.ofdm.hierarchy_information = fe_hierarchy_t(channel.Hierarchy());
tuneTimeout = DVBT_TUNE_TIMEOUT;
lockTimeout = DVBT_LOCK_TIMEOUT;
}
break;
default:
esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
return false;
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
else {
esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
return false;
}
if (ioctl(fd_frontend, FE_SET_FRONTEND, &Frontend) < 0) {
if (ioctl(fd_frontend, DVBFE_SET_PARAMS, &Frontend) < 0) {
esyslog("ERROR: frontend %d: %m", cardIndex);
return false;
}
@ -351,11 +382,23 @@ void cDvbTuner::Action(void)
int cDvbDevice::devVideoOffset = -1;
int cDvbDevice::setTransferModeForDolbyDigital = 1;
const char *DeliverySystems[] = {
"DVBS",
"DSS",
"DVBS2",
"DVBC",
"DVBT",
"DVBH",
"ATSC",
NULL
};
cDvbDevice::cDvbDevice(int n)
{
ciAdapter = NULL;
dvbTuner = NULL;
frontendType = fe_type_t(-1); // don't know how else to initialize this - there is no FE_UNKNOWN
frontendType = DVBFE_DELSYS_DUMMY;
numProvidedSystems = 0;
spuDecoder = NULL;
digitalAudio = false;
playMode = pmNone;
@ -417,9 +460,22 @@ cDvbDevice::cDvbDevice(int n)
// We only check the devices that must be present - the others will be checked before accessing them://XXX
if (fd_frontend >= 0) {
dvb_frontend_info feinfo;
if (ioctl(fd_frontend, FE_GET_INFO, &feinfo) >= 0) {
frontendType = feinfo.type;
if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
const char **DeliverySystem = DeliverySystems;
cString ds;
for (int i = 0; i < 32; i++) {
if (frontendType & (1u << i)) {
numProvidedSystems++;
if (*DeliverySystem)
ds = cString::sprintf("%s %s", *ds ? *ds : "", *DeliverySystem);
else
esyslog("ERROR: unknown delivery system %d", i);
}
if (*DeliverySystem)
DeliverySystem++;
}
if (*ds)
isyslog("device %d provides:%s", CardIndex() + 1, *ds);
dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
}
else
@ -743,14 +799,20 @@ bool cDvbDevice::ProvidesSource(int Source) const
{
int type = Source & cSource::st_Mask;
return type == cSource::stNone
|| type == cSource::stCable && frontendType == FE_QAM
|| type == cSource::stSat && frontendType == FE_QPSK
|| type == cSource::stTerr && frontendType == FE_OFDM;
|| type == cSource::stCable && (frontendType & DVBFE_DELSYS_DVBC)
|| type == cSource::stSat && (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
|| type == cSource::stTerr && (frontendType & DVBFE_DELSYS_DVBT);
}
bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
{
return ProvidesSource(Channel->Source()) && (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization()));
if (!ProvidesSource(Channel->Source()))
return false; // doesn't provide source
if (!cSource::IsSat(Channel->Source()))
return true; // source is sufficient for non sat
if (!(frontendType & Channel->System()))
return false; // requires modulation system which frontend doesn't provide
return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization());
}
bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const
@ -759,7 +821,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
bool hasPriority = Priority < 0 || Priority > this->Priority();
bool needsDetachReceivers = false;
if (ProvidesSource(Channel->Source())) {
if (ProvidesTransponder(Channel)) {
result = hasPriority;
if (Priority >= 0 && Receiving(true)) {
if (dvbTuner->IsTunedTo(Channel)) {
@ -791,6 +853,11 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
return result;
}
int cDvbDevice::NumProvidedSystems(void) const
{
return numProvidedSystems;
}
bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel)
{
return dvbTuner->IsTunedTo(Channel);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.h 1.45 2007/10/14 13:01:25 kls Exp $
* $Id: dvbdevice.h 1.46 2008/01/27 10:21:02 kls Exp $
*/
#ifndef __DVBDEVICE_H
@ -15,8 +15,8 @@
#include "device.h"
#include "dvbspu.h"
#if DVB_API_VERSION != 3
#error VDR requires Linux DVB driver API version 3!
#if DVB_API_VERSION != 3 || DVB_API_VERSION_MINOR != 3
#error VDR requires Linux DVB driver API version 3.3!
#endif
#define MAXDVBDEVICES 8
@ -35,7 +35,8 @@ public:
///< Must be called before accessing any DVB functions.
///< \return True if any devices are available.
private:
fe_type_t frontendType;
dvbfe_delsys frontendType;
int numProvidedSystems;
int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca;
protected:
virtual void MakePrimaryDevice(bool On);
@ -66,6 +67,7 @@ public:
virtual bool ProvidesSource(int Source) const;
virtual bool ProvidesTransponder(const cChannel *Channel) const;
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
virtual int NumProvidedSystems(void) const;
virtual bool IsTunedToTransponder(const cChannel *Channel);
protected:
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);

80
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 1.469 2008/01/13 13:59:33 kls Exp $
* $Id: menu.c 1.470 2008/01/26 16:29:05 kls Exp $
*/
#include "menu.h"
@ -148,70 +148,6 @@ eOSState cMenuEditSrcItem::ProcessKey(eKeys Key)
return state;
}
// --- cMenuEditMapItem ------------------------------------------------------
class cMenuEditMapItem : public cMenuEditItem {
protected:
int *value;
const tChannelParameterMap *map;
const char *zeroString;
virtual void Set(void);
public:
cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
virtual eOSState ProcessKey(eKeys Key);
};
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
:cMenuEditItem(Name)
{
value = Value;
map = Map;
zeroString = ZeroString;
Set();
}
void cMenuEditMapItem::Set(void)
{
int n = MapToUser(*value, map);
if (n == 999)
SetValue(tr("auto"));
else if (n == 0 && zeroString)
SetValue(zeroString);
else if (n >= 0) {
char buf[16];
snprintf(buf, sizeof(buf), "%d", n);
SetValue(buf);
}
else
SetValue("???");
}
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
{
eOSState state = cMenuEditItem::ProcessKey(Key);
if (state == osUnknown) {
int newValue = *value;
int n = DriverIndex(*value, map);
if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
if (n-- > 0)
newValue = map[n].driverValue;
}
else if (NORMALKEY(Key) == kRight) {
if (map[++n].userValue >= 0)
newValue = map[n].driverValue;
}
else
return state;
if (newValue != *value) {
*value = newValue;
Set();
}
state = osContinue;
}
return state;
}
// --- cMenuEditChannel ------------------------------------------------------
class cMenuEditChannel : public cOsdMenu {
@ -272,15 +208,19 @@ void cMenuEditChannel::Setup(void)
XXX*/
// Parameters for specific types of sources:
ST(" S ") Add(new cMenuEditChrItem( tr("Polarization"), &data.polarization, "hvlr"));
ST(" S ") Add(new cMenuEditMapItem( tr("System"), &data.system, SystemValues));
ST("CS ") Add(new cMenuEditIntItem( tr("Srate"), &data.srate));
ST("CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues, tr("off")));
ST("CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues, tr("none")));
ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues, tr("none")));
ST("C T") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues, "QPSK"));
ST("CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues));
ST("CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues));
ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues));
ST("CST") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues));
ST(" T") Add(new cMenuEditMapItem( tr("Bandwidth"), &data.bandwidth, BandwidthValues));
ST(" T") Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues));
ST(" T") Add(new cMenuEditMapItem( tr("Guard"), &data.guard, GuardValues));
ST(" T") Add(new cMenuEditMapItem( tr("Hierarchy"), &data.hierarchy, HierarchyValues, tr("none")));
ST(" T") Add(new cMenuEditMapItem( tr("Hierarchy"), &data.hierarchy, HierarchyValues));
ST(" T") Add(new cMenuEditMapItem( tr("Alpha"), &data.alpha, AlphaValues));
ST(" T") Add(new cMenuEditMapItem( tr("Priority"), &data.priority, PriorityValues));
ST(" S ") Add(new cMenuEditMapItem( tr("Rolloff"), &data.rollOff, RollOffValues));
SetCurrent(Get(current));
Display();

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menuitems.c 1.55 2007/11/03 15:01:01 kls Exp $
* $Id: menuitems.c 1.56 2008/01/26 16:07:07 kls Exp $
*/
#include "menuitems.h"
@ -937,6 +937,64 @@ eOSState cMenuEditTimeItem::ProcessKey(eKeys Key)
return state;
}
// --- cMenuEditMapItem ------------------------------------------------------
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
:cMenuEditItem(Name)
{
value = Value;
map = Map;
zeroString = ZeroString;
Set();
}
void cMenuEditMapItem::Set(void)
{
const char *s = NULL;
int n = MapToUser(*value, map, &s);
if (n == 999)
SetValue(tr("auto"));
else if (n == 0 && zeroString)
SetValue(zeroString);
else if (n >= 0) {
if (s)
SetValue(s);
else {
char buf[16];
snprintf(buf, sizeof(buf), "%d", n);
SetValue(buf);
}
}
else
SetValue("???");
}
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
{
eOSState state = cMenuEditItem::ProcessKey(Key);
if (state == osUnknown) {
int newValue = *value;
int n = DriverIndex(*value, map);
if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
if (n-- > 0)
newValue = map[n].driverValue;
}
else if (NORMALKEY(Key) == kRight) {
if (map[++n].userValue >= 0)
newValue = map[n].driverValue;
}
else
return state;
if (newValue != *value) {
*value = newValue;
Set();
}
state = osContinue;
}
return state;
}
// --- cMenuSetupPage --------------------------------------------------------
cMenuSetupPage::cMenuSetupPage(void)

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menuitems.h 1.22 2007/11/03 14:59:47 kls Exp $
* $Id: menuitems.h 1.23 2008/01/26 15:52:53 kls Exp $
*/
#ifndef __MENUITEMS_H
@ -159,6 +159,17 @@ public:
virtual eOSState ProcessKey(eKeys Key);
};
class cMenuEditMapItem : public cMenuEditItem {
protected:
int *value;
const tChannelParameterMap *map;
const char *zeroString;
virtual void Set(void);
public:
cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
virtual eOSState ProcessKey(eKeys Key);
};
class cPlugin;
class cMenuSetupPage : public cOsdMenu {

38
nit.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: nit.c 1.16 2008/01/25 14:53:43 kls Exp $
* $Id: nit.c 1.17 2008/01/26 15:08:01 kls Exp $
*/
#include "nit.h"
@ -127,8 +127,13 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
int Frequency = Frequencies[0] = 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_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
int CodeRate = CodeRates[sd->getFecInner()];
static int Modulations[] = { DVBFE_MOD_AUTO, DVBFE_MOD_QPSK, DVBFE_MOD_8PSK, DVBFE_MOD_QAM16 };
int Modulation = Modulations[sd->getModulationType()];
int System = sd->getModulationSystem() ? DVBFE_DELSYS_DVBS2 : DVBFE_DELSYS_DVBS;
static int RollOffs[] = { DVBFE_ROLLOFF_35, DVBFE_ROLLOFF_25, DVBFE_ROLLOFF_20, DVBFE_ROLLOFF_UNKNOWN };
int RollOff = sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : DVBFE_ROLLOFF_UNKNOWN;
int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
if (ThisNIT >= 0) {
for (int n = 0; n < NumFrequencies; n++) {
@ -155,14 +160,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
}
if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) // only modify channels if we're actually receiving this transponder
Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate, Modulation, System, RollOff);
}
}
if (!found) {
for (int n = 0; n < NumFrequencies; n++) {
cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate))
if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate, Modulation, System, RollOff))
EITScanner.AddTransponder(Channel);
else
delete Channel;
@ -176,9 +181,9 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
int Source = cSource::FromData(cSource::stCable);
int Frequency = Frequencies[0] = 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_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
int CodeRate = CodeRates[sd->getFecInner()];
static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO };
static int Modulations[] = { DVBFE_MOD_NONE, DVBFE_MOD_QAM16, DVBFE_MOD_QAM32, DVBFE_MOD_QAM64, DVBFE_MOD_QAM128, DVBFE_MOD_QAM256, QAM_AUTO };
int Modulation = Modulations[min(sd->getModulation(), 6)];
int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
if (ThisNIT >= 0) {
@ -226,19 +231,22 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
SI::TerrestrialDeliverySystemDescriptor *sd = (SI::TerrestrialDeliverySystemDescriptor *)d;
int Source = cSource::FromData(cSource::stTerr);
int Frequency = Frequencies[0] = sd->getFrequency() * 10;
static int Bandwidths[] = { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO };
static int Bandwidths[] = { DVBFE_BANDWIDTH_8_MHZ, DVBFE_BANDWIDTH_7_MHZ, DVBFE_BANDWIDTH_6_MHZ, DVBFE_BANDWIDTH_5_MHZ, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO };
int Bandwidth = Bandwidths[sd->getBandwidth()];
static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
static int Constellations[] = { DVBFE_MOD_QPSK, DVBFE_MOD_QAM16, DVBFE_MOD_QAM64, DVBFE_MOD_AUTO };
int Constellation = Constellations[sd->getConstellation()];
static int Hierarchies[] = { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO };
int Hierarchy = Hierarchies[sd->getHierarchy()];
static int CodeRates[] = { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO };
static int CodeRates[] = { DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO };
int CodeRateHP = CodeRates[sd->getCodeRateHP()];
int CodeRateLP = CodeRates[sd->getCodeRateLP()];
static int GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4 };
static int GuardIntervals[] = { DVBFE_GUARD_INTERVAL_1_32, DVBFE_GUARD_INTERVAL_1_16, DVBFE_GUARD_INTERVAL_1_8, DVBFE_GUARD_INTERVAL_1_4 };
int GuardInterval = GuardIntervals[sd->getGuardInterval()];
static int TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_AUTO };
static int TransmissionModes[] = { DVBFE_TRANSMISSION_MODE_2K, DVBFE_TRANSMISSION_MODE_8K, DVBFE_TRANSMISSION_MODE_4K, DVBFE_TRANSMISSION_MODE_AUTO };
int TransmissionMode = TransmissionModes[sd->getTransmissionMode()];
static int Priorities[] = { DVBFE_STREAM_PRIORITY_LP, DVBFE_STREAM_PRIORITY_HP };
int Priority = Priorities[sd->getPriority()];
static int Alphas[] = { 0, DVBFE_ALPHA_1, DVBFE_ALPHA_2, DVBFE_ALPHA_4 };
int Alpha = Alphas[sd->getHierarchy() & 3];
int Hierarchy = Alpha ? DVBFE_HIERARCHY_ON : DVBFE_HIERARCHY_OFF;
if (ThisNIT >= 0) {
for (int n = 0; n < NumFrequencies; n++) {
if (ISTRANSPONDER(Frequencies[n] / 1000000, Transponder())) {
@ -264,14 +272,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
}
if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder
Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority);
}
}
if (!found) {
for (int n = 0; n < NumFrequencies; n++) {
cChannel *Channel = new cChannel;
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority))
EITScanner.AddTransponder(Channel);
else
delete Channel;

3
pat.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: pat.c 1.18 2007/09/02 10:44:19 kls Exp $
* $Id: pat.c 1.19 2008/01/27 13:53:43 kls Exp $
*/
#include "pat.h"
@ -343,6 +343,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
switch (stream.getStreamType()) {
case 1: // STREAMTYPE_11172_VIDEO
case 2: // STREAMTYPE_13818_VIDEO
//TODO case 0x1B: // MPEG4
Vpid = stream.getPid();
break;
case 3: // STREAMTYPE_11172_AUDIO

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Jordi Vilà <jvila@tinet.org>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -17,6 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "off"
msgid "on"
msgstr ""
msgid "none"
msgstr "cap"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal incorrecte ***"
@ -221,9 +236,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Editar canal"
@ -272,21 +284,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarització"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversió"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "cap"
msgid "CoderateL"
msgstr "CoderateL"
@ -305,6 +314,15 @@ msgstr "Protegir"
msgid "Hierarchy"
msgstr "Jerarquia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritat"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Propietats del canal duplicades!"
@ -350,9 +368,6 @@ msgstr "Fi"
msgid "VPS"
msgstr ""
msgid "Priority"
msgstr "Prioritat"
msgid "Lifetime"
msgstr "Durada"
@ -893,6 +908,9 @@ msgstr "Sobrescriure"
msgid "Button$Insert"
msgstr "Inserir"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "vyp."
msgid "on"
msgstr ""
msgid "none"
msgstr "¾ádný"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neplatný kanál ***"
@ -219,9 +234,6 @@ msgstr "voln
msgid "encrypted"
msgstr "kódovaný"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Editace kanálu"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizace"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "vyp."
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "¾ádný"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Priorita"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Nastavení kanálù nejsou unikátní!"
@ -348,9 +366,6 @@ msgstr "Konec"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorita"
msgid "Lifetime"
msgstr "®ivotnost"
@ -891,6 +906,9 @@ msgstr "P
msgid "Button$Insert"
msgstr "Vlo¾it"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Modul"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "fra"
msgid "on"
msgstr ""
msgid "none"
msgstr "ingen"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ugyldig kanal! ***"
@ -219,9 +234,6 @@ msgstr "Free To Air"
msgid "encrypted"
msgstr "kodet"
msgid "auto"
msgstr "automatisk"
msgid "Edit channel"
msgstr "Rediger kanal"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisation"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "fra"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ingen"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarki"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanalindstillinger er ikke entydige!"
@ -348,9 +366,6 @@ msgstr "Stop"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Levetid"
@ -891,6 +906,9 @@ msgstr "Overskriv"
msgid "Button$Insert"
msgstr "Indsæt"
msgid "auto"
msgstr "automatisk"
msgid "Plugin"
msgstr "Plugin"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-11-25 15:19+0200\n"
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "aus"
msgid "on"
msgstr "ein"
msgid "none"
msgstr "keine"
msgid "high"
msgstr "hoch"
msgid "low"
msgstr "niedrig"
msgid "*** Invalid Channel ***"
msgstr "*** Ungültiger Kanal ***"
@ -219,9 +234,6 @@ msgstr "frei empfangbar"
msgid "encrypted"
msgstr "verschlüsselt"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Kanal editieren"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisation"
msgid "System"
msgstr "System"
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "aus"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "keine"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchie"
msgid "Alpha"
msgstr "Alpha"
msgid "Priority"
msgstr "Priorität"
msgid "Rolloff"
msgstr "Rolloff"
msgid "Channel settings are not unique!"
msgstr "Kanaleinstellungen sind nicht eindeutig!"
@ -348,9 +366,6 @@ msgstr "Ende"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorität"
msgid "Lifetime"
msgstr "Lebensdauer"
@ -891,6 +906,9 @@ msgstr "
msgid "Button$Insert"
msgstr "Einfügen"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-7\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "êëåéóôü"
msgid "on"
msgstr ""
msgid "none"
msgstr "êáíÝíá"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Áêõñï êáíÜëç ***"
@ -219,9 +234,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr "áõôüìáôï"
msgid "Edit channel"
msgstr "Ôñïðïðïßçóç Êáíáëéïý"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Ðüëùóç"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "ÁíôéóôñïöÞ"
msgid "off"
msgstr "êëåéóôü"
msgid "CoderateH"
msgstr "Ñõèìüò Êþäéêá H"
msgid "none"
msgstr "êáíÝíá"
msgid "CoderateL"
msgstr "Ñõèìüò Êþäéêá L"
@ -303,6 +312,15 @@ msgstr "
msgid "Hierarchy"
msgstr "Éåñáñ÷åßá"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Ðñïôåñáéüôçôá"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!"
@ -348,9 +366,6 @@ msgstr "
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Ðñïôåñáéüôçôá"
msgid "Lifetime"
msgstr "ÄéÝñêåéá ÐáñáìïíÞò"
@ -891,6 +906,9 @@ msgstr "
msgid "Button$Insert"
msgstr "ÅéóáãùãÞ"
msgid "auto"
msgstr "áõôüìáôï"
msgid "Plugin"
msgstr "ÅðÝêôáóç"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Ruben Nunez Francisco <ruben.nunez@tang-it.com>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "off"
msgid "on"
msgstr ""
msgid "none"
msgstr "ninguno"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal no válido ***"
@ -219,9 +234,6 @@ msgstr "en abierto"
msgid "encrypted"
msgstr "cifrado"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Modificar canal"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarización"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "T.símbolos"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ninguno"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Int.Guarda"
msgid "Hierarchy"
msgstr "Jerarquía"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioridad"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "!Propiedades de canal duplicadas!"
@ -348,9 +366,6 @@ msgstr "Fin"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioridad"
msgid "Lifetime"
msgstr "Duración"
@ -891,6 +906,9 @@ msgstr "Sobreescribir"
msgid "Button$Insert"
msgstr "Insertar"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-13\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "väljas"
msgid "on"
msgstr ""
msgid "none"
msgstr "puudu"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Vigane kanal ***"
@ -219,9 +234,6 @@ msgstr "FTA"
msgid "encrypted"
msgstr "krüptitud"
msgid "auto"
msgstr "automaatne"
msgid "Edit channel"
msgstr "Kanali muutmine"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisatsioon"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversioon"
msgid "off"
msgstr "väljas"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "puudu"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarhia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioriteet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanaliseaded ei ole unikaalsed!"
@ -348,9 +366,6 @@ msgstr "Stopp"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioriteet"
msgid "Lifetime"
msgstr "Eluiga"
@ -891,6 +906,9 @@ msgstr "Asenda (OVR)"
msgid "Button$Insert"
msgstr "Lisa (INS)"
msgid "auto"
msgstr "automaatne"
msgid "Plugin"
msgstr "Laiendusmoodul"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -18,6 +18,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "pois"
msgid "on"
msgstr ""
msgid "none"
msgstr "tyhjä"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Virheellinen kanavavalinta ***"
@ -222,9 +237,6 @@ msgstr "vapaa"
msgid "encrypted"
msgstr "salattu"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Muokkaa kanavaa"
@ -273,21 +285,18 @@ msgstr "Palvelu-ID"
msgid "Polarization"
msgstr "Polarisaatio"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Symbolinopeus"
msgid "Inversion"
msgstr "Inversio"
msgid "off"
msgstr "pois"
msgid "CoderateH"
msgstr "Suojaustaso (HP)"
msgid "none"
msgstr "tyhjä"
msgid "CoderateL"
msgstr "Suojaustaso (LP)"
@ -306,6 +315,15 @@ msgstr "Suojav
msgid "Hierarchy"
msgstr "Hierarkia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioriteetti"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanava-asetukset eivät ole yksilölliset!"
@ -351,9 +369,6 @@ msgstr "Lopetus"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioriteetti"
msgid "Lifetime"
msgstr "Elinikä"
@ -894,6 +909,9 @@ msgstr "Korvaa"
msgid "Button$Insert"
msgstr "Lisää"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Laajennos"

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-10-18 16:12+0100\n"
"Last-Translator: Michael Nival <mnival@club-internet.fr>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -21,6 +21,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "off"
msgid "on"
msgstr ""
msgid "none"
msgstr "aucun"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Chaîne invalide ! ***"
@ -225,9 +240,6 @@ msgstr "Aucun cryptage"
msgid "encrypted"
msgstr "Crypté"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Modifier une chaîne"
@ -276,21 +288,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisation"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Fréq. Symbole"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "aucun"
msgid "CoderateL"
msgstr "CoderateL"
@ -309,6 +318,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hiérarchie"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Priorité"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Caractéristiques des chaînes non uniques"
@ -354,9 +372,6 @@ msgstr "Fin"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorité"
msgid "Lifetime"
msgstr "Durée de vie"
@ -897,6 +912,9 @@ msgstr "Ecraser"
msgid "Button$Insert"
msgstr "Insérer"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Drazen Dupor <drazen.dupor@dupor.com>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "ugasi"
msgid "on"
msgstr ""
msgid "none"
msgstr "nijedan"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neispravan program ***"
@ -220,9 +235,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr "automatski"
msgid "Edit channel"
msgstr "Ureðivanje programa"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizacija"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inverzija"
msgid "off"
msgstr "ugasi"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "nijedan"
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "Za
msgid "Hierarchy"
msgstr "Hijerarhija"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Parametri programa nisu jednoznaèni!"
@ -349,9 +367,6 @@ msgstr "Kraj"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Trajanje"
@ -892,6 +907,9 @@ msgstr "Prepi
msgid "Button$Insert"
msgstr "Umetni"
msgid "auto"
msgstr "automatski"
msgid "Plugin"
msgstr "Plugin"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-01-13 14:21+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -18,6 +18,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "ki"
msgid "on"
msgstr ""
msgid "none"
msgstr "semmi"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Érvénytelen csatorna ***"
@ -222,9 +237,6 @@ msgstr "K
msgid "encrypted"
msgstr "Kódolt"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Csatornák beállítása"
@ -273,21 +285,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizáció"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "ki"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "semmi"
msgid "CoderateL"
msgstr "CoderateL"
@ -306,6 +315,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarhia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritás"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Az adóbeállítások nem egyértelmûek"
@ -351,9 +369,6 @@ msgstr "V
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritás"
msgid "Lifetime"
msgstr "Élettartam"
@ -895,6 +910,9 @@ msgstr "
msgid "Button$Insert"
msgstr "Beilleszteni"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-10-16 02:15+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -18,6 +18,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "off"
msgid "on"
msgstr ""
msgid "none"
msgstr "nessuno"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canale NON valido ***"
@ -222,9 +237,6 @@ msgstr "in chiaro"
msgid "encrypted"
msgstr "criptato"
msgid "auto"
msgstr "automatico"
msgid "Edit channel"
msgstr "Modifica canale"
@ -273,21 +285,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizzazione"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "SymbolRate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "nessuno"
msgid "CoderateL"
msgstr "CoderateL"
@ -306,6 +315,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Priorità"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Parametri canale non univoci!"
@ -351,9 +369,6 @@ msgstr "Fine"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorità"
msgid "Lifetime"
msgstr "Durata"
@ -894,6 +909,9 @@ msgstr "Sovrascrivi"
msgid "Button$Insert"
msgstr "Inserisci"
msgid "auto"
msgstr "automatico"
msgid "Plugin"
msgstr "Plugin"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Maarten Wisse <Maarten.Wisse@urz.uni-hd.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -17,6 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "uit"
msgid "on"
msgstr ""
msgid "none"
msgstr "geen"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ongeldig kanaal ***"
@ -221,9 +236,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Kanaal aanpassen"
@ -272,21 +284,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisatie"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "uit"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "geen"
msgid "CoderateL"
msgstr "CoderateL"
@ -305,6 +314,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioriteit"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanaalinstellingen zijn niet uniek!"
@ -350,9 +368,6 @@ msgstr "Einde"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioriteit"
msgid "Lifetime"
msgstr "Bewaarduur"
@ -893,6 +908,9 @@ msgstr "Overschrijven"
msgid "Button$Insert"
msgstr "Invoegen"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr ""
msgid "on"
msgstr ""
msgid "none"
msgstr ""
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ugyldig Kanal! ***"
@ -220,9 +235,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr ""
msgid "Edit channel"
msgstr "Editer kanal"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisasjon"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr ""
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr ""
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr ""
@ -349,9 +367,6 @@ msgstr "Slutt"
msgid "VPS"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Levetid"
@ -892,6 +907,9 @@ msgstr ""
msgid "Button$Insert"
msgstr ""
msgid "auto"
msgstr ""
msgid "Plugin"
msgstr "Plugin"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "wy³±cz"
msgid "on"
msgstr ""
msgid "none"
msgstr "brak"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Niepoprawny kana³ ***"
@ -219,9 +234,6 @@ msgstr "nieszyfrowany"
msgid "encrypted"
msgstr "szyfrowany"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Edycja kana³u"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polaryzacja"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inwersja"
msgid "off"
msgstr "wy³±cz"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "brak"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Priorytet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Ustawienia kana³u nie s± unikalne!"
@ -348,9 +366,6 @@ msgstr "Koniec"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorytet"
msgid "Lifetime"
msgstr "Czas ¿ycia"
@ -891,6 +906,9 @@ msgstr "Nadpisz"
msgid "Button$Insert"
msgstr "Wstaw"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Wtyczka"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Paulo Lopes <pmml@netvita.pt>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "off"
msgid "on"
msgstr ""
msgid "none"
msgstr ""
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal Inválido! ***"
@ -219,9 +234,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr ""
msgid "Edit channel"
msgstr "Modificar canal"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarização"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr ""
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioridade"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr ""
@ -348,9 +366,6 @@ msgstr "Fim"
msgid "VPS"
msgstr ""
msgid "Priority"
msgstr "Prioridade"
msgid "Lifetime"
msgstr "Duração"
@ -891,6 +906,9 @@ msgstr ""
msgid "Button$Insert"
msgstr ""
msgid "auto"
msgstr ""
msgid "Plugin"
msgstr "Plugin"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "inactiv"
msgid "on"
msgstr ""
msgid "none"
msgstr "niciuna(ul)"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal invalid ***"
@ -220,9 +235,6 @@ msgstr "FTA (necriptat)"
msgid "encrypted"
msgstr "criptat"
msgid "auto"
msgstr "automat"
msgid "Edit channel"
msgstr "Modificare canal"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizare"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Ratã simboluri"
msgid "Inversion"
msgstr "Inversiune"
msgid "off"
msgstr "inactiv"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "niciuna(ul)"
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Ierarhie"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritate"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Parametrii canalului nu sunt univoci!"
@ -349,9 +367,6 @@ msgstr "Sf
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritate"
msgid "Lifetime"
msgstr "Timp de pãstrare"
@ -892,6 +907,9 @@ msgstr "Suprascrie"
msgid "Button$Insert"
msgstr "Insereazã"
msgid "auto"
msgstr "automat"
msgid "Plugin"
msgstr "Plugin (modul adiþional)"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-11-05 14:24+0100\n"
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "ÒëÚÛ"
msgid "on"
msgstr ""
msgid "none"
msgstr "ÝØçÕÓÞ"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** ½ÕßàÐÒØÛìÝëÙ ÚÐÝÐÛ ***"
@ -220,9 +235,6 @@ msgstr "FTA (
msgid "encrypted"
msgstr "×ÐÚÞÔØàÞÒÐÝÞ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Edit channel"
msgstr "ÀÕÔÐÚâØàÞÒÐÝØÕ ÚÐÝÐÛÐ"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "¿ÞÛïàØ×ÐæØï"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "ÁØÜÒ. áÚÞàÞáâì"
msgid "Inversion"
msgstr "¸ÝÒÕàáØï"
msgid "off"
msgstr "ÒëÚÛ"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ÝØçÕÓÞ"
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "
msgid "Hierarchy"
msgstr "¸ÕàÐàåØï"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "¿àØÞàØâÕâ"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!"
@ -349,9 +367,6 @@ msgstr "
msgid "VPS"
msgstr "VPS ßÞßàÐÒÚÐ"
msgid "Priority"
msgstr "¿àØÞàØâÕâ"
msgid "Lifetime"
msgstr "ÁàÞÚ åàÐÝÕÝØï"
@ -892,6 +907,9 @@ msgstr "
msgid "Button$Insert"
msgstr "²áâÐÒÚÐ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Plugin"
msgstr "¼ÞÔãÛì"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "izklop"
msgid "on"
msgstr ""
msgid "none"
msgstr "nobeden"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neznan kanal ***"
@ -220,9 +235,6 @@ msgstr "nekodiran"
msgid "encrypted"
msgstr "kodiran"
msgid "auto"
msgstr "avtomatsko"
msgid "Edit channel"
msgstr "Uredi kanal"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizacija"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inverzija"
msgid "off"
msgstr "izklop"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "nobeden"
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "Za
msgid "Hierarchy"
msgstr "Hierarhija"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioriteta"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Nastavitve kanala niso edinstvene!"
@ -349,9 +367,6 @@ msgstr "Konec"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioriteta"
msgid "Lifetime"
msgstr "Veljavnost"
@ -892,6 +907,9 @@ msgstr "Prepi
msgid "Button$Insert"
msgstr "Vstavi"
msgid "auto"
msgstr "avtomatsko"
msgid "Plugin"
msgstr "Vstavek"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Tomas Prybil <tomas@prybil.se>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -16,6 +16,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "av"
msgid "on"
msgstr ""
msgid "none"
msgstr "ingen"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Felaktig kanal ***"
@ -220,9 +235,6 @@ msgstr "Okodad"
msgid "encrypted"
msgstr "krypterad"
msgid "auto"
msgstr "automatisk"
msgid "Edit channel"
msgstr "Ändra kanal"
@ -271,21 +283,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarisation"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversion"
msgid "off"
msgstr "av"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ingen"
msgid "CoderateL"
msgstr "CoderateL"
@ -304,6 +313,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanalinställningarna är ej unika!"
@ -349,9 +367,6 @@ msgstr "Slutar"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Livstid"
@ -892,6 +907,9 @@ msgstr "Skriv
msgid "Button$Insert"
msgstr "Infoga"
msgid "auto"
msgstr "automatisk"
msgid "Plugin"
msgstr "Modul"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-24 14:37+0200\n"
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-9\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "kapalý"
msgid "on"
msgstr ""
msgid "none"
msgstr "hiç"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Geçersiz kanal ***"
@ -219,9 +234,6 @@ msgstr "
msgid "encrypted"
msgstr "Þifreli"
msgid "auto"
msgstr "otomatik"
msgid "Edit channel"
msgstr "Kanal ayarlarýný deðiþtir"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Kutuplaþma"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Ýnversiyon"
msgid "off"
msgstr "kapalý"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "hiç"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "Koruma"
msgid "Hierarchy"
msgstr "Hiyerarþi"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Öncelik"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanal ayarlarý belli deðýl!"
@ -348,9 +366,6 @@ msgstr "Biti
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Öncelik"
msgid "Lifetime"
msgstr "Ömrü"
@ -891,6 +906,9 @@ msgstr "
msgid "Button$Insert"
msgstr "Ekle"
msgid "auto"
msgstr "otomatik"
msgid "Plugin"
msgstr "Eklenti"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.10\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-11-25 14:59+0100\n"
"POT-Creation-Date: 2008-01-27 15:00+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Yarema Aka Knedlyk <yupadmin@gmail.com>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "ÒØÚÛ"
msgid "on"
msgstr ""
msgid "none"
msgstr "ÝöçÞÓÞ"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** ½ÕßàÐÒØÛìÝØÙ ÚÐÝÐÛ ***"
@ -219,9 +234,6 @@ msgstr "FTA (
msgid "encrypted"
msgstr "×ÐÚÞÔÞÒÐÝÞ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Edit channel"
msgstr "ÀÕÔÐÚâãÒÐÝÝï ÚÐÝÐÛã"
@ -270,21 +282,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "¿ÞÛïàØ×Ðæöï"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "ÁØÜÒ. èÒØÔÚöáâì"
msgid "Inversion"
msgstr "¦ÝÒÕàáöï"
msgid "off"
msgstr "ÒØÚÛ"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ÝöçÞÓÞ"
msgid "CoderateL"
msgstr "CoderateL"
@ -303,6 +312,15 @@ msgstr "
msgid "Hierarchy"
msgstr "¦ôàÐàåöï"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "¿àöÞàØâÕâ"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛã ÝÕ ôÔØÝö!"
@ -348,9 +366,6 @@ msgstr "
msgid "VPS"
msgstr "VPS ßÞßàÐÒÚÐ"
msgid "Priority"
msgstr "¿àöÞàØâÕâ"
msgid "Lifetime"
msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï"
@ -893,6 +908,9 @@ msgstr "
msgid "Button$Insert"
msgstr "²áâÐÒÚÐ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Plugin"
msgstr "¼ÞÔãÛì"

3
sdt.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: sdt.c 1.17 2007/06/10 08:50:49 kls Exp $
* $Id: sdt.c 1.18 2008/01/27 13:24:25 kls Exp $
*/
#include "sdt.h"
@ -55,6 +55,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
case 0x02: // digital radio sound service
case 0x04: // NVOD reference service
case 0x05: // NVOD time-shifted service
case 0x19: // digital HD television service
{
char NameBuf[Utf8BufSize(1024)];
char ShortNameBuf[Utf8BufSize(1024)];

18
vdr.5
View File

@ -8,7 +8,7 @@
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
.\" $Id: vdr.5 1.64 2007/09/26 10:57:08 kls Exp $
.\" $Id: vdr.5 1.65 2008/01/26 14:16:51 kls Exp $
.\"
.TH vdr 5 "07 Jan 2007" "1.4.5" "Video Disk Recorder Files"
.SH NAME
@ -83,19 +83,23 @@ meaning (and allowed values) are
.TS
tab (@);
l l.
\fBB\fR@Bandwidth (6, 7, 8)
\fBC\fR@Code rate high priority (0, 12, 23, 34, 45, 56, 67, 78, 89)
\fBD\fR@Code rate low priority (0, 12, 23, 34, 45, 56, 67, 78, 89)
\fBA\fR@Alpha (0, 1, 2, 4)
\fBB\fR@Bandwidth (5, 6, 7, 8)
\fBC\fR@Code rate high priority (0, 12, 13, 14, 23, 25, 34, 35, 45, 56, 67, 78, 89, 910)
\fBD\fR@coDe rate low priority (0, 12, 13, 14, 23, 25, 34, 35, 45, 56, 67, 78, 89, 910)
\fBG\fR@Guard interval (4, 8, 16, 32)
\fBH\fR@Horizontal polarization
\fBI\fR@Inversion (0, 1)
\fBL\fR@Left circular polarization
\fBM\fR@Modulation (0, 16, 32, 64, 128, 256)
\fBM\fR@Modulation (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 32, 64, 128, 256, 512, 998, 1024)
\fBO\fR@rollOff (0, 20, 25, 35)
\fBP\fR@Priority (0, 1)
\fBR\fR@Right circular polarization
\fBT\fR@Transmission mode (2, 8)
\fBT\fR@Transmission mode (2, 4, 8)
\fBV\fR@Vertical polarization
\fBY\fR@Hierarchy (0, 1, 2, 4)
\fBY\fR@hierarchY (0, 1)
.TE
The polarization parameters have no integer numbers following them. This is for
compatibility with files from older versions and also to keep the DVB-S entries
as simple as possible.