diff -ruN vdr-2.1.7/CONTRIBUTORS vdr-2.1.8/CONTRIBUTORS
--- vdr-2.1.7/CONTRIBUTORS	2015-01-17 16:02:26.000000000 +0100
+++ vdr-2.1.8/CONTRIBUTORS	2015-02-01 14:49:10.000000000 +0100
@@ -624,6 +624,7 @@
  for helping to debug a problem with frame detection in MPEG-2 streams that have "bottom fields"
  or varying GOP structures
  for a patch that was used to implement the command line option --updindex
+ for modifying the "binary skip" patch to move editing marks
 
 Jeremy Hall <jhall@UU.NET>
  for fixing an incomplete initialization of the filter parameters in eit.c
@@ -1192,6 +1193,8 @@
  for adding support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters
  for fixing a problem with subtitles not being displayed because the broadcaster
  doesn't set the data's version numbers as required by the DVB standard
+ for the "binary skip" patch
+ for adding support for LCN (Logical Channel Numbers)
 
 Ralf Klueber <ralf.klueber@vodafone.com>
  for reporting a bug in cutting a recording if there is only a single editing mark
@@ -2139,6 +2142,7 @@
  which results in using tr(FileNameChars)
  for fixing handling "none" color entries in XPM files
  for fixing displaying the frame number when setting an editing mark
+ for the "jumpplay" patch
 
 David Woodhouse <dwmw2@infradead.org>
  for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with
@@ -2677,6 +2681,7 @@
  for pointing out that it was not obvious how to initiate internationalization
  support for a plugin
  for suggesting to add a section about "Logging" to PLUGINS.html
+ for the "jumpplay" patch
 
 Michael Nival <mnival@club-internet.fr>
  for translating OSD texts to the French language
@@ -2824,6 +2829,7 @@
  are no short names at all
  for reporting an incompatible change from DTV_DVBT2_PLP_ID to DTV_STREAM_ID in DVB API 5.8
  for reporting a missing template for DVBDIR in Make.config.template
+ for suggesting to add ARGSDIR to the ONEDIR section of Make.config.template
 
 Marcel Unbehaun <frostworks@gmx.de>
  for adding cRecordingInfo::GetEvent()
@@ -2969,6 +2975,7 @@
 Joerg Bornkessel <hd_brummy@gentoo.org>
  for adding LDFLAGS to the linker calls in the Makefiles
  for fixing font handling with fontconfig 2.9.0 or newer
+ for fixing "warning: invalid suffix on literal" with GCC 4.8 and C++11
 
 Andreas Oberritter <obi@opendreambox.org>
  for suggesting to retrieve the include path to the freetype2 header files
@@ -2981,6 +2988,7 @@
  for suggesting to reduce the thread and I/O priority cCuttingThread::Action()
  for reporting a problem with tuning timeouts when using SCR with multiple tuners
  for fixing the German translation of "VDR will shut down in %s minutes"
+ for adding support for "Satellite Channel Routing" (SCR) according to EN50607 ("JESS")
 
 Gerald Dachs <vdr@dachsweb.de>
  for reporting a problem with checking for minimum line length of 21 characters in
@@ -3045,6 +3053,7 @@
 
 Chris Mayo <aklhfex@gmail.com>
  for reporting a problem with detecting frames on radio channels
+ for fixing the link to "svdrpsend (1)" in the vdr.1 man page
 
 Dominic Evans <oldmanuk@gmail.com>
  for making the SVDRP command LSTC accepts channel IDs
@@ -3229,6 +3238,7 @@
  for reporting an endless loop in the DrawEllipse() functions for very small ellipses
  for suggesting to add the menu category mcRecordingEdit for marking menus that edit
  recording properties
+ for suggesting to make cRecording::GetResume() public
 
 Jochen Dolze <vdr@dolze.de>
  for changing cThread::SetIOPriority() from "best effort class" to "idle class" in order
@@ -3243,6 +3253,7 @@
 Manfred V�lkel <mvoelkel@digitaldevices.de>
  for suggesting to make all bonded devices (except for the master) turn off their LNB
  power completely to avoid problems when receiving vertically polarized transponders
+ for adding support for "Satellite Channel Routing" (SCR) according to EN50607 ("JESS")
 
 Thomas Maass <mase@setho.org>
  for reporting a difference in the internal sequence of actions when pressing the Blue
diff -ruN vdr-2.1.7/HISTORY vdr-2.1.8/HISTORY
--- vdr-2.1.7/HISTORY	2015-01-18 11:14:48.000000000 +0100
+++ vdr-2.1.8/HISTORY	2015-02-01 14:48:37.000000000 +0100
@@ -8394,3 +8394,61 @@
   do so again with this version to make sure the index is OK.
 - Added the new command line option --updindex, which can be used to update an
   incomplete index of a recording (based on a patch from Helmut Auer).
+
+2015-01-20: Version 2.0.7
+
+- Fixed a possible division by zero in frame rate detection.
+- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
+  Stefan Huelswitt).
+- Fixed jumping to an absolute position via the Red key in case replay was paused
+  (reported by Dieter Ferdinand).
+- Now returning from removing deleted recordings after at most 10 seconds, or if the
+  user presses a remote control key, to keep the system from getting unresponsive
+  when removing a huge number of files (reported by Dieter Ferdinand).
+- Fixed generating the index file of an existing recording in case at the of a TS file
+  there is less data in the buffer than needed by the frame detector. In such a case
+  it was possible that frames were missed, and there was most likely a distortion
+  when replaying that part of a recording. This is mostly a problem for recordings that
+  consist of more than one *.ts file. Single file recordings could only lose some
+  frames at their very end, which probably doesn't matter. At any rate, if you have
+  generated an index file with VDR version 2.0.6 you may want to do so again with this
+  version to make sure the index is OK.
+
+2015-02-01: Version 2.1.8
+
+- Updated the Italian OSD texts (thanks to Diego Pierotto).
+- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
+  Bornkessel).
+- Fixed the link to "svdrpsend (1)" in the vdr.1 man page (thanks to Chris Mayo).
+- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
+- Updated the Romanian OSD texts (thanks to Lucian Muresan).
+- Added functionality based on the "jumpplay" patch from Torsten Kunkel and Thomas
+  G�nther:
+  + The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to
+    turn off pausing replay when jumping to an editing mark with the '9' key.
+  + The new option "Setup/Replay/Skip edited parts" can be used to automatically skip
+    the edited parts of a recording during replay, without the need to actually cut
+    the recording.
+  + The new option "Setup/Replay/Pause replay at last mark" can be used to make replay
+    go into Pause mode when it has reached the last "end" mark.
+  + The '8' key for testing an edited sequence now also jumps to the next *end*
+    mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits
+    in recordings that have actually been cut, as well as recordings that have not
+    been cut, in case "Skip edited parts" is enabled.
+- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also
+  known as "JESS" (thanks to Manfred V�lkel and Frank Neumann).
+- The keys '1' and '3' can now be used in replay mode to position an editing mark
+  in "binary" mode (based on a patch from Rolf Ahrenberg, with modifications by Helmut
+  Auer). See MANUAL, section "Editing a Recording".
+- The Yellow button in the "Setup/CAM" menu can now be used to put the selected
+  CAM into a mode where it remains assigned to a device that is tuned to the current
+  channel until the smart card it contains is activated and the CAM thus starts to
+  descramble (see MANUAL, section "Setup/CAM" for details).
+- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
+- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
+  Kelly).
+- Made cRecording::GetResume() public (suggested by Stefan Braun).
+- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
+- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.
+- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
+  channels (thanks to Rolf Ahrenberg).
diff -ruN vdr-2.1.7/INSTALL vdr-2.1.8/INSTALL
--- vdr-2.1.7/INSTALL	2014-01-01 13:45:07.000000000 +0100
+++ vdr-2.1.8/INSTALL	2015-01-26 13:01:05.000000000 +0100
@@ -391,8 +391,9 @@
 A special form of DiSEqC is used to connect several receivers to one signal
 source using only a single cable. This method, known as "Satellite Channel Routing"
 according to EN50494 (aka "Unicable(TM)", "OLT(TM)", "SatCR", "Single Cable
-Distribution", "Channel Stacking System" or "Single Cable Interface") uses
-the file "scr.conf" to specify which SCR channels use which user band frequency.
+Distribution", "Channel Stacking System" or "Single Cable Interface") or
+EN50607 (aka "JESS") uses the file "scr.conf" to specify which SCR channels
+use which user band frequency.
 
 If DVB-S devices need to be connected to the same satellite cable, but no
 "Satellite Channel Routing" is available, they can be set to be "bonded" in
diff -ruN vdr-2.1.7/MANUAL vdr-2.1.8/MANUAL
--- vdr-2.1.7/MANUAL	2015-01-17 12:37:10.000000000 +0100
+++ vdr-2.1.8/MANUAL	2015-01-29 16:55:21.000000000 +0100
@@ -363,15 +363,29 @@
   - 0       Toggles an editing mark. If the mark indicator shows a red triangle,
             the current mark is deleted. Otherwise a new mark is set at the
             current position.
-  - 4, 6    Move an editing mark back and forward. You need to first jump to
-            an editing mark for this to work.
+  - 1, 3    Move an editing mark back and forward in "binary" mode. Pressing
+            either of these keys for the first time moves the mark 120 seconds
+            in the given direction (configurable via "Setup/Replay/Binary skip
+            initial value"). Further presses of the same key keep moving
+            the mark by the same value. Once the other key is pressed, the value
+            is divided by 2 (hence the name "binary") with every further press
+            of either key. Pressing '1' and '3' alternatingly divides the
+            distance all the way down to a single I-frame. That way a particular
+            place in a recording (for instance the beginning or end of a
+            commercial break) can be found very quickly. If none of these two
+            keys is pressed for a while (configurable via "Setup/Replay/Binary
+            skip timeout") the distance falls back to the initial value.
+            If replay is not in Pause mode, or if there is no mark at the
+            current position, the skip is performed without moving any mark.
+  - 4, 6    Move an editing mark back and forward by one I-frame. You need to
+            first jump to an editing mark for this to work.
   - 7, 9    Jump back and forward between editing marks. Replay goes into still
             mode after jumping to a mark. If the current position is at the
             first or last mark, or if there are no marks at all, these keys
             jump to the very beginning or end, respectively, of the recording.
   - 8       Positions replay at a point 3 seconds before the current or next
             "begin" mark and starts replay.
-  - 2       Start the actual cutting process.
+  - 2       Starts the actual cutting process.
 
   Editing marks are represented by black, vertical lines in the progress display.
   A small black triangle at the top of the mark means that this is a "begin"
@@ -831,7 +845,19 @@
                          if it is in the process of being reset, its current status
                          is displayed.  The "Red" key can be pressed to enter the CAM
                          menu, and the "Green" key triggers a reset of the selected
-                         slot. The "Ok" key also opens the CAM menu.
+                         slot. The "Ok" key also opens the CAM menu. The "Yellow" key
+                         assigns the selected CAM to a device and switches it to the
+                         current channel. The CAM/device combination remains tuned to
+                         the current channel until the smart card in the CAM has been
+                         activated and thus starts to descramble, or until a recording
+                         needs this device. Pressing the "Yellow" key while a CAM is
+                         in activation mode cancels the activation. The activation mode
+                         remains in effect even if you switch to a different channel
+                         (provided there is more than one device in the system) or
+                         watch a recording. To activate your smart card simply switch
+                         to the channel you want to watch, open the "Setup/CAM" menu,
+                         select the CAM that contains the smart card (in case you
+                         have more than one CAM) and press the "Yellow" key.
 
   Recording:
 
@@ -943,6 +969,43 @@
                          Defines whether the player automatically goes into Pause
                          mode when setting an editing mark.
 
+  Pause replay when jumping to a mark = yes
+                         By default replay is automatically paused whenever you jump
+                         to an editing mark with the '7' or '9' key in order to allow
+                         you to easily adjust those marks. If this option is set to
+                         'no', the '9' key will not pause if you are in Play mode and
+                         the mark you jump to is not within 3 seconds of the end of
+                         the recording.
+
+  Skip edited parts = no Defines whether the edited parts of a recording are
+                         automatically skipped during replay. This includes jumping
+                         to the first mark if replay starts at the beginning of the
+                         recording, and stopping at the last mark.
+                         In order to work, this option must be enabled before starting
+                         replay.
+
+  Pause replay at last mark = no
+                         If enabled, replay of a recording will go into Pause mode
+                         when it has reached the last "end" mark (if any). Note that
+                         the actual position at which the pause occurs may be a couple
+                         of frames before the last "end" mark, depending on how much
+                         data is buffered by your output device.
+                         In order to work, this option must be enabled before starting
+                         replay.
+
+  Binary skip initial value (s) = 120
+                         Defines the number of seconds to jump from the current replay
+                         position in either direction, when pressing the '1' or '3'
+                         key for the first time after the "Binary skip timeout".
+                         The valid range is 10...600.
+
+  Binary skip timeout (s) = 3
+                         Defines the number of seconds after which pressing the
+                         '1' or '3' key falls back to the "Binary skip initial value".
+                         The valid range is 0...10. Setting the timeout to 0 disables
+                         the binary mode and makes '1' and '3' always skip the number
+                         of seconds configured as the initial value.
+
   Resume ID = 0          Defines an additional ID that can be used in a multi user
                          environment, so that every user has his/her own resume
                          files for each recording. The valid range is 0...99, with
diff -ruN vdr-2.1.7/Make.config.template vdr-2.1.8/Make.config.template
--- vdr-2.1.7/Make.config.template	2014-04-14 13:43:53.000000000 +0200
+++ vdr-2.1.8/Make.config.template	2015-01-30 16:18:47.000000000 +0100
@@ -6,7 +6,7 @@
 # See the main source file 'vdr.c' for copyright information and
 # how to reach the author.
 #
-# $Id: Make.config.template 3.1 2014/04/14 11:43:53 kls Exp $
+# $Id: Make.config.template 3.2 2015/01/30 15:18:47 kls Exp $
 
 ### The C compiler and options:
 
@@ -58,6 +58,7 @@
 VIDEODIR     = /video
 CACHEDIR     = $(VIDEODIR)
 CONFDIR      = $(VIDEODIR)
+ARGSDIR      = $(VIDEODIR)/conf.d
 RESDIR       = $(VIDEODIR)
 endif
 
diff -ruN vdr-2.1.7/channels.c vdr-2.1.8/channels.c
--- vdr-2.1.7/channels.c	2015-01-14 13:15:03.000000000 +0100
+++ vdr-2.1.8/channels.c	2015-02-01 14:47:05.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: channels.c 3.7 2015/01/14 12:15:03 kls Exp $
+ * $Id: channels.c 3.8 2015/02/01 13:47:05 kls Exp $
  */
 
 #include "channels.h"
@@ -248,6 +248,15 @@
      }
 }
 
+void cChannel::SetLcn(int Lcn)
+{
+  if (lcn != Lcn) {
+     if (Number())
+        dsyslog("changing lcn of channel %d (%s) from %d to %d\n", Number(), name, lcn, Lcn);
+     lcn = Lcn;
+     }
+}
+
 void cChannel::SetName(const char *Name, const char *ShortName, const char *Provider)
 {
   if (!isempty(Name)) {
diff -ruN vdr-2.1.7/channels.h vdr-2.1.8/channels.h
--- vdr-2.1.7/channels.h	2014-01-04 16:01:21.000000000 +0100
+++ vdr-2.1.8/channels.h	2015-02-01 14:30:26.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: channels.h 3.2 2014/01/04 15:01:21 kls Exp $
+ * $Id: channels.h 3.3 2015/02/01 13:30:26 kls Exp $
  */
 
 #ifndef __CHANNELS_H
@@ -121,6 +121,7 @@
   int tid;
   int sid;
   int rid;
+  int lcn;       // Logical channel number assigned by data stream (or -1 if not available)
   int number;    // Sequence number assigned on load
   bool groupSep;
   int __EndData__;
@@ -174,6 +175,7 @@
   int Tid(void) const { return tid; }
   int Sid(void) const { return sid; }
   int Rid(void) const { return rid; }
+  int Lcn(void) const { return lcn; }
   int Number(void) const { return number; }
   void SetNumber(int Number) { number = Number; }
   bool GroupSep(void) const { return groupSep; }
@@ -192,6 +194,7 @@
   void CopyTransponderData(const cChannel *Channel);
   bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet = false);
   void SetId(int Nid, int Tid, int Sid, int Rid = 0);
+  void SetLcn(int Lcn);
   void SetName(const char *Name, const char *ShortName, const char *Provider);
   void SetPortalName(const char *PortalName);
   void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
diff -ruN vdr-2.1.7/ci.c vdr-2.1.8/ci.c
--- vdr-2.1.7/ci.c	2015-01-15 10:14:57.000000000 +0100
+++ vdr-2.1.8/ci.c	2015-01-30 13:24:53.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: ci.c 3.17 2015/01/15 09:14:57 kls Exp $
+ * $Id: ci.c 3.18 2015/01/30 12:24:53 kls Exp $
  */
 
 #include "ci.h"
@@ -22,6 +22,7 @@
 #include "receiver.h"
 #include "remux.h"
 #include "libsi/si.h"
+#include "skins.h"
 #include "tools.h"
 
 // Set these to 'true' for debug output:
@@ -236,6 +237,53 @@
      }
 }
 
+// --- cCaActivationReceiver -------------------------------------------------
+
+// A receiver that is used to make the device stay on a given channel and
+// keep the CAM slot assigned.
+
+#define UNSCRAMBLE_TIME     5 // seconds of receiving purely unscrambled data before considering the smart card "activated"
+#define TS_PACKET_FACTOR 1024 // only process every TS_PACKET_FACTORth packet to keep the load down
+
+class cCaActivationReceiver : public cReceiver {
+private:
+  cCamSlot *camSlot;
+  time_t lastScrambledTime;
+  int numTsPackets;
+protected:
+  virtual void Receive(uchar *Data, int Length);
+public:
+  cCaActivationReceiver(const cChannel *Channel, cCamSlot *CamSlot);
+  virtual ~cCaActivationReceiver();
+  };
+
+cCaActivationReceiver::cCaActivationReceiver(const cChannel *Channel, cCamSlot *CamSlot)
+:cReceiver(Channel, MINPRIORITY + 1)
+{
+  camSlot = CamSlot;
+  lastScrambledTime = time(NULL);
+  numTsPackets = 0;
+}
+
+cCaActivationReceiver::~cCaActivationReceiver()
+{
+  Detach();
+}
+
+void cCaActivationReceiver::Receive(uchar *Data, int Length)
+{
+  if (numTsPackets++ % TS_PACKET_FACTOR == 0) {
+     time_t Now = time(NULL);
+     if (TsIsScrambled(Data))
+        lastScrambledTime = Now;
+     else if (Now - lastScrambledTime > UNSCRAMBLE_TIME) {
+        dsyslog("CAM %d: activated!", camSlot->SlotNumber());
+        Skins.QueueMessage(mtInfo, tr("CAM activated!"));
+        Detach();
+        }
+     }
+}
+
 // --- cTPDU -----------------------------------------------------------------
 
 #define MAX_TPDU_SIZE  2048
@@ -1696,6 +1744,7 @@
   ciAdapter = CiAdapter;
   assignedDevice = NULL;
   caPidReceiver = ReceiveCaPids ? new cCaPidReceiver : NULL;
+  caActivationReceiver = NULL;
   slotIndex = -1;
   lastModuleStatus = msReset; // avoids initial reset log message
   resetTime = 0;
@@ -1715,6 +1764,7 @@
   if (assignedDevice)
      assignedDevice->SetCamSlot(NULL);
   delete caPidReceiver;
+  delete caActivationReceiver;
   CamSlots.Del(this, false);
   DeleteAllConnections();
 }
@@ -1735,8 +1785,10 @@
                  Device->SetCamSlot(this);
                  dsyslog("CAM %d: assigned to device %d", slotNumber, Device->DeviceNumber() + 1);
                  }
-              else
+              else {
+                 CancelActivation();
                  dsyslog("CAM %d: unassigned", slotNumber);
+                 }
               }
            else
               return false;
@@ -1772,6 +1824,8 @@
 void cCamSlot::Process(cTPDU *TPDU)
 {
   cMutexLock MutexLock(&mutex);
+  if (caActivationReceiver && !caActivationReceiver->IsAttached())
+     CancelActivation();
   if (TPDU) {
      int n = TPDU->Tcid();
      if (1 <= n && n <= MAX_CONNECTIONS_PER_CAM_SLOT) {
@@ -1795,6 +1849,7 @@
                dbgprotocol("Slot %d: no module present\n", slotNumber);
                isyslog("CAM %d: no module present", slotNumber);
                DeleteAllConnections();
+               CancelActivation();
                break;
           case msReset:
                dbgprotocol("Slot %d: module reset\n", slotNumber);
@@ -1856,6 +1911,37 @@
   return false;
 }
 
+bool cCamSlot::CanActivate(void)
+{
+  return ModuleStatus() == msReady;
+}
+
+void cCamSlot::StartActivation(void)
+{
+  cMutexLock MutexLock(&mutex);
+  if (!caActivationReceiver) {
+     if (cDevice *d = Device()) {
+        if (cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel())) {
+           caActivationReceiver = new cCaActivationReceiver(Channel, this);
+           d->AttachReceiver(caActivationReceiver);
+           dsyslog("CAM %d: activating on device %d with channel %d (%s)", SlotNumber(), d->DeviceNumber() + 1, Channel->Number(), Channel->Name());
+           }
+        }
+     }
+}
+
+void cCamSlot::CancelActivation(void)
+{
+  cMutexLock MutexLock(&mutex);
+  delete caActivationReceiver;
+  caActivationReceiver = NULL;
+}
+
+bool cCamSlot::IsActivating(void)
+{
+  return caActivationReceiver;
+}
+
 eModuleStatus cCamSlot::ModuleStatus(void)
 {
   cMutexLock MutexLock(&mutex);
diff -ruN vdr-2.1.7/ci.h vdr-2.1.8/ci.h
--- vdr-2.1.7/ci.h	2015-01-15 10:18:09.000000000 +0100
+++ vdr-2.1.8/ci.h	2015-01-31 15:36:41.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: ci.h 3.9 2015/01/15 09:18:09 kls Exp $
+ * $Id: ci.h 3.11 2015/01/31 14:36:41 kls Exp $
  */
 
 #ifndef __CI_H
@@ -123,6 +123,7 @@
 class cCiSession;
 class cCiCaProgramData;
 class cCaPidReceiver;
+class cCaActivationReceiver;
 
 class cCamSlot : public cListObject {
   friend class cCiAdapter;
@@ -133,6 +134,7 @@
   cCiAdapter *ciAdapter;
   cDevice *assignedDevice;
   cCaPidReceiver *caPidReceiver;
+  cCaActivationReceiver *caActivationReceiver;
   int slotIndex;
   int slotNumber;
   cCiTransportConnection *tc[MAX_CONNECTIONS_PER_CAM_SLOT + 1];  // connection numbering starts with 1
@@ -182,6 +184,23 @@
   virtual bool Reset(void);
        ///< Resets the CAM in this slot.
        ///< Returns true if the operation was successful.
+  virtual bool CanActivate(void);
+       ///< Returns true if there is a CAM in this slot that can be put into
+       ///< activation mode.
+  virtual void StartActivation(void);
+       ///< Puts the CAM in this slot into a mode where an inserted smart card
+       ///< can be activated. The default action is to make IsActivating() return
+       ///< true, which causes the device this CAM slot is attached to to never
+       ///< automatically detach any receivers with negative priority if the
+       ///< PIDs they want to receive are not decrypted by the CAM.
+       ///< StartActivation() must be called *after* the CAM slot has been assigned
+       ///< to a device. The CAM slot will stay in activation mode until the CAM
+       ///< begins to decrypt, a call to CancelActivation() is made, or the device
+       ///< is needed for a recording.
+  virtual void CancelActivation(void);
+       ///< Cancels a previously started activation (if any).
+  virtual bool IsActivating(void);
+       ///< Returns true if this CAM slot is currently activating a smart card.
   virtual eModuleStatus ModuleStatus(void);
        ///< Returns the status of the CAM in this slot.
   virtual const char *GetCamName(void);
@@ -201,7 +220,7 @@
   virtual cCiEnquiry *GetEnquiry(void);
        ///< Gets a pending enquiry, or NULL if there is no enquiry.
   int Priority(void);
-       ///< Returns the priority if the device this slot is currently assigned
+       ///< Returns the priority of the device this slot is currently assigned
        ///< to, or IDLEPRIORITY if it is not assigned to any device.
   virtual bool ProvidesCa(const int *CaSystemIds);
        ///< Returns true if the CAM in this slot provides one of the given
diff -ruN vdr-2.1.7/config.c vdr-2.1.8/config.c
--- vdr-2.1.7/config.c	2015-01-12 15:32:17.000000000 +0100
+++ vdr-2.1.8/config.c	2015-01-29 10:01:30.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.c 3.3 2015/01/12 14:32:17 kls Exp $
+ * $Id: config.c 3.6 2015/01/29 09:01:30 kls Exp $
  */
 
 #include "config.h"
@@ -470,6 +470,11 @@
   ShowRemainingTime = 0;
   ProgressDisplayTime = 0;
   PauseOnMarkSet = 0;
+  PauseOnMarkJump = 1;
+  SkipEdited = 0;
+  PauseAtLastMark = 0;
+  BinarySkipInitial = 120;
+  BinarySkipTimeout = 3;
   ResumeID = 0;
   CurrentChannel = -1;
   CurrentVolume = MAXVOLUME;
@@ -683,6 +688,11 @@
   else if (!strcasecmp(Name, "ShowRemainingTime"))   ShowRemainingTime  = atoi(Value);
   else if (!strcasecmp(Name, "ProgressDisplayTime")) ProgressDisplayTime= atoi(Value);
   else if (!strcasecmp(Name, "PauseOnMarkSet"))      PauseOnMarkSet     = atoi(Value);
+  else if (!strcasecmp(Name, "PauseOnMarkJump"))     PauseOnMarkJump    = atoi(Value);
+  else if (!strcasecmp(Name, "SkipEdited"))          SkipEdited         = atoi(Value);
+  else if (!strcasecmp(Name, "PauseAtLastMark"))     PauseAtLastMark    = atoi(Value);
+  else if (!strcasecmp(Name, "BinarySkipInitial"))   BinarySkipInitial  = atoi(Value);
+  else if (!strcasecmp(Name, "BinarySkipTimeout"))   BinarySkipTimeout  = atoi(Value);
   else if (!strcasecmp(Name, "ResumeID"))            ResumeID           = atoi(Value);
   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
@@ -800,6 +810,11 @@
   Store("ShowRemainingTime",  ShowRemainingTime);
   Store("ProgressDisplayTime",ProgressDisplayTime);
   Store("PauseOnMarkSet",     PauseOnMarkSet);
+  Store("PauseOnMarkJump",    PauseOnMarkJump);
+  Store("SkipEdited",         SkipEdited);
+  Store("PauseAtLastMark",    PauseAtLastMark);
+  Store("BinarySkipInitial",  BinarySkipInitial);
+  Store("BinarySkipTimeout",  BinarySkipTimeout);
   Store("ResumeID",           ResumeID);
   Store("CurrentChannel",     CurrentChannel);
   Store("CurrentVolume",      CurrentVolume);
diff -ruN vdr-2.1.7/config.h vdr-2.1.8/config.h
--- vdr-2.1.7/config.h	2015-01-12 15:32:17.000000000 +0100
+++ vdr-2.1.8/config.h	2015-01-27 11:50:11.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.h 3.10 2015/01/12 14:32:17 kls Exp $
+ * $Id: config.h 3.13 2015/01/27 10:50:11 kls Exp $
  */
 
 #ifndef __CONFIG_H
@@ -22,13 +22,13 @@
 
 // VDR's own version number:
 
-#define VDRVERSION  "2.1.7"
-#define VDRVERSNUM   20107  // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION  "2.1.8"
+#define VDRVERSNUM   20108  // Version * 10000 + Major * 100 + Minor
 
 // The plugin API's version number:
 
-#define APIVERSION  "2.1.7"
-#define APIVERSNUM   20107  // Version * 10000 + Major * 100 + Minor
+#define APIVERSION  "2.1.8"
+#define APIVERSNUM   20108  // 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
@@ -333,6 +333,11 @@
   int ShowRemainingTime;
   int ProgressDisplayTime;
   int PauseOnMarkSet;
+  int PauseOnMarkJump;
+  int SkipEdited;
+  int PauseAtLastMark;
+  int BinarySkipInitial;
+  int BinarySkipTimeout;
   int ResumeID;
   int CurrentChannel;
   int CurrentVolume;
diff -ruN vdr-2.1.7/device.c vdr-2.1.8/device.c
--- vdr-2.1.7/device.c	2015-01-14 13:02:44.000000000 +0100
+++ vdr-2.1.8/device.c	2015-01-30 13:11:30.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: device.c 3.19 2015/01/14 12:02:44 kls Exp $
+ * $Id: device.c 3.20 2015/01/30 12:11:30 kls Exp $
  */
 
 #include "device.h"
@@ -756,7 +756,7 @@
 
   cDevice *Device = (LiveView && IsPrimaryDevice()) ? GetDevice(Channel, LIVEPRIORITY, true) : this;
 
-  bool NeedsTransferMode = Device != this;
+  bool NeedsTransferMode = LiveView && Device != PrimaryDevice();
   // If the CAM slot wants the TS data, we need to switch to Transfer Mode:
   if (!NeedsTransferMode && LiveView && IsPrimaryDevice() && CamSlot() && CamSlot()->WantsTsData())
      NeedsTransferMode = true;
@@ -767,7 +767,7 @@
   // use the card that actually can receive it and transfer data from there:
 
   if (NeedsTransferMode) {
-     if (Device && CanReplay()) {
+     if (Device && PrimaryDevice()->CanReplay()) {
         if (Device->SetChannel(Channel, false) == scrOk) // calling SetChannel() directly, not SwitchChannel()!
            cControl::Launch(new cTransferControl(Device, Channel));
         else
@@ -1585,13 +1585,13 @@
                  bool DetachReceivers = false;
                  bool DescramblingOk = false;
                  int CamSlotNumber = 0;
+                 cCamSlot *cs = NULL;
                  if (startScrambleDetection) {
-                    cCamSlot *cs = CamSlot();
+                    cs = CamSlot();
                     CamSlotNumber = cs ? cs->SlotNumber() : 0;
                     if (CamSlotNumber) {
-                       bool Scrambled = b[3] & TS_SCRAMBLING_CONTROL;
                        int t = time(NULL) - startScrambleDetection;
-                       if (Scrambled) {
+                       if (TsIsScrambled(b)) {
                           if (t > TS_SCRAMBLING_TIMEOUT)
                              DetachReceivers = true;
                           }
@@ -1605,7 +1605,7 @@
                  Lock();
                  for (int i = 0; i < MAXRECEIVERS; i++) {
                      if (receiver[i] && receiver[i]->WantsPid(Pid)) {
-                        if (DetachReceivers) {
+                        if (DetachReceivers && cs && (!cs->IsActivating() || receiver[i]->Priority() >= LIVEPRIORITY)) {
                            dsyslog("detaching receiver - won't decrypt channel %s with CAM %d", *receiver[i]->ChannelID().ToString(), CamSlotNumber);
                            ChannelCamRelations.SetChecked(receiver[i]->ChannelID(), CamSlotNumber);
                            Detach(receiver[i]);
@@ -1704,7 +1704,7 @@
   if (camSlot) {
      if (Receiver->priority > MINPRIORITY) { // priority check to avoid an infinite loop with the CAM slot's caPidReceiver
         camSlot->StartDecrypting();
-        if (!camSlot->IsDecrypting())
+        if (!camSlot->IsDecrypting() && !camSlot->IsActivating())
            camSlot->Assign(NULL);
         }
      }
diff -ruN vdr-2.1.7/diseqc.c vdr-2.1.8/diseqc.c
--- vdr-2.1.7/diseqc.c	2013-12-28 12:33:08.000000000 +0100
+++ vdr-2.1.8/diseqc.c	2015-01-26 13:02:14.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: diseqc.c 3.3 2013/12/28 11:33:08 kls Exp $
+ * $Id: diseqc.c 3.4 2015/01/26 12:02:14 kls Exp $
  */
 
 #include "diseqc.h"
@@ -164,7 +164,7 @@
   bool result = false;
   int fields = sscanf(s, "%d %u %d", &channel, &userBand, &pin);
   if (fields == 2 || fields == 3) {
-     if (channel >= 0 && channel < 8) {
+     if (channel >= 0 && channel < 32) {
         result = true;
         if (fields == 3 && (pin < 0 || pin > 255)) {
            esyslog("Error: invalid SCR pin '%d'", pin);
@@ -255,26 +255,52 @@
 
 uint cDiseqc::SetScrFrequency(uint SatFrequency, const cScr *Scr, uint8_t *Codes) const
 {
-  uint t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
-  if (t < 1024 && Scr->Channel() >= 0 && Scr->Channel() < 8) {
-     Codes[3] = t >> 8 | (t == 0 ? 0 : scrBank << 2) | Scr->Channel() << 5;
-     Codes[4] = t;
-     if (t)
-        return (t + 350) * 4 - SatFrequency;
+  if ((Codes[0] & 0xF0) == 0x70 ) { // EN50607 aka JESS
+     uint t = SatFrequency == 0 ? 0 : (SatFrequency - 100);
+     if (t < 2048 && Scr->Channel() >= 0 && Scr->Channel() < 32) {
+        Codes[1] = t >> 8 | Scr->Channel() << 3;
+        Codes[2] = t;
+        Codes[3] = (t == 0 ? 0 : scrBank);
+        if (t)
+           return Scr->UserBand();
+        }
+     }
+  else { // EN50494 aka Unicable
+     uint t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
+     if (t < 1024 && Scr->Channel() >= 0 && Scr->Channel() < 8) {
+        Codes[3] = t >> 8 | (t == 0 ? 0 : scrBank << 2) | Scr->Channel() << 5;
+        Codes[4] = t;
+        if (t)
+           return (t + 350) * 4 - SatFrequency;
+        }
      }
+  esyslog("ERROR: invalid SCR channel number %d or frequency %d", Scr->Channel(),SatFrequency);
   return 0;
 }
 
 int cDiseqc::SetScrPin(const cScr *Scr, uint8_t *Codes) const
 {
-  if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
-     Codes[2] = 0x5C;
-     Codes[5] = Scr->Pin();
-     return 6;
+  if ((Codes[0] & 0xF0) == 0x70 ) { // EN50607 aka JESS
+     if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
+        Codes[0] = 0x71;
+        Codes[4] = Scr->Pin();
+        return 5;
+        }
+     else {
+        Codes[0] = 0x70;
+        return 4;
+        }
      }
-  else {
-     Codes[2] = 0x5A;
-     return 5;
+  else { // EN50494 aka Unicable
+     if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
+        Codes[2] = 0x5C;
+        Codes[5] = Scr->Pin();
+        return 6;
+        }
+     else {
+        Codes[2] = 0x5A;
+        return 5;
+        }
      }
 }
 
@@ -319,7 +345,7 @@
   char *p = NULL;
   errno = 0;
   int n = strtol(s, &p, 10);
-  if (!errno && p != s && n >= 0 && n < 8) {
+  if (!errno && p != s && n >= 0 && n < 256) {
      if (parsing) {
         if (scrBank < 0)
            scrBank = n;
diff -ruN vdr-2.1.7/diseqc.conf vdr-2.1.8/diseqc.conf
--- vdr-2.1.7/diseqc.conf	2013-11-04 13:48:31.000000000 +0100
+++ vdr-2.1.8/diseqc.conf	2015-01-26 12:59:30.000000000 +0100
@@ -82,7 +82,7 @@
 # S19.2E  12110 V 11080 t v
 # S19.2E  99999 V 10720 t v
 #
-# SCR (Satellite Channel Routing):
+# SCR (Satellite Channel Routing) EN50494:
 #
 # S19.2E  11700 V  9750  t V W10 S0 [E0 10 5A 00 00] W10 v
 # S19.2E  99999 V 10600  t V W10 S1 [E0 10 5A 00 00] W10 v
@@ -94,6 +94,28 @@
 # S13.0E  11700 H  9750  t V W10 S6 [E0 10 5A 00 00] W10 v
 # S13.0E  99999 H 10600  t V W10 S7 [E0 10 5A 00 00] W10 v
 #
+# SCR (Satellite Channel Routing) EN50607 "JESS":
+#
+# S19.2E  11700 V  9750  t V W10 S0 [70 00 00 00] W10 v
+# S19.2E  99999 V 10600  t V W10 S1 [70 00 00 00] W10 v
+# S19.2E  11700 H  9750  t V W10 S2 [70 00 00 00] W10 v
+# S19.2E  99999 H 10600  t V W10 S3 [70 00 00 00] W10 v
+#
+# S13.0E  11700 V  9750  t V W10 S4 [70 00 00 00] W10 v
+# S13.0E  99999 V 10600  t V W10 S5 [70 00 00 00] W10 v
+# S13.0E  11700 H  9750  t V W10 S6 [70 00 00 00] W10 v
+# S13.0E  99999 H 10600  t V W10 S7 [70 00 00 00] W10 v
+#
+# S23.0E  11700 V  9750  t V W10 S8 [70 00 00 00] W10 v
+# S23.0E  99999 V 10600  t V W10 S9 [70 00 00 00] W10 v
+# S23.0E  11700 H  9750  t V W10 S10 [70 00 00 00] W10 v
+# S23.0E  99999 H 10600  t V W10 S11 [70 00 00 00] W10 v
+#
+# S28.2E  11700 V  9750  t V W10 S12 [70 00 00 00] W10 v
+# S28.2E  99999 V 10600  t V W10 S13 [70 00 00 00] W10 v
+# S28.2E  11700 H  9750  t V W10 S14 [70 00 00 00] W10 v
+# S28.2E  99999 H 10600  t V W10 S15 [70 00 00 00] W10 v
+#
 # Positioner for steerable dish:
 #
 # S360E  11700 V  9750  t V W20 P W20 t v
diff -ruN vdr-2.1.7/dvbplayer.c vdr-2.1.8/dvbplayer.c
--- vdr-2.1.7/dvbplayer.c	2013-12-25 14:24:07.000000000 +0100
+++ vdr-2.1.8/dvbplayer.c	2015-02-01 11:45:41.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbplayer.c 3.1 2013/12/25 13:24:07 kls Exp $
+ * $Id: dvbplayer.c 3.3 2015/02/01 10:45:41 kls Exp $
  */
 
 #include "dvbplayer.h"
@@ -211,6 +211,7 @@
   cNonBlockingFileReader *nonBlockingFileReader;
   cRingBufferFrame *ringBuffer;
   cPtsIndex ptsIndex;
+  cMarks marks;
   cFileName *fileName;
   cIndexFile *index;
   cUnbufferedFile *replayFile;
@@ -296,6 +297,8 @@
      }
   else if (PauseLive)
      framesPerSecond = cRecording(FileName).FramesPerSecond(); // the fps rate might have changed from the default
+  if (Setup.SkipEdited || Setup.PauseAtLastMark)
+     marks.Load(FileName, framesPerSecond, isPesRecording);
 }
 
 cDvbPlayer::~cDvbPlayer()
@@ -402,8 +405,19 @@
   int pc = 0;
 
   readIndex = Resume();
-  if (readIndex >= 0)
+  if (readIndex > 0)
      isyslog("resuming replay at index %d (%s)", readIndex, *IndexToHMSF(readIndex, true, framesPerSecond));
+  else if (Setup.SkipEdited) {
+     if (marks.First() && index) {
+        int Index = marks.First()->Position();
+        uint16_t FileNumber;
+        off_t FileOffset;
+        if (index->Get(Index, &FileNumber, &FileOffset) && NextFile(FileNumber, FileOffset)) {
+           isyslog("starting replay at first mark %d (%s)", Index, *IndexToHMSF(Index, true, framesPerSecond));
+           readIndex = Index;
+           }
+        }
+     }
 
   nonBlockingFileReader = new cNonBlockingFileReader;
   int Length = 0;
@@ -413,6 +427,8 @@
   uint32_t LastStc = 0;
   int LastReadIFrame = -1;
   int SwitchToPlayFrame = 0;
+  bool CutIn = false;
+  bool AtLastMark = false;
 
   if (pauseLive)
      Goto(0, true);
@@ -431,7 +447,7 @@
 
           // Read the next frame from the file:
 
-          if (playMode != pmStill && playMode != pmPause) {
+          if (playMode != pmStill && playMode != pmPause && !AtLastMark) {
              if (!readFrame && (replayFile || readIndex >= 0)) {
                 if (!nonBlockingFileReader->Reading()) {
                    if (!SwitchToPlayFrame && (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))) {
@@ -468,8 +484,30 @@
                    else if (index) {
                       uint16_t FileNumber;
                       off_t FileOffset;
-                      if (index->Get(readIndex + 1, &FileNumber, &FileOffset, &readIndependent, &Length) && NextFile(FileNumber, FileOffset))
+                      if (index->Get(readIndex + 1, &FileNumber, &FileOffset, &readIndependent, &Length) && NextFile(FileNumber, FileOffset)) {
                          readIndex++;
+                         if (Setup.SkipEdited || Setup.PauseAtLastMark) {
+                            marks.Update();
+                            cMark *m = marks.Get(readIndex);
+                            if (m && (m->Index() & 0x01) != 0) { // we're at an end mark
+                               m = marks.GetNextBegin(m);
+                               int Index = -1;
+                               if (m)
+                                  Index = m->Position(); // skip to next begin mark
+                               else if (Setup.PauseAtLastMark)
+                                  AtLastMark = true; // triggers going into Pause mode
+                               else if (index->IsStillRecording())
+                                  Index = index->GetNextIFrame(index->Last() - int(round(MAXSTUCKATEOF * framesPerSecond)), false); // skip, but stay off end of live-recordings
+                               else
+                                  AtLastMark = true; // triggers stopping replay
+                               if (Setup.SkipEdited && Index > readIndex) {
+                                  isyslog("skipping from %d (%s) to %d (%s)", readIndex - 1, *IndexToHMSF(readIndex - 1, true, framesPerSecond), Index, *IndexToHMSF(Index, true, framesPerSecond));
+                                  readIndex = Index;
+                                  CutIn = true;
+                                  }
+                               }
+                            }
+                         }
                       else
                          eof = true;
                       }
@@ -512,6 +550,11 @@
              // Store the frame in the buffer:
 
              if (readFrame) {
+                if (CutIn) {
+                   if (isPesRecording)
+                      cRemux::SetBrokenLink(readFrame->Data(), readFrame->Count());
+                   CutIn = false;
+                   }
                 if (ringBuffer->Put(readFrame))
                    readFrame = NULL;
                 else
@@ -578,8 +621,17 @@
                 p = NULL;
                 }
              }
-          else
+          else {
+             if (AtLastMark) {
+                if (Setup.PauseAtLastMark) {
+                   playMode = pmPause;
+                   AtLastMark = false;
+                   }
+                else
+                   eof = true;
+                }
              Sleep = true;
+             }
 
           // Handle hitting begin/end of recording:
 
@@ -800,18 +852,26 @@
      off_t FileOffset;
      int Length;
      Index = index->GetNextIFrame(Index, false, &FileNumber, &FileOffset, &Length);
-     if (Index >= 0 && NextFile(FileNumber, FileOffset) && Still) {
-        uchar b[MAXFRAMESIZE];
-        int r = ReadFrame(replayFile, b, Length, sizeof(b));
-        if (r > 0) {
-           if (playMode == pmPause)
-              DevicePlay();
-           DeviceStillPicture(b, r);
-           ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index);
+     if (Index >= 0) {
+        if (Still) {
+           if (NextFile(FileNumber, FileOffset)) {
+              uchar b[MAXFRAMESIZE];
+              int r = ReadFrame(replayFile, b, Length, sizeof(b));
+              if (r > 0) {
+                 if (playMode == pmPause)
+                    DevicePlay();
+                 DeviceStillPicture(b, r);
+                 ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index);
+                 }
+              playMode = pmStill;
+              readIndex = Index;
+              }
+           }
+        else {
+           readIndex = Index - 1; // Action() will first increment it!
+           Play();
            }
-        playMode = pmStill;
         }
-     readIndex = Index;
      }
 }
 
diff -ruN vdr-2.1.7/dvbplayer.h vdr-2.1.8/dvbplayer.h
--- vdr-2.1.7/dvbplayer.h	2012-02-19 12:40:36.000000000 +0100
+++ vdr-2.1.8/dvbplayer.h	2015-02-01 12:20:54.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbplayer.h 3.0 2012/02/19 11:40:36 kls Exp $
+ * $Id: dvbplayer.h 3.1 2015/02/01 11:20:54 kls Exp $
  */
 
 #ifndef __DVBPLAYER_H
@@ -56,7 +56,7 @@
        // and >0 if this is multi speed mode.
   void Goto(int Index, bool Still = false);
        // Positions to the given index and displays that frame as a still picture
-       // if Still is true.
+       // if Still is true. If Still is false, Play() will be called.
   };
 
 #endif //__DVBPLAYER_H
diff -ruN vdr-2.1.7/dvbsubtitle.c vdr-2.1.8/dvbsubtitle.c
--- vdr-2.1.7/dvbsubtitle.c	2015-01-14 12:31:09.000000000 +0100
+++ vdr-2.1.8/dvbsubtitle.c	2015-01-20 15:53:57.000000000 +0100
@@ -7,7 +7,7 @@
  * Original author: Marco Schluessler <marco@lordzodiac.de>
  * With some input from the "subtitles plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
  *
- * $Id: dvbsubtitle.c 3.9 2015/01/14 11:31:09 kls Exp $
+ * $Id: dvbsubtitle.c 3.10 2015/01/20 14:53:57 kls Exp $
  */
 
 #include "dvbsubtitle.h"
@@ -1042,7 +1042,7 @@
     default: dbgpages("unknown page state: %d<br>\n", pageState);
     }
   bs.SkipBits(2); // reserved
-  dbgpages("<hr>\n<b>page</b> id %d version %d pts %"PRId64" timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
+  dbgpages("<hr>\n<b>page</b> id %d version %d pts %" PRId64 " timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
   regionRefs.Clear();
   while (!bs.IsEOF())
         regionRefs.Add(new cSubtitleRegionRef(bs));
@@ -1073,7 +1073,7 @@
     default: dbgpages("unknown page state: %d<br>\n", pageState);
     }
   bs.SkipBits(6);
-  dbgpages("<hr>\n<b>page</b> id %d version %d pts %"PRId64" timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
+  dbgpages("<hr>\n<b>page</b> id %d version %d pts %" PRId64 " timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
   regionRefs.Clear();
   pending = true;
 }
@@ -1384,7 +1384,7 @@
      if (Length > PayloadOffset + SubstreamHeaderLength) {
         int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : -1;
         if (pts >= 0)
-           dbgconverter("converter PTS: %"PRId64"<br>\n", pts);
+           dbgconverter("converter PTS: %" PRId64 "<br>\n", pts);
         const uchar *data = Data + PayloadOffset + SubstreamHeaderLength; // skip substream header
         int length = Length - PayloadOffset - SubstreamHeaderLength; // skip substream header
         if (ResetSubtitleAssembler)
@@ -1420,7 +1420,7 @@
      if (Length > PayloadOffset) {
         int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : -1;
         if (pts >= 0)
-           dbgconverter("converter PTS: %"PRId64"<br>\n", pts);
+           dbgconverter("converter PTS: %" PRId64 "<br>\n", pts);
         const uchar *data = Data + PayloadOffset;
         int length = Length - PayloadOffset;
         if (length > 0) {
@@ -1488,7 +1488,7 @@
                         dbgoutput("showing bitmap #%d of %d<br>\n", sb->Index() + 1, bitmaps->Count());
                         sb->Draw(osd);
                         Timeout.Set(sb->Timeout() * 1000);
-                        dbgconverter("PTS: %"PRId64"  STC: %"PRId64" (%"PRId64") timeout: %d<br>\n", sb->Pts(), STC, Delta, sb->Timeout());
+                        dbgconverter("PTS: %" PRId64 "  STC: %" PRId64 " (%" PRId64 ") timeout: %d<br>\n", sb->Pts(), STC, Delta, sb->Timeout());
                         }
                      }
                   else
diff -ruN vdr-2.1.7/keys.h vdr-2.1.8/keys.h
--- vdr-2.1.7/keys.h	2012-12-04 13:51:25.000000000 +0100
+++ vdr-2.1.8/keys.h	2015-01-27 11:45:18.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: keys.h 3.0 2012/12/04 12:51:25 kls Exp $
+ * $Id: keys.h 3.1 2015/01/27 10:45:18 kls Exp $
  */
 
 #ifndef __KEYS_H
@@ -65,6 +65,8 @@
 
 // This is in preparation for having more key codes:
 #define kMarkToggle      k0
+#define kMarkSkipBack    k1
+#define kMarkSkipForward k3
 #define kMarkMoveBack    k4
 #define kMarkMoveForward k6
 #define kMarkJumpBack    k7
diff -ruN vdr-2.1.7/menu.c vdr-2.1.8/menu.c
--- vdr-2.1.7/menu.c	2015-01-15 12:14:21.000000000 +0100
+++ vdr-2.1.8/menu.c	2015-02-01 11:42:11.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.c 3.28 2015/01/15 11:14:21 kls Exp $
+ * $Id: menu.c 3.35 2015/02/01 10:42:11 kls Exp $
  */
 
 #include "menu.h"
@@ -3419,7 +3419,7 @@
 
 bool cMenuSetupCAMItem::Changed(void)
 {
-  char buffer[32];
+  const char *Activating = "";
   const char *CamName = camSlot->GetCamName();
   if (!CamName) {
      switch (camSlot->ModuleStatus()) {
@@ -3429,7 +3429,10 @@
        default:        CamName = "-"; break;
        }
      }
-  snprintf(buffer, sizeof(buffer), " %d %s", camSlot->SlotNumber(), CamName);
+  else if (camSlot->IsActivating())
+     // TRANSLATORS: note the leading blank!
+     Activating = tr(" (activating)");
+  cString buffer = cString::sprintf(" %d %s%s", camSlot->SlotNumber(), CamName, Activating);
   if (strcmp(buffer, Text()) != 0) {
      SetText(buffer);
      return true;
@@ -3439,8 +3442,11 @@
 
 class cMenuSetupCAM : public cMenuSetupBase {
 private:
+  const char *activationHelp;
   eOSState Menu(void);
   eOSState Reset(void);
+  eOSState Activate(void);
+  void SetHelpKeys(void);
 public:
   cMenuSetupCAM(void);
   virtual eOSState ProcessKey(eKeys Key);
@@ -3448,13 +3454,33 @@
 
 cMenuSetupCAM::cMenuSetupCAM(void)
 {
+  activationHelp = NULL;
   SetMenuCategory(mcSetupCam);
   SetSection(tr("CAM"));
   SetCols(15);
   SetHasHotkeys();
   for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot))
       Add(new cMenuSetupCAMItem(CamSlot));
-  SetHelp(tr("Button$Menu"), tr("Button$Reset"));
+  SetHelpKeys();
+}
+
+void cMenuSetupCAM::SetHelpKeys(void)
+{
+  if (HasSubMenu())
+     return;
+  cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
+  const char *NewActivationHelp = "";
+  if (item) {
+     cCamSlot *CamSlot = item->CamSlot();
+     if (CamSlot->IsActivating())
+        NewActivationHelp = tr("Button$Cancel activation");
+     else if (CamSlot->CanActivate())
+        NewActivationHelp = tr("Button$Activate");
+     }
+  if (NewActivationHelp != activationHelp) {
+     activationHelp = NewActivationHelp;
+     SetHelp(tr("Button$Menu"), tr("Button$Reset"), activationHelp);
+     }
 }
 
 eOSState cMenuSetupCAM::Menu(void)
@@ -3484,6 +3510,43 @@
   return osContinue;
 }
 
+eOSState cMenuSetupCAM::Activate(void)
+{
+  cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
+  if (item) {
+     cCamSlot *CamSlot = item->CamSlot();
+     if (CamSlot->IsActivating())
+        CamSlot->CancelActivation();
+     else if (CamSlot->CanActivate()) {
+        if (CamSlot->Priority() < LIVEPRIORITY) { // don't interrupt recordings
+           if (cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel())) {
+              for (int i = 0; i < cDevice::NumDevices(); i++) {
+                  if (cDevice *Device = cDevice::GetDevice(i)) {
+                     if (Device->ProvidesChannel(Channel)) {
+                        if (Device->Priority() < LIVEPRIORITY) { // don't interrupt recordings
+                           if (CamSlot->CanActivate()) {
+                              if (CamSlot->Assign(Device, true)) { // query
+                                 cControl::Shutdown(); // must end transfer mode before assigning CAM, otherwise it might be unassigned again
+                                 if (CamSlot->Assign(Device)) {
+                                    if (Device->SwitchChannel(Channel, true)) {
+                                       CamSlot->StartActivation();
+                                       return osContinue;
+                                       }
+                                    }
+                                 }
+                              }
+                           }
+                        }
+                     }
+                  }
+              }
+           }
+        Skins.Message(mtError, tr("Can't activate CAM!"));
+        }
+     }
+  return osContinue;
+}
+
 eOSState cMenuSetupCAM::Reset(void)
 {
   cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
@@ -3505,12 +3568,14 @@
        case kOk:
        case kRed:    return Menu();
        case kGreen:  state = Reset(); break;
+       case kYellow: state = Activate(); break;
        default: break;
        }
      for (cMenuSetupCAMItem *ci = (cMenuSetupCAMItem *)First(); ci; ci = (cMenuSetupCAMItem *)ci->Next()) {
          if (ci->Changed())
             DisplayItem(ci);
          }
+     SetHelpKeys();
      }
   return state;
 }
@@ -3571,6 +3636,11 @@
   Add(new cMenuEditBoolItem(tr("Setup.Replay$Show remaining time"), &data.ShowRemainingTime));
   Add(new cMenuEditIntItem( tr("Setup.Replay$Progress display time (s)"), &data.ProgressDisplayTime, 0, 60));
   Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay when setting mark"), &data.PauseOnMarkSet));
+  Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay when jumping to a mark"), &data.PauseOnMarkJump));
+  Add(new cMenuEditBoolItem(tr("Setup.Replay$Skip edited parts"), &data.SkipEdited));
+  Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay at last mark"), &data.PauseAtLastMark));
+  Add(new cMenuEditIntItem( tr("Setup.Replay$Binary skip initial value (s)"), &data.BinarySkipInitial, 10, 600));
+  Add(new cMenuEditIntItem( tr("Setup.Replay$Binary skip timeout (s)"), &data.BinarySkipTimeout, 0, 10));
   Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
 }
 
@@ -4910,6 +4980,39 @@
   return Result;
 }
 
+// --- cBinarySkipper --------------------------------------------------------
+
+cBinarySkipper::cBinarySkipper(void)
+{
+  initialValue = NULL;
+  currentValue = 0;
+  framesPerSecond = 0;
+  lastKey = kNone;
+}
+
+void cBinarySkipper::Initialize(int *InitialValue, double FramesPerSecond)
+{
+  initialValue = InitialValue;
+  framesPerSecond = FramesPerSecond;
+  currentValue = 0;
+}
+
+int cBinarySkipper::GetValue(eKeys Key)
+{
+  if (!initialValue)
+     return 0;
+  if (timeout.TimedOut()) {
+     currentValue = int(round(*initialValue * framesPerSecond));
+     lastKey = Key;
+     }
+  else if (Key != lastKey) {
+     currentValue /= 2;
+     lastKey = kNone; // once the direction has changed, every further call halves the value
+     }
+  timeout.Set(Setup.BinarySkipTimeout * 1000);
+  return max(currentValue, 1);
+}
+
 // --- cReplayControl --------------------------------------------------------
 
 cReplayControl *cReplayControl::currentReplayControl = NULL;
@@ -4931,6 +5034,7 @@
   cRecording Recording(fileName);
   cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
   marks.Load(fileName, Recording.FramesPerSecond(), Recording.IsPesRecording());
+  binarySkipper.Initialize(&Setup.BinarySkipInitial, Recording.FramesPerSecond());
   SetTrackDescriptions(false);
   if (Setup.ProgressDisplayTime)
      ShowTimed(Setup.ProgressDisplayTime);
@@ -5158,8 +5262,6 @@
             Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
             bool Still = Key == kDown || Key == kPause || Key == kOk;
             Goto(SecondsToFrames(Seconds, FramesPerSecond()), Still);
-            if (!Still)
-               Play();
             }
          timeSearchActive = false;
          break;
@@ -5223,6 +5325,14 @@
   if (GetIndex(Current, Total)) {
      if (marks.Count()) {
         if (cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current)) {
+           if (!Setup.PauseOnMarkJump) {
+              bool Playing, Fwd;
+              int Speed;
+              if (GetReplayMode(Playing, Fwd, Speed) && Playing && Forward && m->Position() < Total - SecondsToFrames(3, FramesPerSecond())) {
+                 Goto(m->Position());
+                 return;
+                 }
+              }
            Goto(m->Position(), true);
            displayFrames = true;
            return;
@@ -5234,26 +5344,40 @@
      }
 }
 
-void cReplayControl::MarkMove(bool Forward)
+void cReplayControl::MarkMove(int Frames, bool MarkRequired)
 {
   int Current, Total;
   if (GetIndex(Current, Total)) {
-     if (cMark *m = marks.Get(Current)) {
+     bool Play, Forward;
+     int Speed;
+     GetReplayMode(Play, Forward, Speed);
+     cMark *m = marks.Get(Current);
+     if (!Play && m) {
         displayFrames = true;
-        int p = SkipFrames(Forward ? 1 : -1);
         cMark *m2;
-        if (Forward) {
+        if (Frames > 0) {
+           // Handle marks at the same offset:
            while ((m2 = marks.Next(m)) != NULL && m2->Position() == m->Position())
                  m = m2;
+           // Don't skip the next mark:
+           if ((m2 = marks.Next(m)) != NULL)
+              Frames = min(Frames, m2->Position() - m->Position() - 1);
            }
         else {
+           // Handle marks at the same offset:
            while ((m2 = marks.Prev(m)) != NULL && m2->Position() == m->Position())
                  m = m2;
+           // Don't skip the next mark:
+           if ((m2 = marks.Prev(m)) != NULL)
+              Frames = -min(-Frames, m->Position() - m2->Position() - 1);
            }
+        int p = SkipFrames(Frames);
         m->SetPosition(p);
         Goto(m->Position(), true);
         marksModified = true;
         }
+     else if (!MarkRequired)
+        Goto(SkipFrames(Frames), !Play);
      }
 }
 
@@ -5287,12 +5411,10 @@
      if (!m)
         m = marks.GetNext(Current);
      if (m) {
-        if ((m->Index() & 0x01) != 0)
+        if ((m->Index() & 0x01) != 0 && !Setup.SkipEdited) // when skipping edited parts we also need to jump to end marks
            m = marks.Next(m);
-        if (m) {
+        if (m)
            Goto(m->Position() - SecondsToFrames(3, FramesPerSecond()));
-           Play();
-           }
         }
      }
 }
@@ -5384,9 +5506,13 @@
         case kMarkJumpForward|k_Repeat:
         case kMarkJumpForward: MarkJump(true); break;
         case kMarkMoveBack|k_Repeat:
-        case kMarkMoveBack:    MarkMove(false); break;
+        case kMarkMoveBack:    MarkMove(-1, true); break;
         case kMarkMoveForward|k_Repeat:
-        case kMarkMoveForward: MarkMove(true); break;
+        case kMarkMoveForward: MarkMove(+1, true); break;
+        case kMarkSkipBack|k_Repeat:
+        case kMarkSkipBack:    MarkMove(-binarySkipper.GetValue(RAWKEY(Key)), false); break;
+        case kMarkSkipForward|k_Repeat:
+        case kMarkSkipForward: MarkMove(+binarySkipper.GetValue(RAWKEY(Key)), false); break;
         case kEditCut:         EditCut(); break;
         case kEditTest:        EditTest(); break;
         default: {
diff -ruN vdr-2.1.7/menu.h vdr-2.1.8/menu.h
--- vdr-2.1.7/menu.h	2015-01-15 12:12:57.000000000 +0100
+++ vdr-2.1.8/menu.h	2015-01-27 12:38:20.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.h 3.6 2015/01/15 11:12:57 kls Exp $
+ * $Id: menu.h 3.7 2015/01/27 11:38:20 kls Exp $
  */
 
 #ifndef __MENU_H
@@ -270,9 +270,23 @@
   static bool StateChanged(int &State);
   };
 
+class cBinarySkipper {
+private:
+  int *initialValue;
+  int currentValue;
+  double framesPerSecond;
+  eKeys lastKey;
+  cTimeMs timeout;
+public:
+  cBinarySkipper(void);
+  void Initialize(int *InitialValue, double FramesPerSecond);
+  int GetValue(eKeys Key);
+  };
+
 class cReplayControl : public cDvbPlayerControl {
 private:
   cSkinDisplayReplay *displayReplay;
+  cBinarySkipper binarySkipper;
   cMarks marks;
   bool marksModified;
   bool visible, modeOnly, shown, displayFrames;
@@ -292,7 +306,7 @@
   bool ShowProgress(bool Initial);
   void MarkToggle(void);
   void MarkJump(bool Forward);
-  void MarkMove(bool Forward);
+  void MarkMove(int Frames, bool MarkRequired);
   void EditCut(void);
   void EditTest(void);
 public:
diff -ruN vdr-2.1.7/nit.c vdr-2.1.8/nit.c
--- vdr-2.1.7/nit.c	2014-03-16 11:38:31.000000000 +0100
+++ vdr-2.1.8/nit.c	2015-02-01 14:46:00.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: nit.c 3.3 2014/03/16 10:38:31 kls Exp $
+ * $Id: nit.c 3.4 2015/02/01 13:46:00 kls Exp $
  */
 
 #include "nit.h"
@@ -357,6 +357,40 @@
                    }
                  }
                  break;
+            case SI::LogicalChannelDescriptorTag: {
+                 SI::LogicalChannelDescriptor *lcd = (SI::LogicalChannelDescriptor *)d;
+                 SI::LogicalChannelDescriptor::LogicalChannel LogicalChannel;
+                 for (SI::Loop::Iterator it4; lcd->logicalChannelLoop.getNext(LogicalChannel, it4); ) {
+                     int lcn = LogicalChannel.getLogicalChannelNumber();
+                     int sid = LogicalChannel.getServiceId();
+                     if (LogicalChannel.getVisibleServiceFlag()) {
+                        for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
+                            if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
+                               Channel->SetLcn(lcn);
+                               break;
+                               }
+                            }
+                        }
+                     }
+                 }
+                 break;
+            case SI::HdSimulcastLogicalChannelDescriptorTag: {
+                 SI::HdSimulcastLogicalChannelDescriptor *lcd = (SI::HdSimulcastLogicalChannelDescriptor *)d;
+                 SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel HdSimulcastLogicalChannel;
+                 for (SI::Loop::Iterator it4; lcd->hdSimulcastLogicalChannelLoop.getNext(HdSimulcastLogicalChannel, it4); ) {
+                     int lcn = HdSimulcastLogicalChannel.getLogicalChannelNumber();
+                     int sid = HdSimulcastLogicalChannel.getServiceId();
+                     if (HdSimulcastLogicalChannel.getVisibleServiceFlag()) {
+                        for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
+                            if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
+                               Channel->SetLcn(lcn);
+                               break;
+                               }
+                            }
+                        }
+                     }
+                 }
+                 break;
             default: ;
             }
           delete d;
diff -ruN vdr-2.1.7/po/ar.po vdr-2.1.8/po/ar.po
--- vdr-2.1.7/po/ar.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/ar.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-10-16 11:16-0400\n"
 "Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
 "Language-Team: Arabic <ar@li.org>\n"
@@ -23,6 +23,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** قناة خاطئة ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "القناة غير متاحة"
 
@@ -1112,9 +1115,19 @@
 msgid "CAM ready"
 msgstr "الكامة جاهزة"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "الكامة "
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "القائمة"
 
@@ -1127,6 +1140,9 @@
 msgid "Can't open CAM menu!"
 msgstr "تعذر فتح قائمة الكامة"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "الكامة مستخدمة الان هل تريد اعادة تشغيلها"
 
@@ -1220,6 +1236,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pause replay when setting mark"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "رقم المواصلة"
 
diff -ruN vdr-2.1.7/po/ca_ES.po vdr-2.1.8/po/ca_ES.po
--- vdr-2.1.7/po/ca_ES.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/ca_ES.po	2015-01-30 13:14:54.000000000 +0100
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Catalan <vdr@linuxtv.org>\n"
@@ -22,6 +22,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Canal incorrecte ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Canal no disponible!"
 
@@ -1111,9 +1114,19 @@
 msgid "CAM ready"
 msgstr "CAM preparat"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Men�"
 
@@ -1126,6 +1139,9 @@
 msgid "Can't open CAM menu!"
 msgstr "No puc obrir el men� de la CAM!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM en �s - reiniciar?"
 
@@ -1219,6 +1235,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pausar reproducci� en establir marca"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID de Continuar"
 
diff -ruN vdr-2.1.7/po/cs_CZ.po vdr-2.1.8/po/cs_CZ.po
--- vdr-2.1.7/po/cs_CZ.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/cs_CZ.po	2015-01-30 13:14:54.000000000 +0100
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2010-05-06 11:00+0200\n"
 "Last-Translator: Aleš Juřík <ajurik@quick.cz>\n"
 "Language-Team: Czech <vdr@linuxtv.org>\n"
@@ -22,6 +22,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Neplatný kanál ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanál není dostupný!"
 
@@ -1111,9 +1114,19 @@
 msgid "CAM ready"
 msgstr "CAM připraven"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1126,6 +1139,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Menu CAM není dostupné"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM se používá - opravdu restartovat?"
 
@@ -1219,6 +1235,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pozastavit přehrávání při nastavování značky"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID obnovení"
 
diff -ruN vdr-2.1.7/po/da_DK.po vdr-2.1.8/po/da_DK.po
--- vdr-2.1.7/po/da_DK.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/da_DK.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
 "Language-Team: Danish <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Ugyldig kanal! ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanal er ikke tilg�ngelig!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "CAM klar"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Kan ikke �bne CAM menuen!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM er i brug - virkelig nulstille?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Genoptagelses ID"
 
diff -ruN vdr-2.1.7/po/de_DE.po vdr-2.1.8/po/de_DE.po
--- vdr-2.1.7/po/de_DE.po	2015-01-13 11:01:50.000000000 +0100
+++ vdr-2.1.8/po/de_DE.po	2015-01-30 13:15:16.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2010-01-16 16:46+0100\n"
 "Last-Translator: Klaus Schmidinger <vdr@tvdr.de>\n"
 "Language-Team: German <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Ung�ltiger Kanal ***"
 
+msgid "CAM activated!"
+msgstr "CAM aktiviert!"
+
 msgid "Channel not available!"
 msgstr "Kanal nicht verf�gbar!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "CAM bereit"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr " (wird aktiviert)"
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr "Aktivierung abbrechen"
+
+msgid "Button$Activate"
+msgstr "Aktivieren"
+
 msgid "Button$Menu"
 msgstr "Men�"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "CAM-Men� kann nicht ge�ffnet werden!"
 
+msgid "Can't activate CAM!"
+msgstr "CAM kann nicht aktiviert werden!"
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM wird benutzt - wirklich zur�cksetzen?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pause beim Setzen einer Schnittmarke"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr "Pause beim Sprung auf eine Schnittmarke"
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr "Herausgeschnittene Teile �berspringen"
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr "Pause an der letzten Schnittmarke"
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr "Anfangswert f�r bin�res Springen (s)"
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr "Zeitlimit f�r bin�res Springen (ms)"
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Wiedergabe-ID"
 
diff -ruN vdr-2.1.7/po/el_GR.po vdr-2.1.8/po/el_GR.po
--- vdr-2.1.7/po/el_GR.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/el_GR.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
 "Language-Team: Greek <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** ����� ������ ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "�� ������ ��� ����� ���������!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr ""
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "M����"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "������� � �������� ��� CAM �����!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr ""
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID ������������"
 
diff -ruN vdr-2.1.7/po/es_ES.po vdr-2.1.8/po/es_ES.po
--- vdr-2.1.7/po/es_ES.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/es_ES.po	2015-01-30 13:14:54.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Spanish <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Canal no v�lido ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "�Canal no disponible!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM preparado"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Men�"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "�No se puede abrir el men� CAM!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM en uso - �reiniciar?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pausar reproducci�n al establecer marca"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID de continuaci�n"
 
diff -ruN vdr-2.1.7/po/et_EE.po vdr-2.1.8/po/et_EE.po
--- vdr-2.1.7/po/et_EE.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/et_EE.po	2015-01-30 14:40:46.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
 "Language-Team: Estonian <vdr@linuxtv.org>\n"
@@ -17,7 +17,10 @@
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid "*** Invalid Channel ***"
-msgstr "*** Vigane kanal ***"
+msgstr "*** Kehtetu kanal ***"
+
+msgid "CAM activated!"
+msgstr ""
 
 msgid "Channel not available!"
 msgstr "Kanal ei ole kättesaadav!"
@@ -74,16 +77,16 @@
 msgstr "Rolloff"
 
 msgid "StreamId"
-msgstr "Stream-tunnus"
+msgstr "Vootunnus"
 
 msgid "Pilot"
-msgstr ""
+msgstr "Piloot"
 
 msgid "T2SystemId"
-msgstr ""
+msgstr "T2 tunnus"
 
 msgid "SISO/MISO"
-msgstr ""
+msgstr "SISO/MISO"
 
 msgid "Starting EPG scan"
 msgstr "EPG skaneerimine käivitatud"
@@ -573,10 +576,10 @@
 msgstr "Sid"
 
 msgid "Nid"
-msgstr ""
+msgstr "Nid"
 
 msgid "Tid"
-msgstr ""
+msgstr "Tid"
 
 msgid "Channel settings are not unique!"
 msgstr "Kanaliseaded ei ole unikaalsed!"
@@ -597,7 +600,7 @@
 msgstr "Märkimine"
 
 msgid "Channel is being used by a timer!"
-msgstr "Kanal on taimeri kasutuses!"
+msgstr "Kanal on taimeris kasutusel!"
 
 msgid "Delete channel?"
 msgstr "Kustutada kanal?"
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "CAM töövalmis"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menüü"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Ei saa avada CAM menüüd!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM on kasutuses - taaskäivitada?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Taasesituse peatamine markeri seadmisel"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Jätkamise ID"
 
@@ -1253,10 +1284,10 @@
 msgstr "Helitugevus käivitamisel"
 
 msgid "Setup.Miscellaneous$Volume steps"
-msgstr ""
+msgstr "Helitugevuse samm"
 
 msgid "Setup.Miscellaneous$Volume linearize"
-msgstr ""
+msgstr "Helitugevuse lineariseerimine"
 
 msgid "Setup.Miscellaneous$Channels wrap"
 msgstr "Kanalite ringkerimine"
diff -ruN vdr-2.1.7/po/fi_FI.po vdr-2.1.8/po/fi_FI.po
--- vdr-2.1.7/po/fi_FI.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/fi_FI.po	2015-02-01 12:34:57.000000000 +0100
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2007-08-15 15:52+0200\n"
 "Last-Translator: Matti Lehtimäki <matti.lehtimaki@gmail.com>\n"
 "Language-Team: Finnish <vdr@linuxtv.org>\n"
@@ -23,6 +23,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Virheellinen kanavavalinta ***"
 
+msgid "CAM activated!"
+msgstr "CA-moduuli aktivoitu!"
+
 msgid "Channel not available!"
 msgstr "Kanava ei ole käytettävissä!"
 
@@ -1112,9 +1115,19 @@
 msgid "CAM ready"
 msgstr "CAM valmis"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr " (aktivoidaan)"
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr "Peruuta aktivointi"
+
+msgid "Button$Activate"
+msgstr "Aktivoi"
+
 msgid "Button$Menu"
 msgstr "Valikko"
 
@@ -1127,6 +1140,9 @@
 msgid "Can't open CAM menu!"
 msgstr "CA-moduulin valikko ei saatavilla"
 
+msgid "Can't activate CAM!"
+msgstr "CA-moduulin aktivointi epäonnistui!"
+
 msgid "CAM is in use - really reset?"
 msgstr "CA-moduuli käytössä - nollataanko?"
 
@@ -1220,6 +1236,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pysäytä toisto asetettaessa merkki"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr "Pysäytä toisto hypätessä merkkiin"
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr "Ohita muokatut kohdat"
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr "Pysäytä toisto viimeiseen merkkiin"
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr "Binäärihypyn oletuspituus (s)"
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr "Binäärihypyn odotusaika (ms)"
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Tallenteen paluutunniste"
 
@@ -1257,10 +1288,10 @@
 msgstr "Äänenvoimakkuus käynnistettäessä"
 
 msgid "Setup.Miscellaneous$Volume steps"
-msgstr ""
+msgstr "Äänenvoimakkuuden askellus"
 
 msgid "Setup.Miscellaneous$Volume linearize"
-msgstr ""
+msgstr "Äänenvoimakkuuden lineaarisuus"
 
 msgid "Setup.Miscellaneous$Channels wrap"
 msgstr "Kanavien rullaus"
diff -ruN vdr-2.1.7/po/fr_FR.po vdr-2.1.8/po/fr_FR.po
--- vdr-2.1.7/po/fr_FR.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/fr_FR.po	2015-01-30 13:14:54.000000000 +0100
@@ -17,7 +17,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-02-24 12:56+0100\n"
 "Last-Translator: Dominique Plu <dplu@free.fr>\n"
 "Language-Team: French <vdr@linuxtv.org>\n"
@@ -29,6 +29,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Chaîne invalide ! ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Chaîne non disponible !"
 
@@ -1118,9 +1121,19 @@
 msgid "CAM ready"
 msgstr "CAM prêt"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1133,6 +1146,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Impossible d'ouvrir le menu CAM !"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM en cours d'utilisation - confirmer réinitialisation ?"
 
@@ -1226,6 +1242,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Arrêt lecture si ajout marqueur"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID de reprise"
 
diff -ruN vdr-2.1.7/po/hr_HR.po vdr-2.1.8/po/hr_HR.po
--- vdr-2.1.7/po/hr_HR.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/hr_HR.po	2015-01-30 13:14:55.000000000 +0100
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-03-17 19:00+0100\n"
 "Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
 "Language-Team: Croatian <vdr@linuxtv.org>\n"
@@ -21,6 +21,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Neispravan Program ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Program nije dostupan!"
 
@@ -1110,9 +1113,19 @@
 msgid "CAM ready"
 msgstr "CAM spreman"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Izbornik"
 
@@ -1125,6 +1138,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Otvaranje CAM izbornika neuspje�no!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM se koristi - ponovno pokrenuti unato�?"
 
@@ -1218,6 +1234,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID nastavka"
 
diff -ruN vdr-2.1.7/po/hu_HU.po vdr-2.1.8/po/hu_HU.po
--- vdr-2.1.7/po/hu_HU.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/hu_HU.po	2015-01-30 13:14:54.000000000 +0100
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-01 19:22+0200\n"
 "Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
 "Language-Team: Hungarian <vdr@linuxtv.org>\n"
@@ -23,6 +23,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Érvénytelen csatorna ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Az adó nem elérhető"
 
@@ -1112,9 +1115,19 @@
 msgid "CAM ready"
 msgstr "CAM működik"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menü"
 
@@ -1127,6 +1140,9 @@
 msgid "Can't open CAM menu!"
 msgstr "A CAM menü nem nyitható"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM használatban - valóban újraindítjuk?"
 
@@ -1220,6 +1236,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "A visszajátszás megállítása vágópont kijelölésnél"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Lejátszás ID"
 
diff -ruN vdr-2.1.7/po/it_IT.po vdr-2.1.8/po/it_IT.po
--- vdr-2.1.7/po/it_IT.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/it_IT.po	2015-01-30 13:14:54.000000000 +0100
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
-"PO-Revision-Date: 2014-03-23 00:54+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
+"PO-Revision-Date: 2015-01-19 20:19+0100\n"
 "Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
 "Language-Team: Italian <vdr@linuxtv.org>\n"
 "Language: it\n"
@@ -26,6 +26,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Canale NON valido ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Canale non disponibile!"
 
@@ -1115,9 +1118,19 @@
 msgid "CAM ready"
 msgstr "La CAM è pronta"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "Accesso condizionato CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1130,6 +1143,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Impossibile aprire il menu CAM!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "La CAM è in uso - vuoi reimpostarla?"
 
@@ -1223,6 +1239,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pausa riproduzione durante impostazione segni"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID di ripristino"
 
@@ -1260,10 +1291,10 @@
 msgstr "Volume iniziale"
 
 msgid "Setup.Miscellaneous$Volume steps"
-msgstr ""
+msgstr "Volume a tacche"
 
 msgid "Setup.Miscellaneous$Volume linearize"
-msgstr ""
+msgstr "Volume lineare"
 
 msgid "Setup.Miscellaneous$Channels wrap"
 msgstr "Riavvolgimento canali"
diff -ruN vdr-2.1.7/po/lt_LT.po vdr-2.1.8/po/lt_LT.po
--- vdr-2.1.7/po/lt_LT.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/lt_LT.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2010-10-30 11:55+0200\n"
 "Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
 "Language-Team: Lithuanian <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Blogi kanalo nustatymai ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanalas neegzistuoja!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "Dekodavimo modulis (CAM) paruoštas darbui"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "Dekodavimo modulis (CAM)"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meniu"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Negali atidaryti dekodavimo modulio meniu!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "Dekodavimo modulis šiuo metu naudojamas - tikrai perkrauti?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pristabdyti pakartojimą kai vyksta žymėjimas"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Kūrinio ID"
 
diff -ruN vdr-2.1.7/po/mk_MK.po vdr-2.1.8/po/mk_MK.po
--- vdr-2.1.7/po/mk_MK.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/mk_MK.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2012-11-19 15:18+0100\n"
 "Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
 "Language-Team: Macedonian <en@li.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Невалиден Канал ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Каналот е недостапен!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM спремен"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Мени"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Неуспешно отварање на CAM менито!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM е во употреба - рестартирај?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Паузирај репродукција кога се внесува ознака"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID на продолжеток"
 
diff -ruN vdr-2.1.7/po/nl_NL.po vdr-2.1.8/po/nl_NL.po
--- vdr-2.1.7/po/nl_NL.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/nl_NL.po	2015-01-30 13:14:54.000000000 +0100
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-02-26 17:20+0100\n"
 "Last-Translator: Cedric Dewijs <cedric.dewijs@telfort.nl>\n"
 "Language-Team: Dutch <vdr@linuxtv.org>\n"
@@ -24,6 +24,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Ongeldig kanaal ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanaal niet beschikbaar"
 
@@ -1113,9 +1116,19 @@
 msgid "CAM ready"
 msgstr "CAM gereed"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1128,6 +1141,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Kan CAM-menu niet openen!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM wordt gebruikt - werkelijk herstarten?"
 
@@ -1221,6 +1237,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pauzeer wanneer markering wordt geplaatst"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Hervattings ID"
 
diff -ruN vdr-2.1.7/po/nn_NO.po vdr-2.1.8/po/nn_NO.po
--- vdr-2.1.7/po/nn_NO.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/nn_NO.po	2015-01-30 13:14:55.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
 "Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Ugyldig Kanal! ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr ""
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr ""
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meny"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr ""
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr ""
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "Resume ID"
 
diff -ruN vdr-2.1.7/po/pl_PL.po vdr-2.1.8/po/pl_PL.po
--- vdr-2.1.7/po/pl_PL.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/pl_PL.po	2015-01-30 13:14:54.000000000 +0100
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-03-09 12:59+0100\n"
 "Last-Translator: Marek Nazarko <mnazarko@gmail.com>\n"
 "Language-Team: Polish <vdr@linuxtv.org>\n"
@@ -21,6 +21,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Niepoprawny kana� ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kana� nie jest dost�pny!"
 
@@ -1110,9 +1113,19 @@
 msgid "CAM ready"
 msgstr "CAM gotowy"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1125,6 +1138,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Nie mo�na otworzy� menu CAM!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM jest w u�yciu - naprawd� zresetowa�?"
 
@@ -1218,6 +1234,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Wstrzymaj odtwarzanie podczas ustawiania zaznaczania"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID wznowienia"
 
diff -ruN vdr-2.1.7/po/pt_PT.po vdr-2.1.8/po/pt_PT.po
--- vdr-2.1.7/po/pt_PT.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/pt_PT.po	2015-01-30 13:14:53.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2010-03-28 22:49+0100\n"
 "Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
 "Language-Team: Portuguese <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Canal inv�lido ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Canal indispon�vel!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM pronta"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Imposs�vel abrir menu da CAM!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM em uso - reiniciar mesmo?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID de resumo"
 
diff -ruN vdr-2.1.7/po/ro_RO.po vdr-2.1.8/po/ro_RO.po
--- vdr-2.1.7/po/ro_RO.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/ro_RO.po	2015-01-30 13:14:54.000000000 +0100
@@ -8,19 +8,22 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
-"PO-Revision-Date: 2013-02-09 23:01+0100\n"
-"Last-Translator: Lucian Muresan <lucianm@users.sorceforge.net>\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
+"PO-Revision-Date: 2015-01-21 22:34+0100\n"
+"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
 "Language-Team: Romanian <vdr@linuxtv.org>\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.9\n"
 
 msgid "*** Invalid Channel ***"
 msgstr "*** Canal invalid ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Canal indisponibil"
 
@@ -79,13 +82,13 @@
 msgstr "Identificator Stream"
 
 msgid "Pilot"
-msgstr ""
+msgstr "Pilot"
 
 msgid "T2SystemId"
-msgstr ""
+msgstr "ID sistem T2"
 
 msgid "SISO/MISO"
-msgstr ""
+msgstr "SISO/MISO"
 
 msgid "Starting EPG scan"
 msgstr "Pornesc achiziţia EPG"
@@ -575,10 +578,10 @@
 msgstr "Sid"
 
 msgid "Nid"
-msgstr ""
+msgstr "Nid"
 
 msgid "Tid"
-msgstr ""
+msgstr "Tid"
 
 msgid "Channel settings are not unique!"
 msgstr "Parametrii canalului nu sunt univoci!"
@@ -741,71 +744,71 @@
 msgstr "CAM-ul nu reacţionează!"
 
 msgid "Edit path"
-msgstr ""
+msgstr "Editează calea"
 
 msgid "Folder"
-msgstr ""
+msgstr "Director"
 
 msgid "This folder is currently in use - no changes are possible!"
-msgstr ""
+msgstr "Acest director tocmai este accesat - nu sunt posibile modificări!"
 
 #, c-format
 msgid "Move entire folder containing %d recordings?"
-msgstr ""
+msgstr "Mut întregul director conținând %d înregistrări?"
 
 msgid "Error while moving folder!"
-msgstr ""
+msgstr "Eroare la mutarea directorului!"
 
 msgid "Edit recording"
-msgstr ""
+msgstr "Editează înregistrarea"
 
 msgid "This recording is currently in use - no changes are possible!"
-msgstr ""
+msgstr "Această înregistrare tocmai este accesată - nu sunt posibile modificări!"
 
 msgid "Button$Cancel cutting"
-msgstr ""
+msgstr "Anulează tăierea"
 
 msgid "Button$Stop cutting"
-msgstr ""
+msgstr "Oprește tăierea"
 
 msgid "Button$Cancel moving"
-msgstr ""
+msgstr "Anuleaza mutarea"
 
 msgid "Button$Stop moving"
-msgstr ""
+msgstr "Oprește mutarea"
 
 msgid "Button$Cancel copying"
-msgstr ""
+msgstr "Anulează copierea"
 
 msgid "Button$Stop copying"
-msgstr ""
+msgstr "Oprește copierea"
 
 msgid "Button$Cut"
-msgstr ""
+msgstr "Taie"
 
 msgid "Button$Delete marks"
-msgstr ""
+msgstr "Șterge marcajele"
 
 msgid "Recording vanished!"
-msgstr ""
+msgstr "Înregistrarea a dispărut!"
 
 msgid "Edited version already exists - overwrite?"
-msgstr ""
+msgstr "Deja există o versiune editată - o suprascriu?"
 
 msgid "Error while queueing recording for cutting!"
-msgstr ""
+msgstr "Eroare la punerea în coada pentru tăiere!"
 
 msgid "Delete editing marks for this recording?"
-msgstr ""
+msgstr "Șterg marcajele de editare pentru această înregistrare?"
 
 msgid "Error while deleting editing marks!"
-msgstr ""
+msgstr "Eroare la ștergerea marcajelor de editare!"
 
 msgid "Error while changing priority/lifetime!"
-msgstr ""
+msgstr "Eroare la schimbarea priorității/timpului de păstrare!"
 
 msgid "Error while changing folder/name!"
-msgstr ""
+msgstr "Eroare la schimbarea directorului/numelui!"
 
 msgid "Recording info"
 msgstr "Detaliile înregistrării"
@@ -826,7 +829,7 @@
 msgstr "Şterg înregistrarea?"
 
 msgid "Recording is being edited - really delete?"
-msgstr "Montajul înregistrării e în curs de desfășurare - șterg totuși?"
+msgstr "Editarea înregistrării e în curs de desfășurare - șterg totuși?"
 
 msgid "Error while deleting recording!"
 msgstr "Eroare la ştergerea înregistrării!"
@@ -1075,31 +1078,31 @@
 msgstr "propriu"
 
 msgid "Setup.LNB$Use dish positioner"
-msgstr ""
+msgstr "Folosește actuator de poziționare"
 
 msgid "Setup.LNB$Site latitude (degrees)"
-msgstr ""
+msgstr "Latitudinea locului (grade)"
 
 msgid "South"
-msgstr ""
+msgstr "Sud"
 
 msgid "North"
-msgstr ""
+msgstr "Nord"
 
 msgid "Setup.LNB$Site longitude (degrees)"
-msgstr ""
+msgstr "Longitudinea locului (grade)"
 
 msgid "West"
-msgstr ""
+msgstr "Vest"
 
 msgid "East"
-msgstr ""
+msgstr "Est"
 
 msgid "Setup.LNB$Max. positioner swing (degrees)"
-msgstr ""
+msgstr "Unghi maxim al actuatorului (grade)"
 
 msgid "Setup.LNB$Positioner speed (degrees/s)"
-msgstr ""
+msgstr "Viteza actuatorului (grade/s)"
 
 msgid "CAM reset"
 msgstr "Resetare CAM"
@@ -1110,9 +1113,19 @@
 msgid "CAM ready"
 msgstr "CAM pregătit"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meniu"
 
@@ -1125,6 +1138,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Nu pot deschide meniul CAM"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM-ul este in folosinţă - totuşi resetez?"
 
@@ -1195,7 +1211,7 @@
 msgstr "Dimensiune maximă a fişierului video (MB)"
 
 msgid "Setup.Recording$Split edited files"
-msgstr "Separare fişiere montate"
+msgstr "Separare fişiere editate"
 
 msgid "Setup.Recording$Delete timeshift recording"
 msgstr "Şterge înregistrarea pentru vizionare decalată"
@@ -1216,7 +1232,22 @@
 msgstr "Durata afișării indicatorului de progres (s) "
 
 msgid "Setup.Replay$Pause replay when setting mark"
-msgstr "Pauză la punerea marcajului de montaj"
+msgstr "Pauză la punerea marcajului de editare"
+
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
 
 msgid "Setup.Replay$Resume ID"
 msgstr "Identificator continuare"
@@ -1255,10 +1286,10 @@
 msgstr "Volumul la pornire"
 
 msgid "Setup.Miscellaneous$Volume steps"
-msgstr ""
+msgstr "Numărul de pași ai reglajului de volum"
 
 msgid "Setup.Miscellaneous$Volume linearize"
-msgstr ""
+msgstr "Liniarizează caracteristica de volum"
 
 msgid "Setup.Miscellaneous$Channels wrap"
 msgstr "Lista de canale în buclă"
@@ -1306,13 +1337,13 @@
 
 #. TRANSLATORS: note the leading blank!
 msgid " Cancel editing"
-msgstr " Opreşte montajul înregistrării"
+msgstr " Anulează editarea înregistrării"
 
 msgid "Stop recording?"
 msgstr "Opresc înregistrarea?"
 
 msgid "Cancel editing?"
-msgstr "Opresc montajul înregistrării?"
+msgstr "Anulez editarea înregistrării?"
 
 msgid "No audio available!"
 msgstr "Lipseşte sunetul!"
@@ -1340,19 +1371,19 @@
 msgstr "Salt la: "
 
 msgid "No editing marks defined!"
-msgstr "Nu s-au pus marcaje de montaj pentru această înregistrare"
+msgstr "Nu s-au pus marcaje de editare pentru această înregistrare"
 
 msgid "No editing sequences defined!"
-msgstr "Nu s-au definit secvențe pentru montaj!"
+msgstr "Nu s-au definit secvențe pentru editare!"
 
 msgid "Can't start editing process!"
-msgstr "Nu pot porni montajul înregistrării!"
+msgstr "Nu pot porni editarea înregistrării!"
 
 msgid "Editing process started"
-msgstr "Montajul înregistrării a început"
+msgstr "Editarea înregistrării a început"
 
 msgid "Editing process already active!"
-msgstr "Montajul înregistrării este deja activ!"
+msgstr "Editarea înregistrării este deja activă!"
 
 msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
 msgstr " aăâbcdefghiîjklmnopqrsştţuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
@@ -1394,7 +1425,7 @@
 msgstr "Nu pot închide - vezi opţiunea '-s'"
 
 msgid "Editing - shut down anyway?"
-msgstr "Montajul tocmai se efectuează - închid, totuşi?"
+msgstr "Editarea tocmai se efectuează - închid, totuşi?"
 
 msgid "Recording - shut down anyway?"
 msgstr "Tocmai se înregistrează - închid, totuşi?"
@@ -1411,7 +1442,7 @@
 msgstr "Plugin-ul %s se va trezi +n %ld min, continui?"
 
 msgid "Editing - restart anyway?"
-msgstr "Montajul tocmai se efectuează - repornesc, totuşi?"
+msgstr "Editarea tocmai se efectuează - repornesc, totuşi?"
 
 msgid "Recording - restart anyway?"
 msgstr "Tocmai se înregistrează - repornesc, totuşi?"
@@ -1446,7 +1477,7 @@
 
 #, c-format
 msgid "Moving dish to %.1f..."
-msgstr ""
+msgstr "Rotesc antena la %.1f..."
 
 msgid "ST:TNG Panels"
 msgstr "Cons. ST:TNG"
@@ -1499,10 +1530,10 @@
 msgstr "Comut dispozitiv DVB primar..."
 
 msgid "Editing process failed!"
-msgstr "Montajul înregistrării a eşuat"
+msgstr "Editarea înregistrării a eşuat"
 
 msgid "Editing process finished"
-msgstr "Montajul înregistrării s-a terminat"
+msgstr "Editarea înregistrării s-a încheiat"
 
 msgid "Press any key to cancel restart"
 msgstr "Apăsaţi orice tastă pentru a anula repornirea"
diff -ruN vdr-2.1.7/po/ru_RU.po vdr-2.1.8/po/ru_RU.po
--- vdr-2.1.7/po/ru_RU.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/ru_RU.po	2015-01-30 13:14:55.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-10 17:13+0100\n"
 "Last-Translator: Oleg Roitburd <oroitburd@gmail.com>\n"
 "Language-Team: Russian <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** ������������ ����� ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "����� ����������!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM �����"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "�������� ������"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "����"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "���� CAM-������ ����������!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM ������������ - ������������� �����������?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "����� ��� ��������� ����������"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID ���������������"
 
diff -ruN vdr-2.1.7/po/sk_SK.po vdr-2.1.8/po/sk_SK.po
--- vdr-2.1.7/po/sk_SK.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/sk_SK.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-04 21:24+0100\n"
 "Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
 "Language-Team: Slovak <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Neplatn� kan�l ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kan�l nie je dostupn�!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "CAM pripraven�"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM (modul podmienen�ho pr�stupu)"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Menu"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Menu CAM nie je dostupn�"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM sa pou��va - naozaj re�tartova�?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pozastavi� prehr�vanie pri stanoven� zna�ky"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ident. ��slo obnovenia prehr�vania"
 
diff -ruN vdr-2.1.7/po/sl_SI.po vdr-2.1.8/po/sl_SI.po
--- vdr-2.1.7/po/sl_SI.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/sl_SI.po	2015-01-30 13:14:55.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-04 12:46+0100\n"
 "Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
 "Language-Team: Slovenian <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Neznan kanal ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanal ni razpolo�ljiv!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM pripravljen"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meni"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Ne morem odpreti CAM menija!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM je v uporabi - zares resetiraj?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pavza predvajanja pri postavitvi zan�ke"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID za predvajanje"
 
diff -ruN vdr-2.1.7/po/sr_RS.po vdr-2.1.8/po/sr_RS.po
--- vdr-2.1.7/po/sr_RS.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/sr_RS.po	2015-01-30 13:14:54.000000000 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-16 15:05+0100\n"
 "Last-Translator: Zoran Turalija <zoran.turalija@gmail.com>\n"
 "Language-Team: Serbian <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Neispravan Kanal ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanal nije dostupan!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM spreman"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meni"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Otvaranje CAM menija neuspe�no!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM u upotrebi - stvarno ponovno pokrenuti?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pauziraj reprodukciju prilikom obele�avanja"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID reprodukcije"
 
diff -ruN vdr-2.1.7/po/sv_SE.po vdr-2.1.8/po/sv_SE.po
--- vdr-2.1.7/po/sv_SE.po	2015-01-12 15:56:42.000000000 +0100
+++ vdr-2.1.8/po/sv_SE.po	2015-01-30 13:14:54.000000000 +0100
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-02-18 17:04+0100\n"
 "Last-Translator: Richard Lithvall <r-vdr@boomer.se>\n"
 "Language-Team: Swedish <vdr@linuxtv.org>\n"
@@ -23,6 +23,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Felaktig kanal ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanalen �r inte tillg�nglig!"
 
@@ -1112,9 +1115,19 @@
 msgid "CAM ready"
 msgstr "CAM klar"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Meny"
 
@@ -1127,6 +1140,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Det g�r inte att �ppna CAM menyn!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM upptagen, vill du verkligen �terst�lla?"
 
@@ -1220,6 +1236,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Pausa uppspelningen vid s�ttande av redigeringsm�rke"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "�terupptagnings-ID"
 
diff -ruN vdr-2.1.7/po/tr_TR.po vdr-2.1.8/po/tr_TR.po
--- vdr-2.1.7/po/tr_TR.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/tr_TR.po	2015-01-30 13:14:55.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2008-02-28 00:33+0100\n"
 "Last-Translator: Oktay Yolge�en <oktay_73@yahoo.de>\n"
 "Language-Team: Turkish <vdr@linuxtv.org>\n"
@@ -19,6 +19,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Ge�ersiz kanal ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Kanal kullan�lam�yor!"
 
@@ -1108,9 +1111,19 @@
 msgid "CAM ready"
 msgstr "CAM haz�r"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Men�"
 
@@ -1123,6 +1136,9 @@
 msgid "Can't open CAM menu!"
 msgstr "CAM men�s� a��lam�yor!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM kullan�l�yor - ger�ekden s�f�rla?"
 
@@ -1216,6 +1232,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr ""
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "G�steri� ID'si"
 
diff -ruN vdr-2.1.7/po/uk_UA.po vdr-2.1.8/po/uk_UA.po
--- vdr-2.1.7/po/uk_UA.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/uk_UA.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-02-09 16:00+0100\n"
 "Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
 "Language-Team: Ukrainian <vdr@linuxtv.org>\n"
@@ -20,6 +20,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "*** Неправильний канал ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "Канал недоступний!"
 
@@ -1109,9 +1112,19 @@
 msgid "CAM ready"
 msgstr "CAM готовий"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM (Умовний доступ)"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "Меню"
 
@@ -1124,6 +1137,9 @@
 msgid "Can't open CAM menu!"
 msgstr "Меню CAM-модуля недоступне!"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM використовується - дійсно перезапустити?"
 
@@ -1217,6 +1233,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "Пауза програвання при встановленні мітки"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "ID продовження"
 
diff -ruN vdr-2.1.7/po/zh_CN.po vdr-2.1.8/po/zh_CN.po
--- vdr-2.1.7/po/zh_CN.po	2015-01-12 15:56:41.000000000 +0100
+++ vdr-2.1.8/po/zh_CN.po	2015-01-30 13:14:54.000000000 +0100
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 2.0.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2015-01-12 15:40+0100\n"
+"POT-Creation-Date: 2015-01-30 13:14+0100\n"
 "PO-Revision-Date: 2013-03-04 14:52+0800\n"
 "Last-Translator: NFVDR <nfvdr@live.com>\n"
 "Language-Team: Chinese (simplified) <nfvdr@live.com>\n"
@@ -21,6 +21,9 @@
 msgid "*** Invalid Channel ***"
 msgstr "***无效的频道 ***"
 
+msgid "CAM activated!"
+msgstr ""
+
 msgid "Channel not available!"
 msgstr "频道不可用!"
 
@@ -1110,9 +1113,19 @@
 msgid "CAM ready"
 msgstr "CAM准备"
 
+#. TRANSLATORS: note the leading blank!
+msgid " (activating)"
+msgstr ""
+
 msgid "CAM"
 msgstr "CAM设置"
 
+msgid "Button$Cancel activation"
+msgstr ""
+
+msgid "Button$Activate"
+msgstr ""
+
 msgid "Button$Menu"
 msgstr "菜单"
 
@@ -1125,6 +1138,9 @@
 msgid "Can't open CAM menu!"
 msgstr "不能打开CAM菜单"
 
+msgid "Can't activate CAM!"
+msgstr ""
+
 msgid "CAM is in use - really reset?"
 msgstr "CAM正在使用-是否重启？"
 
@@ -1218,6 +1234,21 @@
 msgid "Setup.Replay$Pause replay when setting mark"
 msgstr "暂停回放时，设置标志"
 
+msgid "Setup.Replay$Pause replay when jumping to a mark"
+msgstr ""
+
+msgid "Setup.Replay$Skip edited parts"
+msgstr ""
+
+msgid "Setup.Replay$Pause replay at last mark"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip initial value (s)"
+msgstr ""
+
+msgid "Setup.Replay$Binary skip timeout (s)"
+msgstr ""
+
 msgid "Setup.Replay$Resume ID"
 msgstr "恢复 ID"
 
diff -ruN vdr-2.1.7/recording.c vdr-2.1.8/recording.c
--- vdr-2.1.7/recording.c	2015-01-17 15:52:28.000000000 +0100
+++ vdr-2.1.8/recording.c	2015-01-25 16:39:24.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.c 3.21 2015/01/17 14:52:28 kls Exp $
+ * $Id: recording.c 3.24 2015/01/25 15:39:24 kls Exp $
  */
 
 #include "recording.h"
@@ -1749,7 +1749,7 @@
                     off_t FileSizeSrc = FileSize(FileNameSrc);
                     off_t FileSizeDst = FileSize(FileNameDst);
                     if (FileSizeSrc != FileSizeDst) {
-                       esyslog("ERROR: file size discrepancy: %"PRId64" != %"PRId64, FileSizeSrc, FileSizeDst);
+                       esyslog("ERROR: file size discrepancy: %" PRId64 " != %" PRId64, FileSizeSrc, FileSizeDst);
                        break;
                        }
                     }
@@ -2072,7 +2072,7 @@
 bool cMarks::Update(void)
 {
   time_t t = time(NULL);
-  if (t > nextUpdate) {
+  if (t > nextUpdate && *fileName) {
      time_t LastModified = LastModifiedTime(fileName);
      if (LastModified != lastFileTime) // change detected, or first run
         lastChange = LastModified > 0 ? LastModified : t;
@@ -2476,7 +2476,7 @@
            delta = int(buf.st_size % sizeof(tIndexTs));
            if (delta) {
               delta = sizeof(tIndexTs) - delta;
-              esyslog("ERROR: invalid file size (%"PRId64") in '%s'", buf.st_size, *fileName);
+              esyslog("ERROR: invalid file size (%" PRId64 ") in '%s'", buf.st_size, *fileName);
               }
            last = int((buf.st_size + delta) / sizeof(tIndexTs) - 1);
            if ((!Record || Update) && last >= 0) {
@@ -2741,7 +2741,7 @@
   return -1;
 }
 
-bool cIndexFile::IsStillRecording()
+bool cIndexFile::IsStillRecording(void)
 {
   return f >= 0;
 }
diff -ruN vdr-2.1.7/recording.h vdr-2.1.8/recording.h
--- vdr-2.1.7/recording.h	2015-01-17 15:33:05.000000000 +0100
+++ vdr-2.1.8/recording.h	2015-01-31 14:34:44.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.h 3.5 2015/01/17 14:33:05 kls Exp $
+ * $Id: recording.h 3.6 2015/01/31 13:34:44 kls Exp $
  */
 
 #ifndef __RECORDING_H
@@ -117,7 +117,6 @@
   static char *StripEpisodeName(char *s, bool Strip);
   char *SortName(void) const;
   void ClearSortName(void);
-  int GetResume(void) const;
   time_t start;
   int priority;
   int lifetime;
@@ -160,6 +159,9 @@
   int FileSizeMB(void) const;
        ///< Returns the total file size of this recording (in MB), or -1 if the file
        ///< size is unknown.
+  int GetResume(void) const;
+       ///< Returns the index of the frame where replay of this recording shall
+       ///< be resumed, or -1 in case of an error.
   bool IsNew(void) const { return GetResume() <= 0; }
   bool IsEdited(void) const;
   bool IsPesRecording(void) const { return isPesRecording; }
diff -ruN vdr-2.1.7/remote.c vdr-2.1.8/remote.c
--- vdr-2.1.7/remote.c	2014-02-15 13:40:39.000000000 +0100
+++ vdr-2.1.8/remote.c	2015-01-20 15:53:57.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remote.c 3.2 2014/02/15 12:40:39 kls Exp $
+ * $Id: remote.c 3.3 2015/01/20 14:53:57 kls Exp $
  */
 
 #include "remote.h"
@@ -124,7 +124,7 @@
 bool cRemote::Put(uint64_t Code, bool Repeat, bool Release)
 {
   char buffer[32];
-  snprintf(buffer, sizeof(buffer), "%016"PRIX64, Code);
+  snprintf(buffer, sizeof(buffer), "%016" PRIX64, Code);
   return Put(buffer, Repeat, Release);
 }
 
diff -ruN vdr-2.1.7/scr.conf vdr-2.1.8/scr.conf
--- vdr-2.1.7/scr.conf	2011-09-17 14:58:39.000000000 +0200
+++ vdr-2.1.8/scr.conf	2015-01-26 12:59:51.000000000 +0100
@@ -14,11 +14,17 @@
 #
 # Examples:
 
-# 0 1284
-# 1 1400
-# 2 1516
-# 3 1632
-# 4 1748
-# 5 1864
-# 6 1980
-# 7 2096
+# EN50494 & EN50607 ("JESS")
+# 0 974
+# 1 1076
+# 2 1178
+# 3 1280
+# 4 1382
+# 5 1484
+# 6 1586
+# 7 1688
+# EN50607 ("JESS") only
+# 8 1790
+# 9 1892
+# 10 1994
+# 11 2096
diff -ruN vdr-2.1.7/vdr.1 vdr-2.1.8/vdr.1
--- vdr-2.1.7/vdr.1	2015-01-17 15:46:22.000000000 +0100
+++ vdr-2.1.8/vdr.1	2015-01-20 16:34:29.000000000 +0100
@@ -8,7 +8,7 @@
 .\" License as specified in the file COPYING that comes with the
 .\" vdr distribution.
 .\"
-.\" $Id: vdr.1 3.3 2015/01/17 14:46:22 kls Exp $
+.\" $Id: vdr.1 3.4 2015/01/20 15:34:29 kls Exp $
 .\"
 .TH vdr 1 "31 Mar 2013" "2.0" "Video Disk Recorder"
 .SH NAME
@@ -299,7 +299,7 @@
 If this file is present in the video directory, its last modification time will
 be used to trigger an update of the list of recordings in the "Recordings" menu.
 .SH SEE ALSO
-.BR vdr (5), svdrp(1)
+.BR vdr (5), svdrpsend (1)
 .SH AUTHOR
 Written by Klaus Schmidinger, with contributions from many others.
 See the file \fICONTRIBUTORS\fR in the \fBvdr\fR source distribution.
