r2784 - in vdr/vdr/trunk/debian: . patches

Thomas Günther tom-guest at costa.debian.org
Mon May 15 13:11:13 UTC 2006


Author: tom-guest
Date: 2006-05-15 13:11:12 +0000 (Mon, 15 May 2006)
New Revision: 2784

Added:
   vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.8.dpatch
Removed:
   vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.7.dpatch
Modified:
   vdr/vdr/trunk/debian/changelog
   vdr/vdr/trunk/debian/patches/00list
Log:
Upgraded opt-24_jumpplay-0.7.dpatch to opt-24_jumpplay-0.8.dpatch

Modified: vdr/vdr/trunk/debian/changelog
===================================================================
--- vdr/vdr/trunk/debian/changelog	2006-05-15 12:58:48 UTC (rev 2783)
+++ vdr/vdr/trunk/debian/changelog	2006-05-15 13:11:12 UTC (rev 2784)
@@ -6,6 +6,7 @@
     - Fixed i18n texts for replay in 10_dd-record-option.dpatch
     - Upgraded 03_cmdsubmenu.dpatch to version 0.7 - fixes FTBFS with G++ 4.1:
       extra qualification (closes: #367360)
+    - Upgraded opt-24_jumpplay-0.7.dpatch to opt-24_jumpplay-0.8.dpatch
   * Thomas Schmidt <tschmidt at debian.org>
     - Fixed debian/watch
   

Modified: vdr/vdr/trunk/debian/patches/00list
===================================================================
--- vdr/vdr/trunk/debian/patches/00list	2006-05-15 12:58:48 UTC (rev 2783)
+++ vdr/vdr/trunk/debian/patches/00list	2006-05-15 13:11:12 UTC (rev 2784)
@@ -14,4 +14,4 @@
 # opt-21_subtitles_and_ttxtsubs
 
 # The Jump patch allows automatic jumping over cutting marks.
-# opt-24_jumpplay-0.7
+# opt-24_jumpplay-0.8

Deleted: vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.7.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.7.dpatch	2006-05-15 12:58:48 UTC (rev 2783)
+++ vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.7.dpatch	2006-05-15 13:11:12 UTC (rev 2784)
@@ -1,521 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## opt-24_jumpplay-0.7.dpatch by Torsten Kunkel <vdr at tkunkel.de>, Thomas Günther <tom at toms-cafe.de>
-## http://toms-cafe.de/vdr/download/vdr-jumpplay-0.7-1.3.46.diff (applicable to VDR >= 1.3.29)
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Play after jump to next mark. Automatically jump over commercial breaks.
-## DP: See README.jumpplay for details.
-
- at DPATCH@
-diff -Naur vdr-1.3.46/README.jumpplay vdr-1.3.46-jumpplay-0.7/README.jumpplay
---- vdr-1.3.46/README.jumpplay	1970-01-01 01:00:00.000000000 +0100
-+++ vdr-1.3.46-jumpplay-0.7/README.jumpplay	2006-04-14 15:27:59.000000000 +0200
-@@ -0,0 +1,96 @@
-+JumpPlay patch for VDR
-+----------------------
-+
-+This patch changes the replay behaviour for recordings that contain editing
-+marks. It allows to immediately continue the replay after jumping forward to
-+the next mark, and to automatically jump over the commercial break to the next
-+"start" mark, if an "end" mark is reached.
-+
-+The features of this patch can be turned on or off with the following entries
-+in the replay setup.
-+
-+
-+* Parameters in the "Setup" menu "Replay"
-+
-+  Jump&Play = yes|no     Turns playing on or off after jumping forward to the
-+                         next editing mark with the '9' key.
-+
-+  Play&Jump = yes|no     Turns automatic jumping over commercial breaks on or
-+                         off. This includes jumping to the first mark, if the
-+                         replay starts at the beginning of a recording - and
-+                         stopping the replay at the last mark.
-+                         With this setting enabled, the behaviour of the '8'
-+                         key during replay is changed too. It moves the actual
-+                         replay position not only three seconds before the
-+                         next "start" mark, but also before the next "end"
-+                         mark. This can be used to test, if the editing marks
-+                         are correctly positioned for a "smooth" jump over a
-+                         commercial break.
-+
-+  Load marks interval (s) = 0
-+                         Set the load marks interval in seconds. This can be
-+                         used if an external programme adjusts the cutting
-+                         marks, e.g. noad in online mode.
-+                         A value of '0' disables the cyclic reloading of
-+                         cutting marks.
-+
-+
-+* History
-+
-+  2003-07-04: jumpandrun.diff - the Noad <theNoad at SoftHome.net>
-+    Jump&Play
-+
-+  2003-12-06: Version 0.0 - Torsten Kunkel <vdr at tkunkel.de>
-+    Play&Jump (only if progressbar is visible)
-+    Setup parameters Jump&Play and Play&Jump in the replay setup
-+
-+  2004-01-20: Version 0.1 - Thomas Günther <tom at toms-cafe.de>
-+    Jump&Play:
-+      - fixed speed after jump
-+      - fixed removing of marks
-+    Play&Jump:
-+      - jump only on "end" marks
-+
-+  2004-01-27: Version 0.2 - Thomas Günther <tom at toms-cafe.de>
-+    Jump&Play:
-+      - fixed double jump
-+    Play&Jump:
-+      - fixed mark detection: fuzzy detection (until 3 seconds after mark)
-+      - jump without progressbar
-+      - mode "progressbar only" for old behaviour
-+
-+  2004-01-31: Version 0.3 - Thomas Günther <tom at toms-cafe.de>
-+    Jump&Play:
-+      - fixed display frames
-+    Play&Jump:
-+      - fixed end of playing at last mark
-+
-+  2004-07-11: Version 0.4 - Thomas Günther <tom at toms-cafe.de>
-+    Jump&Play:
-+      - don't play after jump to end
-+    Play&Jump:
-+      - don't prevent jumping after hide or show
-+    Less conflicts with other patches (Elchi/AutoPID)
-+
-+  2004-08-21: Version 0.5 - Thomas Günther <tom at toms-cafe.de>
-+    Play&Jump:
-+      - exact jumps, replay like edited recording (no fuzzy mark detection)
-+      - jump to first mark if replay starts at the beginning
-+      - check jump marks with '8' key
-+      - mode "progressbar only" removed
-+    Description in README.jumpplay
-+
-+  2004-12-28: Version 0.6 - Thomas Günther <tom at toms-cafe.de>
-+    Adapted noad extensions (from the Noad <theNoad at SoftHome.net>) to
-+    jumpplay-0.5:
-+      - cyclic reloading of marks found by noad online-scan
-+      - don't stop after the last mark in case of live-recordings
-+    New setup parameter "Load marks interval (s)"
-+    Updated description in README.jumpplay
-+
-+  2006-04-14: Version 0.7 - Thomas Günther <tom at toms-cafe.de>
-+    Fixed jump to first mark (crashed with plugin extrecmenu-0.9)
-+    Added version define JUMPPLAYVERSNUM
-+    Added placeholders for Czech language texts
-+    Cleaned up i18n entries (support only VDR >= 1.3.29)
-+    Improved description of i18n placeholders - hoping for real language texts
-diff -Naur vdr-1.3.46/config.c vdr-1.3.46-jumpplay-0.7/config.c
---- vdr-1.3.46/config.c	2006-04-09 14:12:01.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/config.c	2006-04-14 14:32:01.000000000 +0200
-@@ -268,6 +268,9 @@
-   MultiSpeedMode = 0;
-   ShowReplayMode = 0;
-   ResumeID = 0;
-+  JumpPlay = 0;
-+  PlayJump = 0;
-+  LoadMarksInterval = 0;
-   CurrentChannel = -1;
-   CurrentVolume = MAXVOLUME;
-   CurrentDolby = 0;
-@@ -429,6 +432,9 @@
-   else if (!strcasecmp(Name, "MultiSpeedMode"))      MultiSpeedMode     = atoi(Value);
-   else if (!strcasecmp(Name, "ShowReplayMode"))      ShowReplayMode     = atoi(Value);
-   else if (!strcasecmp(Name, "ResumeID"))            ResumeID           = atoi(Value);
-+  else if (!strcasecmp(Name, "JumpPlay"))            JumpPlay           = atoi(Value);
-+  else if (!strcasecmp(Name, "PlayJump"))            PlayJump           = atoi(Value);
-+  else if (!strcasecmp(Name, "LoadMarksInterval"))   LoadMarksInterval  = atoi(Value);
-   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
-   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
-   else if (!strcasecmp(Name, "CurrentDolby"))        CurrentDolby       = atoi(Value);
-@@ -497,6 +503,9 @@
-   Store("MultiSpeedMode",     MultiSpeedMode);
-   Store("ShowReplayMode",     ShowReplayMode);
-   Store("ResumeID",           ResumeID);
-+  Store("JumpPlay",           JumpPlay);
-+  Store("PlayJump",           PlayJump);
-+  Store("LoadMarksInterval",  LoadMarksInterval);
-   Store("CurrentChannel",     CurrentChannel);
-   Store("CurrentVolume",      CurrentVolume);
-   Store("CurrentDolby",       CurrentDolby);
-diff -Naur vdr-1.3.46/config.h vdr-1.3.46-jumpplay-0.7/config.h
---- vdr-1.3.46/config.h	2006-04-09 14:09:05.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/config.h	2006-04-14 14:32:01.000000000 +0200
-@@ -22,6 +22,8 @@
- #define VDRVERSION  "1.3.46"
- #define VDRVERSNUM   10346  // Version * 10000 + Major * 100 + Minor
- 
-+#define JUMPPLAYVERSNUM 7
-+
- #define MAXPRIORITY 99
- #define MAXLIFETIME 99
- 
-@@ -75,7 +77,7 @@
-   cConfig(void) { fileName = NULL; }
-   virtual ~cConfig() { free(fileName); }
-   const char *FileName(void) { return fileName; }
--  bool Load(const char *FileName = NULL, bool AllowComments = false, bool MustExist = false)
-+  bool Load(const char *FileName = NULL, bool AllowComments = false, bool MustExist = false, bool SupressMessage = false)
-   {
-     cConfig<T>::Clear();
-     if (FileName) {
-@@ -85,7 +87,8 @@
-        }
-     bool result = !MustExist;
-     if (fileName && access(fileName, F_OK) == 0) {
--       isyslog("loading %s", fileName);
-+       if (!SupressMessage)
-+         isyslog("loading %s", fileName);
-        FILE *f = fopen(fileName, "r");
-        if (f) {
-           char *s;
-@@ -234,6 +237,9 @@
-   int MultiSpeedMode;
-   int ShowReplayMode;
-   int ResumeID;
-+  int JumpPlay;
-+  int PlayJump;
-+  int LoadMarksInterval;
-   int CurrentChannel;
-   int CurrentVolume;
-   int CurrentDolby;
-diff -Naur vdr-1.3.46/dvbplayer.c vdr-1.3.46-jumpplay-0.7/dvbplayer.c
---- vdr-1.3.46/dvbplayer.c	2006-04-09 15:47:11.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/dvbplayer.c	2006-04-14 14:32:01.000000000 +0200
-@@ -193,6 +193,7 @@
-   cNonBlockingFileReader *nonBlockingFileReader;
-   cRingBufferFrame *ringBuffer;
-   cBackTrace *backTrace;
-+  cMarks *marks;
-   cFileName *fileName;
-   cIndexFile *index;
-   cUnbufferedFile *replayFile;
-@@ -213,7 +214,7 @@
-   virtual void Activate(bool On);
-   virtual void Action(void);
- public:
--  cDvbPlayer(const char *FileName);
-+  cDvbPlayer(const char *FileName, cMarks *Marks = NULL);
-   virtual ~cDvbPlayer();
-   bool Active(void) { return cThread::Running(); }
-   void Pause(void);
-@@ -233,7 +234,7 @@
- #define SPEED_MULT   12 // the speed multiplier
- int cDvbPlayer::Speeds[] = { 0, -2, -4, -8, 1, 2, 4, 12, 0 };
- 
--cDvbPlayer::cDvbPlayer(const char *FileName)
-+cDvbPlayer::cDvbPlayer(const char *FileName, cMarks *Marks)
- :cThread("dvbplayer")
- {
-   nonBlockingFileReader = NULL;
-@@ -263,6 +264,7 @@
-      index = NULL;
-      }
-   backTrace = new cBackTrace;
-+  marks = Marks;
- }
- 
- cDvbPlayer::~cDvbPlayer()
-@@ -368,11 +370,25 @@
-   uchar *b = NULL;
-   uchar *p = NULL;
-   int pc = 0;
-+  bool cutIn = false;
-+  int total = -1;
- 
-   readIndex = Resume();
-   if (readIndex >= 0)
-      isyslog("resuming replay at index %d (%s)", readIndex, *IndexToHMSF(readIndex, true));
- 
-+  if (Setup.PlayJump && marks && readIndex <= 0 && marks->First() && index) {
-+     int Index = marks->First()->position;
-+     uchar FileNumber;
-+     int FileOffset;
-+     if (index->Get(Index, &FileNumber, &FileOffset) &&
-+         NextFile(FileNumber, FileOffset)) {
-+        isyslog("PlayJump: start replay at first mark %d (%s)",
-+                Index, *IndexToHMSF(Index, true));
-+        readIndex = Index;
-+        }
-+     }
-+
-   nonBlockingFileReader = new cNonBlockingFileReader;
-   int Length = 0;
-   bool Sleep = false;
-@@ -430,6 +446,36 @@
-                        uchar FileNumber;
-                        int FileOffset;
-                        readIndex++;
-+                       if (Setup.PlayJump && marks) {
-+                          // check for end mark - jump to next start mark
-+                          cMark *m = marks->Get(readIndex);
-+                          if (m && (m->Index() & 0x01) != 0) {
-+                             m = marks->Next(m);
-+                             int Index;
-+                             if (m)
-+                                Index = m->position;
-+                             else if (total == index->Last())
-+                                // on last mark jump to end of recording
-+                                Index = index->Last() - 1;
-+                             else
-+                                // jump but stay off end of live-recordings
-+                                Index = index->GetNextIFrame(index->Last() - 150, true);
-+                             // don't jump in edited recordings
-+                             if (Index > readIndex &&
-+                                 Index > index->GetNextIFrame(readIndex, true)) {
-+                                isyslog("PlayJump: %d frames to %d (%s)",
-+                                        Index - readIndex, Index,
-+                                        *IndexToHMSF(Index, true));
-+                                readIndex = Index;
-+                                cutIn = true;
-+                                }
-+                             }
-+                          }
-+                       // for detecting growing length of live-recordings
-+                       uchar PictureType;
-+                       if (index->Get(readIndex, &FileNumber, &FileOffset, &PictureType) &&
-+                           PictureType == I_FRAME)
-+                          total = index->Last();
-                        if (!(index->Get(readIndex, &FileNumber, &FileOffset, NULL, &Length) && NextFile(FileNumber, FileOffset))) {
-                           readIndex = -1;
-                           eof = true;
-@@ -465,6 +511,10 @@
-               // Store the frame in the buffer:
- 
-               if (readFrame) {
-+                 if (cutIn) {
-+                    cRemux::SetBrokenLink(readFrame->Data(), readFrame->Count());
-+                    cutIn = false;
-+                    }
-                  if (ringBuffer->Put(readFrame))
-                     readFrame = NULL;
-                  }
-@@ -760,6 +810,11 @@
- {
- }
- 
-+cDvbPlayerControl::cDvbPlayerControl(const char *FileName, cMarks *Marks)
-+:cControl(player = new cDvbPlayer(FileName, Marks))
-+{
-+}
-+
- cDvbPlayerControl::~cDvbPlayerControl()
- {
-   Stop();
-diff -Naur vdr-1.3.46/dvbplayer.h vdr-1.3.46-jumpplay-0.7/dvbplayer.h
---- vdr-1.3.46/dvbplayer.h	2002-06-23 12:13:51.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/dvbplayer.h	2006-04-14 14:32:01.000000000 +0200
-@@ -20,6 +20,7 @@
-   cDvbPlayer *player;
- public:
-   cDvbPlayerControl(const char *FileName);
-+  cDvbPlayerControl(const char *FileName, cMarks *Marks);
-        // Sets up a player for the given file.
-   virtual ~cDvbPlayerControl();
-   bool Active(void);
-diff -Naur vdr-1.3.46/i18n.c vdr-1.3.46-jumpplay-0.7/i18n.c
---- vdr-1.3.46/i18n.c	2006-04-09 15:04:50.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/i18n.c	2006-04-14 15:18:17.000000000 +0200
-@@ -4316,6 +4316,78 @@
-     "Genoptagelses ID",
-     "ID obnovení",
-   },
-+  { "Setup.Replay$Jump&Play", // English
-+    "Wiedergabe nach Sprung", // Deutsch / German
-+    "", // Slovenski / Slovenian
-+    "", // Italiano / Italian
-+    "", // Nederlands / Dutch
-+    "", // Português / Portuguese
-+    "", // Français / French
-+    "", // Norsk / Norwegian
-+    "", // suomi / Finnish
-+    "", // Polski / Polish
-+    "", // Español / Spanish
-+    "", // ÅëëçíéêÜ / Greek
-+    "", // Svenska / Swedish
-+    "", // Românã / Romanian
-+    "", // Magyar / Hungarian
-+    "", // Català / Catalanian
-+    "", // ÀãááÚØÙ / Russian
-+    "", // Hrvatski / Croatian
-+    "", // Eesti / Estonian
-+    "", // Dansk / Danish
-+#if VDRVERSNUM >= 10342
-+    "", // Èesky / Czech
-+#endif
-+  },
-+  { "Setup.Replay$Play&Jump", // English
-+    "Sprung bei Schnittmarke", // Deutsch / German
-+    "", // Slovenski / Slovenian
-+    "", // Italiano / Italian
-+    "", // Nederlands / Dutch
-+    "", // Português / Portuguese
-+    "", // Français / French
-+    "", // Norsk / Norwegian
-+    "", // suomi / Finnish
-+    "", // Polski / Polish
-+    "", // Español / Spanish
-+    "", // ÅëëçíéêÜ / Greek
-+    "", // Svenska / Swedish
-+    "", // Românã / Romanian
-+    "", // Magyar / Hungarian
-+    "", // Català / Catalanian
-+    "", // ÀãááÚØÙ / Russian
-+    "", // Hrvatski / Croatian
-+    "", // Eesti / Estonian
-+    "", // Dansk / Danish
-+#if VDRVERSNUM >= 10342
-+    "", // Èesky / Czech
-+#endif
-+  },
-+  { "Setup.Replay$Load marks interval (s)", // English
-+    "Intervall für Laden der Marken (s)", // Deutsch / German
-+    "", // Slovenski / Slovenian
-+    "", // Italiano / Italian
-+    "", // Nederlands / Dutch
-+    "", // Português / Portuguese
-+    "", // Français / French
-+    "", // Norsk / Norwegian
-+    "", // suomi / Finnish
-+    "", // Polski / Polish
-+    "", // Español / Spanish
-+    "", // ÅëëçíéêÜ / Greek
-+    "", // Svenska / Swedish
-+    "", // Românã / Romanian
-+    "", // Magyar / Hungarian
-+    "", // Català / Catalanian
-+    "", // ÀãááÚØÙ / Russian
-+    "", // Hrvatski / Croatian
-+    "", // Eesti / Estonian
-+    "", // Dansk / Danish
-+#if VDRVERSNUM >= 10342
-+    "", // Èesky / Czech
-+#endif
-+  },
-   { "Setup.Miscellaneous$Min. event timeout (min)",
-     "Mindest Event Pause (min)",
-     "Najmanj¹i èas dogodka (min)",
-diff -Naur vdr-1.3.46/menu.c vdr-1.3.46-jumpplay-0.7/menu.c
---- vdr-1.3.46/menu.c	2006-04-09 16:29:24.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/menu.c	2006-04-14 14:32:01.000000000 +0200
-@@ -2564,6 +2564,9 @@
-   Add(new cMenuEditBoolItem(tr("Setup.Replay$Multi speed mode"), &data.MultiSpeedMode));
-   Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode));
-   Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
-+  Add(new cMenuEditBoolItem(tr("Setup.Replay$Jump&Play"), &data.JumpPlay));
-+  Add(new cMenuEditBoolItem(tr("Setup.Replay$Play&Jump"), &data.PlayJump));
-+  Add(new cMenuEditIntItem(tr("Setup.Replay$Load marks interval (s)"), &data.LoadMarksInterval));
- }
- 
- void cMenuSetupReplay::Store(void)
-@@ -3776,7 +3779,7 @@
- char *cReplayControl::title = NULL;
- 
- cReplayControl::cReplayControl(void)
--:cDvbPlayerControl(fileName)
-+:cDvbPlayerControl(fileName, &marks)
- {
-   displayReplay = NULL;
-   visible = modeOnly = shown = displayFrames = false;
-@@ -3786,6 +3789,7 @@
-   timeoutShow = 0;
-   timeSearchActive = false;
-   marks.Load(fileName);
-+  lastLoadMarks = time(NULL);
-   cRecording Recording(fileName);
-   cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
- }
-@@ -4003,8 +4007,10 @@
-         ShowTimed(2);
-         bool Play, Forward;
-         int Speed;
--        if (GetReplayMode(Play, Forward, Speed) && !Play)
-+        if (GetReplayMode(Play, Forward, Speed) && !Play) {
-            Goto(Current, true);
-+           displayFrames = true;
-+           }
-         }
-      marks.Save();
-      }
-@@ -4017,8 +4023,17 @@
-      if (GetIndex(Current, Total)) {
-         cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
-         if (m) {
--           Goto(m->position, true);
--           displayFrames = true;
-+           bool Play2, Forward2;
-+           int Speed;
-+           if (Setup.JumpPlay && GetReplayMode(Play2, Forward2, Speed) &&
-+               Play2 && Forward && m->position < Total - SecondsToFrames(3)) {
-+              Goto(m->position);
-+              Play();
-+              }
-+           else {
-+              Goto(m->position, true);
-+              displayFrames = true;
-+              }
-            }
-         }
-      }
-@@ -4073,7 +4088,7 @@
-      if (!m)
-         m = marks.GetNext(Current);
-      if (m) {
--        if ((m->Index() & 0x01) != 0)
-+        if ((m->Index() & 0x01) != 0 && !Setup.PlayJump)
-            m = marks.Next(m);
-         if (m) {
-            Goto(m->position - SecondsToFrames(3));
-@@ -4095,6 +4110,11 @@
- {
-   if (!Active())
-      return osEnd;
-+  if (Setup.LoadMarksInterval &&
-+      time(NULL) >= lastLoadMarks + Setup.LoadMarksInterval) {
-+     marks.Load(fileName, true);
-+     lastLoadMarks = time(NULL);
-+     }
-   if (visible) {
-      if (timeoutShow && time(NULL) > timeoutShow) {
-         Hide();
-diff -Naur vdr-1.3.46/menu.h vdr-1.3.46-jumpplay-0.7/menu.h
---- vdr-1.3.46/menu.h	2006-03-25 13:15:19.000000000 +0100
-+++ vdr-1.3.46-jumpplay-0.7/menu.h	2006-04-14 14:32:01.000000000 +0200
-@@ -227,6 +227,7 @@
-   bool lastPlay, lastForward;
-   int lastSpeed;
-   time_t timeoutShow;
-+  time_t lastLoadMarks;
-   bool timeSearchActive, timeSearchHide;
-   int timeSearchTime, timeSearchPos;
-   void TimeSearchDisplay(void);
-diff -Naur vdr-1.3.46/recording.c vdr-1.3.46-jumpplay-0.7/recording.c
---- vdr-1.3.46/recording.c	2006-04-09 15:49:51.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/recording.c	2006-04-14 14:32:01.000000000 +0200
-@@ -1062,9 +1062,10 @@
- 
- // --- cMarks ----------------------------------------------------------------
- 
--bool cMarks::Load(const char *RecordingFileName)
-+bool cMarks::Load(const char *RecordingFileName, bool SupressMessage)
- {
--  if (cConfig<cMark>::Load(AddDirectory(RecordingFileName, MARKSFILESUFFIX))) {
-+  if (cConfig<cMark>::Load(AddDirectory(RecordingFileName, MARKSFILESUFFIX),
-+                           false, false, SupressMessage)) {
-      Sort();
-      return true;
-      }
-diff -Naur vdr-1.3.46/recording.h vdr-1.3.46-jumpplay-0.7/recording.h
---- vdr-1.3.46/recording.h	2006-04-09 15:47:11.000000000 +0200
-+++ vdr-1.3.46-jumpplay-0.7/recording.h	2006-04-14 14:32:01.000000000 +0200
-@@ -154,7 +154,7 @@
- 
- class cMarks : public cConfig<cMark> {
- public:
--  bool Load(const char *RecordingFileName);
-+  bool Load(const char *RecordingFileName,bool SupressMessage = false);
-   void Sort(void);
-   cMark *Add(int Position);
-   cMark *Get(int Position);

Added: vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.8.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.8.dpatch	2006-05-15 12:58:48 UTC (rev 2783)
+++ vdr/vdr/trunk/debian/patches/opt-24_jumpplay-0.8.dpatch	2006-05-15 13:11:12 UTC (rev 2784)
@@ -0,0 +1,515 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-24_jumpplay-0.8.dpatch by Torsten Kunkel <vdr at tkunkel.de>, Thomas Günther <tom at toms-cafe.de>
+## http://toms-cafe.de/vdr/download/vdr-jumpplay-0.8-1.4.0.diff (applicable to VDR >= 1.3.29)
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Play after jump to next mark. Automatically jump over commercial breaks.
+## DP: See README.jumpplay for details.
+
+ at DPATCH@
+diff -Naur vdr-1.4.0/README.jumpplay vdr-1.4.0-jumpplay-0.8/README.jumpplay
+--- vdr-1.4.0/README.jumpplay	1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.0-jumpplay-0.8/README.jumpplay	2006-05-12 22:31:36.000000000 +0200
+@@ -0,0 +1,104 @@
++JumpPlay patch for VDR
++----------------------
++
++This patch changes the replay behaviour for recordings that contain editing
++marks. It allows to immediately continue the replay after jumping forward to
++the next mark, and to automatically jump over the commercial break to the next
++"start" mark, if an "end" mark is reached.
++
++The features of this patch can be turned on or off with the following entries
++in the replay setup.
++
++
++* Parameters in the "Setup" menu "Replay"
++
++  Jump&Play = yes|no     Turns playing on or off after jumping forward to the
++                         next editing mark with the '9' key.
++
++  Play&Jump = yes|no     Turns automatic jumping over commercial breaks on or
++                         off. This includes jumping to the first mark, if the
++                         replay starts at the beginning of a recording - and
++                         stopping the replay at the last mark.
++                         With this setting enabled, the behaviour of the '8'
++                         key during replay is changed too. It moves the actual
++                         replay position not only three seconds before the
++                         next "start" mark, but also before the next "end"
++                         mark. This can be used to test, if the editing marks
++                         are correctly positioned for a "smooth" jump over a
++                         commercial break.
++
++  Reload marks = yes|no  Turns reloading of cutting marks on or off. This can
++                         be used if an external programme adjusts the cutting
++                         marks, e.g. noad in online mode. The marks are reloaded
++                         in 10 seconds intervals.
++
++
++* History
++
++  2003-07-04: jumpandrun.diff - the Noad <theNoad at SoftHome.net>
++    Jump&Play
++
++  2003-12-06: Version 0.0 - Torsten Kunkel <vdr at tkunkel.de>
++    Play&Jump (only if progressbar is visible)
++    Setup parameters Jump&Play and Play&Jump in the replay setup
++
++  2004-01-20: Version 0.1 - Thomas Günther <tom at toms-cafe.de>
++    Jump&Play:
++      - fixed speed after jump
++      - fixed removing of marks
++    Play&Jump:
++      - jump only on "end" marks
++
++  2004-01-27: Version 0.2 - Thomas Günther <tom at toms-cafe.de>
++    Jump&Play:
++      - fixed double jump
++    Play&Jump:
++      - fixed mark detection: fuzzy detection (until 3 seconds after mark)
++      - jump without progressbar
++      - mode "progressbar only" for old behaviour
++
++  2004-01-31: Version 0.3 - Thomas Günther <tom at toms-cafe.de>
++    Jump&Play:
++      - fixed display frames
++    Play&Jump:
++      - fixed end of playing at last mark
++
++  2004-07-11: Version 0.4 - Thomas Günther <tom at toms-cafe.de>
++    Jump&Play:
++      - don't play after jump to end
++    Play&Jump:
++      - don't prevent jumping after hide or show
++    Less conflicts with other patches (Elchi/AutoPID)
++
++  2004-08-21: Version 0.5 - Thomas Günther <tom at toms-cafe.de>
++    Play&Jump:
++      - exact jumps, replay like edited recording (no fuzzy mark detection)
++      - jump to first mark if replay starts at the beginning
++      - check jump marks with '8' key
++      - mode "progressbar only" removed
++    Description in README.jumpplay
++
++  2004-12-28: Version 0.6 - Thomas Günther <tom at toms-cafe.de>
++    Adapted noad extensions (from the Noad <theNoad at SoftHome.net>) to
++    jumpplay-0.5:
++      - cyclic reloading of marks found by noad online-scan
++      - don't stop after the last mark in case of live-recordings
++    New setup parameter "Load marks interval (s)"
++    Updated description in README.jumpplay
++
++  2006-04-14: Version 0.7 - Thomas Günther <tom at toms-cafe.de>
++    Fixed jump to first mark (crashed with plugin extrecmenu-0.9)
++    Added version define JUMPPLAYVERSNUM
++    Added placeholders for Czech language texts
++    Cleaned up i18n entries (support only VDR >= 1.3.29)
++    Improved description of i18n placeholders - hoping for real language texts
++
++  2006-05-12: Version 0.8 - Thomas Günther <tom at toms-cafe.de>
++    Fixed segfault in dvbplayer thread while the replaycontrol thread is
++    reloading the marks (thanks to horchi at vdrprtal.de for reporting this -
++    see http://vdrportal.de/board/thread.php?postid=450463#post450463):
++    New class cMarksReload checks the timestamp of marks.vdr in 10 seconds
++    intervals, so the marks in the threads dvbplayer and replaycontrol can be
++    reloaded independently
++    Changed setup parameter "Load marks interval (s)" to "Reload marks"
++    Updated description in README.jumpplay
+diff -Naur vdr-1.4.0/config.c vdr-1.4.0-jumpplay-0.8/config.c
+--- vdr-1.4.0/config.c	2006-04-17 14:43:57.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/config.c	2006-05-12 22:31:36.000000000 +0200
+@@ -268,6 +268,9 @@
+   MultiSpeedMode = 0;
+   ShowReplayMode = 0;
+   ResumeID = 0;
++  JumpPlay = 0;
++  PlayJump = 0;
++  ReloadMarks = 0;
+   CurrentChannel = -1;
+   CurrentVolume = MAXVOLUME;
+   CurrentDolby = 0;
+@@ -429,6 +432,9 @@
+   else if (!strcasecmp(Name, "MultiSpeedMode"))      MultiSpeedMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ShowReplayMode"))      ShowReplayMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ResumeID"))            ResumeID           = atoi(Value);
++  else if (!strcasecmp(Name, "JumpPlay"))            JumpPlay           = atoi(Value);
++  else if (!strcasecmp(Name, "PlayJump"))            PlayJump           = atoi(Value);
++  else if (!strcasecmp(Name, "ReloadMarks"))         ReloadMarks        = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentDolby"))        CurrentDolby       = atoi(Value);
+@@ -497,6 +503,9 @@
+   Store("MultiSpeedMode",     MultiSpeedMode);
+   Store("ShowReplayMode",     ShowReplayMode);
+   Store("ResumeID",           ResumeID);
++  Store("JumpPlay",           JumpPlay);
++  Store("PlayJump",           PlayJump);
++  Store("ReloadMarks",        ReloadMarks);
+   Store("CurrentChannel",     CurrentChannel);
+   Store("CurrentVolume",      CurrentVolume);
+   Store("CurrentDolby",       CurrentDolby);
+diff -Naur vdr-1.4.0/config.h vdr-1.4.0-jumpplay-0.8/config.h
+--- vdr-1.4.0/config.h	2006-04-29 11:24:07.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/config.h	2006-05-12 22:31:36.000000000 +0200
+@@ -35,6 +35,8 @@
+ // plugins to work with newer versions of the core VDR as long as no
+ // VDR header files have changed.
+ 
++#define JUMPPLAYVERSNUM 8
++
+ #define MAXPRIORITY 99
+ #define MAXLIFETIME 99
+ 
+@@ -247,6 +249,9 @@
+   int MultiSpeedMode;
+   int ShowReplayMode;
+   int ResumeID;
++  int JumpPlay;
++  int PlayJump;
++  int ReloadMarks;
+   int CurrentChannel;
+   int CurrentVolume;
+   int CurrentDolby;
+diff -Naur vdr-1.4.0/dvbplayer.c vdr-1.4.0-jumpplay-0.8/dvbplayer.c
+--- vdr-1.4.0/dvbplayer.c	2006-04-17 14:45:48.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/dvbplayer.c	2006-05-12 22:31:36.000000000 +0200
+@@ -193,6 +193,7 @@
+   cNonBlockingFileReader *nonBlockingFileReader;
+   cRingBufferFrame *ringBuffer;
+   cBackTrace *backTrace;
++  cMarksReload marks;
+   cFileName *fileName;
+   cIndexFile *index;
+   cUnbufferedFile *replayFile;
+@@ -234,7 +235,7 @@
+ int cDvbPlayer::Speeds[] = { 0, -2, -4, -8, 1, 2, 4, 12, 0 };
+ 
+ cDvbPlayer::cDvbPlayer(const char *FileName)
+-:cThread("dvbplayer")
++:cThread("dvbplayer"), marks(FileName)
+ {
+   nonBlockingFileReader = NULL;
+   ringBuffer = NULL;
+@@ -368,11 +369,25 @@
+   uchar *b = NULL;
+   uchar *p = NULL;
+   int pc = 0;
++  bool cutIn = false;
++  int total = -1;
+ 
+   readIndex = Resume();
+   if (readIndex >= 0)
+      isyslog("resuming replay at index %d (%s)", readIndex, *IndexToHMSF(readIndex, true));
+ 
++  if (Setup.PlayJump && readIndex <= 0 && marks.First() && index) {
++     int Index = marks.First()->position;
++     uchar FileNumber;
++     int FileOffset;
++     if (index->Get(Index, &FileNumber, &FileOffset) &&
++         NextFile(FileNumber, FileOffset)) {
++        isyslog("PlayJump: start replay at first mark %d (%s)",
++                Index, *IndexToHMSF(Index, true));
++        readIndex = Index;
++        }
++     }
++
+   nonBlockingFileReader = new cNonBlockingFileReader;
+   int Length = 0;
+   bool Sleep = false;
+@@ -430,6 +445,37 @@
+                        uchar FileNumber;
+                        int FileOffset;
+                        readIndex++;
++                       if (Setup.PlayJump) {
++                          // check for end mark - jump to next start mark
++                          marks.Reload();
++                          cMark *m = marks.Get(readIndex);
++                          if (m && (m->Index() & 0x01) != 0) {
++                             m = marks.Next(m);
++                             int Index;
++                             if (m)
++                                Index = m->position;
++                             else if (total == index->Last())
++                                // on last mark jump to end of recording
++                                Index = index->Last() - 1;
++                             else
++                                // jump but stay off end of live-recordings
++                                Index = index->GetNextIFrame(index->Last() - 150, true);
++                             // don't jump in edited recordings
++                             if (Index > readIndex &&
++                                 Index > index->GetNextIFrame(readIndex, true)) {
++                                isyslog("PlayJump: %d frames to %d (%s)",
++                                        Index - readIndex, Index,
++                                        *IndexToHMSF(Index, true));
++                                readIndex = Index;
++                                cutIn = true;
++                                }
++                             }
++                          }
++                       // for detecting growing length of live-recordings
++                       uchar PictureType;
++                       if (index->Get(readIndex, &FileNumber, &FileOffset, &PictureType) &&
++                           PictureType == I_FRAME)
++                          total = index->Last();
+                        if (!(index->Get(readIndex, &FileNumber, &FileOffset, NULL, &Length) && NextFile(FileNumber, FileOffset))) {
+                           readIndex = -1;
+                           eof = true;
+@@ -465,6 +511,10 @@
+               // Store the frame in the buffer:
+ 
+               if (readFrame) {
++                 if (cutIn) {
++                    cRemux::SetBrokenLink(readFrame->Data(), readFrame->Count());
++                    cutIn = false;
++                    }
+                  if (ringBuffer->Put(readFrame))
+                     readFrame = NULL;
+                  }
+diff -Naur vdr-1.4.0/i18n.c vdr-1.4.0-jumpplay-0.8/i18n.c
+--- vdr-1.4.0/i18n.c	2006-04-30 10:51:10.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/i18n.c	2006-05-12 22:31:36.000000000 +0200
+@@ -4382,6 +4382,78 @@
+     "Genoptagelses ID",
+     "ID obnovení",
+   },
++  { "Setup.Replay$Jump&Play", // English
++    "Wiedergabe nach Sprung", // Deutsch / German
++    "", // Slovenski / Slovenian
++    "", // Italiano / Italian
++    "", // Nederlands / Dutch
++    "", // Português / Portuguese
++    "", // Français / French
++    "", // Norsk / Norwegian
++    "", // suomi / Finnish
++    "", // Polski / Polish
++    "", // Español / Spanish
++    "", // ÅëëçíéêÜ / Greek
++    "", // Svenska / Swedish
++    "", // Românã / Romanian
++    "", // Magyar / Hungarian
++    "", // Català / Catalanian
++    "", // ÀãááÚØÙ / Russian
++    "", // Hrvatski / Croatian
++    "", // Eesti / Estonian
++    "", // Dansk / Danish
++#if VDRVERSNUM >= 10342
++    "", // Èesky / Czech
++#endif
++  },
++  { "Setup.Replay$Play&Jump", // English
++    "Sprung bei Schnittmarke", // Deutsch / German
++    "", // Slovenski / Slovenian
++    "", // Italiano / Italian
++    "", // Nederlands / Dutch
++    "", // Português / Portuguese
++    "", // Français / French
++    "", // Norsk / Norwegian
++    "", // suomi / Finnish
++    "", // Polski / Polish
++    "", // Español / Spanish
++    "", // ÅëëçíéêÜ / Greek
++    "", // Svenska / Swedish
++    "", // Românã / Romanian
++    "", // Magyar / Hungarian
++    "", // Català / Catalanian
++    "", // ÀãááÚØÙ / Russian
++    "", // Hrvatski / Croatian
++    "", // Eesti / Estonian
++    "", // Dansk / Danish
++#if VDRVERSNUM >= 10342
++    "", // Èesky / Czech
++#endif
++  },
++  { "Setup.Replay$Reload marks", // English
++    "Marken aktualisieren", // Deutsch / German
++    "", // Slovenski / Slovenian
++    "", // Italiano / Italian
++    "", // Nederlands / Dutch
++    "", // Português / Portuguese
++    "", // Français / French
++    "", // Norsk / Norwegian
++    "", // suomi / Finnish
++    "", // Polski / Polish
++    "", // Español / Spanish
++    "", // ÅëëçíéêÜ / Greek
++    "", // Svenska / Swedish
++    "", // Românã / Romanian
++    "", // Magyar / Hungarian
++    "", // Català / Catalanian
++    "", // ÀãááÚØÙ / Russian
++    "", // Hrvatski / Croatian
++    "", // Eesti / Estonian
++    "", // Dansk / Danish
++#if VDRVERSNUM >= 10342
++    "", // Èesky / Czech
++#endif
++  },
+   { "Setup.Miscellaneous$Min. event timeout (min)",
+     "Brückenzeit zwischen Timern (min)",
+     "Najmanj¹i èas dogodka (min)",
+diff -Naur vdr-1.4.0/menu.c vdr-1.4.0-jumpplay-0.8/menu.c
+--- vdr-1.4.0/menu.c	2006-04-28 14:48:01.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/menu.c	2006-05-12 22:31:36.000000000 +0200
+@@ -2570,6 +2570,9 @@
+   Add(new cMenuEditBoolItem(tr("Setup.Replay$Multi speed mode"), &data.MultiSpeedMode));
+   Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode));
+   Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
++  Add(new cMenuEditBoolItem(tr("Setup.Replay$Jump&Play"), &data.JumpPlay));
++  Add(new cMenuEditBoolItem(tr("Setup.Replay$Play&Jump"), &data.PlayJump));
++  Add(new cMenuEditBoolItem(tr("Setup.Replay$Reload marks"), &data.ReloadMarks));
+ }
+ 
+ void cMenuSetupReplay::Store(void)
+@@ -3790,7 +3793,7 @@
+ char *cReplayControl::title = NULL;
+ 
+ cReplayControl::cReplayControl(void)
+-:cDvbPlayerControl(fileName)
++:cDvbPlayerControl(fileName), marks(fileName)
+ {
+   displayReplay = NULL;
+   visible = modeOnly = shown = displayFrames = false;
+@@ -3799,7 +3802,6 @@
+   lastSpeed = -1;
+   timeoutShow = 0;
+   timeSearchActive = false;
+-  marks.Load(fileName);
+   cRecording Recording(fileName);
+   cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
+   SetTrackDescriptions(false);
+@@ -4018,8 +4020,10 @@
+         ShowTimed(2);
+         bool Play, Forward;
+         int Speed;
+-        if (GetReplayMode(Play, Forward, Speed) && !Play)
++        if (GetReplayMode(Play, Forward, Speed) && !Play) {
+            Goto(Current, true);
++           displayFrames = true;
++           }
+         }
+      marks.Save();
+      }
+@@ -4032,8 +4036,17 @@
+      if (GetIndex(Current, Total)) {
+         cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
+         if (m) {
+-           Goto(m->position, true);
+-           displayFrames = true;
++           bool Play2, Forward2;
++           int Speed;
++           if (Setup.JumpPlay && GetReplayMode(Play2, Forward2, Speed) &&
++               Play2 && Forward && m->position < Total - SecondsToFrames(3)) {
++              Goto(m->position);
++              Play();
++              }
++           else {
++              Goto(m->position, true);
++              displayFrames = true;
++              }
+            }
+         }
+      }
+@@ -4088,7 +4101,7 @@
+      if (!m)
+         m = marks.GetNext(Current);
+      if (m) {
+-        if ((m->Index() & 0x01) != 0)
++        if ((m->Index() & 0x01) != 0 && !Setup.PlayJump)
+            m = marks.Next(m);
+         if (m) {
+            Goto(m->position - SecondsToFrames(3));
+@@ -4110,6 +4123,7 @@
+ {
+   if (!Active())
+      return osEnd;
++  marks.Reload();
+   if (visible) {
+      if (timeoutShow && time(NULL) > timeoutShow) {
+         Hide();
+diff -Naur vdr-1.4.0/menu.h vdr-1.4.0-jumpplay-0.8/menu.h
+--- vdr-1.4.0/menu.h	2006-03-25 13:15:19.000000000 +0100
++++ vdr-1.4.0-jumpplay-0.8/menu.h	2006-05-12 22:31:36.000000000 +0200
+@@ -221,7 +221,7 @@
+ class cReplayControl : public cDvbPlayerControl {
+ private:
+   cSkinDisplayReplay *displayReplay;
+-  cMarks marks;
++  cMarksReload marks;
+   bool visible, modeOnly, shown, displayFrames;
+   int lastCurrent, lastTotal;
+   bool lastPlay, lastForward;
+diff -Naur vdr-1.4.0/recording.c vdr-1.4.0-jumpplay-0.8/recording.c
+--- vdr-1.4.0/recording.c	2006-04-29 15:22:20.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/recording.c	2006-05-12 22:31:36.000000000 +0200
+@@ -1123,6 +1123,49 @@
+   return NULL;
+ }
+ 
++// --- cMarksReload ----------------------------------------------------------
++
++#define MARKS_RELOAD_MS 10000
++
++time_t cMarksReload::lastsavetime = 0;
++
++cMarksReload::cMarksReload(const char *RecordingFileName)
++:recDir(RecordingFileName)
++{
++  struct stat sbuf;
++  if (Load(recDir) && stat(FileName(), &sbuf) == 0)
++     lastmodtime = sbuf.st_mtime;
++  else
++     lastmodtime = 0;
++  nextreload.Set(MARKS_RELOAD_MS - cTimeMs::Now() % MARKS_RELOAD_MS);
++}
++
++bool cMarksReload::Reload(void)
++{
++  // Check the timestamp of marks.vdr in 10 seconds intervals
++  // Independent but synchronized reloading of marks in two threads
++  if ((Setup.ReloadMarks && nextreload.TimedOut()) ||
++      lastsavetime > lastmodtime) {
++     nextreload.Set(MARKS_RELOAD_MS - cTimeMs::Now() % MARKS_RELOAD_MS);
++     struct stat sbuf;
++     if (stat(FileName(), &sbuf) == 0 && sbuf.st_mtime != lastmodtime) {
++        lastmodtime = sbuf.st_mtime;
++        if (Load(recDir))
++           return true;
++        }
++     }
++  return false;
++}
++
++bool cMarksReload::Save(void)
++{
++  bool ok = cMarks::Save();
++  struct stat sbuf;
++  if (ok && stat(FileName(), &sbuf) == 0)
++     lastsavetime = lastmodtime = sbuf.st_mtime;
++  return ok;
++}
++
+ // --- cRecordingUserCommand -------------------------------------------------
+ 
+ const char *cRecordingUserCommand::command = NULL;
+diff -Naur vdr-1.4.0/recording.h vdr-1.4.0-jumpplay-0.8/recording.h
+--- vdr-1.4.0/recording.h	2006-04-09 15:47:11.000000000 +0200
++++ vdr-1.4.0-jumpplay-0.8/recording.h	2006-05-12 22:31:36.000000000 +0200
+@@ -162,6 +162,18 @@
+   cMark *GetNext(int Position);
+   };
+ 
++class cMarksReload : public cMarks {
++private:
++  cString recDir;
++  cTimeMs nextreload;
++  time_t lastmodtime;
++  static time_t lastsavetime;
++public:
++  cMarksReload(const char *RecordingFileName);
++  bool Reload(void);
++  bool Save(void);
++  };
++
+ #define RUC_BEFORERECORDING "before"
+ #define RUC_AFTERRECORDING  "after"
+ #define RUC_EDITEDRECORDING "edited"




More information about the pkg-vdr-dvb-changes mailing list