1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Re-implemented handling of DVB-S2

This commit is contained in:
Klaus Schmidinger 2008-04-12 13:39:12 +02:00
parent 0b82b38533
commit e59c6ac433
38 changed files with 1224 additions and 599 deletions

View File

@ -5729,3 +5729,12 @@ Video Disk Recorder Revision History
- Added Chinese language texts (thanks to Nan Feng).
- Updated the Portuguese language texts.
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
2008-04-12: Version 1.7.0
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
Note that the channels.conf file now supports additional parameters, so you may
want to make sure you have a backup of this file in case you need to go back to
the previous version of VDR!

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.60 2008/03/05 16:42:50 kls Exp $
* $Id: channels.c 2.1 2008/04/12 11:02:40 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.47 2008/02/08 13:48:31 kls Exp $
* $Id: channels.h 2.1 2008/04/12 10:49:51 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: config.h 1.310 2008/03/23 10:26:10 kls Exp $
* $Id: config.h 2.1 2008/04/12 13:02:10 kls Exp $
*/
#ifndef __CONFIG_H
@ -22,13 +22,13 @@
// VDR's own version number:
#define VDRVERSION "1.6.0"
#define VDRVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
#define VDRVERSION "1.7.0"
#define VDRVERSNUM 10700 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number:
#define APIVERSION "1.6.0"
#define APIVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
#define APIVERSION "1.7.0"
#define APIVERSNUM 10700 // Version * 10000 + Major * 100 + Minor
// When loading plugins, VDR searches them by their APIVERSION, which
// may be smaller than VDRVERSION in case there have been no changes to

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.157 2008/03/09 10:03:34 kls Exp $
* $Id: device.c 2.1 2008/04/12 11:15:32 kls Exp $
*/
#include "device.h"
@ -355,6 +355,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)
{
cDevice *AvoidDevice = avoidDevice;
@ -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)
@ -712,6 +728,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.91 2008/02/23 13:13:04 kls Exp $
* $Id: device.h 2.1 2008/04/12 11:11:23 kls Exp $
*/
#ifndef __DEVICE_H
@ -228,6 +228,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.170 2008/02/09 16:11:44 kls Exp $
* $Id: dvbdevice.c 2.1 2008/04/12 11:32:56 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,15 +192,11 @@ 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
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) {
@ -220,7 +235,6 @@ bool cDvbTuner::SetFrontend(void)
}
else {
int tone = SEC_TONE_OFF;
if (frequency < (unsigned int)Setup.LnbSLOF) {
frequency -= Setup.LnbFrequLo;
tone = SEC_TONE_OFF;
@ -233,54 +247,71 @@ bool cDvbTuner::SetFrontend(void)
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
Frontend.delivery = dvbfe_delsys(channel.System());
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());
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());
}
tuneTimeout = DVBS_TUNE_TIMEOUT;
lockTimeout = DVBS_LOCK_TIMEOUT;
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
break;
case FE_QAM: { // DVB-C
// Frequency and symbol rate:
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.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());
Frontend.delsys.dvbc.symbol_rate = channel.Srate() * 1000UL;
Frontend.delsys.dvbc.fec = dvbfe_fec(channel.CoderateH());
Frontend.delsys.dvbc.modulation = dvbfe_modulation(channel.Modulation());
tuneTimeout = DVBC_TUNE_TIMEOUT;
lockTimeout = DVBC_LOCK_TIMEOUT;
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
break;
case FE_OFDM: { // DVB-T
// Frequency and OFDM paramaters:
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.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());
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 = DVBT_TUNE_TIMEOUT;
lockTimeout = DVBT_LOCK_TIMEOUT;
dvbfe_info feinfo;
feinfo.delivery = Frontend.delivery;
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
}
break;
default:
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
@ -744,14 +800,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
@ -760,7 +822,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)) {
@ -792,6 +854,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.47 2008/02/08 13:48:31 kls Exp $
* $Id: dvbdevice.h 2.1 2008/04/12 11:20:48 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.482 2008/03/16 11:15:28 kls Exp $
* $Id: menu.c 2.1 2008/04/12 11:37:17 kls Exp $
*/
#include "menu.h"
@ -182,70 +182,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 {
@ -306,15 +242,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.58 2008/02/10 16:03:30 kls Exp $
* $Id: menuitems.c 2.1 2008/04/12 12:05:25 kls Exp $
*/
#include "menuitems.h"
@ -936,6 +936,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.25 2008/02/16 16:09:58 kls Exp $
* $Id: menuitems.h 2.1 2008/04/12 12:03:59 kls Exp $
*/
#ifndef __MENUITEMS_H
@ -160,6 +160,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.18 2008/02/08 13:48:31 kls Exp $
* $Id: nit.c 2.1 2008/04/12 12:06:40 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.20 2008/02/08 13:48:31 kls Exp $
* $Id: pat.c 2.1 2008/04/12 13:34:50 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

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
"Language-Team: Catalanian\n"
@ -18,6 +18,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 ***"
@ -228,9 +243,6 @@ msgstr "No codificat"
msgid "encrypted"
msgstr "Codificat"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Editar canal"
@ -279,21 +291,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"
@ -312,6 +321,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!"
@ -357,9 +375,6 @@ msgstr "Fi"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritat"
msgid "Lifetime"
msgstr "Durada"
@ -894,6 +909,9 @@ msgstr "Sobrescriure"
msgid "Button$Insert"
msgstr "Inserir"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-28 15:00+0200\n"
"Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>, Jiøí Dobrý <jdobry@centrum.cz>\n"
"Language-Team: Czech\n"
@ -16,6 +16,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 ***"
@ -226,9 +241,6 @@ msgstr "voln
msgid "encrypted"
msgstr "kódovaný"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Editace kanálu"
@ -277,21 +289,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"
@ -310,6 +319,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í!"
@ -355,9 +373,6 @@ msgstr "Konec"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorita"
msgid "Lifetime"
msgstr "®ivotnost"
@ -892,6 +907,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
"Language-Team: Danish\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! ***"
@ -225,9 +240,6 @@ msgstr "Free To Air"
msgid "encrypted"
msgstr "kodet"
msgid "auto"
msgstr "automatisk"
msgid "Edit channel"
msgstr "Rediger kanal"
@ -276,21 +288,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"
@ -309,6 +318,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!"
@ -354,9 +372,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-11-25 15:19+0200\n"
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
"Language-Team: German\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 ***"
@ -225,9 +240,6 @@ msgstr "frei empfangbar"
msgid "encrypted"
msgstr "verschlüsselt"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Kanal editieren"
@ -276,21 +288,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"
@ -309,6 +318,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!"
@ -354,9 +372,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
"Language-Team: Greek\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 "*** Áêõñï êáíÜëç ***"
@ -225,9 +240,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr "áõôüìáôï"
msgid "Edit channel"
msgstr "Ôñïðïðïßçóç Êáíáëéïý"
@ -276,21 +288,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"
@ -309,6 +318,15 @@ msgstr "
msgid "Hierarchy"
msgstr "Éåñáñ÷åßá"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Ðñïôåñáéüôçôá"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!"
@ -354,9 +372,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

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-03-02 17:25+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
"Language-Team: Spanish\n"
@ -16,6 +16,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 ***"
@ -226,9 +241,6 @@ msgstr "en abierto"
msgid "encrypted"
msgstr "cifrado"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Modificar canal"
@ -277,21 +289,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"
@ -310,6 +319,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!"
@ -355,9 +373,6 @@ msgstr "Fin"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioridad"
msgid "Lifetime"
msgstr "Duración"
@ -892,6 +907,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
"Language-Team: Estonian\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 ***"
@ -225,9 +240,6 @@ msgstr "FTA"
msgid "encrypted"
msgstr "krüptitud"
msgid "auto"
msgstr "automaatne"
msgid "Edit channel"
msgstr "Kanali muutmine"
@ -276,21 +288,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"
@ -309,6 +318,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!"
@ -354,9 +372,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
"Language-Team: Finnish\n"
@ -18,6 +18,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "poissa"
msgid "on"
msgstr "päällä"
msgid "none"
msgstr "tyhjä"
msgid "high"
msgstr "korkea"
msgid "low"
msgstr "matala"
msgid "*** Invalid Channel ***"
msgstr "*** Virheellinen kanavavalinta ***"
@ -228,9 +243,6 @@ msgstr "vapaa"
msgid "encrypted"
msgstr "salattu"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Muokkaa kanavaa"
@ -279,21 +291,18 @@ msgstr "Palvelu-ID"
msgid "Polarization"
msgstr "Polarisaatio"
msgid "System"
msgstr "Systeemi"
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)"
@ -312,6 +321,15 @@ msgstr "Suojav
msgid "Hierarchy"
msgstr "Hierarkia"
msgid "Alpha"
msgstr "Alpha"
msgid "Priority"
msgstr "Prioriteetti"
msgid "Rolloff"
msgstr "Rolloff"
msgid "Channel settings are not unique!"
msgstr "Kanava-asetukset eivät ole yksilölliset!"
@ -357,9 +375,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
"Language-Team: French\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 ! ***"
@ -231,9 +246,6 @@ msgstr "En clair"
msgid "encrypted"
msgstr "Crypté"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Modifier une chaîne"
@ -282,21 +294,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"
@ -315,6 +324,15 @@ msgstr "Intervalle de garde"
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"
@ -360,9 +378,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

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
"Language-Team: Croatian\n"
@ -17,6 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "off"
msgstr "iskljuèi"
msgid "on"
msgstr ""
msgid "none"
msgstr "ni¹ta"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neispravan Program ***"
@ -227,9 +242,6 @@ msgstr "Slobodno"
msgid "encrypted"
msgstr "kriptirano"
msgid "auto"
msgstr "automatski"
msgid "Edit channel"
msgstr "Ureðivanje programa"
@ -278,21 +290,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizacija"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inverzija"
msgid "off"
msgstr "iskljuèi"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "ni¹ta"
msgid "CoderateL"
msgstr "CoderateL"
@ -311,6 +320,15 @@ msgstr "Za
msgid "Hierarchy"
msgstr "Hijerarhija"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Postavke programa nisu jedinstvene!"
@ -356,9 +374,6 @@ msgstr "Kraj"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Trajanje"
@ -893,6 +908,9 @@ msgstr "Prepi
msgid "Button$Insert"
msgstr "Umetni"
msgid "auto"
msgstr "automatski"
msgid "Plugin"
msgstr "Dodatak"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
"Language-Team: Hungarian\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 ***"
@ -228,9 +243,6 @@ msgstr "K
msgid "encrypted"
msgstr "Kódolt"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Csatornák beállítása"
@ -279,21 +291,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"
@ -312,6 +321,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"
@ -357,9 +375,6 @@ msgstr "V
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritás"
msgid "Lifetime"
msgstr "Élettartam"
@ -785,9 +800,8 @@ msgstr "ahogy az el
msgid "Setup.Miscellaneous$Initial volume"
msgstr "Hangerõ a bekapcsolásnál"
#, fuzzy
msgid "Setup.Miscellaneous$Emergency exit"
msgstr "ahogy az elõbb"
msgstr ""
msgid "Plugins"
msgstr "Plugins"
@ -895,6 +909,9 @@ msgstr "
msgid "Button$Insert"
msgstr "Beilleszteni"
msgid "auto"
msgstr "auto"
msgid "Plugin"
msgstr "Plugin"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-08 21:06+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: Italian\n"
@ -19,6 +19,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 ***"
@ -229,9 +244,6 @@ msgstr "in chiaro"
msgid "encrypted"
msgstr "codificato"
msgid "auto"
msgstr "automatico"
msgid "Edit channel"
msgstr "Modifica canale"
@ -280,21 +292,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarizzazione"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "SymbolRate"
msgid "Inversion"
msgstr "Inversione"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "nessuno"
msgid "CoderateL"
msgstr "CoderateL"
@ -313,6 +322,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Gerarchia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Priorità"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Parametri canale non univoci!"
@ -358,9 +376,6 @@ msgstr "Fine"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorità"
msgid "Lifetime"
msgstr "Durata"
@ -895,6 +910,9 @@ msgstr "Sovrascrivi"
msgid "Button$Insert"
msgstr "Inserisci"
msgid "auto"
msgstr "automatico"
msgid "Plugin"
msgstr "Plugin"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
"Language-Team: Dutch\n"
@ -19,6 +19,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 ***"
@ -229,9 +244,6 @@ msgstr "Vrij te ontvangen"
msgid "encrypted"
msgstr "gecodeerd"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Kanaal aanpassen"
@ -280,21 +292,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"
@ -313,6 +322,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchie"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioriteit"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Kanaalinstellingen zijn niet uniek!"
@ -358,9 +376,6 @@ msgstr "Einde"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioriteit"
msgid "Lifetime"
msgstr "Bewaarduur"
@ -895,6 +910,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
"Language-Team: Norwegian\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! ***"
@ -226,9 +241,6 @@ msgstr ""
msgid "encrypted"
msgstr ""
msgid "auto"
msgstr ""
msgid "Edit channel"
msgstr "Editer kanal"
@ -277,21 +289,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"
@ -310,6 +319,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarchy"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioritet"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr ""
@ -355,9 +373,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

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
"Language-Team: Polish\n"
@ -16,6 +16,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³ ***"
@ -226,9 +241,6 @@ msgstr "nieszyfrowany"
msgid "encrypted"
msgstr "szyfrowany"
msgid "auto"
msgstr "auto"
msgid "Edit channel"
msgstr "Edycja kana³u"
@ -277,21 +289,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"
@ -310,6 +319,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!"
@ -355,9 +373,6 @@ msgstr "Koniec"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Priorytet"
msgid "Lifetime"
msgstr "Czas ¿ycia"
@ -892,6 +907,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-18 17:04+0100\n"
"Last-Translator: anonymous\n"
"Language-Team: Portuguese\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 "nenhum"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal inválido ***"
@ -225,9 +240,6 @@ msgstr "FTA"
msgid "encrypted"
msgstr "Codificado"
msgid "auto"
msgstr "Automático"
msgid "Edit channel"
msgstr "Editar canal"
@ -276,21 +288,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "Polarização"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "Srate"
msgid "Inversion"
msgstr "Inversão"
msgid "off"
msgstr "off"
msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
msgstr "nenhum"
msgid "CoderateL"
msgstr "CoderateL"
@ -309,6 +318,15 @@ msgstr "Guard"
msgid "Hierarchy"
msgstr "Hierarquia"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "Prioridade"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "Propriedades do canal não são únicas!"
@ -354,9 +372,6 @@ msgstr "Fim"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioridade"
msgid "Lifetime"
msgstr "Duração"
@ -891,6 +906,9 @@ msgstr "Substituir"
msgid "Button$Insert"
msgstr "Inserir"
msgid "auto"
msgstr "Automático"
msgid "Plugin"
msgstr "Plugin"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-25 00:39+0100\n"
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
"Language-Team: Romanian\n"
@ -18,6 +18,21 @@ msgstr ""
"X-Poedit-Language: Romanian\n"
"X-Poedit-Country: ROMANIA\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 ***"
@ -228,9 +243,6 @@ msgstr "FTA (necriptat)"
msgid "encrypted"
msgstr "criptat"
msgid "auto"
msgstr "automat"
msgid "Edit channel"
msgstr "Modificare canal"
@ -279,21 +291,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"
@ -312,6 +321,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!"
@ -357,9 +375,6 @@ msgstr "Sf
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritate"
msgid "Lifetime"
msgstr "Timp de pãstrare"
@ -894,6 +909,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-15 16:37+0100\n"
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
"Language-Team: Russian\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 "*** ½ÕßàÐÒØÛìÝëÙ ÚÐÝÐÛ ***"
@ -226,9 +241,6 @@ msgstr "FTA (
msgid "encrypted"
msgstr "×ÐÚÞÔØàÞÒÐÝÞ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Edit channel"
msgstr "ÀÕÔÐÚâØàÞÒÐÝØÕ ÚÐÝÐÛÐ"
@ -277,21 +289,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"
@ -310,6 +319,15 @@ msgstr "
msgid "Hierarchy"
msgstr "¸ÕàÐàåØï"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "¿àØÞàØâÕâ"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!"
@ -355,9 +373,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
"Language-Team: Slovenian\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 ***"
@ -226,9 +241,6 @@ msgstr "nekodiran"
msgid "encrypted"
msgstr "kodiran"
msgid "auto"
msgstr "avtomatsko"
msgid "Edit channel"
msgstr "Uredi kanal"
@ -277,21 +289,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"
@ -310,6 +319,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!"
@ -355,9 +373,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

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
"Language-Team: Swedish\n"
@ -18,6 +18,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 ***"
@ -228,9 +243,6 @@ msgstr "Okodad"
msgid "encrypted"
msgstr "krypterad"
msgid "auto"
msgstr "automatisk"
msgid "Edit channel"
msgstr "Ändra kanal"
@ -279,21 +291,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"
@ -312,6 +321,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!"
@ -357,9 +375,6 @@ msgstr "Slutar"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "Prioritet"
msgid "Lifetime"
msgstr "Livstid"
@ -894,6 +909,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
"Language-Team: Turkish\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 ***"
@ -225,9 +240,6 @@ msgstr "
msgid "encrypted"
msgstr "Þifreli"
msgid "auto"
msgstr "otomatik"
msgid "Edit channel"
msgstr "Kanal ayarlarýný deðiþtir"
@ -276,21 +288,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"
@ -309,6 +318,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!"
@ -354,9 +372,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-07 14:17+0200\n"
"Last-Translator: Yarema Aka Knedlyk <yupadmin@gmail.com>\n"
"Language-Team: Ukrainian\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 "*** ½ÕßàÐÒØÛìÝØÙ ÚÐÝÐÛ ***"
@ -225,9 +240,6 @@ msgstr "FTA (
msgid "encrypted"
msgstr "×ÐÚÞÔÞÒÐÝÞ"
msgid "auto"
msgstr "ÐÒâÞ"
msgid "Edit channel"
msgstr "ÀÕÔÐÚâãÒÐÝÝï ÚÐÝÐÛã"
@ -276,21 +288,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"
@ -309,6 +318,15 @@ msgstr "
msgid "Hierarchy"
msgstr "¦ôàÐàåöï"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "¿àöÞàØâÕâ"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛã ÝÕ ôÔØÝö!"
@ -354,9 +372,6 @@ msgstr "
msgid "VPS"
msgstr "VPS ßÞßàÐÒÚÐ"
msgid "Priority"
msgstr "¿àöÞàØâÕâ"
msgid "Lifetime"
msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï"
@ -873,14 +888,12 @@ msgstr "
msgid "Editing process already active!"
msgstr "¿àÞæÕá ÒöÔÕÞÜÞÝâÐÖã ÒÖÕ ×ÐßãéÕÝØÙ!"
#, fuzzy
msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕôñÖ×Øö÷ÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~,/_@"
msgid "yes"
msgstr "âÐÚ"
#, fuzzy
msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr " 0\t-.#~,/_@1\tabcÐÑÒÓ2\tdefÔÕôñÖ×3\tghiØö÷ÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9"
@ -893,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.6.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2008-03-22 13:28+0100\n"
"POT-Creation-Date: 2008-04-12 14:19+0200\n"
"PO-Revision-Date: 2008-03-21 08:44+0800\n"
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
"Language-Team: Chinese\n"
@ -18,6 +18,21 @@ msgstr ""
"X-Poedit-Country: CHINA\n"
"X-Poedit-SourceCharset: utf-8\n"
msgid "off"
msgstr "关"
msgid "on"
msgstr ""
msgid "none"
msgstr "无"
msgid "high"
msgstr ""
msgid "low"
msgstr ""
msgid "*** Invalid Channel ***"
msgstr "***无效频道 ***"
@ -228,9 +243,6 @@ msgstr "剩余空间"
msgid "encrypted"
msgstr "加密"
msgid "auto"
msgstr "自动"
msgid "Edit channel"
msgstr "编辑频道"
@ -279,21 +291,18 @@ msgstr "Sid"
msgid "Polarization"
msgstr "极化"
msgid "System"
msgstr ""
msgid "Srate"
msgstr "比率"
msgid "Inversion"
msgstr "倒置"
msgid "off"
msgstr "关"
msgid "CoderateH"
msgstr "高符号频率"
msgid "none"
msgstr "无"
msgid "CoderateL"
msgstr "论符号频率"
@ -312,6 +321,15 @@ msgstr "防护"
msgid "Hierarchy"
msgstr "层次"
msgid "Alpha"
msgstr ""
msgid "Priority"
msgstr "优先"
msgid "Rolloff"
msgstr ""
msgid "Channel settings are not unique!"
msgstr "频道设置不是唯一的!"
@ -357,9 +375,6 @@ msgstr "停止"
msgid "VPS"
msgstr "VPS"
msgid "Priority"
msgstr "优先"
msgid "Lifetime"
msgstr "终生"
@ -894,6 +909,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.19 2008/02/08 13:48:31 kls Exp $
* $Id: sdt.c 2.1 2008/04/12 13:33:55 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.68 2008/03/09 15:46:57 kls Exp $
.\" $Id: vdr.5 2.1 2008/04/12 10:46:32 kls Exp $
.\"
.TH vdr 5 "10 Feb 2008" "1.6" "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.