diff -ruN vdr-1.7.7/CONTRIBUTORS vdr-1.7.8/CONTRIBUTORS
--- vdr-1.7.7/CONTRIBUTORS	2009-05-03 16:45:53.000000000 +0200
+++ vdr-1.7.8/CONTRIBUTORS	2009-06-13 15:35:49.000000000 +0200
@@ -672,6 +672,8 @@
  VPID is 0
  for reporting chirping sound disturbences at editing points in TS recordings
  for reporting broken index generation in TS recordings after a buffer overflow
+ for fixing the way the OSD size is determined on full featured DVB cards
+ for his input on calculating the Aspect factor in GetOsdSize()
 
 Reinhard Walter Buchner <rw.buchner@freenet.de>
  for adding some satellites to 'sources.conf'
@@ -918,6 +920,8 @@
  for a hint on using _nl_msg_cat_cntr
  for adding some missing 'const' keywords
  for pointing out that "%016llX" should be used instead of "%016LX"
+ for adding some missing 'const' keywords to avoid compilation errors with gcc 4.4
+ for reporting that cSVDRP::CmdGRAB() writes into const data
 
 Thomas Koch <tom@harhar.net>
  for his support in keeping the Premiere World channels up to date in 'channels.conf'
@@ -1073,6 +1077,8 @@
  for replacing the Finnish language code "smi" with "suo"
  for adding cap_sys_nice to the capabilities that are not dropped
  for adding cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
+ for suggesting to introduce cDevice::GetOsdSize()
+ for adding a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
 
 Ralf Klueber <ralf.klueber@vodafone.com>
  for reporting a bug in cutting a recording if there is only a single editing mark
@@ -1212,6 +1218,17 @@
  for making sure vdr-xine no longer needs cDvbPlayer::Action() to call DeviceFlush()
  for fixing the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
  cDvbPlayer::Action()
+ for reporting a problem in case the PIDs change during recording
+ for reporting a memory leak when reaching the end of a recording during replay
+ for reporting a call to close(-1) in cUnbufferedFile::Close()
+ for reporting a possible problem in handling the length of DiSEqC command sequences
+ for fixing cOsdMenu::Display() in case the menu size has changed
+ for suggesting to change the type of the Aspect parameter of GetVideoSize()
+ to 'double'
+ for suggesting to use different names for the Aspect parameter in GetVideoSize()
+ and GetOsdSize()
+ for reporting a problem with calculating menu colum widths in case the font has a
+ size other than the default size
 
 Richard Robson <richard_robson@beeb.net>
  for reporting freezing replay if a timer starts while in Transfer Mode from the
@@ -1623,6 +1640,7 @@
  for reporting a problem with handling the maximum video file size
  for suggesting to add a note to the INSTALL file about using subdirectories to
  split a large disk into separate areas for VDR's video data and other stuff
+ for reporting wrong variable types in cIndexFile
 
 Sven Kreiensen <svenk@kammer.uni-hannover.de>
  for his help in keeping 'channels.conf.terr' up to date
@@ -1814,6 +1832,7 @@
  menu
  for adding missing #include <limits.h> to epg.c and menuitems.h
  for fixing various spelling errors and improving PLUGINS.html
+ for adding some missing 'const' keywords to avoid compilation errors with gcc 4.4
 
 Steffen Beyer <cpunk@reactor.de>
  for fixing setting the colored button help after deleting a recording in case the next
@@ -1953,6 +1972,7 @@
 
 Nicolas Huillard <nhuillard@e-dition.fr>
  for translating OSD texts to the French language
+ for suggesting to increase MAXOSDHEIGHT to 1200
 
 Patrick Fischer <patrick_fischer@gmx.de>
  for reporting an error in the cFilter example in PLUGINS.html
@@ -2126,6 +2146,9 @@
  check to it
  for changing cBitmap::DrawText() to always draw the background unless ColorBg
  is clrTransparent
+ for reporting unused 'synced' member in cTsToPes
+ for suggesting to add a note to cTsToPes about all TS packets having to belong to
+ the same PID
 
 Pekka Mauno <pekka.mauno@iki.fi>
  for fixing cSchedule::GetFollowingEvent() in case there is currently no present
@@ -2164,6 +2187,7 @@
  for fixing a signed character used as index in cBase64Encoder::NextLine()
  for fixing formatting the name section in the VDR man pages
  for reporting unneeded include files <linux/dvb/dmx.h> und <time.h> in remux.h
+ for a patch that added a workaround for the broken linux-dvb driver header files
 
 Helge Lenz <h.lenz@gmx.de>
  for reporting a bug in setting the 'Delta' parameter when calling the shutdown
@@ -2310,6 +2334,8 @@
  for optimizing cNitFilter::Process()
  for reducing the number of time(NULL) calls in vdr.c's main loop to a single call
  for improving efficiency of cEIT::cEIT()
+ for fixing the use of time_t in cEIT::cEIT()
+ for making EIT events be processed only if a plausible system time is available
 
 Bruno Roussel <bruno.roussel@free.fr>
  for translating OSD texts to the French language
@@ -2331,6 +2357,7 @@
 Timo Eskola <timo@tolleri.net>
  for implementing sending all frames to devices that can handle them in fast forward
  trick speeds
+ for implementing the setup option "Recording/Pause key handling"
 
 Elias Luttinen <el@iki.fi>
  for improving the description of where logging goes in the INSTALL file
@@ -2394,6 +2421,7 @@
 Ales Jurik <ajurik@quick.cz>
  for reporting broken SI data on Czech/Slovak channels after changing the default
  character set to ISO-8859-9
+ for adding MPEG 1 handling to remux.c
 
 Magnus Andersson <svankan@bahnhof.se>
  for translating OSD texts to the Swedish language
@@ -2446,3 +2474,7 @@
 
 Günter Niedermeier <linuxtv@ncs-online.de>
  for reporting a problem with file I/O overhead during recording in TS format
+
+Martin Neuditschko <yosuke.tomoe@gmx.net>
+ for reporting a problem with error messages from cDvbDevice::GetVideoSize()
+ on systems with no real primary replay device
diff -ruN vdr-1.7.7/HISTORY vdr-1.7.8/HISTORY
--- vdr-1.7.7/HISTORY	2009-05-03 16:45:17.000000000 +0200
+++ vdr-1.7.8/HISTORY	2009-06-13 15:35:31.000000000 +0200
@@ -6074,3 +6074,64 @@
   (provided the output device implements the GetVideoSize() function).
 - cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
   Oliver Endriss for reporting broken index generation after a buffer overflow).
+
+2009-06-13: Version 1.7.8
+
+- The name of the function cDevice::GetVideoSize() wasn't very well chosen
+  for its purpose of defining the optimum size of the OSD for the current
+  output device. Therefore a new function named cDevice::GetOsdSize() has
+  been introduced (suggested by Rolf Ahrenberg). Plugin authors should
+  implement this function in classes derived from cDevice, if they are able
+  to replay video. cDevice::GetVideoSize() still exists and should return the
+  actual size of the video material that is currently replayed. Note that
+  because of the many possible aspect ratios for video material, the type
+  of the Aspect parameter of GetVideoSize() has been changed to 'double',
+  and the Aspect parameter in both functions is named differently, because
+  it returns different values (suggested by Reinhard Nissl).
+  Thanks to Oliver Endriss for his input on calculating the Aspect factor in
+  GetOsdSize().
+- Fixed the way the OSD size is determined on full featured DVB cards (thanks
+  to Oliver Endriss).
+- Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
+- Removed limitation to PAL resolution from SPU handling.
+- Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
+  systems with no real primary replay device (reported by Martin Neuditschko).
+- Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
+  it has returned a non-NULL value.
+- Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
+- Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
+- Added missing update of lastOsdSizeUpdate.
+- EIT events are now only processed if a plausible system time is available, to
+  avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
+- Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
+- Added a note to cTsToPes about all TS packets having to belong to the same PID,
+  and that for video data GetPes() may only be called if the next TS packet that
+  will be given to PutTs() has the "payload start" flag set (suggested by Christoph
+  Haubrich).
+- Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
+  (thanks to Rolf Ahrenberg).
+- The new setup option "Recording/Pause key handling" can be used to define
+  what happens if the Pause key on the remote control is pressed during
+  live tv (thanks to Timo Eskola).
+- Added a note about cFont::GetFont() not being thread-safe.
+- Fixed generating PAT/PMT version numbers in case the PIDs change during
+  recording (reported by Reinhard Nissl).
+- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
+- Fixed a memory leak when reaching the end of a recording during replay (reported
+  by Reinhard Nissl).
+- Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
+- Added a workaround for the broken linux-dvb driver header files (based on a patch
+  from Tobias Grimm).
+- Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
+- Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
+  Reinhard Nissl).
+- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
+  (thanks to Ville Skyttä and Ludwig Nussel).
+- Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
+  Ludwig Nussel).
+- Fixed calculating menu colum widths in case the font has a size other than the
+  default size (reported by Reinhard Nissl).
+- Added a plausibility check for the OSD percentage parameters
+  to avoid problems in case the values are stored in the setup.conf
+  file in a  wrong way.
+- Fixed variable types in cIndexFile (reported by Udo Richter).
diff -ruN vdr-1.7.7/MANUAL vdr-1.7.8/MANUAL
--- vdr-1.7.7/MANUAL	2009-05-03 16:04:22.000000000 +0200
+++ vdr-1.7.8/MANUAL	2009-05-21 13:28:41.000000000 +0200
@@ -748,6 +748,13 @@
   Pause priority = 10    The Priority and Lifetime values used when pausing live
   Pause lifetime = 1     video.
 
+  Pause key handling = 3 Defines what happens if the Pause key on the remote control
+                         is pressed during live tv.
+                         0 = do not pause live video
+                         1 = confirm pause live video
+                         2 = pause live video
+                         The default is 2.
+
   Use episode name = yes Repeating timers use the EPG's 'Episode name' information
                          to create recording file names in a hierarchical structure
                          (for instance to gather all episodes of a series in a
diff -ruN vdr-1.7.7/PLUGINS.html vdr-1.7.8/PLUGINS.html
--- vdr-1.7.7/PLUGINS.html	2009-05-02 13:15:42.000000000 +0200
+++ vdr-1.7.8/PLUGINS.html	2009-05-09 12:03:26.000000000 +0200
@@ -1944,10 +1944,10 @@
 should implement the function
 
 <p><table><tr><td class="code"><pre>
-virtual void GetVideoSize(int &amp;Width, int &amp;Height, eVideoAspect &amp;Aspect);
+virtual void GetOsdSize(int &amp;Width, int &amp;Height, double &amp;Aspect);
 </pre></td></tr></table><p>
 
-By default, an OSD size of 480x324 with an aspect ratio of 4:3 is assumed.
+By default, an OSD size of 720x480 with an aspect ratio of 1.0 is assumed.
 </div modified>
 
 <p>
diff -ruN vdr-1.7.7/config.c vdr-1.7.8/config.c
--- vdr-1.7.7/config.c	2009-05-03 15:58:08.000000000 +0200
+++ vdr-1.7.8/config.c	2009-06-13 12:25:05.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.c 2.2 2009/05/03 13:58:08 kls Exp $
+ * $Id: config.c 2.5 2009/06/13 10:25:05 kls Exp $
  */
 
 #include "config.h"
@@ -20,6 +20,8 @@
 // format characters in order to allow any number of blanks after a numeric
 // value!
 
+#define ChkDoublePlausibility(Variable, Default) { if (Variable < 0.00001) Variable = Default; }
+
 // --- cCommand --------------------------------------------------------------
 
 char *cCommand::result = NULL;
@@ -250,6 +252,7 @@
   PrimaryLimit = 0;
   DefaultPriority = 50;
   DefaultLifetime = 99;
+  PauseKeyHandling = 2;
   PausePriority = 10;
   PauseLifetime = 1;
   UseSubtitle = 1;
@@ -270,6 +273,7 @@
   OSDTop = 45;
   OSDWidth = 624;
   OSDHeight = 486;
+  OSDAspect = 1.0;
   OSDMessageTime = 1;
   UseSmallFont = 1;
   AntiAlias = 1;
@@ -435,6 +439,7 @@
   else if (!strcasecmp(Name, "PrimaryLimit"))        PrimaryLimit       = atoi(Value);
   else if (!strcasecmp(Name, "DefaultPriority"))     DefaultPriority    = atoi(Value);
   else if (!strcasecmp(Name, "DefaultLifetime"))     DefaultLifetime    = atoi(Value);
+  else if (!strcasecmp(Name, "PauseKeyHandling"))    PauseKeyHandling   = atoi(Value);
   else if (!strcasecmp(Name, "PausePriority"))       PausePriority      = atoi(Value);
   else if (!strcasecmp(Name, "PauseLifetime"))       PauseLifetime      = atoi(Value);
   else if (!strcasecmp(Name, "UseSubtitle"))         UseSubtitle        = atoi(Value);
@@ -449,21 +454,22 @@
   else if (!strcasecmp(Name, "ChannelInfoTime"))     ChannelInfoTime    = atoi(Value);
   else if (!strcasecmp(Name, "OSDLeftP"))            OSDLeftP           = atof(Value);
   else if (!strcasecmp(Name, "OSDTopP"))             OSDTopP            = atof(Value);
-  else if (!strcasecmp(Name, "OSDWidthP"))           OSDWidthP          = atof(Value);
-  else if (!strcasecmp(Name, "OSDHeightP"))          OSDHeightP         = atof(Value);
+  else if (!strcasecmp(Name, "OSDWidthP"))         { OSDWidthP          = atof(Value); ChkDoublePlausibility(OSDWidthP, 0.87); }
+  else if (!strcasecmp(Name, "OSDHeightP"))        { OSDHeightP         = atof(Value); ChkDoublePlausibility(OSDHeightP, 0.84); }
   else if (!strcasecmp(Name, "OSDLeft"))             OSDLeft            = atoi(Value);
   else if (!strcasecmp(Name, "OSDTop"))              OSDTop             = atoi(Value);
   else if (!strcasecmp(Name, "OSDWidth"))          { OSDWidth           = atoi(Value); OSDWidth &= ~0x07; } // OSD width must be a multiple of 8
   else if (!strcasecmp(Name, "OSDHeight"))           OSDHeight          = atoi(Value);
+  else if (!strcasecmp(Name, "OSDAspect"))           OSDAspect          = atof(Value);
   else if (!strcasecmp(Name, "OSDMessageTime"))      OSDMessageTime     = atoi(Value);
   else if (!strcasecmp(Name, "UseSmallFont"))        UseSmallFont       = atoi(Value);
   else if (!strcasecmp(Name, "AntiAlias"))           AntiAlias          = atoi(Value);
   else if (!strcasecmp(Name, "FontOsd"))             Utf8Strn0Cpy(FontOsd, Value, MAXFONTNAME);
   else if (!strcasecmp(Name, "FontSml"))             Utf8Strn0Cpy(FontSml, Value, MAXFONTNAME);
   else if (!strcasecmp(Name, "FontFix"))             Utf8Strn0Cpy(FontFix, Value, MAXFONTNAME);
-  else if (!strcasecmp(Name, "FontOsdSizeP"))        FontOsdSizeP       = atof(Value);
-  else if (!strcasecmp(Name, "FontSmlSizeP"))        FontSmlSizeP       = atof(Value);
-  else if (!strcasecmp(Name, "FontFixSizeP"))        FontFixSizeP       = atof(Value);
+  else if (!strcasecmp(Name, "FontOsdSizeP"))      { FontOsdSizeP       = atof(Value); ChkDoublePlausibility(FontOsdSizeP, 0.038); }
+  else if (!strcasecmp(Name, "FontSmlSizeP"))      { FontSmlSizeP       = atof(Value); ChkDoublePlausibility(FontSmlSizeP, 0.035); }
+  else if (!strcasecmp(Name, "FontFixSizeP"))      { FontFixSizeP       = atof(Value); ChkDoublePlausibility(FontFixSizeP, 0.031); }
   else if (!strcasecmp(Name, "FontOsdSize"))         FontOsdSize        = atoi(Value);
   else if (!strcasecmp(Name, "FontSmlSize"))         FontSmlSize        = atoi(Value);
   else if (!strcasecmp(Name, "FontFixSize"))         FontFixSize        = atoi(Value);
@@ -525,6 +531,7 @@
   Store("PrimaryLimit",       PrimaryLimit);
   Store("DefaultPriority",    DefaultPriority);
   Store("DefaultLifetime",    DefaultLifetime);
+  Store("PauseKeyHandling",   PauseKeyHandling);
   Store("PausePriority",      PausePriority);
   Store("PauseLifetime",      PauseLifetime);
   Store("UseSubtitle",        UseSubtitle);
@@ -545,6 +552,7 @@
   Store("OSDTop",             OSDTop);
   Store("OSDWidth",           OSDWidth);
   Store("OSDHeight",          OSDHeight);
+  Store("OSDAspect",          OSDAspect);
   Store("OSDMessageTime",     OSDMessageTime);
   Store("UseSmallFont",       UseSmallFont);
   Store("AntiAlias",          AntiAlias);
diff -ruN vdr-1.7.7/config.h vdr-1.7.8/config.h
--- vdr-1.7.7/config.h	2009-05-03 15:15:35.000000000 +0200
+++ vdr-1.7.8/config.h	2009-05-21 13:11:32.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.h 2.9 2009/05/03 13:15:35 kls Exp $
+ * $Id: config.h 2.13 2009/05/21 11:11:32 kls Exp $
  */
 
 #ifndef __CONFIG_H
@@ -22,13 +22,13 @@
 
 // VDR's own version number:
 
-#define VDRVERSION  "1.7.7"
-#define VDRVERSNUM   10707  // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION  "1.7.8"
+#define VDRVERSNUM   10708  // Version * 10000 + Major * 100 + Minor
 
 // The plugin API's version number:
 
-#define APIVERSION  "1.7.7"
-#define APIVERSNUM   10707  // Version * 10000 + Major * 100 + Minor
+#define APIVERSION  "1.7.8"
+#define APIVERSNUM   10708  // 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
@@ -42,7 +42,7 @@
 #define MINOSDWIDTH   480
 #define MAXOSDWIDTH  1920
 #define MINOSDHEIGHT  324
-#define MAXOSDHEIGHT 1080
+#define MAXOSDHEIGHT 1200
 
 #define MaxFileName 256
 #define MaxSkinName 16
@@ -234,6 +234,7 @@
   int PrimaryLimit;
   int DefaultPriority, DefaultLifetime;
   int PausePriority, PauseLifetime;
+  int PauseKeyHandling;
   int UseSubtitle;
   int UseVps;
   int VpsMargin;
@@ -246,6 +247,7 @@
   int ChannelInfoTime;
   double OSDLeftP, OSDTopP, OSDWidthP, OSDHeightP;
   int OSDLeft, OSDTop, OSDWidth, OSDHeight;
+  double OSDAspect;
   int OSDMessageTime;
   int UseSmallFont;
   int AntiAlias;
diff -ruN vdr-1.7.7/device.c vdr-1.7.8/device.c
--- vdr-1.7.7/device.c	2009-05-02 14:17:39.000000000 +0200
+++ vdr-1.7.8/device.c	2009-06-06 15:25:58.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: device.c 2.17 2009/05/02 12:17:39 kls Exp $
+ * $Id: device.c 2.23 2009/06/06 13:25:58 kls Exp $
  */
 
 #include "device.h"
@@ -19,11 +19,6 @@
 #include "status.h"
 #include "transfer.h"
 
-const char *VideoAspectString[] = { "4:3",
-                                    "16:9",
-                                    "2.21:9"
-                                  };
-
 // --- cLiveSubtitle ---------------------------------------------------------
 
 class cLiveSubtitle : public cReceiver {
@@ -66,6 +61,7 @@
 cDevice *cDevice::avoidDevice = NULL;
 
 cDevice::cDevice(void)
+:patPmtParser(true)
 {
   cardIndex = nextCardIndex++;
 
@@ -389,11 +385,18 @@
   return vsPAL;
 }
 
-void cDevice::GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect)
+void cDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
+{
+  Width = 0;
+  Height = 0;
+  VideoAspect = 1.0;
+}
+
+void cDevice::GetOsdSize(int &Width, int &Height, double &PixelAspect)
 {
-  Width = MINOSDWIDTH;
-  Height = MINOSDHEIGHT;
-  Aspect = va4_3;
+  Width = 720;
+  Height = 480;
+  PixelAspect = 1.0;
 }
 
 //#define PRINTPIDS(s) { char b[500]; char *q = b; q += sprintf(q, "%d %s ", CardIndex(), s); for (int i = 0; i < MAXPIDHANDLES; i++) q += sprintf(q, " %s%4d %d", i == ptOther ? "* " : "", pidHandles[i].pid, pidHandles[i].used); dsyslog(b); }
diff -ruN vdr-1.7.7/device.h vdr-1.7.8/device.h
--- vdr-1.7.7/device.h	2009-05-02 14:16:20.000000000 +0200
+++ vdr-1.7.8/device.h	2009-06-06 13:15:49.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: device.h 2.10 2009/05/02 12:16:20 kls Exp $
+ * $Id: device.h 2.15 2009/06/06 11:15:49 kls Exp $
  */
 
 #ifndef __DEVICE_H
@@ -56,13 +56,6 @@
                     vsNTSC
                   };
 
-enum eVideoAspect { va4_3,
-                    va16_9,
-                    va221_9
-                  };
-
-extern const char *VideoAspectString[];
-
 enum eVideoDisplayFormat { vdfPanAndScan,
                            vdfLetterBox,
                            vdfCenterCutOut
@@ -384,9 +377,25 @@
   virtual eVideoSystem GetVideoSystem(void);
          ///< Returns the video system of the currently displayed material
          ///< (default is PAL).
-  virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
-         ///< Returns the With, Height and Aspect ratio of the currently
-         ///< displayed material.
+  virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
+         ///< Returns the With, Height and VideoAspect ratio of the currently
+         ///< displayed video material. The data returned by this function is
+         ///< only used for informational purposes (if any). Width and
+         ///< Height are given in pixel (e.g. 720x576) and VideoAspect is
+         ///< e.g. 1.33333 for a 4:3 broadcast, or 1.77778 for 16:9.
+         ///< The default implementation returns 0 for Width and Height
+         ///< and 1.0 for VideoAspect.
+  virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
+         ///< Returns the With, Height and PixelAspect ratio the OSD should use
+         ///< to best fit the resolution of the output device. If PixelAspect
+         ///< is not 1.0, the OSD may take this as a hint to scale its
+         ///< graphics in a way that, e.g., a circle will actually
+         ///< show up as a circle on the screen, and not as an ellipse.
+         ///< Values greater than 1.0 mean to stretch the graphics in the
+         ///< vertical direction (or shrink it in the horizontal direction,
+         ///< depending on which dimension shall be fixed). Values less than
+         ///< 1.0 work the other way round. Note that the OSD is not guaranteed
+         ///< to actually use this hint.
 
 // Track facilities
 
diff -ruN vdr-1.7.7/dvbdevice.c vdr-1.7.8/dvbdevice.c
--- vdr-1.7.7/dvbdevice.c	2009-05-03 15:49:41.000000000 +0200
+++ vdr-1.7.8/dvbdevice.c	2009-06-06 13:17:20.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbdevice.c 2.15 2009/05/03 13:49:41 kls Exp $
+ * $Id: dvbdevice.c 2.21 2009/06/06 11:17:20 kls Exp $
  */
 
 #include "dvbdevice.h"
@@ -232,8 +232,8 @@
                          uchar *codes = diseqc->Codes(n);
                          if (codes) {
                             struct dvb_diseqc_master_cmd cmd;
-                            memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
-                            cmd.msg_len = n;
+                            cmd.msg_len = min(n, int(sizeof(cmd.msg)));
+                            memcpy(cmd.msg, codes, cmd.msg_len);
                             CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
                             }
                          }
@@ -736,31 +736,62 @@
 eVideoSystem cDvbDevice::GetVideoSystem(void)
 {
   eVideoSystem VideoSystem = vsPAL;
-  video_size_t vs;
-  if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
-     if (vs.h == 480 || vs.h == 240)
-        VideoSystem = vsNTSC;
+  if (fd_video >= 0) {
+     video_size_t vs;
+     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
+        if (vs.h == 480 || vs.h == 240)
+           VideoSystem = vsNTSC;
+        }
+     else
+        LOG_ERROR;
      }
-  else
-     LOG_ERROR;
   return VideoSystem;
 }
 
-void cDvbDevice::GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect)
+void cDvbDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
 {
-  video_size_t vs;
-  if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
-     Width = vs.w;
-     if (Width < 720) // FIXME: some channels result in a With of, e.g. 544, but the final video *is* 720 wide
+  if (fd_video >= 0) {
+     video_size_t vs;
+     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
+        Width = vs.w;
+        Height = vs.h;
+        switch (vs.aspect_ratio) {
+          default:
+          case VIDEO_FORMAT_4_3:   VideoAspect =  4.0 / 3.0; break;
+          case VIDEO_FORMAT_16_9:  VideoAspect = 16.0 / 9.0; break;
+          case VIDEO_FORMAT_221_1: VideoAspect =       2.21; break;
+          }
+        return;
+        }
+     else
+        LOG_ERROR;
+     }
+  cDevice::GetVideoSize(Width, Height, VideoAspect);
+}
+
+void cDvbDevice::GetOsdSize(int &Width, int &Height, double &PixelAspect)
+{
+  if (fd_video >= 0) {
+     video_size_t vs;
+     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
         Width = 720;
-     Height = vs.h;
-     Aspect = eVideoAspect(vs.aspect_ratio);
-     if (Width >= MINOSDWIDTH && Width <= MAXOSDWIDTH && Height >= MINOSDHEIGHT && Height <= MAXOSDHEIGHT)
+        if (vs.h != 480 && vs.h != 240)
+           Height = 576; // PAL
+        else
+           Height = 480; // NTSC
+        switch (Setup.VideoFormat ? vs.aspect_ratio : VIDEO_FORMAT_4_3) {
+          default:
+          case VIDEO_FORMAT_4_3:   PixelAspect =  4.0 / 3.0; break;
+          case VIDEO_FORMAT_221_1: // FF DVB cards only distinguish between 4:3 and 16:9
+          case VIDEO_FORMAT_16_9:  PixelAspect = 16.0 / 9.0; break;
+          }
+        PixelAspect /= double(Width) / Height;
         return;
+        }
+     else
+        LOG_ERROR;
      }
-  else
-     LOG_ERROR;
-  cDevice::GetVideoSize(Width, Height, Aspect);
+  cDevice::GetOsdSize(Width, Height, PixelAspect);
 }
 
 bool cDvbDevice::SetAudioBypass(bool On)
diff -ruN vdr-1.7.7/dvbdevice.h vdr-1.7.8/dvbdevice.h
--- vdr-1.7.7/dvbdevice.h	2009-05-02 12:44:40.000000000 +0200
+++ vdr-1.7.8/dvbdevice.h	2009-06-06 13:16:47.000000000 +0200
@@ -4,12 +4,13 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbdevice.h 2.4 2009/05/02 10:44:40 kls Exp $
+ * $Id: dvbdevice.h 2.8 2009/06/06 11:16:47 kls Exp $
  */
 
 #ifndef __DVBDEVICE_H
 #define __DVBDEVICE_H
 
+#include <sys/mman.h> // FIXME: workaround for broken linux-dvb header files
 #include <linux/dvb/frontend.h>
 #include <linux/dvb/version.h>
 #include "device.h"
@@ -107,7 +108,8 @@
   virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
   virtual void SetVideoFormat(bool VideoFormat16_9);
   virtual eVideoSystem GetVideoSystem(void);
-  virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
+  virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
+  virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
 
 // Track facilities
 
diff -ruN vdr-1.7.7/dvbplayer.c vdr-1.7.8/dvbplayer.c
--- vdr-1.7.7/dvbplayer.c	2009-04-19 17:19:10.000000000 +0200
+++ vdr-1.7.8/dvbplayer.c	2009-05-31 16:12:42.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbplayer.c 2.15 2009/04/19 15:19:10 kls Exp $
+ * $Id: dvbplayer.c 2.17 2009/05/31 14:12:42 kls Exp $
  */
 
 #include "dvbplayer.h"
@@ -89,7 +89,6 @@
   uchar *buffer;
   int wanted;
   int length;
-  bool hasData;
   cCondWait newSet;
   cCondVar newDataCond;
   cMutex newDataMutex;
@@ -99,7 +98,8 @@
   cNonBlockingFileReader(void);
   ~cNonBlockingFileReader();
   void Clear(void);
-  int Read(cUnbufferedFile *File, uchar *Buffer, int Length);
+  void Request(cUnbufferedFile *File, int Length);
+  int Result(uchar **Buffer);
   bool Reading(void) { return buffer; }
   bool WaitForDataMs(int msToWait);
   };
@@ -110,7 +110,6 @@
   f = NULL;
   buffer = NULL;
   wanted = length = 0;
-  hasData = false;
   Start();
 }
 
@@ -128,29 +127,27 @@
   free(buffer);
   buffer = NULL;
   wanted = length = 0;
-  hasData = false;
+  Unlock();
+}
+
+void cNonBlockingFileReader::Request(cUnbufferedFile *File, int Length)
+{
+  Lock();
+  Clear();
+  wanted = Length;
+  buffer = MALLOC(uchar, wanted);
+  f = File;
   Unlock();
   newSet.Signal();
 }
 
-int cNonBlockingFileReader::Read(cUnbufferedFile *File, uchar *Buffer, int Length)
+int cNonBlockingFileReader::Result(uchar **Buffer)
 {
-  if (hasData && buffer) {
-     if (buffer != Buffer) {
-        esyslog("ERROR: cNonBlockingFileReader::Read() called with different buffer!");
-        errno = EINVAL;
-        return -1;
-        }
+  LOCK_THREAD;
+  if (buffer && length == wanted) {
+     *Buffer = buffer;
      buffer = NULL;
-     return length;
-     }
-  if (!buffer) {
-     f = File;
-     buffer = Buffer;
-     wanted = Length;
-     length = 0;
-     hasData = false;
-     newSet.Signal();
+     return wanted;
      }
   errno = EAGAIN;
   return -1;
@@ -160,20 +157,23 @@
 {
   while (Running()) {
         Lock();
-        if (!hasData && f && buffer) {
+        if (f && buffer && length < wanted) {
            int r = f->Read(buffer + length, wanted - length);
-           if (r >= 0) {
+           if (r > 0)
               length += r;
-              if (!r || length == wanted) { // r == 0 means EOF
-                 cMutexLock NewDataLock(&newDataMutex);
-                 hasData = true;
-                 newDataCond.Broadcast();
-                 }
+           else if (r == 0) { // r == 0 means EOF
+              if (length > 0)
+                 wanted = length; // already read something, so return the rest
+              else
+                 length = wanted = 0; // report EOF
               }
-           else if (r < 0 && FATALERRNO) {
+           else if (FATALERRNO) {
               LOG_ERROR;
-              length = r; // this will forward the error status to the caller
-              hasData = true;
+              length = wanted = r; // this will forward the error status to the caller
+              }
+           if (length == wanted) {
+              cMutexLock NewDataLock(&newDataMutex);
+              newDataCond.Broadcast();
               }
            }
         Unlock();
@@ -184,7 +184,7 @@
 bool cNonBlockingFileReader::WaitForDataMs(int msToWait)
 {
   cMutexLock NewDataLock(&newDataMutex);
-  if (hasData)
+  if (buffer && length == wanted)
      return true;
   return newDataCond.TimedWait(newDataMutex, msToWait);
 }
@@ -381,7 +381,6 @@
 
 void cDvbPlayer::Action(void)
 {
-  uchar *b = NULL;
   uchar *p = NULL;
   int pc = 0;
 
@@ -461,10 +460,12 @@
                       esyslog("ERROR: frame larger than buffer (%d > %d)", Length, MAXFRAMESIZE);
                       Length = MAXFRAMESIZE;
                       }
-                   b = MALLOC(uchar, Length);
+                   if (!eof)
+                      nonBlockingFileReader->Request(replayFile, Length);
                    }
                 if (!eof) {
-                   int r = nonBlockingFileReader->Read(replayFile, b, Length);
+                   uchar *b = NULL;
+                   int r = nonBlockingFileReader->Result(&b);
                    if (r > 0) {
                       WaitingForData = false;
                       uint32_t Pts = 0;
@@ -473,15 +474,16 @@
                          LastReadIFrame = readIndex;
                          }
                       readFrame = new cFrame(b, -r, ftUnknown, readIndex, Pts); // hands over b to the ringBuffer
-                      b = NULL;
                       }
-                   else if (r == 0)
-                      eof = true;
                    else if (r < 0 && errno == EAGAIN)
                       WaitingForData = true;
-                   else if (r < 0 && FATALERRNO) {
-                      LOG_ERROR;
-                      break;
+                   else {
+                      if (r == 0)
+                         eof = true;
+                      else if (r < 0 && FATALERRNO) {
+                         LOG_ERROR;
+                         break;
+                         }
                       }
                    }
                 }
diff -ruN vdr-1.7.7/dvbspu.c vdr-1.7.8/dvbspu.c
--- vdr-1.7.7/dvbspu.c	2007-02-03 11:13:18.000000000 +0100
+++ vdr-1.7.8/dvbspu.c	2009-05-09 18:25:59.000000000 +0200
@@ -8,7 +8,7 @@
  *
  * parts of this file are derived from the OMS program.
  *
- * $Id: dvbspu.c 2.0 2007/02/03 10:13:18 kls Exp $
+ * $Id: dvbspu.c 2.1 2009/05/09 16:25:59 kls Exp $
  */
 
 #include "dvbspu.h"
@@ -55,18 +55,16 @@
 #define setMin(a, b) if (a > b) a = b
 #define setMax(a, b) if (a < b) a = b
 
-#define spuXres   720
-#define spuYres   576
-
 #define revRect(r1, r2) { r1.x1 = r2.x2; r1.y1 = r2.y2; r1.x2 = r2.x1; r1.y2 = r2.y1; }
 
 cDvbSpuBitmap::cDvbSpuBitmap(sDvbSpuRect size,
                              uint8_t * fodd, uint8_t * eodd,
                              uint8_t * feven, uint8_t * eeven)
 {
-    if (size.x1 < 0 || size.y1 < 0 || size.x2 >= spuXres
-        || size.y2 >= spuYres)
-        throw;
+    size.x1 = max(size.x1, 0);
+    size.y1 = max(size.y1, 0);
+    size.x2 = min(size.x2, Setup.OSDWidth);
+    size.y2 = min(size.y2, Setup.OSDHeight);
 
     bmpsize = size;
     revRect(minsize[0], size);
@@ -74,10 +72,11 @@
     revRect(minsize[2], size);
     revRect(minsize[3], size);
 
-    if (!(bmp = new uint8_t[spuXres * spuYres * sizeof(uint8_t)]))
-        throw;
+    int MemSize = bmpsize.width() * bmpsize.height() * sizeof(uint8_t);
+    bmp = new uint8_t[MemSize];
 
-    memset(bmp, 0, spuXres * spuYres * sizeof(uint8_t));
+    if (bmp)
+       memset(bmp, 0, MemSize);
     putFieldData(0, fodd, eodd);
     putFieldData(1, feven, eeven);
 }
@@ -94,10 +93,10 @@
     int h = size.height();
     int w = size.width();
 
-    if (size.y1 + h >= spuYres)
-        h = spuYres - size.y1 - 1;
-    if (size.x1 + w >= spuXres)
-        w = spuXres - size.x1 - 1;
+    if (size.y1 + h >= bmpsize.height())
+        h = bmpsize.height() - size.y1 - 1;
+    if (size.x1 + w >= bmpsize.width())
+        w = bmpsize.width() - size.x1 - 1;
 
     if (w & 0x03)
         w += 4 - (w & 0x03);
@@ -114,7 +113,7 @@
     // set the content
     for (int yp = 0; yp < h; yp++) {
         for (int xp = 0; xp < w; xp++) {
-            uint8_t idx = bmp[(size.y1 + yp) * spuXres + size.x1 + xp];
+            uint8_t idx = bmp[(size.y1 + yp) * bmpsize.width() + size.x1 + xp];
             ret->SetIndex(xp, yp, idx);
         }
     }
@@ -150,7 +149,7 @@
 
 void cDvbSpuBitmap::putPixel(int xp, int yp, int len, uint8_t colorid)
 {
-    memset(bmp + spuXres * yp + xp, colorid, len);
+    memset(bmp + bmpsize.width() * yp + xp, colorid, len);
     setMin(minsize[colorid].x1, xp);
     setMin(minsize[colorid].y1, yp);
     setMax(minsize[colorid].x2, xp + len - 1);
diff -ruN vdr-1.7.7/dvbspu.h vdr-1.7.8/dvbspu.h
--- vdr-1.7.7/dvbspu.h	2006-04-17 14:47:29.000000000 +0200
+++ vdr-1.7.8/dvbspu.h	2009-05-09 18:26:45.000000000 +0200
@@ -8,7 +8,7 @@
  *
  * parts of this file are derived from the OMS program.
  *
- * $Id: dvbspu.h 2.0 2006/04/17 12:47:29 kls Exp $
+ * $Id: dvbspu.h 2.1 2009/05/09 16:26:45 kls Exp $
  */
 
 #ifndef __DVBSPU_H
@@ -32,10 +32,10 @@
     int x1, y1;
     int x2, y2;
 
-    int width() {
+    int width() const {
         return x2 - x1 + 1;
     };
-    int height() {
+    int height() const {
         return y2 - y1 + 1;
     };
 
@@ -63,8 +63,6 @@
 // --- cDvbSpuBitmap----------------------------------------------------------
 
 class cDvbSpuBitmap {
-
-  public:
   private:
     sDvbSpuRect bmpsize;
     sDvbSpuRect minsize[4];
diff -ruN vdr-1.7.7/eit.c vdr-1.7.8/eit.c
--- vdr-1.7.7/eit.c	2009-04-11 12:03:24.000000000 +0200
+++ vdr-1.7.8/eit.c	2009-05-15 14:34:43.000000000 +0200
@@ -8,7 +8,7 @@
  * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
  * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
  *
- * $Id: eit.c 2.3 2009/04/11 10:03:24 kls Exp $
+ * $Id: eit.c 2.5 2009/05/15 12:34:43 kls Exp $
  */
 
 #include "eit.h"
@@ -17,6 +17,8 @@
 #include "libsi/section.h"
 #include "libsi/descriptor.h"
 
+#define VALID_TIME (31536000 * 2) // two years
+
 // --- cEIT ------------------------------------------------------------------
 
 class cEIT : public SI::EIT {
@@ -46,10 +48,13 @@
   struct tm tm_r;
   struct tm t = *localtime_r(&Now, &tm_r); // this initializes the time zone in 't'
 
+  if (Now < VALID_TIME)
+     return; // we need the current time for handling PDC descriptors
+
   SI::EIT::Event SiEitEvent;
   for (SI::Loop::Iterator it; eventLoop.getNext(SiEitEvent, it); ) {
       bool ExternalData = false;
-      int StartTime = SiEitEvent.getStartTime();
+      time_t StartTime = SiEitEvent.getStartTime();
       int Duration = SiEitEvent.getDuration();
       // Drop bogus events - but keep NVOD reference events, where all bits of the start time field are set to 1, resulting in a negative number.
       if (StartTime == 0 || StartTime > 0 && Duration == 0)
diff -ruN vdr-1.7.7/font.h vdr-1.7.8/font.h
--- vdr-1.7.7/font.h	2009-05-03 13:00:19.000000000 +0200
+++ vdr-1.7.8/font.h	2009-05-23 12:10:40.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: font.h 2.1 2009/05/03 11:00:19 kls Exp $
+ * $Id: font.h 2.2 2009/05/23 10:10:40 kls Exp $
  */
 
 #ifndef __FONT_H
@@ -55,9 +55,11 @@
   static const cFont *GetFont(eDvbFont Font);
           ///< Gets the given Font, which was previously set by a call to SetFont().
           ///< If no SetFont() call has been made, the font as defined in the setup is returned.
-          ///< The caller must not use the returned font outside the scope in which
-          ///< it was retrieved by the call to GetFont(), because a call to SetFont()
-          ///< may delete an existing font.
+          ///< GetFont() is not thread-safe, and shall only be called from the main
+          ///< thread! A font returned by GetFont() must only be used locally inside the
+          ///< function it was retrieved from, and no long term pointer to it shall be kept,
+          ///< because the cFont object may become invalid at any time after the
+          ///< function that called GetFont() has returned.
   static cFont *CreateFont(const char *Name, int CharHeight, int CharWidth = 0);
           ///< Creates a new font object with the given Name and makes its characters
           ///< CharHeight pixels high. If CharWidth is given, it overwrites the font's
diff -ruN vdr-1.7.7/menu.c vdr-1.7.8/menu.c
--- vdr-1.7.7/menu.c	2009-05-03 15:30:13.000000000 +0200
+++ vdr-1.7.8/menu.c	2009-05-21 13:10:38.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.c 2.7 2009/05/03 13:30:13 kls Exp $
+ * $Id: menu.c 2.8 2009/05/21 11:10:38 kls Exp $
  */
 
 #include "menu.h"
@@ -2672,18 +2672,24 @@
 // --- cMenuSetupRecord ------------------------------------------------------
 
 class cMenuSetupRecord : public cMenuSetupBase {
+private:
+  const char *pauseKeyHandlingTexts[3];
 public:
   cMenuSetupRecord(void);
   };
 
 cMenuSetupRecord::cMenuSetupRecord(void)
 {
+  pauseKeyHandlingTexts[0] = tr("do not pause live video");
+  pauseKeyHandlingTexts[1] = tr("confirm pause live video");
+  pauseKeyHandlingTexts[2] = tr("pause live video");
   SetSection(tr("Recording"));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at start (min)"),     &data.MarginStart));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at stop (min)"),      &data.MarginStop));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Primary limit"),             &data.PrimaryLimit, 0, MAXPRIORITY));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Default priority"),          &data.DefaultPriority, 0, MAXPRIORITY));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Default lifetime (d)"),      &data.DefaultLifetime, 0, MAXLIFETIME));
+  Add(new cMenuEditStraItem(tr("Setup.Recording$Pause key handling"),        &data.PauseKeyHandling, 3, pauseKeyHandlingTexts));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Pause priority"),            &data.PausePriority, 0, MAXPRIORITY));
   Add(new cMenuEditIntItem( tr("Setup.Recording$Pause lifetime (d)"),        &data.PauseLifetime, 0, MAXLIFETIME));
   Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"),          &data.UseSubtitle));
diff -ruN vdr-1.7.7/osd.c vdr-1.7.8/osd.c
--- vdr-1.7.7/osd.c	2009-05-03 15:52:47.000000000 +0200
+++ vdr-1.7.8/osd.c	2009-05-09 12:42:35.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: osd.c 2.3 2009/05/03 13:52:47 kls Exp $
+ * $Id: osd.c 2.5 2009/05/09 10:42:35 kls Exp $
  */
 
 #include "osd.h"
@@ -883,7 +883,7 @@
 cOsdProvider *cOsdProvider::osdProvider = NULL;
 int cOsdProvider::oldWidth = 0;
 int cOsdProvider::oldHeight = 0;
-int cOsdProvider::oldAspect = va4_3;
+double cOsdProvider::oldAspect = 1.0;
 
 cOsdProvider::cOsdProvider(void)
 {
@@ -919,13 +919,14 @@
 {
   int Width;
   int Height;
-  eVideoAspect Aspect;
-  cDevice::PrimaryDevice()->GetVideoSize(Width, Height, Aspect);
+  double Aspect;
+  cDevice::PrimaryDevice()->GetOsdSize(Width, Height, Aspect);
   if (Width != oldWidth || Height != oldHeight || Aspect != oldAspect || Force) {
      Setup.OSDLeft = int(round(Width * Setup.OSDLeftP));
      Setup.OSDTop = int(round(Height * Setup.OSDTopP));
      Setup.OSDWidth = int(round(Width * Setup.OSDWidthP)) & ~0x07; // OSD width must be a multiple of 8
      Setup.OSDHeight = int(round(Height * Setup.OSDHeightP));
+     Setup.OSDAspect = Aspect;
      Setup.FontOsdSize = int(round(Height * Setup.FontOsdSizeP));
      Setup.FontFixSize = int(round(Height * Setup.FontFixSizeP));
      Setup.FontSmlSize = int(round(Height * Setup.FontSmlSizeP));
@@ -935,7 +936,7 @@
      oldWidth = Width;
      oldHeight = Height;
      oldAspect = Aspect;
-     dsyslog("OSD size changed to %dx%d @ %s", Width, Height, VideoAspectString[Aspect]);
+     dsyslog("OSD size changed to %dx%d @ %g", Width, Height, Aspect);
      }
 }
 
diff -ruN vdr-1.7.7/osd.h vdr-1.7.8/osd.h
--- vdr-1.7.7/osd.h	2009-05-03 15:52:10.000000000 +0200
+++ vdr-1.7.8/osd.h	2009-05-08 15:41:03.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: osd.h 2.3 2009/05/03 13:52:10 kls Exp $
+ * $Id: osd.h 2.4 2009/05/08 13:41:03 kls Exp $
  */
 
 #ifndef __OSD_H
@@ -408,7 +408,7 @@
   static cOsdProvider *osdProvider;
   static int oldWidth;
   static int oldHeight;
-  static int oldAspect;
+  static double oldAspect;
 protected:
   virtual cOsd *CreateOsd(int Left, int Top, uint Level) = 0;
       ///< Returns a pointer to a newly created cOsd object, which will be located
diff -ruN vdr-1.7.7/osdbase.c vdr-1.7.8/osdbase.c
--- vdr-1.7.7/osdbase.c	2008-02-17 12:33:04.000000000 +0100
+++ vdr-1.7.8/osdbase.c	2009-06-01 13:54:50.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: osdbase.c 2.0 2008/02/17 11:33:04 kls Exp $
+ * $Id: osdbase.c 2.1 2009/06/01 11:54:50 kls Exp $
  */
 
 #include "osdbase.h"
@@ -217,6 +217,7 @@
          }
      if (current < 0)
         current = 0; // just for safety - there HAS to be a current item!
+     first = min(first, max(0, count - displayMenuItems)); // in case the menu size has changed
      if (current - first >= displayMenuItems || current < first) {
         first = current - displayMenuItems / 2;
         if (first + displayMenuItems > count)
diff -ruN vdr-1.7.7/po/ca_ES.po vdr-1.7.8/po/ca_ES.po
--- vdr-1.7.7/po/ca_ES.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/ca_ES.po	2009-06-06 17:22:37.000000000 +0200
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Catalanian\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "No puc reiniciar la CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Opcions de Gravació"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Durada predefinida"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioritat de la pausa"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "Gravació a punt d'iniciar!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Gravació començada"
 
diff -ruN vdr-1.7.7/po/cs_CZ.po vdr-1.7.8/po/cs_CZ.po
--- vdr-1.7.7/po/cs_CZ.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/cs_CZ.po	2009-06-06 17:22:37.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-28 15:00+0200\n"
 "Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>, Jiøí Dobrý <jdobry@centrum.cz>\n"
 "Language-Team: Czech\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr "CAM modul nelze restartovat!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Nahrávání"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Výchozí ¾ivotnost"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Priorita pøeru¹ení"
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr "Brzo zaène nahrávání!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Zaèalo nahrávání"
 
diff -ruN vdr-1.7.7/po/da_DK.po vdr-1.7.8/po/da_DK.po
--- vdr-1.7.7/po/da_DK.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/da_DK.po	2009-06-06 17:22:37.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
 "Language-Team: Danish\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "Kan ikke nulstille CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Optagelse"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Standard levetid (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Pause prioritet"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr "Optagelse starter snart!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Optagelse startet"
 
diff -ruN vdr-1.7.7/po/de_DE.po vdr-1.7.8/po/de_DE.po
--- vdr-1.7.7/po/de_DE.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/de_DE.po	2009-06-06 17:22:37.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-11-25 15:19+0200\n"
 "Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
 "Language-Team: German\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "Zurücksetzen des CAM fehlgeschlagen!"
 
+msgid "do not pause live video"
+msgstr "Live-Signal nicht anhalten"
+
+msgid "confirm pause live video"
+msgstr "Anhalten des Live-Signals bestätigen"
+
+msgid "pause live video"
+msgstr "Live-Signal anhalten"
+
 msgid "Recording"
 msgstr "Aufnahme"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Default-Lebensdauer (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr "Funktion der Pause-Taste"
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Pause-Priorität"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr "Aufnahme beginnt in Kürze!"
 
+msgid "Pause live video?"
+msgstr "Live-Signal anhalten?"
+
 msgid "Recording started"
 msgstr "Aufzeichnung gestartet"
 
diff -ruN vdr-1.7.7/po/el_GR.po vdr-1.7.8/po/el_GR.po
--- vdr-1.7.7/po/el_GR.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/el_GR.po	2009-06-06 17:22:37.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
 "Language-Team: Greek\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "Áäýíáôç ç åðáíáöïñÜ óôü CAM"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "ÅããñáöÞ"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "ÐñïêáèïñéóìÝíç äéÜñêåéá ðáñáìïíÞò (ÇìÝñåò)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Ðñïôåñáéüôçôá äéáëåßììáôïò"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr ""
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr ""
 
diff -ruN vdr-1.7.7/po/es_ES.po vdr-1.7.8/po/es_ES.po
--- vdr-1.7.7/po/es_ES.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/es_ES.po	2009-06-06 17:22:38.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Spanish\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr "¡No se puede reiniciar CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Opciones de grabación"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Duración por defecto (días)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioridad en modo pausa"
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr "¡Grabación a punto de empezar!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Iniciando grabación"
 
diff -ruN vdr-1.7.7/po/et_EE.po vdr-1.7.8/po/et_EE.po
--- vdr-1.7.7/po/et_EE.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/et_EE.po	2009-06-06 17:22:38.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
 "Language-Team: Estonian\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "CAM mooduli taaskäivitus ebaõnnestus!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Salvestamine"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Salvestuse eluiga (päevi)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Pausi prioriteet"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr "Salvestamine tulekul!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Salvestamine algas"
 
diff -ruN vdr-1.7.7/po/fi_FI.po vdr-1.7.8/po/fi_FI.po
--- vdr-1.7.7/po/fi_FI.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/fi_FI.po	2009-06-06 17:22:38.000000000 +0200
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-08-15 15:52+0200\n"
 "Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
 "Language-Team: Finnish\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "CA-moduulin nollaus epäonnistui!"
 
+msgid "do not pause live video"
+msgstr "älä pysäytä lähetystä"
+
+msgid "confirm pause live video"
+msgstr "varmista lähetyksen pysäyttäminen"
+
+msgid "pause live video"
+msgstr "pysäytä lähetys"
+
 msgid "Recording"
 msgstr "Tallennus"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Tallenteen oletuselinikä (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr "Taukonäppäimen toiminta"
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Taukotallenteen prioriteetti"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "Tallennus on alkamassa!"
 
+msgid "Pause live video?"
+msgstr "Pysäytetäänkö lähetys?"
+
 msgid "Recording started"
 msgstr "Tallennus aloitettu"
 
diff -ruN vdr-1.7.7/po/fr_FR.po vdr-1.7.8/po/fr_FR.po
--- vdr-1.7.7/po/fr_FR.po	2009-05-03 16:15:20.000000000 +0200
+++ vdr-1.7.8/po/fr_FR.po	2009-06-06 17:22:38.000000000 +0200
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-27 18:14+0100\n"
 "Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
 "Language-Team: French\n"
@@ -710,6 +710,15 @@
 msgid "Can't reset CAM!"
 msgstr "Impossible de réinitialiser le CAM !"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Enregistrement"
 
@@ -728,6 +737,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Durée de vie par défaut (j)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Priorité des pauses"
 
@@ -989,6 +1001,9 @@
 msgid "Upcoming recording!"
 msgstr "L'enregistrement va commencer !"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "L'enregistrement a commencé"
 
diff -ruN vdr-1.7.7/po/hr_HR.po vdr-1.7.8/po/hr_HR.po
--- vdr-1.7.7/po/hr_HR.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/hr_HR.po	2009-06-06 17:22:38.000000000 +0200
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-17 19:00+0100\n"
 "Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
 "Language-Team: Croatian\n"
@@ -706,6 +706,15 @@
 msgid "Can't reset CAM!"
 msgstr "Ponovno pokretanje CAM-a neuspje¹no!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Snimanje"
 
@@ -724,6 +733,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Zadano trajanje (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioritet pauze"
 
@@ -985,6 +997,9 @@
 msgid "Upcoming recording!"
 msgstr "Obnovljena snimka!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Snimanje zapoèelo"
 
diff -ruN vdr-1.7.7/po/hu_HU.po vdr-1.7.8/po/hu_HU.po
--- vdr-1.7.7/po/hu_HU.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/hu_HU.po	2009-06-06 17:22:38.000000000 +0200
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-12-01 21:42+0200\n"
 "Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
 "Language-Team: Hungarian\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "A CAM újraindítás nem sikerült"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Felvétel"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Alapértelmezett élettartam"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Szünet prioritás"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "Felvétel rögtön kezdõdik!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "A felvétel elindítva"
 
diff -ruN vdr-1.7.7/po/it_IT.po vdr-1.7.8/po/it_IT.po
--- vdr-1.7.7/po/it_IT.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/it_IT.po	2009-06-06 17:22:38.000000000 +0200
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2009-02-08 18:58+0100\n"
 "Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
 "Language-Team: Italian\n"
@@ -711,6 +711,15 @@
 msgid "Can't reset CAM!"
 msgstr "Impossibile reimpostare il modulo CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Registrazione"
 
@@ -729,6 +738,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Scadenza predefinita (gg)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "PrioritÃ  di pausa"
 
@@ -990,6 +1002,9 @@
 msgid "Upcoming recording!"
 msgstr "Registrazione imminente!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Registrazione avviata"
 
diff -ruN vdr-1.7.7/po/nl_NL.po vdr-1.7.8/po/nl_NL.po
--- vdr-1.7.7/po/nl_NL.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/nl_NL.po	2009-06-06 17:22:38.000000000 +0200
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-26 17:20+0100\n"
 "Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
 "Language-Team: Dutch\n"
@@ -708,6 +708,15 @@
 msgid "Can't reset CAM!"
 msgstr "Kan CAM niet herstarten!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Opname"
 
@@ -726,6 +735,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Standaard levensduur (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Pauze prioriteit"
 
@@ -987,6 +999,9 @@
 msgid "Upcoming recording!"
 msgstr "Opname start binnenkort!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Opname is gestart!"
 
diff -ruN vdr-1.7.7/po/nn_NO.po vdr-1.7.8/po/nn_NO.po
--- vdr-1.7.7/po/nn_NO.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/nn_NO.po	2009-06-06 17:22:38.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
 "Language-Team: Norwegian\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr ""
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Opptak"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Normal levetid timer (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr ""
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr ""
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr ""
 
diff -ruN vdr-1.7.7/po/pl_PL.po vdr-1.7.8/po/pl_PL.po
--- vdr-1.7.7/po/pl_PL.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/pl_PL.po	2009-06-06 17:22:38.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-09 12:59+0100\n"
 "Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
 "Language-Team:  Polish\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr "Nie mo¿na zresetowaæ CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Nagranie"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Domy¶lny czas ¿ycia (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Priorytet pauzy"
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr "Wkrótce nagranie!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Rozpoczêto nagrywanie"
 
diff -ruN vdr-1.7.7/po/pt_PT.po vdr-1.7.8/po/pt_PT.po
--- vdr-1.7.7/po/pt_PT.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/pt_PT.po	2009-06-06 17:22:38.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-18 17:04+0100\n"
 "Last-Translator: anonymous\n"
 "Language-Team: Portuguese\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "Não é possível reiniciar a CAM"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Opções de gravação"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Validade por defeito (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioridade da pausa"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr "Gravação agendada!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Gravação iniciada"
 
diff -ruN vdr-1.7.7/po/ro_RO.po vdr-1.7.8/po/ro_RO.po
--- vdr-1.7.7/po/ro_RO.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/ro_RO.po	2009-06-06 17:22:38.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-25 00:39+0100\n"
 "Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
 "Language-Team: Romanian\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "Nu pot reseta CAM"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Înregistrare"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Timp de pãstrare predefinit (zile)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioritate pauzã"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "Urmeazã o înregistrare!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "A început înregistrarea"
 
diff -ruN vdr-1.7.7/po/ru_RU.po vdr-1.7.8/po/ru_RU.po
--- vdr-1.7.7/po/ru_RU.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/ru_RU.po	2009-06-06 17:22:39.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-12-15 14:37+0100\n"
 "Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
 "Language-Team: Russian\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr "¾èØÑÚÐ ßÕàÕ×ÐßãáÚÐ CAM-ÜÞÔãÛï!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "·ÐßØáì"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "ÁàÞÚ åàÐÝÕÝØï ×ÐßØáØ ßÞ ãÜÞÛçÐÝØî (Ô)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "¿àØÞàØâÕâ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ"
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr "·ÐßØáì áÚÞàÞ ÝÐçÝÕâáï"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "·ÐßØáì ÝÐçÐâÐ"
 
diff -ruN vdr-1.7.7/po/sl_SI.po vdr-1.7.8/po/sl_SI.po
--- vdr-1.7.7/po/sl_SI.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/sl_SI.po	2009-06-06 17:22:39.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-28 19:44+0100\n"
 "Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
 "Language-Team: Slovenian\n"
@@ -705,6 +705,15 @@
 msgid "Can't reset CAM!"
 msgstr "Ne morem resetirati CAM-a!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Snemanje"
 
@@ -723,6 +732,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Privzeti ¾ivljenski èas (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioriteta pavze"
 
@@ -984,6 +996,9 @@
 msgid "Upcoming recording!"
 msgstr "Sledi snemanje!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Snemanje se je prièelo"
 
diff -ruN vdr-1.7.7/po/sv_SE.po vdr-1.7.8/po/sv_SE.po
--- vdr-1.7.7/po/sv_SE.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/sv_SE.po	2009-06-06 17:22:39.000000000 +0200
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-12 18:25+0100\n"
 "Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
 "Language-Team: Swedish\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "Kan inte återställa CAM!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Inspelning"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Normal livstid (dagar)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Prioritet för direktinspelning"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "strax inspelning..."
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Inspelningen har startat"
 
diff -ruN vdr-1.7.7/po/tr_TR.po vdr-1.7.8/po/tr_TR.po
--- vdr-1.7.7/po/tr_TR.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/tr_TR.po	2009-06-06 17:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-02-28 00:33+0100\n"
 "Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
 "Language-Team: Turkish\n"
@@ -704,6 +704,15 @@
 msgid "Can't reset CAM!"
 msgstr "CAM sýfýrlanamadý!"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "Kayýt"
 
@@ -722,6 +731,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "Olaðan çekim ömrü (gün)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "Duraklama prioritesi"
 
@@ -983,6 +995,9 @@
 msgid "Upcoming recording!"
 msgstr "Çekim yakýnda baþlýyor!"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "Kayýt baþlandý"
 
diff -ruN vdr-1.7.7/po/uk_UA.po vdr-1.7.8/po/uk_UA.po
--- vdr-1.7.7/po/uk_UA.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/uk_UA.po	2009-06-06 17:22:39.000000000 +0200
@@ -5,261 +5,261 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: VDR 1.6.0\n"
+"Project-Id-Version: VDR 1.7.7\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
-"PO-Revision-Date: 2008-03-07 14:17+0200\n"
-"Last-Translator: Yarema Aka Knedlyk <yupadmin@gmail.com>\n"
+"POT-Creation-Date: 2009-05-31 11:11+0200\n"
+"PO-Revision-Date: 2009-05-31 13:17+0200\n"
+"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
 "Language-Team: Ukrainian\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-5\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid "off"
-msgstr "ÒØÚÛ"
+msgstr "Ð²Ð¸ÐºÐ»"
 
 msgid "on"
-msgstr ""
+msgstr "Ð²ÐºÐ»"
 
 msgid "auto"
-msgstr "ÐÒâÞ"
+msgstr "Ð°Ð²Ñ‚Ð¾"
 
 msgid "none"
-msgstr "ÝöçÞÓÞ"
+msgstr "Ð½Ñ–Ñ‡Ð¾Ð³Ð¾"
 
 msgid "*** Invalid Channel ***"
-msgstr "*** ½ÕßàÐÒØÛìÝØÙ ÚÐÝÐÛ ***"
+msgstr "*** Ð�ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¸Ð¹ ÐºÐ°Ð½Ð°Ð» ***"
 
 msgid "Channel not available!"
-msgstr "ºÐÝÐÛ ÝÕÔÞáâãßÝØÙ!"
+msgstr "ÐšÐ°Ð½Ð°Ð» Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¹!"
 
 msgid "Can't start Transfer Mode!"
-msgstr "½ÕÜÞÖÛØÒÞ ÒÚÛîçØâØ àÕÖØÜ ßàÞßãáÚã!"
+msgstr "Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼ Ð¿Ñ€Ð¾Ð¿ÑƒÑ�ÐºÑƒ!"
 
 msgid "Starting EPG scan"
-msgstr "¿ÞçØÝÐî EPG-áÚÐÝãÒÐÝÝï"
+msgstr "ÐŸÐ¾Ñ‡Ð¸Ð½Ð°ÑŽ EPG-Ñ�ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
 msgid "No title"
-msgstr "±Õ× ÝÐ×ÒØ"
+msgstr "Ð‘ÐµÐ· Ð½Ð°Ð·Ð²Ð¸"
 
 #. TRANSLATORS: The name of the language, as written natively
 msgid "LanguageName$English"
-msgstr "ÃÚàÐ÷ÝáìÚÐ"
+msgstr "Ð£ÐºÑ€Ð°Ñ—Ð½Ñ�ÑŒÐºÐ°"
 
 #. TRANSLATORS: The 3-letter code of the language
 msgid "LanguageCode$eng"
 msgstr "ukr"
 
 msgid "Phase 1: Detecting RC code type"
-msgstr "ºàÞÚ 1: ²Ø×ÝÐçÕÝÝï âØßã ÚÞÔã ßãÛìâÐ"
+msgstr "ÐšÑ€Ð¾Ðº 1: Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ‚Ð¸Ð¿Ñƒ ÐºÐ¾Ð´Ñƒ Ð¿ÑƒÐ»ÑŒÑ‚Ð°"
 
 msgid "Press any key on the RC unit"
-msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÝÐ ßãÛìâö"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÑƒ ÐºÐ½Ð¾Ð¿ÐºÑƒ Ð½Ð° Ð¿ÑƒÐ»ÑŒÑ‚Ñ–"
 
 msgid "RC code detected!"
-msgstr "²Ø×ÝÐçÕÝÞ ÚÞÔ ßãÛìâÐ!"
+msgstr "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ ÐºÐ¾Ð´ Ð¿ÑƒÐ»ÑŒÑ‚Ð°!"
 
 msgid "Do not press any key..."
-msgstr "½Õ ÝÐâØáÚÐÙâÕ ÚÝÞßÚØ..."
+msgstr "Ð�Ðµ Ð½Ð°Ñ‚Ð¸Ñ�ÐºÐ°Ð¹Ñ‚Ðµ ÐºÐ½Ð¾Ð¿ÐºÐ¸..."
 
 msgid "Phase 2: Learning specific key codes"
-msgstr "ºàÞÚ 2: ¿àØßØáãÒÐÝÝï ÚÞÔöÒ ÔÛï ÒöÔßÞÒöÔÝØå ÚÝÞßÞÚ"
+msgstr "ÐšÑ€Ð¾Ðº 2: ÐŸÑ€Ð¸Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð´Ð»Ñ� Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ñ… ÐºÐ½Ð¾Ð¿Ð¾Ðº"
 
 #, c-format
 msgid "Press key for '%s'"
-msgstr "½ÐâØáÝöâì ÚÝÞßÚã '%s'"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ ÐºÐ½Ð¾Ð¿ÐºÑƒ '%s'"
 
 msgid "Press 'Up' to confirm"
-msgstr "½ÐâØáÝöâì '²ÒÕàå' ÔÛï ßöÔâÒÕàÔÖÕÝÝï"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'Ð’Ð²ÐµÑ€Ñ…' Ð´Ð»Ñ� Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ�"
 
 msgid "Press 'Down' to continue"
-msgstr "½ÐâØáÝöâì '²ÝØ×' ÔÛï ßàÞÔÞÒÖÕÝÝï"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'Ð’Ð½Ð¸Ð·' Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ�"
 
 msgid "(press 'Up' to go back)"
-msgstr "(½ÐâØáÝöâì '²ÒÕàå' ÔÛï ßÞÒÕàÝÕÝÝï)"
+msgstr "(Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'Ð’Ð²ÐµÑ€Ñ…' Ð´Ð»Ñ� Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ�)"
 
 msgid "(press 'Down' to end key definition)"
-msgstr "(½ÐâØáÝöâì '²ÝØ×' ÔÛï ×ÐÚöÝçÕÝÝï ÝÐáâàÞÙÚØ ßãÛìâÐ)"
+msgstr "(Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'Ð’Ð½Ð¸Ð·' Ð´Ð»Ñ� Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ� Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿ÑƒÐ»ÑŒÑ‚Ð°)"
 
 msgid "(press 'Menu' to skip this key)"
-msgstr "(½ÐâØáÝöâì '¼ÕÝî' éÞÑ ßàÞßãáâØâØ ÚÝÞßÚã)"
+msgstr "(Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'ÐœÐµÐ½ÑŽ' Ñ‰Ð¾Ð± Ð¿Ñ€Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ½Ð¾Ð¿ÐºÑƒ)"
 
 msgid "Learning Remote Control Keys"
-msgstr "½ÐÒçÐÝÝï ßãÛìâÐ"
+msgstr "Ð�Ð°Ð²Ñ‡Ð°Ð½Ð½Ñ� Ð¿ÑƒÐ»ÑŒÑ‚Ð°"
 
 msgid "Phase 3: Saving key codes"
-msgstr "ºàÞÚ 3: ·ÐßÐÜ'ïâÞÒãÒÐÝÝï ÚÞÔöÒ ÚÝÞßÞÚ"
+msgstr "ÐšÑ€Ð¾Ðº 3: Ð—Ð°Ð¿Ð°Ð¼'Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² ÐºÐ½Ð¾Ð¿Ð¾Ðº"
 
 msgid "Press 'Up' to save, 'Down' to cancel"
-msgstr "½ÐâØáÝöâì '²ÒÕàå' ÔÛï ×ÐÚöÝçÕÝÝï, '²ÝØ×' ÔÛï ÒöÔÜÞÒØ"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ 'Ð’Ð²ÐµÑ€Ñ…' Ð´Ð»Ñ� Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ�, 'Ð’Ð½Ð¸Ð·' Ð´Ð»Ñ� Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸"
 
 msgid "Key$Up"
-msgstr "²ÒÕàå"
+msgstr "Ð’Ð²ÐµÑ€Ñ…"
 
 msgid "Key$Down"
-msgstr "²ÝØ×"
+msgstr "Ð’Ð½Ð¸Ð·"
 
 msgid "Key$Menu"
-msgstr "¼ÕÝî"
+msgstr "ÐœÐµÐ½ÑŽ"
 
 msgid "Key$Ok"
 msgstr "Ok"
 
 msgid "Key$Back"
-msgstr "½Ð×ÐÔ"
+msgstr "Ð�Ð°Ð·Ð°Ð´"
 
 msgid "Key$Left"
-msgstr "½ÐÛöÒÞ"
+msgstr "Ð�Ð°Ð»Ñ–Ð²Ð¾"
 
 msgid "Key$Right"
-msgstr "½ÐßàÐÒÞ"
+msgstr "Ð�Ð°Ð¿Ñ€Ð°Ð²Ð¾"
 
 msgid "Key$Red"
-msgstr "ÇÕàÒÞÝÐ"
+msgstr "Ð§ÐµÑ€Ð²Ð¾Ð½Ð°"
 
 msgid "Key$Green"
-msgstr "·ÕÛÕÝÐ"
+msgstr "Ð—ÐµÐ»ÐµÐ½Ð°"
 
 msgid "Key$Yellow"
-msgstr "¶ÞÒâÐ"
+msgstr "Ð–Ð¾Ð²Ñ‚Ð°"
 
 msgid "Key$Blue"
-msgstr "ÁØÝï"
+msgstr "Ð¡Ð¸Ð½Ñ�"
 
 msgid "Key$Info"
-msgstr "¦ÝäÞ"
+msgstr "Ð†Ð½Ñ„Ð¾"
 
 msgid "Key$Play"
-msgstr "¿àÞÓàÐÒÐÝÝï"
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ�"
 
 msgid "Key$Pause"
-msgstr "¿Ðã×Ð"
+msgstr "ÐŸÐ°ÑƒÐ·Ð°"
 
 msgid "Key$Stop"
-msgstr "ÁâÞß"
+msgstr "Ð¡Ñ‚Ð¾Ð¿"
 
 msgid "Key$Record"
-msgstr "·ÐßØá"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ�"
 
 msgid "Key$FastFwd"
-msgstr "¿àÞÚàãâÚÐ ÒßÕàÕÔ"
+msgstr "ÐŸÑ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° Ð²Ð¿ÐµÑ€ÐµÐ´"
 
 msgid "Key$FastRew"
-msgstr "¿àÞÚàãâÚÐ ÝÐ×ÐÔ"
+msgstr "ÐŸÑ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° Ð½Ð°Ð·Ð°Ð´"
 
 msgid "Key$Next"
-msgstr "²ßÕàÕÔ"
+msgstr "Ð’Ð¿ÐµÑ€ÐµÐ´"
 
 msgid "Key$Prev"
-msgstr "½Ð×ÐÔ"
+msgstr "Ð�Ð°Ð·Ð°Ð´"
 
 msgid "Key$Power"
-msgstr "²ØÚÛîçØâØ"
+msgstr "Ð’Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸"
 
 msgid "Key$Channel+"
-msgstr "ºÐÝÐÛ +"
+msgstr "ÐšÐ°Ð½Ð°Ð» +"
 
 msgid "Key$Channel-"
-msgstr "ºÐÝÐÛ -"
+msgstr "ÐšÐ°Ð½Ð°Ð» -"
 
 msgid "Key$PrevChannel"
-msgstr "¿ÞßÕàÕÔÝöÙ ÚÐÝÐÛ"
+msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¹ ÐºÐ°Ð½Ð°Ð»"
 
 msgid "Key$Volume+"
-msgstr "³ãçÝöáâì +"
+msgstr "Ð“ÑƒÑ‡Ð½Ñ–Ñ�Ñ‚ÑŒ +"
 
 msgid "Key$Volume-"
-msgstr "³ãçÝöáâì -"
+msgstr "Ð“ÑƒÑ‡Ð½Ñ–Ñ�Ñ‚ÑŒ -"
 
 msgid "Key$Mute"
-msgstr "²ØÚÛîçØâØ ×ÒãÚ"
+msgstr "Ð’Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ Ð·Ð²ÑƒÐº"
 
 msgid "Key$Audio"
-msgstr "¼ÞÒÐ"
+msgstr "ÐœÐ¾Ð²Ð°"
 
 msgid "Key$Subtitles"
-msgstr "ÁãÑâØâàØ"
+msgstr "Ð¡ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ð¸"
 
 msgid "Key$Schedule"
-msgstr "ÂÕÛÕÓöÔ"
+msgstr "Ð¢ÐµÐ»ÐµÐ³Ñ–Ð´"
 
 msgid "Key$Channels"
-msgstr "ºÐÝÐÛØ"
+msgstr "ÐšÐ°Ð½Ð°Ð»Ð¸"
 
 msgid "Key$Timers"
-msgstr "ÂÐÙÜÕàØ"
+msgstr "Ð¢Ð°Ð¹Ð¼ÐµÑ€Ð¸"
 
 msgid "Key$Recordings"
-msgstr "·ÐßØáØ"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ�Ð¸"
 
 msgid "Key$Setup"
-msgstr "½ÐÛÐèâãÒÐÝÝï"
+msgstr "Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
 msgid "Key$Commands"
-msgstr "ºÞÜÐÝÔØ"
+msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð¸"
 
 msgid "Key$User1"
-msgstr "ºÞàØáâãÒÐç1"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡1"
 
 msgid "Key$User2"
-msgstr "ºÞàØáâãÒÐç2"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡2"
 
 msgid "Key$User3"
-msgstr "ºÞàØáâãÒÐç3"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡3"
 
 msgid "Key$User4"
-msgstr "ºÞàØáâãÒÐç4"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡4"
 
 msgid "Key$User5"
-msgstr "ºÞàØáâãÒÐç5"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡5"
 
 msgid "Key$User6"
-msgstr "ºÞàØáâãÒÐç6"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡6"
 
 msgid "Key$User7"
-msgstr "ºÞàØáâãÒÐç7"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡7"
 
 msgid "Key$User8"
-msgstr "ºÞàØáâãÒÐç8"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡8"
 
 msgid "Key$User9"
-msgstr "ºÞàØáâãÒÐç8"
+msgstr "ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ñ‡8"
 
 msgid "Disk"
-msgstr "´ØáÚ"
+msgstr "Ð”Ð¸Ñ�Ðº"
 
 msgid "free"
-msgstr "ÒöÛìÝÞ"
+msgstr "Ð²Ñ–Ð»ÑŒÐ½Ð¾"
 
 msgid "Free To Air"
-msgstr "FTA (ÝÕ×ÐÚÞÔÞÒÐÝÞ)"
+msgstr "FTA (Ð½ÐµÐ·Ð°ÐºÐ¾Ð´Ð¾Ð²Ð°Ð½Ð¾)"
 
 msgid "encrypted"
-msgstr "×ÐÚÞÔÞÒÐÝÞ"
+msgstr "Ð·Ð°ÐºÐ¾Ð´Ð¾Ð²Ð°Ð½Ð¾"
 
 msgid "Edit channel"
-msgstr "ÀÕÔÐÚâãÒÐÝÝï ÚÐÝÐÛã"
+msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ°Ð½Ð°Ð»Ñƒ"
 
 msgid "Name"
-msgstr "½Ð×ÒÐ"
+msgstr "Ð�Ð°Ð·Ð²Ð°"
 
 msgid "Source"
-msgstr "´ÖÕàÕÛÞ"
+msgstr "Ð”Ð¶ÐµÑ€ÐµÐ»Ð¾"
 
 msgid "Frequency"
-msgstr "ÇÐáâÞâÐ"
+msgstr "Ð§Ð°Ñ�Ñ‚Ð¾Ñ‚Ð°"
 
 msgid "Vpid"
-msgstr "Vpid (ÒöÔÕÞ)"
+msgstr "Vpid (Ð²Ñ–Ð´ÐµÐ¾)"
 
 msgid "Ppid"
 msgstr "Ppid"
 
 msgid "Apid1"
-msgstr "Apid1 (ÐãÔöÞ 1)"
+msgstr "Apid1 (Ð°ÑƒÐ´Ñ–Ð¾ 1)"
 
 msgid "Apid2"
-msgstr "Apid2 (ÐãÔöÞ 2)"
+msgstr "Apid2 (Ð°ÑƒÐ´Ñ–Ð¾ 2)"
 
 msgid "Dpid1"
 msgstr "Dpid1 (AC3 1)"
@@ -268,31 +268,31 @@
 msgstr "Dpid2 (AC3 2)"
 
 msgid "Spid1"
-msgstr "ÁãÑâØâàØ ¿¦´1"
+msgstr "Ð¡ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ð¸ 1"
 
 msgid "Spid2"
-msgstr "ÁãÑâØâàØ ¿¦´2"
+msgstr "Ð¡ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ð¸ 2"
 
 msgid "Tpid"
-msgstr "Tpid (âÕÛÕâÕÚáâ)"
+msgstr "Tpid (Ñ‚ÐµÐ»ÐµÑ‚ÐµÐºÑ�Ñ‚)"
 
 msgid "CA"
-msgstr "CA (ÔÕÚÞÔÕà)"
+msgstr "CA (Ð´ÐµÐºÐ¾Ð´ÐµÑ€)"
 
 msgid "Sid"
 msgstr "Sid"
 
 msgid "Polarization"
-msgstr "¿ÞÛïàØ×Ðæöï"
+msgstr "ÐŸÐ¾Ð»Ñ�Ñ€Ð¸Ð·Ð°Ñ†Ñ–Ñ�"
 
 msgid "System"
-msgstr ""
+msgstr "Ð¡Ð¸Ñ�Ñ‚ÐµÐ¼Ð°"
 
 msgid "Srate"
-msgstr "ÁØÜÒ. èÒØÔÚöáâì"
+msgstr "Ð¡Ð¸Ð¼Ð². ÑˆÐ²Ð¸Ð´ÐºÑ–Ñ�Ñ‚ÑŒ"
 
 msgid "Inversion"
-msgstr "¦ÝÒÕàáöï"
+msgstr "Ð†Ð½Ð²ÐµÑ€Ñ�Ñ–Ñ�"
 
 msgid "CoderateH"
 msgstr "CoderateH"
@@ -301,709 +301,724 @@
 msgstr "CoderateL"
 
 msgid "Modulation"
-msgstr "¼ÞÔãÛïæöï"
+msgstr "ÐœÐ¾Ð´ÑƒÐ»Ñ�Ñ†Ñ–Ñ�"
 
 msgid "Bandwidth"
-msgstr "´öÐßÐ×ÞÝ"
+msgstr "Ð”Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½"
 
 msgid "Transmission"
-msgstr "¿ÕàÕÔÐçÐ"
+msgstr "ÐŸÐµÑ€ÐµÐ´Ð°Ñ‡Ð°"
 
 msgid "Guard"
-msgstr "·ÐåØáâ"
+msgstr "Ð—Ð°Ñ…Ð¸Ñ�Ñ‚"
 
 msgid "Hierarchy"
-msgstr "¦ôàÐàåöï"
+msgstr "Ð†Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ�"
 
 msgid "Rolloff"
-msgstr ""
+msgstr "ÐšÑ€ÐµÐ½"
 
 msgid "Channel settings are not unique!"
-msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛã ÝÕ ôÔØÝö!"
+msgstr "Ð�Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð½Ðµ Ñ”Ð´Ð¸Ð½Ñ–!"
 
 msgid "Channels"
-msgstr "ºÐÝÐÛØ"
+msgstr "ÐšÐ°Ð½Ð°Ð»Ð¸"
 
 msgid "Button$Edit"
-msgstr "ÀÕÔÐÚâãÒÐâØ"
+msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ñ‚Ð¸"
 
 msgid "Button$New"
-msgstr "´ÞÔÐâØ"
+msgstr "Ð”Ð¾Ð´Ð°Ñ‚Ð¸"
 
 msgid "Button$Delete"
-msgstr "²ØÔÐÛØâØ"
+msgstr "Ð’Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸"
 
 msgid "Button$Mark"
-msgstr "¿ÕàÕÜöáâØâØ"
+msgstr "ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸"
 
 msgid "Channel is being used by a timer!"
-msgstr "ºÐÝÐÛ ×ÐÝïâØÙ âÐÙÜÕàÞÜ!"
+msgstr "ÐšÐ°Ð½Ð°Ð» Ð·Ð°Ð¹Ð½Ñ�Ñ‚Ð¸Ð¹ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð¾Ð¼!"
 
 msgid "Delete channel?"
-msgstr "²ØÔÐÛØâØ ÚÐÝÐÛ?"
+msgstr "Ð’Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ ÐºÐ°Ð½Ð°Ð»?"
 
 msgid "Edit timer"
-msgstr "½ÐÛÐèâãÒÐÝÝï âÐÙÜÕàÐ"
+msgstr "Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð°"
 
 msgid "Active"
-msgstr "°ÚâØÒÞÒÐÝÞ"
+msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð¾Ð²Ð°Ð½Ð¾"
 
 msgid "Channel"
-msgstr "ºÐÝÐÛ"
+msgstr "ÐšÐ°Ð½Ð°Ð»"
 
 msgid "Day"
-msgstr "´ÕÝì"
+msgstr "Ð”ÐµÐ½ÑŒ"
 
 msgid "Start"
-msgstr "¿ÞçÐâÞÚ"
+msgstr "ÐŸÐ¾Ñ‡Ð°Ñ‚Ð¾Ðº"
 
 msgid "Stop"
-msgstr "ºöÝÕæì"
+msgstr "ÐšÑ–Ð½ÐµÑ†ÑŒ"
 
 msgid "VPS"
-msgstr "VPS ßÞßàÐÒÚÐ"
+msgstr "VPS Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ°"
 
 msgid "Priority"
-msgstr "¿àöÞàØâÕâ"
+msgstr "ÐŸÑ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚"
 
 msgid "Lifetime"
-msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï"
+msgstr "Ð¡Ñ‚Ñ€Ð¾Ðº Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ�"
 
 msgid "File"
-msgstr "ÄÐÙÛ"
+msgstr "Ð¤Ð°Ð¹Ð»"
 
 msgid "First day"
-msgstr "¿ÕàèØÙ ÔÕÝì"
+msgstr "ÐŸÐµÑ€ÑˆÐ¸Ð¹ Ð´ÐµÐ½ÑŒ"
 
 msgid "Timers"
-msgstr "ÂÐÙÜÕàØ"
+msgstr "Ð¢Ð°Ð¹Ð¼ÐµÑ€Ð¸"
 
 msgid "Button$On/Off"
-msgstr "²ÚÛ/²ØÚÛ"
+msgstr "Ð’ÐºÐ»/Ð’Ð¸ÐºÐ»"
 
 msgid "Button$Info"
-msgstr "¦ÝäÞ"
+msgstr "Ð†Ð½Ñ„Ð¾"
 
 msgid "Delete timer?"
-msgstr "²ØÔÐÛØâØ âÐÙÜÕà?"
+msgstr "Ð’Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ñ‚Ð°Ð¹Ð¼ÐµÑ€?"
 
 msgid "Timer still recording - really delete?"
-msgstr "¹ÔÕ ×ÐßØá ßÞ âÐÙÜÕàã - ÔöÙáÝÞ ÒØÔÐÛØâØ?"
+msgstr "Ð™Ð´Ðµ Ð·Ð°Ð¿Ð¸Ñ� Ð¿Ð¾ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ñƒ - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸?"
 
 msgid "Event"
-msgstr "¿ÕàÕÔÐçÐ"
+msgstr "ÐŸÐµÑ€ÐµÐ´Ð°Ñ‡Ð°"
 
 msgid "Button$Timer"
-msgstr "ÂÐÙÜÕà"
+msgstr "Ð¢Ð°Ð¹Ð¼ÐµÑ€"
 
 msgid "Button$Record"
-msgstr "·ÐßØá"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ�"
 
 msgid "Button$Switch"
-msgstr "¿ÕàÕÚÛîçØâØ"
+msgstr "ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸"
 
 msgid "What's on now?"
-msgstr "·ÐàÐ× Ò Õäöàö:"
+msgstr "Ð—Ð°Ñ€Ð°Ð· Ð² ÐµÑ„Ñ–Ñ€Ñ–:"
 
 msgid "What's on next?"
-msgstr "´ÐÛö Ò ßàÞÓàÐÜö:"
+msgstr "Ð”Ð°Ð»Ñ– Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñ–:"
 
 msgid "Button$Next"
-msgstr "´ÐÛö"
+msgstr "Ð”Ð°Ð»Ñ–"
 
 msgid "Button$Now"
-msgstr "·ÐàÐ×"
+msgstr "Ð—Ð°Ñ€Ð°Ð·"
 
 msgid "Button$Schedule"
-msgstr "¿àÞÓàÐÜÐ"
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð°"
 
 msgid "Can't switch channel!"
-msgstr "½ÕÜÞÖÛØÒÞ ßÕàÕÚÛîçØâØ ÚÐÝÐÛ!"
+msgstr "Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ ÐºÐ°Ð½Ð°Ð»!"
 
 #, c-format
 msgid "Schedule - %s"
-msgstr "¿àÞÓàÐÜÐ - %s"
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð° - %s"
 
 #, c-format
 msgid "This event - %s"
-msgstr "Æï ßÕàÕÔÐçÐ - %s"
+msgstr "Ð¦Ñ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° - %s"
 
 msgid "This event - all channels"
-msgstr "Æï ßÕàÕÔÐçÐ - Òáö ÚÐÝÐÛØ"
+msgstr "Ð¦Ñ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° - Ð²Ñ�Ñ– ÐºÐ°Ð½Ð°Ð»Ð¸"
 
 msgid "All events - all channels"
-msgstr "²áö ßÕàÕÔÐçö - Òáö ÚÐÝÐÛØ"
+msgstr "Ð’Ñ�Ñ– Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– - Ð²Ñ�Ñ– ÐºÐ°Ð½Ð°Ð»Ð¸"
 
 #, c-format
 msgid "Please enter %d digits!"
-msgstr "½ÐâØáÝöâì %d æØäàØ"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ %d Ñ†Ð¸Ñ„Ñ€Ð¸!"
 
 msgid "CAM not responding!"
-msgstr "CAM ÝÕ ÒöÔßÞÒöÔÐô"
+msgstr "CAM Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ”!"
 
 msgid "Recording info"
-msgstr "¿àÞ ×ÐßØá"
+msgstr "ÐŸÑ€Ð¾ Ð·Ð°Ð¿Ð¸Ñ�"
 
 msgid "Button$Play"
-msgstr "¿àÞÓàÐÒÐâØ"
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ñ‚Ð¸"
 
 msgid "Button$Rewind"
-msgstr "½Ð×ÐÔ"
+msgstr "Ð�Ð°Ð·Ð°Ð´"
 
 msgid "Recordings"
-msgstr "·ÐßØáØ"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ�Ð¸"
 
 msgid "Button$Open"
-msgstr "²öÔÚàØâØ"
+msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸"
 
 msgid "Commands"
-msgstr "ºÞÜÐÝÔØ"
+msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð¸"
 
 msgid "Error while accessing recording!"
-msgstr "¿ÞÜØÛÚÐ ÔÞáâãßã ÔÞ ×ÐßØáã!"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð´Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ!"
 
 msgid "Delete recording?"
-msgstr "²ØâÕàâØ ×ÐßØá?"
+msgstr "Ð’Ð¸Ñ‚ÐµÑ€Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ�?"
 
 msgid "Error while deleting recording!"
-msgstr "¿ÞÜØÛÚÐ ÒØÔÐÛÕÝÝï ×ÐßØáã!"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ!"
 
 msgid "Recording commands"
-msgstr "ºÞÜÐÝÔØ ×ÐßØáã"
+msgstr "ÐšÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
 
 msgid "never"
-msgstr "ÝöÚÞÛØ"
+msgstr "Ð½Ñ–ÐºÐ¾Ð»Ð¸"
 
 msgid "skin dependent"
-msgstr "×ÓöÔÝÞ × áâØÛÕÜ"
+msgstr "Ð·Ð³Ñ–Ð´Ð½Ð¾ Ð· Ñ�Ñ‚Ð¸Ð»ÐµÐ¼"
 
 msgid "always"
-msgstr "×ÐÒÖÔØ"
+msgstr "Ð·Ð°Ð²Ð¶Ð´Ð¸"
 
 msgid "OSD"
-msgstr "¼ÕÝî"
+msgstr "OSD Ð¼ÐµÐ½ÑŽ"
 
 msgid "Setup.OSD$Language"
-msgstr "¼ÞÒÐ"
+msgstr "ÐœÐ¾Ð²Ð°"
 
 msgid "Setup.OSD$Skin"
-msgstr "ÁâØÛì"
+msgstr "Ð¡Ñ‚Ð¸Ð»ÑŒ"
 
 msgid "Setup.OSD$Theme"
-msgstr "ÂÕÜÐ"
+msgstr "Ð¢ÐµÐ¼Ð°"
 
 msgid "Setup.OSD$Left (%)"
-msgstr "²öÔáâãß ×ÛöÒÐ (%)"
+msgstr "Ð’Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð»Ñ–Ð²Ð° (%)"
 
 msgid "Setup.OSD$Top (%)"
-msgstr "²öÔáâãß ×ÒÕàåã (%)"
+msgstr "Ð’Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð²ÐµÑ€Ñ…Ñƒ (%)"
 
 msgid "Setup.OSD$Width (%)"
-msgstr "ÈØàØÝÐ (%)"
+msgstr "Ð¨Ð¸Ñ€Ð¸Ð½Ð° (%)"
 
 msgid "Setup.OSD$Height (%)"
-msgstr "²ØáÞâÐ (%)"
+msgstr "Ð’Ð¸Ñ�Ð¾Ñ‚Ð° (%)"
 
 msgid "Setup.OSD$Message time (s)"
-msgstr "ÂàØÒÐÛöáâì ßÞÚÐ×ã ßÞÒöÔÞÜÛÕÝì (áÕÚ)"
+msgstr "Ð¢Ñ€Ð¸Ð²Ð°Ð»Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾ÐºÐ°Ð·Ñƒ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ (Ñ�ÐµÐº)"
 
 msgid "Setup.OSD$Use small font"
-msgstr "²ØÚÞàØáâÞÒãÒÐâØ ÜÐÛØÙ èàØäâ"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ð¹ Ñ„Ð¾Ð½Ñ‚"
 
 msgid "Setup.OSD$Anti-alias"
-msgstr "·ÓÛÐÔÖØÒÐÝÝï èàØäâöÒ"
+msgstr "Ð—Ð³Ð»Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð¾Ð½Ñ‚Ñ–Ð²"
 
 msgid "Setup.OSD$Default font"
-msgstr "ÁâÐÝÔÐàâÝØÙ äÞÝâ"
+msgstr "Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹ Ñ„Ð¾Ð½Ñ‚"
 
 msgid "Setup.OSD$Small font"
-msgstr "¼ÐÛØÙ äÞÝâ"
+msgstr "ÐœÐ°Ð»Ð¸Ð¹ Ñ„Ð¾Ð½Ñ‚"
 
 msgid "Setup.OSD$Fixed font"
-msgstr "ÄöÚáÞÒÐÝØÙ äÞÝâ"
+msgstr "Ð¤Ñ–ÐºÑ�Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð¾Ð½Ñ‚"
 
 msgid "Setup.OSD$Default font size (%)"
-msgstr "ÀÐ×Üöà äÞÝâÐ ÔÛï ÜÕÝî (%)"
+msgstr "Ð Ð°Ð·Ð¼Ñ–Ñ€ Ñ„Ð¾Ð½Ñ‚Ð° Ð´Ð»Ñ� Ð¼ÐµÐ½ÑŽ (%)"
 
 msgid "Setup.OSD$Small font size (%)"
-msgstr "ÀÐ×Üöà ÜÐÛÞÓÞ äÞÝâÐ (%)"
+msgstr "Ð Ð°Ð·Ð¼Ñ–Ñ€ Ð¼Ð°Ð»Ð¾Ð³Ð¾ Ñ„Ð¾Ð½Ñ‚Ð° (%)"
 
 msgid "Setup.OSD$Fixed font size (%)"
-msgstr "ÀÐ×Üöà äöÚáÞÒÐÝÞÓÞ äÞÝâÐ (%)"
+msgstr "Ð Ð°Ð·Ð¼Ñ–Ñ€ Ñ„Ñ–ÐºÑ�Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð¾Ð½Ñ‚Ð° (%)"
 
 msgid "Setup.OSD$Channel info position"
-msgstr "¿ÞÛÞÖÕÝÝï ÒöÚÝÐ öÝäÞàÜÐæö÷ ßàÞ ÚÐÝÐÛ"
+msgstr "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ� Ð²Ñ–ÐºÐ½Ð° Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð¿Ñ€Ð¾ ÐºÐ°Ð½Ð°Ð»"
 
 msgid "bottom"
-msgstr "ÒÝØ×ã"
+msgstr "Ð²Ð½Ð¸Ð·Ñƒ"
 
 msgid "top"
-msgstr "ÒÒÕàåã"
+msgstr "Ð²Ð²ÐµÑ€Ñ…Ñƒ"
 
 msgid "Setup.OSD$Channel info time (s)"
-msgstr "¿ÞÚÐ× öÝäÞàÜÐæö÷ ßàÞ ÚÐÝÐÛ (áÕÚ)"
+msgstr "ÐŸÐ¾ÐºÐ°Ð· Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð¿Ñ€Ð¾ ÐºÐ°Ð½Ð°Ð» (Ñ�ÐµÐº)"
 
 msgid "Setup.OSD$Info on channel switch"
-msgstr "¿ÞÚÐ×ãÒÐâØ öÝäÞàÜÐæöî ßàÞ ÚÐÝÐÛ"
+msgstr "ÐŸÐ¾ÐºÐ°Ð· ÐºÐ°Ð½Ð°Ð»-Ñ–Ð½Ñ„Ð¾ Ð¿Ñ€Ð¸ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ð½Ð½Ñ– "
 
 msgid "Setup.OSD$Timeout requested channel info"
-msgstr "¦ÝäÞàÜÐæöî ßàÞ ÚÐÝÐÛ ×ÐÚàØâØ"
+msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–ÑŽ Ð¿Ñ€Ð¾ ÐºÐ°Ð½Ð°Ð» Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸"
 
 msgid "Setup.OSD$Scroll pages"
-msgstr "¿àÞÚàãâÚÐ áâÞàöÝÞÚ ÜÕÝî"
+msgstr "ÐŸÑ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½Ð¾Ðº Ð¼ÐµÐ½ÑŽ"
 
 msgid "Setup.OSD$Scroll wraps"
-msgstr "ÆØÚÛöçÝÐ ßàÞÚàãâÚÐ"
+msgstr "Ð¦Ð¸ÐºÐ»Ñ–Ñ‡Ð½Ð° Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ°"
 
 msgid "Setup.OSD$Menu key closes"
-msgstr "ºÝÞßÚã ¼ÕÝî ×ÐÚàØâØ"
+msgstr "ÐšÐ½Ð¾Ð¿ÐºÑƒ ÐœÐµÐ½ÑŽ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸"
 
 msgid "Setup.OSD$Recording directories"
-msgstr "ºÐâÐÛÞÓØ ×ÑÕàöÓÐÝÝï ×ÐßØáöÒ"
+msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²"
 
 msgid "EPG"
-msgstr "ÂÕÛÕÓöÔ"
+msgstr "Ð¢ÐµÐ»ÐµÐ³Ñ–Ð´"
 
 msgid "Button$Scan"
-msgstr "ÁÚÐÝãàÞÒÐâØ"
+msgstr "Ð¡ÐºÐ°Ð½ÑƒÐ²Ð°Ñ‚Ð¸"
 
 msgid "Setup.EPG$EPG scan timeout (h)"
-msgstr "·ÐâàØÜÚÐ áÚÐÝãÒÐÝÝï âÕÛÕÓöÔÐ (ç)"
+msgstr "Ð—Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ñ�ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐ»ÐµÐ³Ñ–Ð´Ð° (Ñ‡)"
 
 msgid "Setup.EPG$EPG bugfix level"
-msgstr "ÀöÒÕÝì ÚÞàÕÚæö÷ ßÞÜØÛÞÚ"
+msgstr "Ð Ñ–Ð²ÐµÐ½ÑŒ ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ— Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº"
 
 msgid "Setup.EPG$EPG linger time (min)"
-msgstr "·ÑÕàöÓÐÝÝï ×ÐáâÐàöÛØå ÔÐÝØå (åÒ)"
+msgstr "Ð—Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ñ…Ð²)"
 
 msgid "Setup.EPG$Set system time"
-msgstr "²âÐÝÞÒØâØ áØáâÕÜØÙ çÐá"
+msgstr "Ð’Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸Ð¹ Ñ‡Ð°Ñ�"
 
 msgid "Setup.EPG$Use time from transponder"
-msgstr "²ØÚÞàØáâÐâØ çÐá âàÐÝáßÞÝÔÕàÐ"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ñ‚Ð¸ Ñ‡Ð°Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð¿Ð¾Ð½Ð´ÐµÑ€Ð°"
 
 #. TRANSLATORS: note the plural!
 msgid "Setup.EPG$Preferred languages"
-msgstr "±ÐÖÐÝö ÜÞÒØ (âÕÛÕÓöÔ)"
+msgstr "Ð‘Ð°Ð¶Ð°Ð½Ñ– Ð¼Ð¾Ð²Ð¸ (Ñ‚ÐµÐ»ÐµÐ³Ñ–Ð´)"
 
 #. TRANSLATORS: note the singular!
 msgid "Setup.EPG$Preferred language"
-msgstr "²ØÑàÐÝÞ"
+msgstr "Ð‘Ð°Ð¶Ð°Ð½Ð° Ð¼Ð¾Ð²Ð° (Ñ‚ÐµÐ»ÐµÐ³Ñ–Ð´)"
 
 msgid "pan&scan"
-msgstr "ßÐÝÞàÐÜãÒÐâØ"
+msgstr "Ð¿Ð°Ð½Ð¾Ñ€Ð°Ð¼ÑƒÐ²Ð°Ñ‚Ð¸"
 
 msgid "letterbox"
-msgstr "×ÜÕÝèãÒÐâØ"
+msgstr "Ð·Ð¼ÐµÐ½ÑˆÑƒÐ²Ð°Ñ‚Ð¸"
 
 msgid "center cut out"
-msgstr "ÞÑàö×ÐâØ ×ÑÞÚã"
+msgstr "Ð¾Ð±Ñ€Ñ–Ð·Ð°Ñ‚Ð¸ Ð¿Ð¾ Ð±Ð¾ÐºÐ°Ñ…"
 
 msgid "no"
-msgstr "Ýö"
+msgstr "Ð½Ñ–"
 
 msgid "names only"
-msgstr "âöÛìÚØ ÝÐ×ÒØ"
+msgstr "Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð½Ð°Ð·Ð²Ð¸"
 
 msgid "PIDs only"
-msgstr "ÂöÛìÚØ PIDØ"
+msgstr "Ð¢Ñ–Ð»ÑŒÐºÐ¸ PIDÐ¸"
 
 msgid "names and PIDs"
-msgstr "ÝÐ×ÒØ ö PIDØ"
+msgstr "Ð½Ð°Ð·Ð²Ð¸ Ñ– PIDÐ¸"
 
 msgid "add new channels"
-msgstr "ÔÞÔÐâØ ÝÞÒö ÚÐÝÐÛØ"
+msgstr "Ð´Ð¾Ð´Ð°Ñ‚Ð¸ Ð½Ð¾Ð²Ñ– ÐºÐ°Ð½Ð°Ð»Ð¸"
 
 msgid "add new transponders"
-msgstr "ÔÞÔÐâØ ÝÞÒö âàÐÝáßÞÝÔÕàØ"
+msgstr "Ð´Ð¾Ð´Ð°Ñ‚Ð¸ Ð½Ð¾Ð²Ñ– Ñ‚Ñ€Ð°Ð½Ñ�Ð¿Ð¾Ð½Ð´ÐµÑ€Ð¸"
 
 msgid "DVB"
 msgstr "DVB"
 
 msgid "Setup.DVB$Primary DVB interface"
-msgstr "¾áÝÞÒÝØÙ DVB-ßàØáâàöÙ"
+msgstr "ÐžÑ�Ð½Ð¾Ð²Ð½Ð¸Ð¹ DVB-Ð¿Ñ€Ð¸Ñ�Ñ‚Ñ€Ñ–Ð¹"
 
 msgid "Setup.DVB$Video format"
-msgstr "ÄÞàÜÐâ ÒöÔÕÞ"
+msgstr "Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ Ð²Ñ–Ð´ÐµÐ¾"
 
 msgid "Setup.DVB$Video display format"
-msgstr "ÈØàÞÚÞÕÚàÐÝÕ ×ÞÑàÐÖÕÝÝï"
+msgstr "Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´ÐµÐ¾"
 
 msgid "Setup.DVB$Use Dolby Digital"
-msgstr "²ÚÛîçØâØ Dolby Digital"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Dolby Digital"
 
 msgid "Setup.DVB$Update channels"
-msgstr "¾ÝÞÒÛîÒÐâØ ÝÐáâàÞÙÚØ ÚÐÝÐÛöÒ"
+msgstr "ÐžÐ½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ ÐºÐ°Ð½Ð°Ð»Ñ–Ð²"
 
 msgid "Setup.DVB$Audio languages"
-msgstr "±ÐÖÐÝö ÜÞÒØ (×ÒãÚ)"
+msgstr "Ð‘Ð°Ð¶Ð°Ð½Ñ– Ð¼Ð¾Ð²Ð¸ (Ð·Ð²ÑƒÐº)"
 
 msgid "Setup.DVB$Audio language"
-msgstr "²ØÑàÐÝÞ"
+msgstr "ÐœÐ¾Ð²Ð° Ð°ÑƒÐ´Ñ–Ð¾"
 
 msgid "Setup.DVB$Display subtitles"
-msgstr "¿ÞÚÐ×ãÒÐâØ áãÑâØâàØ"
+msgstr "ÐŸÐ¾ÐºÐ°Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ð¸"
 
 msgid "Setup.DVB$Subtitle languages"
-msgstr "¼ÞÒØ áãÑâØâàöÒ"
+msgstr "ÐœÐ¾Ð²Ð¸ Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "Setup.DVB$Subtitle language"
-msgstr "¼ÞÒÐ áãÑâØâàöÒ"
+msgstr "ÐœÐ¾Ð²Ð° Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "Setup.DVB$Subtitle offset"
-msgstr "²öÔáâãß áãÑâØâàöÒ"
+msgstr "Ð’Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr "¿àÞ×Þàöáâì ßÕàÕÔÝìÞÓÞ ßÛÐÝã áãÑâØâàöÒ"
+msgstr "ÐŸÑ€Ð¾Ð·Ð¾Ñ€Ñ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ Ð¿Ð»Ð°Ð½Ñƒ Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "Setup.DVB$Subtitle background transparency"
-msgstr "¿àÞ×Þàöáâì ×ÐÔÝìÞÓÞ ßÛÐÝã áãÑâØâàöÒ"
+msgstr "ÐŸÑ€Ð¾Ð·Ð¾Ñ€Ñ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð´Ð½ÑŒÐ¾Ð³Ð¾ Ð¿Ð»Ð°Ð½Ñƒ Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "LNB"
-msgstr "ºÞÝÒÕàâÕà"
+msgstr "ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚ÐµÑ€"
 
 msgid "Setup.LNB$Use DiSEqC"
-msgstr "²ØÚÞàØáâÞÒãÒÐâØ DiSEqC"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ DiSEqC"
 
 msgid "Setup.LNB$SLOF (MHz)"
-msgstr "ÇÐáâÞâÐ ßÕàÕÚÛîçÐÝÝï (SLOF) (¼³æ)"
+msgstr "Ð§Ð°Ñ�Ñ‚Ð¾Ñ‚Ð° Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ð½Ð½Ñ� (SLOF) (ÐœÐ“Ñ†)"
 
 msgid "Setup.LNB$Low LNB frequency (MHz)"
-msgstr "½ØÖÝï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
+msgstr "Ð�Ð¸Ð¶Ð½Ñ� Ñ‡Ð°Ñ�Ñ‚Ð¾Ñ‚Ð° ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÐµÑ€Ð° (ÐœÐ“Ñ†)"
 
 msgid "Setup.LNB$High LNB frequency (MHz)"
-msgstr "²ÕàåÝï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
+msgstr "Ð’ÐµÑ€Ñ…Ð½Ñ� Ñ‡Ð°Ñ�Ñ‚Ð¾Ñ‚Ð° ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÐµÑ€Ð° (ÐœÐ“Ñ†)"
 
 msgid "CAM reset"
-msgstr "¿ÕàÕ×ÐÒÐÝâÐÖÕÝÝï CAM"
+msgstr "ÐŸÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� CAM"
 
 msgid "CAM present"
-msgstr "CAM ßàØáãâÝöÙ"
+msgstr "CAM Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð½Ñ–Ð¹"
 
 msgid "CAM ready"
-msgstr "CAM ÓÞâÞÒØÙ"
+msgstr "CAM Ð³Ð¾Ñ‚Ð¾Ð²Ð¸Ð¹"
 
 msgid "CAM"
-msgstr "ÃÜÞÒÝØÙ ÔÞáâãß"
+msgstr "CAM (Ð£Ð¼Ð¾Ð²Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿)"
 
 msgid "Button$Menu"
-msgstr "¼ÕÝî"
+msgstr "ÐœÐµÐ½ÑŽ"
 
 msgid "Button$Reset"
-msgstr "ÁÚØÝãâØ"
+msgstr "Ð¡ÐºÐ¸Ð½ÑƒÑ‚Ð¸"
 
 msgid "Opening CAM menu..."
-msgstr "²öÔÚàØÒÐî ÜÕÝî ÜÞÔãÛï ãÜÞÒÝÞÓÞ ÔÞáâãßã (CAM)"
+msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°ÑŽ Ð¼ÐµÐ½ÑŽ CAM-Ð¼Ð¾Ð´ÑƒÐ»Ñ�..."
 
 msgid "Can't open CAM menu!"
-msgstr "¼ÕÝî CAM-ÜÞÔãÛï ÝÕÔÞáâãßÝÕ!"
+msgstr "ÐœÐµÐ½ÑŽ CAM-Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ðµ!"
 
 msgid "CAM is in use - really reset?"
-msgstr "CAM ÒØÚÞàØáâÞÒãôâìáï - ÔöÙáÝÞ ßÕàÕ×ÐÒÐÝâÐÖØâØ?"
+msgstr "CAM Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸?"
 
 msgid "Can't reset CAM!"
-msgstr "¿ÞÜØÛÚÐ ßÕàÕ×ÐßãáÚã CAM-ÜÞÔãÛï!"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�ÐºÑƒ CAM-Ð¼Ð¾Ð´ÑƒÐ»Ñ�!"
+
+msgid "do not pause live video"
+msgstr "Ð½Ðµ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½Ñ�Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´"
+
+msgid "confirm pause live video"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ"
+
+msgid "pause live video"
+msgstr "Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´"
 
 msgid "Recording"
-msgstr "·ÐßØá"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ�"
 
 msgid "Setup.Recording$Margin at start (min)"
-msgstr "²ØßÕàÕÔÖÕÝÝï ßÞçÐâÚã ×ÐßØáã (åÒ)"
+msgstr "Ð’Ð¸Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ (Ñ…Ð²)"
 
 msgid "Setup.Recording$Margin at stop (min)"
-msgstr "·Ðßö×ÝÕÝÝï ×ãßØÝÚØ ×ÐßØáã (åÒ)"
+msgstr "Ð—Ð°Ð¿Ñ–Ð·Ð½ÐµÐ½Ð½Ñ� Ð·ÑƒÐ¿Ð¸Ð½ÐºÐ¸ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ (Ñ…Ð²)"
 
 msgid "Setup.Recording$Primary limit"
-msgstr "¼öÝ. ßàöÞàØâÕâ ×ÐåÞßÛÕÝÝï ÞáÝ. ßàØáâàÞî"
+msgstr "ÐœÑ–Ð½. Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½. Ð¿Ñ€Ð¸Ñ�Ñ‚Ñ€Ð¾ÑŽ"
 
 msgid "Setup.Recording$Default priority"
-msgstr "¿àöÞàØâÕâ âÐÙÜÕàÐ ßÞ ×ÐÜÞÒçãÒÐÝÝî"
+msgstr "ÐŸÑ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð° Ð¿Ð¾ Ð·Ð°Ð¼Ð¾Ð²Ñ‡ÑƒÐ²Ð°Ð½Ð½ÑŽ"
 
 msgid "Setup.Recording$Default lifetime (d)"
-msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï ×ÐßØáã ßÞ ×ÐÜÞÒçãÒÐÝÝî (Ô)"
+msgstr "Ð¡Ñ‚Ñ€Ð¾Ðº Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð¿Ð¾ Ð·Ð°Ð¼Ð¾Ð²Ñ‡ÑƒÐ²Ð°Ð½Ð½ÑŽ (Ð´Ð½Ñ–)"
+
+msgid "Setup.Recording$Pause key handling"
+msgstr "ÐžÐ±Ñ€Ð¾Ð±ÐºÐ° ÐºÐ»Ð°Ð²Ñ–ÑˆÑ– Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ"
 
 msgid "Setup.Recording$Pause priority"
-msgstr "¿àöÞàØâÕâ ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã"
+msgstr "ÐŸÑ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ"
 
 msgid "Setup.Recording$Pause lifetime (d)"
-msgstr "·ÑÕàöÓÐÝÝï ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã (Ô)"
+msgstr "Ð—Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ (Ð´Ð½Ñ–)"
 
 msgid "Setup.Recording$Use episode name"
-msgstr "³àãßãÒÐâØ äÐÙÛØ ßÞ Õßö×ÞÔÐå"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ ÐµÐ¿Ñ–Ð·Ð¾Ð´Ñƒ"
 
 msgid "Setup.Recording$Use VPS"
-msgstr "²ØÚÞàØáâÞÒãÒÐâØ áØÓÝÐÛØ VPS"
+msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ð¸Ð³Ð½Ð°Ð»Ð¸ VPS"
 
 msgid "Setup.Recording$VPS margin (s)"
-msgstr "±ãäÕàÝØÙ çÐá VPS (áÕÚ)"
+msgstr "Ð‘ÑƒÑ„ÐµÑ€Ð½Ð¸Ð¹ Ñ‡Ð°Ñ� VPS (Ñ�ÐµÐº)"
 
 msgid "Setup.Recording$Mark instant recording"
-msgstr "²öÔÜöçÐâØ ×àÞÑÛÕÝö ÒàãçÝã ×ÐßØáØ"
+msgstr "ÐŸÐ¾Ð¼Ñ–Ñ‚Ð¸Ñ‚Ð¸ Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ– Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸"
 
 msgid "Setup.Recording$Name instant recording"
-msgstr "ÁåÕÜÐ ÝÐÙÜÕÝãÒÐÝì àãçÝØå ×ÐßØáöÒ"
+msgstr "Ð¡Ñ…ÐµÐ¼Ð° Ð½Ð°Ð¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½ÑŒ Ñ€ÑƒÑ‡Ð½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²"
 
 msgid "Setup.Recording$Instant rec. time (min)"
-msgstr "¿àÞâïÖÝöáâì àãçÝÞÓÞ ×ÐßØáã (åÒ)"
+msgstr "ÐŸÑ€Ð¾Ñ‚Ñ�Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€ÑƒÑ‡Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ (Ñ…Ð²)"
 
 msgid "Setup.Recording$Max. video file size (MB)"
-msgstr "¼ÐÚá. àÐ×Üöà ÒöÔÕÞäÐÙÛã (¼Ñ)"
+msgstr "ÐœÐ°ÐºÑ�. Ñ€Ð°Ð·Ð¼Ñ–Ñ€ Ð²Ñ–Ð´ÐµÐ¾Ñ„Ð°Ð¹Ð»Ñƒ (ÐœÐ±)"
 
 msgid "Setup.Recording$Split edited files"
-msgstr "´öÛØâØ ÒöÔàÕÔÐÚâÞÒÐÝö äÐÙÛØ"
+msgstr "Ð”Ñ–Ð»Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ€ÐµÐ´Ð°Ð³Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸"
 
 msgid "Replay"
-msgstr "¿ÕàÕÓÛïÔ"
+msgstr "ÐŸÐµÑ€ÐµÐ³Ð»Ñ�Ð´"
 
 msgid "Setup.Replay$Multi speed mode"
-msgstr "±ÐÓÐâÞèÒØÔÚöáÝØÙ àÕÖØÜ"
+msgstr "Ð‘Ð°Ð³Ð°Ñ‚Ð¾ÑˆÐ²Ð¸Ð´ÐºÑ–Ñ�Ð½Ð¸Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼"
 
 msgid "Setup.Replay$Show replay mode"
-msgstr "²öÞÑàÐÖÐâØ àÕÖØÜ ßÕàÕÓÛïÔã"
+msgstr "Ð’Ñ–Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ‚Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ"
 
 msgid "Setup.Replay$Resume ID"
-msgstr "ID ßÕàÕÓÛïÔã"
+msgstr "ID Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ"
 
 msgid "Miscellaneous"
-msgstr "Àö×ÝÕ"
+msgstr "Ð Ñ–Ð·Ð½Ðµ"
 
 msgid "Setup.Miscellaneous$Min. event timeout (min)"
-msgstr "¼öÝ. çÐá ÞçöÚãÒÐÝÝï ßÞÔö÷ (åÒ)"
+msgstr "ÐœÑ–Ð½. Ñ‡Ð°Ñ� Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð´Ñ–Ñ— (Ñ…Ð²)"
 
 msgid "Setup.Miscellaneous$Min. user inactivity (min)"
-msgstr "¼öÝ. çÐá ÞçöÚãÒÐÝÝï ÒÒÞÔã (åÒ)"
+msgstr "ÐœÑ–Ð½. Ñ‡Ð°Ñ� Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð²Ð¾Ð´Ñƒ (Ñ…Ð²)"
 
 msgid "Setup.Miscellaneous$SVDRP timeout (s)"
-msgstr "·ÐâàØÜÚÚÐ ÞÑàØÒã ×'ôÔÝÐÝÝï SVDRP (áÕÚ)"
+msgstr "Ð—Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐºÐ° Ð¾Ð±Ñ€Ð¸Ð²Ñƒ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� SVDRP (Ñ�ÐµÐº)"
 
 msgid "Setup.Miscellaneous$Zap timeout (s)"
-msgstr "·ÐâàØÜÚÐ ßÕàÕÚÛîçÐÝÝï ÚÐÝÐÛã (áÕÚ)"
+msgstr "Ð—Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ð½Ð½Ñ� ÐºÐ°Ð½Ð°Ð»Ñƒ (Ñ�ÐµÐº)"
 
 msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
-msgstr "·ÐâàØÜÚÐ çÐáã ÔÛï ÒßàÞÒÐÔÖÕÝÝï ÚÐÝÐÛã (ms)"
+msgstr "Ð—Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ñ‡Ð°Ñ�Ñƒ Ð´Ð»Ñ� Ð²Ð¿Ñ€Ð¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ� ÐºÐ°Ð½Ð°Ð»Ñƒ (ms)"
 
 msgid "Setup.Miscellaneous$Initial channel"
-msgstr "ºÐÝÐÛ ßàØ ÒÚÛîçÐÝÝî"
+msgstr "ÐšÐ°Ð½Ð°Ð» Ð¿Ñ€Ð¸ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ–"
 
 msgid "Setup.Miscellaneous$as before"
-msgstr "ïÚ àÐÝöèÕ"
+msgstr "Ñ�Ðº Ñ€Ð°Ð½Ñ–ÑˆÐµ"
 
 msgid "Setup.Miscellaneous$Initial volume"
-msgstr "³ãçÝöáâì ßàØ ÒÚÛîçÕÝÝö"
+msgstr "Ð“ÑƒÑ‡Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ–"
 
 msgid "Setup.Miscellaneous$Emergency exit"
-msgstr "°ÒÐàöÙÝØÙ ÒØåöÔ"
+msgstr "Ð�Ð²Ð°Ñ€Ñ–Ð¹Ð½Ð¸Ð¹ Ð²Ð¸Ñ…Ñ–Ð´"
 
 msgid "Plugins"
-msgstr "¼ÞÔãÛö àÞ×èØàÕÝÝï"
+msgstr "ÐœÐ¾Ð´ÑƒÐ»Ñ– Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�"
 
 msgid "This plugin has no setup parameters!"
-msgstr "¼ÞÔãÛì ÝÕ ÜÐô ßÐàÐÜÕâàöÒ ÝÐÛÐèâãÒÐÝì!"
+msgstr "ÐœÐ¾Ð´ÑƒÐ»ÑŒ Ð½Ðµ Ð¼Ð°Ñ” Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ!"
 
 msgid "Setup"
-msgstr "½ÐÛÐèâãÒÐÝÝï"
+msgstr "Ð�Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
 msgid "Restart"
-msgstr "¿ÕàÕ×ÐßãáâØâØ"
+msgstr "ÐŸÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸"
 
 msgid "Really restart?"
-msgstr "´öÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+msgstr "Ð”Ñ–Ð¹Ñ�Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸?"
 
 #. TRANSLATORS: note the leading and trailing blanks!
 msgid " Stop recording "
-msgstr " ·ãßØÝØâØ ×ÐßØá "
+msgstr " Ð—ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� "
 
 msgid "Schedule"
-msgstr "ÂÕÛÕÓöÔ"
+msgstr "Ð¢ÐµÐ»ÐµÐ³Ñ–Ð´"
 
 msgid "VDR"
 msgstr "VDR"
 
 #. TRANSLATORS: note the leading blank!
 msgid " Stop replaying"
-msgstr " ·ãßØÝØâØ ßàÞÓàÐÒÐÝÝï"
+msgstr " Ð—ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ�"
 
 msgid "Button$Audio"
-msgstr "¼ÞÒÐ"
+msgstr "ÐœÐ¾Ð²Ð° Ð°ÑƒÐ´Ñ–Ð¾"
 
 msgid "Button$Pause"
-msgstr "¿Ðã×Ð"
+msgstr "ÐŸÐ°ÑƒÐ·Ð°"
 
 msgid "Button$Stop"
-msgstr "ÁâÞß"
+msgstr "Ð¡Ñ‚Ð¾Ð¿"
 
 msgid "Button$Resume"
-msgstr "¿àÞÔÞÒÖØâØ"
+msgstr "ÐŸÑ€Ð¾Ð´Ð¾Ð²Ð¶Ð¸Ñ‚Ð¸"
 
 #. TRANSLATORS: note the leading blank!
 msgid " Cancel editing"
-msgstr " ¿ÕàÕàÒÐâØ ÜÞÝâÐÖ ×ÐßØáã"
+msgstr " ÐŸÐµÑ€ÐµÑ€Ð²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð½Ñ‚Ð°Ð¶ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
 
 msgid "Stop recording?"
-msgstr "¿àØßØÝØâØ ×ÐßØá?"
+msgstr "ÐŸÑ€Ð¸Ð¿Ð¸Ð½Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ�?"
 
 msgid "Cancel editing?"
-msgstr "¿ÕàÕàÒÐâØ àÕÔÐÚâãÒÐÝÝï?"
+msgstr "ÐŸÐµÑ€ÐµÑ€Ð²Ð°Ñ‚Ð¸ Ñ€ÐµÐ´Ð°ÐºÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ�?"
 
 msgid "No audio available!"
-msgstr "²öÔáãâÝöÙ ×ÒãÚ!"
+msgstr "Ð’Ñ–Ð´Ñ�ÑƒÑ‚Ð½Ñ–Ð¹ Ð·Ð²ÑƒÐº!"
 
 msgid "No subtitles"
-msgstr "½ÕÜÐô áãÑâØâàöÒ"
+msgstr "Ð�ÐµÐ¼Ð°Ñ” Ñ�ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð²"
 
 msgid "Button$Subtitles"
-msgstr "ÁãÑâØâàØ"
+msgstr "Ð¡ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ð¸"
 
 msgid "No subtitles available!"
-msgstr "ÁãÑâØâàöÒ ÝÕÜÐô!"
+msgstr "Ð¡ÑƒÐ±Ñ‚Ð¸Ñ‚Ñ€Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ”!"
 
 msgid "Not enough disk space to start recording!"
-msgstr "½ÕÔÞáâÐâÝìÞ Üöáæï ÝÐ ÔØáÚã ÔÛï ßÞçÐâÚã ×ÐßØáã"
+msgstr "Ð�ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð½Ð° Ð´Ð¸Ñ�ÐºÑƒ Ð´Ð»Ñ� Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
 
 msgid "No free DVB device to record!"
-msgstr "½ÕÜÐô ÒöÛìÝÞÓÞ DVB-ßàØáâàÞî ÔÛï ×ÐßØáã!"
+msgstr "Ð�ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ DVB-Ð¿Ñ€Ð¸Ñ�Ñ‚Ñ€Ð¾ÑŽ Ð´Ð»Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ!"
 
 msgid "Pausing live video..."
-msgstr "ÀÕÖØÜ ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã..."
+msgstr "Ð ÐµÐ¶Ð¸Ð¼ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ..."
 
 #. TRANSLATORS: note the trailing blank!
 msgid "Jump: "
-msgstr "¿ÕàÕÙâØ: "
+msgstr "ÐŸÐµÑ€ÐµÐ¹Ñ‚Ð¸: "
 
 msgid "No editing marks defined!"
-msgstr "½Õ ×ÐÔÐÝÞ ÜöâÞÚ ÔÛï ÜÞÝâÐÖã!"
+msgstr "Ð�Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾ Ð¼Ñ–Ñ‚Ð¾Ðº Ð´Ð»Ñ� Ð¼Ð¾Ð½Ñ‚Ð°Ð¶Ñƒ!"
 
 msgid "Can't start editing process!"
-msgstr "½ÕÜÞÖÛØÒÞ ßÞçÐâØ ÜÞÝâÐÖ ×ÐßØáã!"
+msgstr "Ð�ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¸ Ð¼Ð¾Ð½Ñ‚Ð°Ð¶ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ!"
 
 msgid "Editing process started"
-msgstr "¼ÞÝâÐÖ ×ÐßØáã ßÞçÐÒáï"
+msgstr "ÐœÐ¾Ð½Ñ‚Ð°Ð¶ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð¿Ð¾Ñ‡Ð°Ð²Ñ�Ñ�"
 
 msgid "Editing process already active!"
-msgstr "¿àÞæÕá ÒöÔÕÞÜÞÝâÐÖã ÒÖÕ ×ÐßãéÕÝØÙ!"
+msgstr "ÐŸÑ€Ð¾Ñ†ÐµÑ� Ð²Ñ–Ð´ÐµÐ¾Ð¼Ð¾Ð½Ñ‚Ð°Ð¶Ñƒ Ð²Ð¶Ðµ Ð·Ð°Ð¿ÑƒÑ‰ÐµÐ½Ð¸Ð¹!"
 
 msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
-msgstr " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕôñÖ×Øö÷ÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~,/_@"
+msgstr " abcdefghijklmnopqrstuvwxyzÐ°Ð±Ð²Ð³Ð´ÐµÑ”Ñ‘Ð¶Ð·Ð¸Ñ–Ñ—Ð¹ÐºÐ»Ð¼Ð½Ð¾Ð¿Ñ€Ñ�Ñ‚ÑƒÑ„Ñ…Ñ†Ñ‡ÑˆÑ‰ÑŠÑ‹ÑŒÑŽÑ�0123456789-.#~,/_@"
 
 msgid "yes"
-msgstr "âÐÚ"
+msgstr "Ñ‚Ð°Ðº"
 
 msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcÐÑÒÓ2\tdefÔÕôñÖ×3\tghiØö÷ÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9"
+msgstr " 0\t-.#~,/_@1\tabcÐ°Ð±Ð²Ð³2\tdefÐ´ÐµÑ”Ñ‘Ð¶Ð·3\tghiÐ¸Ñ–Ñ—Ð¹ÐºÐ»4\tjklÐ¼Ð½Ð¾5\tmnoÐ¿Ñ€Ñ�6\tpqrsÑ‚ÑƒÑ„Ñ…7\ttuvÑ†Ñ‡ÑˆÑ‰ÑŠ8\twxyzÑ‹ÑŒÑ�ÑŽÑ�9"
 
 msgid "Button$ABC/abc"
-msgstr "°±²/ÐÑÒ"
+msgstr "Ð�Ð‘Ð’/Ð°Ð±Ð²"
 
 msgid "Button$Overwrite"
-msgstr "·ÐÜöÝÐ"
+msgstr "Ð—Ð°Ð¼Ñ–Ð½Ð°"
 
 msgid "Button$Insert"
-msgstr "²áâÐÒÚÐ"
+msgstr "Ð’Ñ�Ñ‚Ð°Ð²ÐºÐ°"
 
 msgid "Plugin"
-msgstr "¼ÞÔãÛì"
+msgstr "ÐœÐ¾Ð´ÑƒÐ»ÑŒ"
 
 msgid "Up/Dn for new location - OK to move"
-msgstr "½ÐâØáÚÐÙâÕ \"²ÒÕàå\"/\"²ÝØ×\" ÔÛï ÒØÑÞàã ßÞ×Øæö÷, Ð ßÞâöÜ \"OK\""
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�ÐºÐ°Ð¹Ñ‚Ðµ \"Ð’Ð²ÐµÑ€Ñ…\"/\"Ð’Ð½Ð¸Ð·\" Ð´Ð»Ñ� Ð²Ð¸Ð±Ð¾Ñ€Ñƒ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—, Ð° Ð¿Ð¾Ñ‚Ñ–Ð¼ \"OK\""
 
 msgid "Channel locked (recording)!"
-msgstr "ºÐÝÐÛ ×ÐÑÛÞÚÞÒÐÝÞ (ÙÔÕ ×ÐßØá)!"
+msgstr "ÐšÐ°Ð½Ð°Ð» Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾ (Ð¹Ð´Ðµ Ð·Ð°Ð¿Ð¸Ñ�)!"
 
 msgid "Low disk space!"
-msgstr "½ÕÔÞáâÐâÝìÞ Üöáæï ÝÐ ÔØáÚã!"
+msgstr "Ð�ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð½Ð° Ð´Ð¸Ñ�ÐºÑƒ!"
 
 msgid "Can't shutdown - option '-s' not given!"
-msgstr "²ØÚÛîçÕÝÝÝï ÝÕÜÞÖÛØÒÕ - ÝÕ ×ÐÔÐÝÞ ßÐàÐÜÕâà '-s'!"
+msgstr "Ð’Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ð½Ñ� Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ - Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ '-s'!"
 
 msgid "Editing - shut down anyway?"
-msgstr "¹ÔÕ ÜÞÝâÐÖ - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+msgstr "Ð™Ð´Ðµ Ð¼Ð¾Ð½Ñ‚Ð°Ð¶ - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸?"
 
 msgid "Recording - shut down anyway?"
-msgstr "¹ÔÕ ×ÐßØá - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+msgstr "Ð™Ð´Ðµ Ð·Ð°Ð¿Ð¸Ñ� - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸?"
 
 #, c-format
 msgid "Recording in %ld minutes, shut down anyway?"
-msgstr "ÇÕàÕ× %ld åÒØÛØÝ ßÞçÝÕâìáï ×ÐßØá - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+msgstr "Ð§ÐµÑ€ÐµÐ· %ld Ñ…Ð²Ð¸Ð»Ð¸Ð½ Ð¿Ð¾Ñ‡Ð½ÐµÑ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸?"
 
 msgid "shut down anyway?"
-msgstr "ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+msgstr "Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸?"
 
 #, c-format
 msgid "Plugin %s wakes up in %ld min, continue?"
-msgstr "Plugin %s ßàÞáÝÕâìáï çÕàÕ× %ld åÒØÛØÝ - ßàÞÔÞÒÖØâØ?"
+msgstr "ÐœÐ¾Ð´ÑƒÐ»ÑŒ %s Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑ�Ñ� Ñ‡ÐµÑ€ÐµÐ· %ld Ñ…Ð²Ð¸Ð»Ð¸Ð½ - Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶Ð¸Ñ‚Ð¸?"
 
 msgid "Editing - restart anyway?"
-msgstr "¿àÞæÕá ÜÞÝâÐÖã - ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+msgstr "ÐŸÑ€Ð¾Ñ†ÐµÑ� Ð¼Ð¾Ð½Ñ‚Ð°Ð¶Ñƒ - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸?"
 
 msgid "Recording - restart anyway?"
-msgstr "¹ÔÕ ×ÐßØá - ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+msgstr "Ð™Ð´Ðµ Ð·Ð°Ð¿Ð¸Ñ� - Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸?"
 
 msgid "restart anyway?"
-msgstr "ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+msgstr "Ð´Ñ–Ð¹Ñ�Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸?"
 
 #. TRANSLATORS: note the trailing blank!
 msgid "Volume "
-msgstr "³ãçÝöáâì "
+msgstr "Ð“ÑƒÑ‡Ð½Ñ–Ñ�Ñ‚ÑŒ "
 
 msgid "Classic VDR"
-msgstr "ºÛÐáØçÝØÙ"
+msgstr "ÐšÐ»Ð°Ñ�Ð¸Ñ‡Ð½Ð¸Ð¹ VDR"
 
 msgid "ST:TNG Panels"
-msgstr "ST:TNG ßÐÝÕÛö"
+msgstr "ST:TNG Ð¿Ð°Ð½ÐµÐ»Ñ–"
 
 #. TRANSLATORS: the first character of each weekday, beginning with monday
 msgid "MTWTFSS"
-msgstr "¿²ÁÇ¿Á½"
+msgstr "ÐŸÐ’Ð¡Ð§ÐŸÐ¡Ð�"
 
 #. TRANSLATORS: abbreviated weekdays, beginning with monday (must all be 3 letters!)
 msgid "MonTueWedThuFriSatSun"
-msgstr "¿ÞÝ²âàÁàÔÇâÒ¿âÝÁãÑ½ÕÔ"
+msgstr "ÐŸÐ¾Ð½Ð’Ñ‚Ñ€Ð¡Ñ€Ð´Ð§Ñ‚Ð²ÐŸÑ‚Ð½Ð¡ÑƒÐ±Ð�ÐµÐ´"
 
 msgid "Monday"
-msgstr "¿ÞÝÕÔöÛÞÚ"
+msgstr "ÐŸÐ¾Ð½ÐµÐ´Ñ–Ð»Ð¾Ðº"
 
 msgid "Tuesday"
-msgstr "²öÒâÞàÞÚ"
+msgstr "Ð’Ñ–Ð²Ñ‚Ð¾Ñ€Ð¾Ðº"
 
 msgid "Wednesday"
-msgstr "ÁÕàÕÔÐ"
+msgstr "Ð¡ÐµÑ€ÐµÐ´Ð°"
 
 msgid "Thursday"
-msgstr "ÇÕâÒÕà"
+msgstr "Ð§ÐµÑ‚Ð²ÐµÑ€"
 
 msgid "Friday"
-msgstr "¿'ïâÝØæï"
+msgstr "ÐŸ'Ñ�Ñ‚Ð½Ð¸Ñ†Ñ�"
 
 msgid "Saturday"
-msgstr "ÁãÑÞâÐ"
+msgstr "Ð¡ÑƒÐ±Ð¾Ñ‚Ð°"
 
 msgid "Sunday"
-msgstr "½ÕÔöÛï"
+msgstr "Ð�ÐµÐ´Ñ–Ð»Ñ�"
 
 msgid "Upcoming recording!"
-msgstr "·ÐßØá áÚÞàÞ ßÞçÝÕâìáï"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ñ�ÐºÐ¾Ñ€Ð¾ Ð¿Ð¾Ñ‡Ð½ÐµÑ‚ÑŒÑ�Ñ�"
+
+msgid "Pause live video?"
+msgstr "Ð ÐµÐ¶Ð¸Ð¼ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ³Ð»Ñ�Ð´Ñƒ..."
 
 msgid "Recording started"
-msgstr "·ÐßØá ßÞçÐÒáï"
+msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ð¿Ð¾Ñ‡Ð°Ð²Ñ�Ñ�"
 
 msgid "VDR will shut down later - press Power to force"
-msgstr "VDR ÒØÚÛîçØâìáï ßßö×ÝöèÕ - ÝÐâØáÝöâì Power ÔÛï ßàØèÒØÔèÕÝÝï"
+msgstr "VDR Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¿Ñ–Ð·Ð½Ñ–ÑˆÐµ - Ð½Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ Power Ð´Ð»Ñ� Ð¿Ñ€Ð¸ÑˆÐ²Ð¸Ð´ÑˆÐµÐ½Ð½Ñ�"
 
 msgid "Press any key to cancel shutdown"
-msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÔÛï ÒöÔÜöÝØ ÒØÚÛîçÕÝÝï."
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÑƒ ÐºÐ½Ð¾Ð¿ÐºÑƒ Ð´Ð»Ñ� Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ�."
 
 msgid "Switching primary DVB..."
-msgstr "·ÜöÝÐ ÞáÝÞÒÝÞÓÞ DVB-ßàØáâàÞî..."
+msgstr "Ð—Ð¼Ñ–Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¾Ð³Ð¾ DVB-Ð¿Ñ€Ð¸Ñ�Ñ‚Ñ€Ð¾ÑŽ..."
 
 msgid "Editing process failed!"
-msgstr "¿ÞÜØÛÚÐ ßöÔ çÐá ÜÞÝâÐÖã ×ÐßØáã!"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¼Ð¾Ð½Ñ‚Ð°Ð¶Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ!"
 
 msgid "Editing process finished"
-msgstr "¼ÞÝâÐÖ ×ÐÚöÝçÕÝÞ"
+msgstr "ÐœÐ¾Ð½Ñ‚Ð°Ð¶ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð¾"
 
 msgid "Press any key to cancel restart"
-msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÔÛï ÒöÔÜöÝØ ßÕàÕ×ÐÒÐÝâÐÖÕÝÝï"
+msgstr "Ð�Ð°Ñ‚Ð¸Ñ�Ð½Ñ–Ñ‚ÑŒ Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÑƒ ÐºÐ½Ð¾Ð¿ÐºÑƒ Ð´Ð»Ñ� Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸ Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�"
 
 #, c-format
 msgid "VDR will shut down in %s minutes"
-msgstr "VDR ÒØÚÛîçØâìáï çÕàÕ× %s åÒØÛØÝ"
+msgstr "VDR Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑ�Ñ� Ñ‡ÐµÑ€ÐµÐ· %s Ñ…Ð²Ð¸Ð»Ð¸Ð½"
diff -ruN vdr-1.7.7/po/zh_CN.po vdr-1.7.8/po/zh_CN.po
--- vdr-1.7.7/po/zh_CN.po	2009-05-03 16:15:21.000000000 +0200
+++ vdr-1.7.8/po/zh_CN.po	2009-06-06 17:22:40.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
-"POT-Creation-Date: 2008-12-14 16:10+0100\n"
+"POT-Creation-Date: 2009-05-21 13:18+0200\n"
 "PO-Revision-Date: 2008-03-21 08:44+0800\n"
 "Last-Translator: Nan Feng <nfgx@21cn.com>\n"
 "Language-Team: Chinese\n"
@@ -707,6 +707,15 @@
 msgid "Can't reset CAM!"
 msgstr "ä¸�èƒ½é‡�å�¯CAM"
 
+msgid "do not pause live video"
+msgstr ""
+
+msgid "confirm pause live video"
+msgstr ""
+
+msgid "pause live video"
+msgstr ""
+
 msgid "Recording"
 msgstr "è®°å½•ä¸­"
 
@@ -725,6 +734,9 @@
 msgid "Setup.Recording$Default lifetime (d)"
 msgstr "é»˜è®¤ç»ˆèº« (d)"
 
+msgid "Setup.Recording$Pause key handling"
+msgstr ""
+
 msgid "Setup.Recording$Pause priority"
 msgstr "æš‚å�œä¼˜å…ˆ"
 
@@ -986,6 +998,9 @@
 msgid "Upcoming recording!"
 msgstr "å�³å°†çš„è®°å½•ï¼�"
 
+msgid "Pause live video?"
+msgstr ""
+
 msgid "Recording started"
 msgstr "è®°å½•å¼€å§‹ï¼�"
 
diff -ruN vdr-1.7.7/recorder.c vdr-1.7.8/recorder.c
--- vdr-1.7.7/recorder.c	2009-03-20 16:49:02.000000000 +0100
+++ vdr-1.7.8/recorder.c	2009-05-23 14:18:25.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recorder.c 2.3 2009/03/20 15:49:02 kls Exp $
+ * $Id: recorder.c 2.4 2009/05/23 12:18:25 kls Exp $
  */
 
 #include "recorder.h"
@@ -44,12 +44,14 @@
      Type = 0x06;
      }
   frameDetector = new cFrameDetector(Pid, Type);
-  patPmtGenerator.SetChannel(Channel);
-  fileName = NULL;
   index = NULL;
   fileSize = 0;
   lastDiskSpaceCheck = time(NULL);
   fileName = new cFileName(FileName, true);
+  int PatVersion, PmtVersion;
+  if (fileName->GetLastPatPmtVersions(PatVersion, PmtVersion))
+     patPmtGenerator.SetVersions(PatVersion + 1, PmtVersion + 1);
+  patPmtGenerator.SetChannel(Channel);
   recordFile = fileName->Open();
   if (!recordFile)
      return;
diff -ruN vdr-1.7.7/recording.c vdr-1.7.8/recording.c
--- vdr-1.7.7/recording.c	2009-04-13 15:50:39.000000000 +0200
+++ vdr-1.7.8/recording.c	2009-06-13 15:34:08.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.c 2.12 2009/04/13 13:50:39 kls Exp $
+ * $Id: recording.c 2.16 2009/06/13 13:34:08 kls Exp $
  */
 
 #include "recording.h"
@@ -20,6 +20,7 @@
 #include "channels.h"
 #include "i18n.h"
 #include "interface.h"
+#include "remux.h"
 #include "skins.h"
 #include "tools.h"
 #include "videodir.h"
@@ -622,8 +623,8 @@
      Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
      Subtitle = SubtitleBuffer;
      }
-  char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
-  char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
+  const char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
+  const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
   if (macroTITLE || macroEPISODE) {
      name = strdup(Timer->File());
      name = strreplace(name, TIMERMACRO_TITLE, Title);
@@ -672,7 +673,7 @@
   sortBuffer = NULL;
   fileName = strdup(FileName);
   FileName += strlen(VideoDirectory) + 1;
-  char *p = strrchr(FileName, '/');
+  const char *p = strrchr(FileName, '/');
 
   name = NULL;
   info = new cRecordingInfo;
@@ -1528,8 +1529,8 @@
         if (Independent)
            *Independent = index[Index].independent;
         if (Length) {
-           int fn = index[Index + 1].number;
-           int fo = index[Index + 1].offset;
+           uint16_t fn = index[Index + 1].number;
+           off_t fo = index[Index + 1].offset;
            if (fn == *FileNumber)
               *Length = fo - *FileOffset;
            else
@@ -1559,8 +1560,8 @@
                *FileOffset = index[Index].offset;
                if (Length) {
                   // all recordings end with a non-independent frame, so the following should be safe:
-                  int fn = index[Index + 1].number;
-                  int fo = index[Index + 1].offset;
+                  uint16_t fn = index[Index + 1].number;
+                  off_t fo = index[Index + 1].offset;
                   if (fn == *FileNumber)
                      *Length = fo - *FileOffset;
                   else {
@@ -1629,6 +1630,57 @@
   free(fileName);
 }
 
+bool cFileName::GetLastPatPmtVersions(int &PatVersion, int &PmtVersion)
+{
+  if (fileName && !isPesRecording) {
+     // Find the last recording file:
+     int Number = 1;
+     for (; Number <= MAXFILESPERRECORDINGTS + 1; Number++) { // +1 to correctly set Number in case there actually are that many files
+         sprintf(pFileNumber, RECORDFILESUFFIXTS, Number);
+         if (access(fileName, F_OK) != 0) { // file doesn't exist
+            Number--;
+            break;
+            }
+         }
+     for (; Number > 0; Number--) {
+         // Search for a PAT packet from the end of the file:
+         cPatPmtParser PatPmtParser;
+         sprintf(pFileNumber, RECORDFILESUFFIXTS, Number);
+         int fd = open(fileName, O_RDONLY | O_LARGEFILE, DEFFILEMODE);
+         if (fd >= 0) {
+            off_t pos = lseek(fd, -TS_SIZE, SEEK_END);
+            while (pos >= 0) {
+                  // Read and parse the PAT/PMT:
+                  uchar buf[TS_SIZE];
+                  while (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
+                        if (buf[0] == TS_SYNC_BYTE) {
+                           int Pid = TsPid(buf);
+                           if (Pid == 0)
+                              PatPmtParser.ParsePat(buf, sizeof(buf));
+                           else if (Pid == PatPmtParser.PmtPid()) {
+                              PatPmtParser.ParsePmt(buf, sizeof(buf));
+                              if (PatPmtParser.GetVersions(PatVersion, PmtVersion)) {
+                                 close(fd);
+                                 return true;
+                                 }
+                              }
+                           else
+                              break; // PAT/PMT is always in one sequence
+                           }
+                        else
+                           return false;
+                        }
+                  pos = lseek(fd, pos - TS_SIZE, SEEK_SET);
+                  }
+            close(fd);
+            }
+         else
+            break;
+         }
+     }
+  return false;
+}
+
 cUnbufferedFile *cFileName::Open(void)
 {
   if (!file) {
diff -ruN vdr-1.7.7/recording.h vdr-1.7.8/recording.h
--- vdr-1.7.7/recording.h	2009-04-19 11:00:45.000000000 +0200
+++ vdr-1.7.8/recording.h	2009-05-23 14:14:42.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.h 2.7 2009/04/19 09:00:45 kls Exp $
+ * $Id: recording.h 2.8 2009/05/23 12:14:42 kls Exp $
  */
 
 #ifndef __RECORDING_H
@@ -260,6 +260,7 @@
   ~cFileName();
   const char *Name(void) { return fileName; }
   int Number(void) { return fileNumber; }
+  bool GetLastPatPmtVersions(int &PatVersion, int &PmtVersion);
   cUnbufferedFile *Open(void);
   void Close(void);
   cUnbufferedFile *SetOffset(int Number, off_t Offset = 0);
diff -ruN vdr-1.7.7/remux.c vdr-1.7.8/remux.c
--- vdr-1.7.7/remux.c	2009-05-03 16:43:25.000000000 +0200
+++ vdr-1.7.8/remux.c	2009-06-06 15:24:57.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remux.c 2.20 2009/05/03 14:43:25 kls Exp $
+ * $Id: remux.c 2.24 2009/06/06 13:24:57 kls Exp $
  */
 
 #include "remux.h"
@@ -357,6 +357,12 @@
      }
 }
 
+void cPatPmtGenerator::SetVersions(int PatVersion, int PmtVersion)
+{
+  patVersion = PatVersion & 0x1F;
+  pmtVersion = PmtVersion & 0x1F;
+}
+
 void cPatPmtGenerator::SetChannel(cChannel *Channel)
 {
   if (Channel) {
@@ -383,8 +389,9 @@
 
 // --- cPatPmtParser ---------------------------------------------------------
 
-cPatPmtParser::cPatPmtParser(void)
+cPatPmtParser::cPatPmtParser(bool UpdatePrimaryDevice)
 {
+  updatePrimaryDevice = UpdatePrimaryDevice;
   Reset();
 }
 
@@ -472,7 +479,8 @@
      dbgpatpmt("     pcr = %d\n", Pmt.getPCRPid());
      if (pmtVersion == Pmt.getVersionNumber())
         return;
-     cDevice::PrimaryDevice()->ClrAvailableTracks(false, true);
+     if (updatePrimaryDevice)
+        cDevice::PrimaryDevice()->ClrAvailableTracks(false, true);
      int NumApids = 0;
      int NumDpids = 0;
      int NumSpids = 0;
@@ -481,6 +489,7 @@
      for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
          dbgpatpmt("     stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
          switch (stream.getStreamType()) {
+           case 0x01: // STREAMTYPE_11172_VIDEO
            case 0x02: // STREAMTYPE_13818_VIDEO
            case 0x1B: // MPEG4
                       vpid = stream.getPid();
@@ -515,7 +524,8 @@
                                }
                              delete d;
                              }
-                         cDevice::PrimaryDevice()->SetAvailableTrack(ttAudio, NumApids, stream.getPid(), ALangs);
+                         if (updatePrimaryDevice)
+                            cDevice::PrimaryDevice()->SetAvailableTrack(ttAudio, NumApids, stream.getPid(), ALangs);
                          NumApids++;
                          }
                       }
@@ -550,7 +560,8 @@
                                               break;
                                            }
                                         }
-                                    cDevice::PrimaryDevice()->SetAvailableTrack(ttSubtitle, NumSpids, stream.getPid(), SLangs);
+                                    if (updatePrimaryDevice)
+                                       cDevice::PrimaryDevice()->SetAvailableTrack(ttSubtitle, NumSpids, stream.getPid(), SLangs);
                                     NumSpids++;
                                     }
                                  break;
@@ -566,7 +577,8 @@
                           }
                       if (dpid) {
                          if (NumDpids < MAXDPIDS) {
-                            cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, NumDpids, dpid, lang);
+                            if (updatePrimaryDevice)
+                               cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, NumDpids, dpid, lang);
                             NumDpids++;
                             }
                          }
@@ -574,8 +586,10 @@
                       break;
            }
          dbgpatpmt("\n");
-         cDevice::PrimaryDevice()->EnsureAudioTrack(true);
-         cDevice::PrimaryDevice()->EnsureSubtitleTrack();
+         if (updatePrimaryDevice) {
+            cDevice::PrimaryDevice()->EnsureAudioTrack(true);
+            cDevice::PrimaryDevice()->EnsureSubtitleTrack();
+            }
          }
      pmtVersion = Pmt.getVersionNumber();
      }
@@ -584,13 +598,19 @@
   pmtSize = 0;
 }
 
+bool cPatPmtParser::GetVersions(int &PatVersion, int &PmtVersion)
+{
+  PatVersion = patVersion;
+  PmtVersion = pmtVersion;
+  return patVersion >= 0 && pmtVersion >= 0;
+}
+
 // --- cTsToPes --------------------------------------------------------------
 
 cTsToPes::cTsToPes(void)
 {
   data = NULL;
   size = length = offset = 0;
-  synced = false;
 }
 
 cTsToPes::~cTsToPes()
@@ -702,7 +722,7 @@
   newFrame = independentFrame = false;
   numPtsValues = 0;
   numIFrames = 0;
-  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
+  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1, 2 or 4
   frameDuration = 0;
   framesInPayloadUnit = framesPerPayloadUnit = 0;
   payloadUnitOfFrame = 0;
@@ -795,6 +815,7 @@
                   scanner <<= 8;
                   scanner |= Data[i];
                   switch (type) {
+                    case 0x01: // MPEG 1 video
                     case 0x02: // MPEG 2 video
                          if (scanner == 0x00000100) { // Picture Start Code
                             if (synced && Processed)
diff -ruN vdr-1.7.7/remux.h vdr-1.7.8/remux.h
--- vdr-1.7.7/remux.h	2009-04-19 12:57:09.000000000 +0200
+++ vdr-1.7.8/remux.h	2009-06-06 15:26:23.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remux.h 2.10 2009/04/19 10:57:09 kls Exp $
+ * $Id: remux.h 2.17 2009/06/06 13:26:23 kls Exp $
  */
 
 #ifndef __REMUX_H
@@ -181,6 +181,15 @@
        ///< with GetPmt().
 public:
   cPatPmtGenerator(cChannel *Channel = NULL);
+  void SetVersions(int PatVersion, int PmtVersion);
+       ///< Sets the version numbers for the generated PAT and PMT, in case
+       ///< this generator is used to, e.g.,  continue a previously interrupted
+       ///< recording (in which case the numbers given should be derived from
+       ///< the PAT/PMT versions last used in the existing recording, incremented
+       ///< by 1. If the given numbers exceed the allowed range of 0..31, the
+       ///< higher bits will automatically be cleared.
+       ///< SetVersions() needs to be called before SetChannel() in order to
+       ///< have an effect from the very start.
   void SetChannel(cChannel *Channel);
        ///< Sets the Channel for which the PAT/PMT shall be generated.
   uchar *GetPat(void);
@@ -204,10 +213,11 @@
   int pmtPid;
   int vpid;
   int vtype;
+  bool updatePrimaryDevice;
 protected:
   int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
 public:
-  cPatPmtParser(void);
+  cPatPmtParser(bool UpdatePrimaryDevice = false);
   void Reset(void);
        ///< Resets the parser. This function must be called whenever a new
        ///< stream is parsed.
@@ -221,6 +231,9 @@
        ///< are delivered to the parser through several subsequent calls to
        ///< ParsePmt(). The whole PMT data will be processed once the last packet
        ///< has been received.
+  bool GetVersions(int &PatVersion, int &PmtVersion);
+       ///< Returns true if a valid PAT/PMT has been parsed and stores
+       ///< the current version numbers in the given variables.
   int PmtPid(void) { return pmtPid; }
        ///< Returns the PMT pid as defined by the current PAT.
        ///< If no PAT has been received yet, -1 will be returned.
@@ -239,7 +252,6 @@
   int size;
   int length;
   int offset;
-  bool synced;
 public:
   cTsToPes(void);
   ~cTsToPes();
@@ -249,11 +261,24 @@
        ///< If the given TS packet starts a new PES payload packet, the converter
        ///< will be automatically reset. Any packets before the first one that starts
        ///< a new PES payload packet will be ignored.
+       ///< Once a TS packet has been put into a cTsToPes converter, all subsequent
+       ///< packets until the next call to Reset() must belong to the same PID as
+       ///< the first packet. There is no check whether this actually is the case, so
+       ///< the caller is responsible for making sure this condition is met.
   const uchar *GetPes(int &Length);
        ///< Gets a pointer to the complete PES packet, or NULL if the packet
        ///< is not complete yet. If the packet is complete, Length will contain
        ///< the total packet length. The returned pointer is only valid until
        ///< the next call to PutTs() or Reset(), or until this object is destroyed.
+       ///< Once GetPes() has returned a non-NULL value, it must be called
+       ///< repeatedly, and the data processed, until it returns NULL. This
+       ///< is because video packets may be larger than the data a single
+       ///< PES packet with an actual length field can hold, and are therefore
+       ///< split into several PES packets with smaller sizes.
+       ///< Note that for video data GetPes() may only be called if the next
+       ///< TS packet that will be given to PutTs() has the "payload start" flag
+       ///< set, because this is the only way to determine the end of a video PES
+       ///< packet.
   void Reset(void);
        ///< Resets the converter. This needs to be called after a PES packet has
        ///< been fetched by a call to GetPes(), and before the next call to
diff -ruN vdr-1.7.7/ringbuffer.c vdr-1.7.8/ringbuffer.c
--- vdr-1.7.7/ringbuffer.c	2009-02-24 12:32:14.000000000 +0100
+++ vdr-1.7.8/ringbuffer.c	2009-05-17 12:05:17.000000000 +0200
@@ -7,7 +7,7 @@
  * Parts of this file were inspired by the 'ringbuffy.c' from the
  * LinuxDVB driver (see linuxtv.org).
  *
- * $Id: ringbuffer.c 2.1 2009/02/24 11:32:14 kls Exp $
+ * $Id: ringbuffer.c 2.2 2009/05/17 10:05:17 kls Exp $
  */
 
 #include "ringbuffer.h"
@@ -43,7 +43,7 @@
 {
   if (Fill > maxFill)
      maxFill = Fill;
-  int percent = Fill * 100 / (Size() - 1) / PERCENTAGEDELTA * PERCENTAGEDELTA;
+  int percent = Fill * 100 / (Size() - 1) / PERCENTAGEDELTA * PERCENTAGEDELTA; // clamp down to nearest quantum
   if (percent != lastPercent) {
      if (percent >= PERCENTAGETHRESHOLD && percent > lastPercent || percent < PERCENTAGETHRESHOLD && lastPercent >= PERCENTAGETHRESHOLD) {
         dsyslog("buffer usage: %d%% (tid=%d)", percent, getThreadTid);
diff -ruN vdr-1.7.7/skins.c vdr-1.7.8/skins.c
--- vdr-1.7.7/skins.c	2008-02-17 12:31:09.000000000 +0100
+++ vdr-1.7.8/skins.c	2009-06-06 17:12:31.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: skins.c 2.0 2008/02/17 11:31:09 kls Exp $
+ * $Id: skins.c 2.1 2009/06/06 15:12:31 kls Exp $
  */
 
 #include "skins.h"
@@ -78,8 +78,9 @@
   tabs[3] = Tab3 ? tabs[2] + Tab3 : 0;
   tabs[4] = Tab4 ? tabs[3] + Tab4 : 0;
   tabs[5] = Tab5 ? tabs[4] + Tab5 : 0;
+  int AvgCharWidth = Setup.FontOsdSize * 3 / 5; // just an estimate
   for (int i = 1; i < MaxTabs; i++)
-      tabs[i] *= 12;//XXX average character width of font used for items - see also skincurses.c!!!
+      tabs[i] *= AvgCharWidth;
 }
 
 void cSkinDisplayMenu::Scroll(bool Up, bool Page)
diff -ruN vdr-1.7.7/svdrp.c vdr-1.7.8/svdrp.c
--- vdr-1.7.7/svdrp.c	2009-04-13 15:35:29.000000000 +0200
+++ vdr-1.7.8/svdrp.c	2009-06-06 16:03:55.000000000 +0200
@@ -10,7 +10,7 @@
  * and interact with the Video Disk Recorder - or write a full featured
  * graphical interface that sits on top of an SVDRP connection.
  *
- * $Id: svdrp.c 2.3 2009/04/13 13:35:29 kls Exp $
+ * $Id: svdrp.c 2.5 2009/06/06 14:03:55 kls Exp $
  */
 
 #include "svdrp.h"
@@ -739,7 +739,7 @@
      char *strtok_next;
      FileName = strtok_r(p, delim, &strtok_next);
      // image type:
-     char *Extension = strrchr(FileName, '.');
+     const char *Extension = strrchr(FileName, '.');
      if (Extension) {
         if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
            Jpeg = true;
@@ -798,16 +798,17 @@
      char RealFileName[PATH_MAX];
      if (FileName) {
         if (grabImageDir) {
-           cString s;
-           char *slash = strrchr(FileName, '/');
+           cString s(FileName);
+           FileName = s;
+           const char *slash = strrchr(FileName, '/');
            if (!slash) {
               s = AddDirectory(grabImageDir, FileName);
               FileName = s;
               }
            slash = strrchr(FileName, '/'); // there definitely is one
-           *slash = 0;
-           char *r = realpath(FileName, RealFileName);
-           *slash = '/';
+           cString t(s);
+           t.Truncate(slash - FileName);
+           char *r = realpath(t, RealFileName);
            if (!r) {
               LOG_ERROR_STR(FileName);
               Reply(501, "Invalid file name \"%s\"", FileName);
diff -ruN vdr-1.7.7/tools.c vdr-1.7.8/tools.c
--- vdr-1.7.7/tools.c	2009-01-16 15:29:08.000000000 +0100
+++ vdr-1.7.8/tools.c	2009-05-31 13:43:24.000000000 +0200
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: tools.c 2.2 2009/01/16 14:29:08 kls Exp $
+ * $Id: tools.c 2.3 2009/05/31 11:43:24 kls Exp $
  */
 
 #include "tools.h"
@@ -1473,16 +1473,18 @@
 
 int cUnbufferedFile::Close(void)
 {
-#ifdef USE_FADVISE
   if (fd >= 0) {
+#ifdef USE_FADVISE
      if (totwritten)    // if we wrote anything make sure the data has hit the disk before
         fdatasync(fd);  // calling fadvise, as this is our last chance to un-cache it.
      posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
-     }
 #endif
-  int OldFd = fd;
-  fd = -1;
-  return close(OldFd);
+     int OldFd = fd;
+     fd = -1;
+     return close(OldFd);
+     }
+  errno = EBADF;
+  return -1;
 }
 
 // When replaying and going e.g. FF->PLAY the position jumps back 2..8M
diff -ruN vdr-1.7.7/vdr.c vdr-1.7.8/vdr.c
--- vdr-1.7.7/vdr.c	2009-05-03 12:33:06.000000000 +0200
+++ vdr-1.7.8/vdr.c	2009-05-21 13:14:48.000000000 +0200
@@ -22,7 +22,7 @@
  *
  * The project's page is at http://www.cadsoft.de/vdr
  *
- * $Id: vdr.c 2.8 2009/05/03 10:33:06 kls Exp $
+ * $Id: vdr.c 2.10 2009/05/21 11:14:48 kls Exp $
  */
 
 #include <getopt.h>
@@ -750,8 +750,10 @@
         // Update the OSD size:
         {
           static time_t lastOsdSizeUpdate = 0;
-          if (Now != lastOsdSizeUpdate) // once per second
+          if (Now != lastOsdSizeUpdate) { // once per second
              cOsdProvider::UpdateOsdSize();
+             lastOsdSizeUpdate = Now;
+             }
         }
         // Restart the Watchdog timer:
         if (WatchdogTimeout > 0) {
@@ -1060,8 +1062,12 @@
           case kPause:
                if (!cControl::Control()) {
                   DELETE_MENU;
-                  if (!cRecordControls::PauseLiveVideo())
-                     Skins.Message(mtError, tr("No free DVB device to record!"));
+                  if (Setup.PauseKeyHandling) {
+                     if (Setup.PauseKeyHandling > 1 || Interface->Confirm(tr("Pause live video?"))) {
+                        if (!cRecordControls::PauseLiveVideo())
+                           Skins.Message(mtError, tr("No free DVB device to record!"));
+                        }
+                     }
                   key = kNone; // nobody else needs to see this key
                   }
                break;
