diff -ruN vdr-1.6.0/CONTRIBUTORS vdr-1.7.0/CONTRIBUTORS
--- vdr-1.6.0/CONTRIBUTORS	2008-03-18 18:34:00.000000000 +0100
+++ vdr-1.7.0/CONTRIBUTORS	2008-04-13 15:30:55.000000000 +0200
@@ -595,6 +595,8 @@
  not two hex digits after the '#'
  for suggesting to suppress the automatic shutdown if the remote control is
  currently disabled
+ for suggesting to improve logging system time changes to avoid problems on slow
+ systems under heavy load
 
 Jeremy Hall <jhall@UU.NET>
  for fixing an incomplete initialization of the filter parameters in eit.c
@@ -958,6 +960,7 @@
  for making the SVDRP command LSTC list the channels with group separators if the
  option ':groups' is given
  for fixing handling 3 and 4 byte UTF-8 symbols in Utf8CharGet()
+ for fixing initializing the timer's flags in the cTimer copy constructor
 
 Olivier Jacques <jacquesolivier@hotmail.com>)
  for translating OSD texts to the French language
@@ -1050,6 +1053,7 @@
  language
  for fixing displaying the free disk space when entering the recordings menu where
  the last replayed recording was in a subdirectory, and pressing Back
+ for setting the thread name, so that it can be seen in 'top -H'
 
 Ralf Klueber <ralf.klueber@vodafone.com>
  for reporting a bug in cutting a recording if there is only a single editing mark
@@ -1174,6 +1178,8 @@
  for reporting an invalid access in the section handler when ending VDR
  for pointing out that cDevice::Transferring() doesn't return the right value in the
  early stage of channel switching
+ for fixing displaying transponder data when it is modified
+ for fixing handling the counter in detection of pre 1.3.19 PS data
 
 Richard Robson <richard_robson@beeb.net>
  for reporting freezing replay if a timer starts while in Transfer Mode from the
@@ -1506,6 +1512,7 @@
  for translating OSD texts to the Estonian language
  for fixing a missing ',' in the Greek OSD texts
  for fixing a missing ',' in the Swedish OSD texts
+ for reporting problems with CAMs when checking the CAM status too frequently
 
 Milos Kapoun <m.kapoun@cra.cz>
  for suggesting to skip code table info in SI data
@@ -1702,6 +1709,7 @@
  Channel+ or Channel- is pressed
  for pointing out a possible problem with asprintf() if the return value is not
  checked
+ for fixing setting the OSD level in the 'osddemo' example
 
 Chad Flynt <hoochster@sofnet.com>
  for suggestions and experiments regarding the buffer reserve in cTransfer
diff -ruN vdr-1.6.0/HISTORY vdr-1.7.0/HISTORY
--- vdr-1.6.0/HISTORY	2008-03-23 11:26:08.000000000 +0100
+++ vdr-1.7.0/HISTORY	2008-04-13 15:35:09.000000000 +0200
@@ -5729,3 +5729,35 @@
 - 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-13: 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!
+- Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
+- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
+  Nissl).
+- Improved logging system time changes to avoid problems on slow systems under
+  heavy load (suggested by Helmut Auer).
+- Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
+  Ahrenberg).
+- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
+  Andreas Mair).
+- Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
+- Increased the time between checking the CAM status to 500ms to avoid problems
+  with some CAMs (reported by Arthur Konovalov).
+
+2008-04-13: Version 1.6.0-1
+
+- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
+  Nissl).
+- Improved logging system time changes to avoid problems on slow systems under
+  heavy load (suggested by Helmut Auer).
+- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
+  Andreas Mair).
+- Increased the time between checking the CAM status to 500ms to avoid problems
+  with some CAMs (reported by Arthur Konovalov).
diff -ruN vdr-1.6.0/PLUGINS/src/osddemo/HISTORY vdr-1.7.0/PLUGINS/src/osddemo/HISTORY
--- vdr-1.6.0/PLUGINS/src/osddemo/HISTORY	2007-08-15 15:17:40.000000000 +0200
+++ vdr-1.7.0/PLUGINS/src/osddemo/HISTORY	2008-04-13 15:02:53.000000000 +0200
@@ -17,3 +17,7 @@
 
 - Moved the "all" target in the Makefile before the "Implicit rules",
   so that a plain "make" will compile everything.
+
+2008-04-13: Version 0.1.3
+
+- Fixed setting the OSD level (thanks to Wolfgang Rohdewald).
diff -ruN vdr-1.6.0/PLUGINS/src/osddemo/osddemo.c vdr-1.7.0/PLUGINS/src/osddemo/osddemo.c
--- vdr-1.6.0/PLUGINS/src/osddemo/osddemo.c	2007-08-15 15:17:55.000000000 +0200
+++ vdr-1.7.0/PLUGINS/src/osddemo/osddemo.c	2008-04-13 14:59:57.000000000 +0200
@@ -3,12 +3,12 @@
  *
  * See the README file for copyright information and how to reach the author.
  *
- * $Id: osddemo.c 1.4 2007/08/15 13:17:55 kls Exp $
+ * $Id: osddemo.c 2.1 2008/04/13 12:59:57 kls Exp $
  */
 
 #include <vdr/plugin.h>
 
-static const char *VERSION        = "0.1.2";
+static const char *VERSION        = "0.1.3";
 static const char *DESCRIPTION    = "Demo of arbitrary OSD setup";
 static const char *MAINMENUENTRY  = "Osd Demo";
 
@@ -41,7 +41,7 @@
 
 void cLineGame::Show(void)
 {
-  osd = cOsdProvider::NewOsd(100, 50);
+  osd = cOsdProvider::NewOsd(100, 50, 50);
   if (osd) {
      tArea Area = { 0, 0, 99, 199,  4 };
      osd->SetAreas(&Area, 1);
diff -ruN vdr-1.6.0/channels.c vdr-1.7.0/channels.c
--- vdr-1.6.0/channels.c	2008-03-05 17:42:50.000000000 +0100
+++ vdr-1.7.0/channels.c	2008-04-12 15:49:12.000000000 +0200
@@ -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.2 2008/04/12 13:49:12 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 @@
   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 @@
   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 @@
      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 @@
   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 OldTransponderData = TransponderDataToString();
      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 %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
+        modification |= CHANNELMOD_TRANSP;
+        Channels.SetModified();
+        }
      }
   return true;
 }
@@ -317,29 +378,26 @@
 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 OldTransponderData = TransponderDataToString();
      source = Source;
      frequency = Frequency;
      modulation = Modulation;
      srate = Srate;
      coderateH = CoderateH;
      schedule = NULL;
+     if (Number()) {
+        dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
+        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 OldTransponderData = TransponderDataToString();
      source = Source;
      frequency = Frequency;
      bandwidth = Bandwidth;
@@ -349,7 +407,14 @@
      coderateL = CoderateL;
      guard = Guard;
      transmission = Transmission;
+     alpha = Alpha;
+     priority = Priority;
      schedule = NULL;
+     if (Number()) {
+        dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
+        modification |= CHANNELMOD_TRANSP;
+        Channels.SetModified();
+        }
      }
   return true;
 }
@@ -587,6 +652,13 @@
   return Value >= 0 && Value != 999 ? sprintf(p, "%c%d", Name, Value) : 0;
 }
 
+cString cChannel::TransponderDataToString(void) const
+{
+  if (cSource::IsTerr(source))
+     return cString::sprintf("%d:%s:%s", frequency, *ParametersToString(), *cSource::ToString(source));
+  return cString::sprintf("%d:%s:%s:%d", frequency, *ParametersToString(), *cSource::ToString(source), srate);
+}
+
 cString cChannel::ParametersToString(void) const
 {
   char type = **cSource::ToString(source);
@@ -597,13 +669,17 @@
   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 +704,7 @@
 {
   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 +713,11 @@
           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;
diff -ruN vdr-1.6.0/channels.h vdr-1.7.0/channels.h
--- vdr-1.6.0/channels.h	2008-02-08 14:48:31.000000000 +0100
+++ vdr-1.7.0/channels.h	2008-04-12 15:46:50.000000000 +0200
@@ -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.2 2008/04/12 13:46:50 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 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,14 +144,19 @@
   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;
   cLinkChannels *linkChannels;
   cChannel *refChannel;
+  cString TransponderDataToString(void) const;
   cString ParametersToString(void) const;
   bool StringToParameters(const char *s);
 public:
@@ -194,9 +203,13 @@
   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 +219,9 @@
   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);
diff -ruN vdr-1.6.0/ci.c vdr-1.7.0/ci.c
--- vdr-1.6.0/ci.c	2007-04-30 15:02:49.000000000 +0200
+++ vdr-1.7.0/ci.c	2008-04-13 15:28:52.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: ci.c 1.48 2007/04/30 13:02:49 kls Exp $
+ * $Id: ci.c 2.1 2008/04/13 13:28:52 kls Exp $
  */
 
 #include "ci.h"
@@ -1525,7 +1525,7 @@
 
 cCamSlots CamSlots;
 
-#define MODULE_CHECK_INTERVAL 100 // ms
+#define MODULE_CHECK_INTERVAL 500 // ms
 #define MODULE_RESET_TIMEOUT    2 // s
 
 cCamSlot::cCamSlot(cCiAdapter *CiAdapter)
diff -ruN vdr-1.6.0/config.h vdr-1.7.0/config.h
--- vdr-1.6.0/config.h	2008-03-23 11:26:10.000000000 +0100
+++ vdr-1.7.0/config.h	2008-04-12 15:02:10.000000000 +0200
@@ -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
diff -ruN vdr-1.6.0/device.c vdr-1.7.0/device.c
--- vdr-1.6.0/device.c	2008-03-09 11:03:34.000000000 +0100
+++ vdr-1.7.0/device.c	2008-04-12 16:12:14.000000000 +0200
@@ -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.2 2008/04/12 14:12:14 kls Exp $
  */
 
 #include "device.h"
@@ -355,6 +355,21 @@
   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 @@
              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 @@
   return false;
 }
 
+int cDevice::NumProvidedSystems(void) const
+{
+  return 0;
+}
+
 bool cDevice::IsTunedToTransponder(const cChannel *Channel)
 {
   return false;
@@ -1273,7 +1294,7 @@
                uchar SubStreamIndex = SubStreamId & 0x1F;
 
                // Compatibility mode for old VDR recordings, where 0xBD was only AC3:
-pre_1_3_19_PrivateStreamDeteced:
+pre_1_3_19_PrivateStreamDetected:
                if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
                   SubStreamId = c;
                   SubStreamType = 0x80;
@@ -1314,7 +1335,8 @@
                          if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
                             dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
                             ClrAvailableTracks();
-                            goto pre_1_3_19_PrivateStreamDeteced;
+                            pre_1_3_19_PrivateStream = MIN_PRE_1_3_19_PRIVATESTREAM + 1;
+                            goto pre_1_3_19_PrivateStreamDetected;
                             }
                          }
                  }
diff -ruN vdr-1.6.0/device.h vdr-1.7.0/device.h
--- vdr-1.6.0/device.h	2008-02-23 14:13:04.000000000 +0100
+++ vdr-1.7.0/device.h	2008-04-12 13:11:23.000000000 +0200
@@ -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 @@
          ///< 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.
diff -ruN vdr-1.6.0/dvbdevice.c vdr-1.7.0/dvbdevice.c
--- vdr-1.6.0/dvbdevice.c	2008-02-09 17:11:44.000000000 +0100
+++ vdr-1.7.0/dvbdevice.c	2008-04-13 16:15:35.000000000 +0200
@@ -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.2 2008/04/13 14:15:35 kls Exp $
  */
 
 #include "dvbdevice.h"
@@ -76,7 +76,7 @@
   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 @@
   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 @@
   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 @@
 
 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 @@
 
 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;
-
-            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
-         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;
-         }
-         break;
-    case FE_QAM: { // DVB-C
-
-         // Frequency and symbol rate:
-
-         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());
-
-         tuneTimeout = DVBC_TUNE_TIMEOUT;
-         lockTimeout = DVBC_LOCK_TIMEOUT;
-         }
-         break;
-    case FE_OFDM: { // DVB-T
+              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
 
-         // Frequency and OFDM paramaters:
+     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());
+        }
 
-         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 = DVBS_TUNE_TIMEOUT;
+     lockTimeout = DVBS_LOCK_TIMEOUT;
 
-         tuneTimeout = DVBT_TUNE_TIMEOUT;
-         lockTimeout = DVBT_LOCK_TIMEOUT;
-         }
-         break;
-    default:
-         esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
-         return false;
-    }
-  if (ioctl(fd_frontend, FE_SET_FRONTEND, &Frontend) < 0) {
+     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());
+
+     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
+     }
+  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 = DVBT_TUNE_TIMEOUT;
+     lockTimeout = DVBT_LOCK_TIMEOUT;
+
+     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, DVBFE_SET_PARAMS, &Frontend) < 0) {
      esyslog("ERROR: frontend %d: %m", cardIndex);
      return false;
      }
@@ -351,11 +382,23 @@
 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 @@
   // 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 @@
 {
   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 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 @@
   return result;
 }
 
+int cDvbDevice::NumProvidedSystems(void) const
+{
+  return numProvidedSystems;
+}
+
 bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel)
 {
   return dvbTuner->IsTunedTo(Channel);
diff -ruN vdr-1.6.0/dvbdevice.h vdr-1.7.0/dvbdevice.h
--- vdr-1.6.0/dvbdevice.h	2008-02-08 14:48:31.000000000 +0100
+++ vdr-1.7.0/dvbdevice.h	2008-04-12 13:20:48.000000000 +0200
@@ -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 @@
          ///< 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 @@
   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);
diff -ruN vdr-1.6.0/eit.c vdr-1.7.0/eit.c
--- vdr-1.6.0/eit.c	2007-08-26 12:56:33.000000000 +0200
+++ vdr-1.7.0/eit.c	2008-04-13 13:27:06.000000000 +0200
@@ -8,7 +8,7 @@
  * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
  * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
  *
- * $Id: eit.c 1.126 2007/08/26 10:56:33 kls Exp $
+ * $Id: eit.c 2.1 2008/04/13 11:27:06 kls Exp $
  */
 
 #include "eit.h"
@@ -300,9 +300,9 @@
   if (diff > 2) {
      mutex.Lock();
      if (abs(diff - lastDiff) < 3) {
-        isyslog("System Time = %s (%ld)", *TimeToString(loctim), loctim);
-        isyslog("Local Time  = %s (%ld)", *TimeToString(sattim), sattim);
-        if (stime(&sattim) < 0)
+        if (stime(&sattim) == 0)
+           isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
+        else
            esyslog("ERROR while setting system time: %m");
         }
      lastDiff = diff;
diff -ruN vdr-1.6.0/libsi/gendescr.pl vdr-1.7.0/libsi/gendescr.pl
--- vdr-1.6.0/libsi/gendescr.pl	2003-12-13 11:40:53.000000000 +0100
+++ vdr-1.7.0/libsi/gendescr.pl	2003-12-13 11:40:53.000000000 +0100
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: gendescr.pl 1.2 2003/12/13 10:40:53 kls Exp $
+# $Id: gendescr.pl 2.0 2003/12/13 10:40:53 kls Exp $
 
 print "Name (ohne ...Descriptor):";
 $name=<STDIN>;
diff -ruN vdr-1.6.0/menu.c vdr-1.7.0/menu.c
--- vdr-1.6.0/menu.c	2008-03-16 12:15:28.000000000 +0100
+++ vdr-1.7.0/menu.c	2008-04-12 13:37:17.000000000 +0200
@@ -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 @@
   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 @@
   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();
diff -ruN vdr-1.6.0/menuitems.c vdr-1.7.0/menuitems.c
--- vdr-1.6.0/menuitems.c	2008-02-10 17:03:30.000000000 +0100
+++ vdr-1.7.0/menuitems.c	2008-04-12 14:05:25.000000000 +0200
@@ -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 @@
   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)
diff -ruN vdr-1.6.0/menuitems.h vdr-1.7.0/menuitems.h
--- vdr-1.6.0/menuitems.h	2008-02-16 17:09:58.000000000 +0100
+++ vdr-1.7.0/menuitems.h	2008-04-12 14:03:59.000000000 +0200
@@ -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 @@
   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 {
diff -ruN vdr-1.6.0/nit.c vdr-1.7.0/nit.c
--- vdr-1.6.0/nit.c	2008-02-08 14:48:31.000000000 +0100
+++ vdr-1.7.0/nit.c	2008-04-12 14:06:40.000000000 +0200
@@ -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 @@
                  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 @@
                                   }
                               }
                            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 @@
                  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 @@
                  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 @@
                                   }
                               }
                            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;
diff -ruN vdr-1.6.0/pat.c vdr-1.7.0/pat.c
--- vdr-1.6.0/pat.c	2008-02-08 14:48:31.000000000 +0100
+++ vdr-1.7.0/pat.c	2008-04-12 15:34:50.000000000 +0200
@@ -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 @@
             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
diff -ruN vdr-1.6.0/po/ca_ES.po vdr-1.7.0/po/ca_ES.po
--- vdr-1.6.0/po/ca_ES.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/ca_ES.po	2008-04-13 16:16:58.000000000 +0200
@@ -10,7 +10,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "Codificat"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Editar canal"
 
@@ -279,21 +291,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritat"
-
 msgid "Lifetime"
 msgstr "Durada"
 
@@ -894,6 +909,9 @@
 msgid "Button$Insert"
 msgstr "Inserir"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/cs_CZ.po vdr-1.7.0/po/cs_CZ.po
--- vdr-1.6.0/po/cs_CZ.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/cs_CZ.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "kódovaný"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Editace kanálu"
 
@@ -277,21 +289,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Priorita"
-
 msgid "Lifetime"
 msgstr "®ivotnost"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr "Vlo¾it"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Modul"
 
diff -ruN vdr-1.6.0/po/da_DK.po vdr-1.7.0/po/da_DK.po
--- vdr-1.6.0/po/da_DK.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/da_DK.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "kodet"
 
-msgid "auto"
-msgstr "automatisk"
-
 msgid "Edit channel"
 msgstr "Rediger kanal"
 
@@ -276,21 +288,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritet"
-
 msgid "Lifetime"
 msgstr "Levetid"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "Indsæt"
 
+msgid "auto"
+msgstr "automatisk"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/de_DE.po vdr-1.7.0/po/de_DE.po
--- vdr-1.6.0/po/de_DE.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/de_DE.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "verschlüsselt"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Kanal editieren"
 
@@ -276,21 +288,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Priorität"
-
 msgid "Lifetime"
 msgstr "Lebensdauer"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "Einfügen"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/el_GR.po vdr-1.7.0/po/el_GR.po
--- vdr-1.6.0/po/el_GR.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/el_GR.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr ""
 
-msgid "auto"
-msgstr "áõôüìáôï"
-
 msgid "Edit channel"
 msgstr "Ôñïðïðïßçóç Êáíáëéïý"
 
@@ -276,21 +288,18 @@
 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 @@
 msgid "Hierarchy"
 msgstr "Éåñáñ÷åßá"
 
+msgid "Alpha"
+msgstr ""
+
+msgid "Priority"
+msgstr "Ðñïôåñáéüôçôá"
+
+msgid "Rolloff"
+msgstr ""
+
 msgid "Channel settings are not unique!"
 msgstr "Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!"
 
@@ -354,9 +372,6 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Ðñïôåñáéüôçôá"
-
 msgid "Lifetime"
 msgstr "ÄéÝñêåéá ÐáñáìïíÞò"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "ÅéóáãùãÞ"
 
+msgid "auto"
+msgstr "áõôüìáôï"
+
 msgid "Plugin"
 msgstr "ÅðÝêôáóç"
 
diff -ruN vdr-1.6.0/po/es_ES.po vdr-1.7.0/po/es_ES.po
--- vdr-1.6.0/po/es_ES.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/es_ES.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "cifrado"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Modificar canal"
 
@@ -277,21 +289,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioridad"
-
 msgid "Lifetime"
 msgstr "Duración"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr "Insertar"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/et_EE.po vdr-1.7.0/po/et_EE.po
--- vdr-1.6.0/po/et_EE.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/et_EE.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "krüptitud"
 
-msgid "auto"
-msgstr "automaatne"
-
 msgid "Edit channel"
 msgstr "Kanali muutmine"
 
@@ -276,21 +288,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioriteet"
-
 msgid "Lifetime"
 msgstr "Eluiga"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "Lisa (INS)"
 
+msgid "auto"
+msgstr "automaatne"
+
 msgid "Plugin"
 msgstr "Laiendusmoodul"
 
diff -ruN vdr-1.6.0/po/fi_FI.po vdr-1.7.0/po/fi_FI.po
--- vdr-1.6.0/po/fi_FI.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/fi_FI.po	2008-04-13 16:16:58.000000000 +0200
@@ -10,7 +10,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "salattu"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Muokkaa kanavaa"
 
@@ -279,21 +291,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioriteetti"
-
 msgid "Lifetime"
 msgstr "Elinikä"
 
@@ -894,6 +909,9 @@
 msgid "Button$Insert"
 msgstr "Lisää"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Laajennos"
 
diff -ruN vdr-1.6.0/po/fr_FR.po vdr-1.7.0/po/fr_FR.po
--- vdr-1.6.0/po/fr_FR.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/fr_FR.po	2008-04-13 16:16:58.000000000 +0200
@@ -13,7 +13,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "Crypté"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Modifier une chaîne"
 
@@ -282,21 +294,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Priorité"
-
 msgid "Lifetime"
 msgstr "Durée de vie"
 
@@ -897,6 +912,9 @@
 msgid "Button$Insert"
 msgstr "Insérer"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/hr_HR.po vdr-1.7.0/po/hr_HR.po
--- vdr-1.6.0/po/hr_HR.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/hr_HR.po	2008-04-13 16:16:58.000000000 +0200
@@ -9,7 +9,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "kriptirano"
 
-msgid "auto"
-msgstr "automatski"
-
 msgid "Edit channel"
 msgstr "Ureðivanje programa"
 
@@ -278,21 +290,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritet"
-
 msgid "Lifetime"
 msgstr "Trajanje"
 
@@ -893,6 +908,9 @@
 msgid "Button$Insert"
 msgstr "Umetni"
 
+msgid "auto"
+msgstr "automatski"
+
 msgid "Plugin"
 msgstr "Dodatak"
 
diff -ruN vdr-1.6.0/po/hu_HU.po vdr-1.7.0/po/hu_HU.po
--- vdr-1.6.0/po/hu_HU.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/hu_HU.po	2008-04-13 16:16:58.000000000 +0200
@@ -10,7 +10,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "Kódolt"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Csatornák beállítása"
 
@@ -279,21 +291,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritás"
-
 msgid "Lifetime"
 msgstr "Élettartam"
 
@@ -785,9 +800,8 @@
 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 @@
 msgid "Button$Insert"
 msgstr "Beilleszteni"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/it_IT.po vdr-1.7.0/po/it_IT.po
--- vdr-1.6.0/po/it_IT.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/it_IT.po	2008-04-13 16:16:58.000000000 +0200
@@ -11,7 +11,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "codificato"
 
-msgid "auto"
-msgstr "automatico"
-
 msgid "Edit channel"
 msgstr "Modifica canale"
 
@@ -280,21 +292,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Priorità"
-
 msgid "Lifetime"
 msgstr "Durata"
 
@@ -895,6 +910,9 @@
 msgid "Button$Insert"
 msgstr "Inserisci"
 
+msgid "auto"
+msgstr "automatico"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/nl_NL.po vdr-1.7.0/po/nl_NL.po
--- vdr-1.6.0/po/nl_NL.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/nl_NL.po	2008-04-13 16:16:58.000000000 +0200
@@ -11,7 +11,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "gecodeerd"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Kanaal aanpassen"
 
@@ -280,21 +292,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioriteit"
-
 msgid "Lifetime"
 msgstr "Bewaarduur"
 
@@ -895,6 +910,9 @@
 msgid "Button$Insert"
 msgstr "Invoegen"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/nn_NO.po vdr-1.7.0/po/nn_NO.po
--- vdr-1.6.0/po/nn_NO.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/nn_NO.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr ""
 
-msgid "auto"
-msgstr ""
-
 msgid "Edit channel"
 msgstr "Editer kanal"
 
@@ -277,21 +289,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr ""
 
-msgid "Priority"
-msgstr "Prioritet"
-
 msgid "Lifetime"
 msgstr "Levetid"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr ""
 
+msgid "auto"
+msgstr ""
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/pl_PL.po vdr-1.7.0/po/pl_PL.po
--- vdr-1.6.0/po/pl_PL.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/pl_PL.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "szyfrowany"
 
-msgid "auto"
-msgstr "auto"
-
 msgid "Edit channel"
 msgstr "Edycja kana³u"
 
@@ -277,21 +289,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Priorytet"
-
 msgid "Lifetime"
 msgstr "Czas ¿ycia"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr "Wstaw"
 
+msgid "auto"
+msgstr "auto"
+
 msgid "Plugin"
 msgstr "Wtyczka"
 
diff -ruN vdr-1.6.0/po/pt_PT.po vdr-1.7.0/po/pt_PT.po
--- vdr-1.6.0/po/pt_PT.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/pt_PT.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "Codificado"
 
-msgid "auto"
-msgstr "Automático"
-
 msgid "Edit channel"
 msgstr "Editar canal"
 
@@ -276,21 +288,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioridade"
-
 msgid "Lifetime"
 msgstr "Duração"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "Inserir"
 
+msgid "auto"
+msgstr "Automático"
+
 msgid "Plugin"
 msgstr "Plugin"
 
diff -ruN vdr-1.6.0/po/ro_RO.po vdr-1.7.0/po/ro_RO.po
--- vdr-1.6.0/po/ro_RO.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/ro_RO.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "criptat"
 
-msgid "auto"
-msgstr "automat"
-
 msgid "Edit channel"
 msgstr "Modificare canal"
 
@@ -279,21 +291,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritate"
-
 msgid "Lifetime"
 msgstr "Timp de pãstrare"
 
@@ -894,6 +909,9 @@
 msgid "Button$Insert"
 msgstr "Insereazã"
 
+msgid "auto"
+msgstr "automat"
+
 msgid "Plugin"
 msgstr "Plugin (modul adiþional)"
 
diff -ruN vdr-1.6.0/po/ru_RU.po vdr-1.7.0/po/ru_RU.po
--- vdr-1.6.0/po/ru_RU.po	2008-03-23 11:31:29.000000000 +0100
+++ vdr-1.7.0/po/ru_RU.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "×ÐÚÞÔØàÞÒÐÝÞ"
 
-msgid "auto"
-msgstr "ÐÒâÞ"
-
 msgid "Edit channel"
 msgstr "ÀÕÔÐÚâØàÞÒÐÝØÕ ÚÐÝÐÛÐ"
 
@@ -277,21 +289,18 @@
 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 @@
 msgid "Hierarchy"
 msgstr "¸ÕàÐàåØï"
 
+msgid "Alpha"
+msgstr ""
+
+msgid "Priority"
+msgstr "¿àØÞàØâÕâ"
+
+msgid "Rolloff"
+msgstr ""
+
 msgid "Channel settings are not unique!"
 msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!"
 
@@ -355,9 +373,6 @@
 msgid "VPS"
 msgstr "VPS ßÞßàÐÒÚÐ"
 
-msgid "Priority"
-msgstr "¿àØÞàØâÕâ"
-
 msgid "Lifetime"
 msgstr "ÁàÞÚ åàÐÝÕÝØï"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr "²áâÐÒÚÐ"
 
+msgid "auto"
+msgstr "ÐÒâÞ"
+
 msgid "Plugin"
 msgstr "¼ÞÔãÛì"
 
diff -ruN vdr-1.6.0/po/sl_SI.po vdr-1.7.0/po/sl_SI.po
--- vdr-1.6.0/po/sl_SI.po	2008-03-23 11:31:30.000000000 +0100
+++ vdr-1.7.0/po/sl_SI.po	2008-04-13 16:16:58.000000000 +0200
@@ -8,7 +8,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "kodiran"
 
-msgid "auto"
-msgstr "avtomatsko"
-
 msgid "Edit channel"
 msgstr "Uredi kanal"
 
@@ -277,21 +289,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioriteta"
-
 msgid "Lifetime"
 msgstr "Veljavnost"
 
@@ -892,6 +907,9 @@
 msgid "Button$Insert"
 msgstr "Vstavi"
 
+msgid "auto"
+msgstr "avtomatsko"
+
 msgid "Plugin"
 msgstr "Vstavek"
 
diff -ruN vdr-1.6.0/po/sv_SE.po vdr-1.7.0/po/sv_SE.po
--- vdr-1.6.0/po/sv_SE.po	2008-03-23 11:31:30.000000000 +0100
+++ vdr-1.7.0/po/sv_SE.po	2008-04-13 16:16:58.000000000 +0200
@@ -10,7 +10,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "krypterad"
 
-msgid "auto"
-msgstr "automatisk"
-
 msgid "Edit channel"
 msgstr "Ändra kanal"
 
@@ -279,21 +291,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Prioritet"
-
 msgid "Lifetime"
 msgstr "Livstid"
 
@@ -894,6 +909,9 @@
 msgid "Button$Insert"
 msgstr "Infoga"
 
+msgid "auto"
+msgstr "automatisk"
+
 msgid "Plugin"
 msgstr "Modul"
 
diff -ruN vdr-1.6.0/po/tr_TR.po vdr-1.7.0/po/tr_TR.po
--- vdr-1.6.0/po/tr_TR.po	2008-03-23 11:31:30.000000000 +0100
+++ vdr-1.7.0/po/tr_TR.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "Þifreli"
 
-msgid "auto"
-msgstr "otomatik"
-
 msgid "Edit channel"
 msgstr "Kanal ayarlarýný deðiþtir"
 
@@ -276,21 +288,18 @@
 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 @@
 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 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "Öncelik"
-
 msgid "Lifetime"
 msgstr "Ömrü"
 
@@ -891,6 +906,9 @@
 msgid "Button$Insert"
 msgstr "Ekle"
 
+msgid "auto"
+msgstr "otomatik"
+
 msgid "Plugin"
 msgstr "Eklenti"
 
diff -ruN vdr-1.6.0/po/uk_UA.po vdr-1.7.0/po/uk_UA.po
--- vdr-1.6.0/po/uk_UA.po	2008-03-23 11:31:30.000000000 +0100
+++ vdr-1.7.0/po/uk_UA.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "×ÐÚÞÔÞÒÐÝÞ"
 
-msgid "auto"
-msgstr "ÐÒâÞ"
-
 msgid "Edit channel"
 msgstr "ÀÕÔÐÚâãÒÐÝÝï ÚÐÝÐÛã"
 
@@ -276,21 +288,18 @@
 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 @@
 msgid "Hierarchy"
 msgstr "¦ôàÐàåöï"
 
+msgid "Alpha"
+msgstr ""
+
+msgid "Priority"
+msgstr "¿àöÞàØâÕâ"
+
+msgid "Rolloff"
+msgstr ""
+
 msgid "Channel settings are not unique!"
 msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛã ÝÕ ôÔØÝö!"
 
@@ -354,9 +372,6 @@
 msgid "VPS"
 msgstr "VPS ßÞßàÐÒÚÐ"
 
-msgid "Priority"
-msgstr "¿àöÞàØâÕâ"
-
 msgid "Lifetime"
 msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï"
 
@@ -873,14 +888,12 @@
 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 @@
 msgid "Button$Insert"
 msgstr "²áâÐÒÚÐ"
 
+msgid "auto"
+msgstr "ÐÒâÞ"
+
 msgid "Plugin"
 msgstr "¼ÞÔãÛì"
 
diff -ruN vdr-1.6.0/po/zh_CN.po vdr-1.7.0/po/zh_CN.po
--- vdr-1.6.0/po/zh_CN.po	2008-03-23 11:31:30.000000000 +0100
+++ vdr-1.7.0/po/zh_CN.po	2008-04-13 16:16:58.000000000 +0200
@@ -7,7 +7,7 @@
 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 @@
 "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 @@
 msgid "encrypted"
 msgstr "åŠ å¯†"
 
-msgid "auto"
-msgstr "è‡ªåŠ¨"
-
 msgid "Edit channel"
 msgstr "ç¼–è¾‘é¢‘é�“"
 
@@ -279,21 +291,18 @@
 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 @@
 msgid "Hierarchy"
 msgstr "å±‚æ¬¡"
 
+msgid "Alpha"
+msgstr ""
+
+msgid "Priority"
+msgstr "ä¼˜å…ˆ"
+
+msgid "Rolloff"
+msgstr ""
+
 msgid "Channel settings are not unique!"
 msgstr "é¢‘é�“è®¾ç½®ä¸�æ˜¯å”¯ä¸€çš„ï¼�"
 
@@ -357,9 +375,6 @@
 msgid "VPS"
 msgstr "VPS"
 
-msgid "Priority"
-msgstr "ä¼˜å…ˆ"
-
 msgid "Lifetime"
 msgstr "ç»ˆç”Ÿ"
 
@@ -894,6 +909,9 @@
 msgid "Button$Insert"
 msgstr "æ�’å…¥"
 
+msgid "auto"
+msgstr "è‡ªåŠ¨"
+
 msgid "Plugin"
 msgstr "æ�’ä»¶"
 
diff -ruN vdr-1.6.0/sdt.c vdr-1.7.0/sdt.c
--- vdr-1.6.0/sdt.c	2008-02-08 14:48:31.000000000 +0100
+++ vdr-1.7.0/sdt.c	2008-04-12 15:33:55.000000000 +0200
@@ -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 @@
                    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)];
diff -ruN vdr-1.6.0/thread.c vdr-1.7.0/thread.c
--- vdr-1.6.0/thread.c	2008-02-15 15:17:42.000000000 +0100
+++ vdr-1.7.0/thread.c	2008-04-13 13:53:56.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: thread.c 1.64 2008/02/15 14:17:42 kls Exp $
+ * $Id: thread.c 2.1 2008/04/13 11:53:56 kls Exp $
  */
 
 #include "thread.h"
@@ -17,6 +17,7 @@
 #include <sys/syscall.h>
 #include <sys/time.h>
 #include <sys/wait.h>
+#include <sys/prctl.h>
 #include <unistd.h>
 #include "tools.h"
 
@@ -239,8 +240,13 @@
 void *cThread::StartThread(cThread *Thread)
 {
   Thread->childThreadId = ThreadId();
-  if (Thread->description)
+  if (Thread->description) {
      dsyslog("%s thread started (pid=%d, tid=%d)", Thread->description, getpid(), Thread->childThreadId);
+#ifdef PR_SET_NAME
+     if (prctl(PR_SET_NAME, Thread->description, 0, 0, 0) < 0)
+        esyslog("%s thread naming failed (pid=%d, tid=%d)", Thread->description, getpid(), Thread->childThreadId);
+#endif
+     }
   Thread->Action();
   if (Thread->description)
      dsyslog("%s thread ended (pid=%d, tid=%d)", Thread->description, getpid(), Thread->childThreadId);
diff -ruN vdr-1.6.0/timers.c vdr-1.7.0/timers.c
--- vdr-1.6.0/timers.c	2008-02-16 15:47:40.000000000 +0100
+++ vdr-1.7.0/timers.c	2008-04-13 14:41:41.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: timers.c 1.73 2008/02/16 14:47:40 kls Exp $
+ * $Id: timers.c 2.1 2008/04/13 12:41:41 kls Exp $
  */
 
 #include "timers.h"
@@ -92,6 +92,7 @@
   channel = NULL;
   aux = NULL;
   event = NULL;
+  flags = tfNone;
   *this = Timer;
 }
 
diff -ruN vdr-1.6.0/vdr.5 vdr-1.7.0/vdr.5
--- vdr-1.6.0/vdr.5	2008-03-09 16:46:57.000000000 +0100
+++ vdr-1.7.0/vdr.5	2008-04-12 12:46:32.000000000 +0200
@@ -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 @@
 .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.
