diff -Naur vdr-1.2.6.orig/config.c vdr-1.2.6/config.c --- vdr-1.2.6.orig/config.c Fri Oct 17 16:11:27 2003 +++ vdr-1.2.6/config.c Sat Jan 31 13:58:12 2004 @@ -287,6 +287,8 @@ memset(CaCaps, sizeof(CaCaps), 0); CurrentChannel = -1; CurrentVolume = MAXVOLUME; + JumpPlay=0; + PlayJump=0; } cSetup& cSetup::operator= (const cSetup &s) @@ -439,6 +441,8 @@ else if (!strcasecmp(Name, "CaCaps")) return ParseCaCaps(Value); else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value); else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value); + else if (!strcasecmp(Name, "JumpPlay")) JumpPlay = atoi(Value); + else if (!strcasecmp(Name, "PlayJump")) PlayJump = atoi(Value); else return false; return true; @@ -489,6 +493,8 @@ StoreCaCaps("CaCaps"); Store("CurrentChannel", CurrentChannel); Store("CurrentVolume", CurrentVolume); + Store("JumpPlay", JumpPlay); + Store("PlayJump", PlayJump); Sort(); diff -Naur vdr-1.2.6.orig/config.h vdr-1.2.6/config.h --- vdr-1.2.6.orig/config.h Fri Nov 14 14:29:13 2003 +++ vdr-1.2.6/config.h Sat Jan 31 13:58:12 2004 @@ -240,6 +240,8 @@ int CaCaps[MAXDEVICES][MAXCACAPS]; int CurrentChannel; int CurrentVolume; + int JumpPlay; + int PlayJump; int __EndData__; cSetup(void); cSetup& operator= (const cSetup &s); diff -Naur vdr-1.2.6.orig/i18n.c vdr-1.2.6/i18n.c --- vdr-1.2.6.orig/i18n.c Thu Sep 11 15:51:56 2003 +++ vdr-1.2.6/i18n.c Sat Jan 31 13:58:12 2004 @@ -3739,6 +3739,57 @@ "Ennek a plugin-nak nincs setup-parametere!", "Aquest plugin no admet configuració!", }, + { "Setup.Replay$Play&Jump", + "Sprung bei Schnittmarke", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.Replay$Jump&Play", + "Play nach Sprung", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "progressbar only", + "nur bei Anzeige", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, { NULL } }; diff -Naur vdr-1.2.6.orig/menu.c vdr-1.2.6/menu.c --- vdr-1.2.6.orig/menu.c Fri Oct 3 16:36:20 2003 +++ vdr-1.2.6/menu.c Sat Jan 31 13:59:29 2004 @@ -2238,10 +2238,17 @@ cMenuSetupReplay::cMenuSetupReplay(void) { + static const char *playjumpStr[3]; + playjumpStr[0]=tr("no"); + playjumpStr[1]=tr("yes"); + playjumpStr[2]=tr("progressbar only"); + SetSection(tr("Replay")); 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 cMenuEditStraItem(tr("Setup.Replay$Play&Jump"), &data.PlayJump, 3, playjumpStr)); } // --- cMenuSetupMisc -------------------------------------------------------- @@ -3283,6 +3290,7 @@ :cDvbPlayerControl(fileName) { visible = modeOnly = shown = displayFrames = false; + playjump = true; lastCurrent = lastTotal = -1; timeoutShow = 0; timeSearchActive = false; @@ -3534,8 +3542,12 @@ ShowTimed(2); bool Play, Forward; int Speed; - if (GetReplayMode(Play, Forward, Speed) && !Play) - Goto(Current, true); + if (GetReplayMode(Play, Forward, Speed) && + (!Play || (Setup.PlayJump && Forward && Speed == -1))) { + Goto(Current, !Play); + if (!Play) + displayFrames = true; + } } marks.Save(); } @@ -3547,10 +3559,20 @@ int Current, Total; if (GetIndex(Current, Total)) { cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current); - if (m) - Goto(m->position, true); + if (m) { + bool Play2, Forward2; + int Speed; + if (Setup.JumpPlay && GetReplayMode(Play2, Forward2, Speed) && + Play2 && Forward) { + Goto(m->position); + Play(); + } + else { + Goto(m->position, true); + displayFrames = true; + } + } } - displayFrames = true; } } @@ -3628,6 +3650,30 @@ else shown = ShowProgress(!shown) || shown; } + if (marks.Count() && Setup.PlayJump && + (Setup.PlayJump != 2 || (visible && !modeOnly))) { + int Current, Total, Speed; + bool Play, Forward; + if (GetIndex(Current, Total) && Total > 0 && + GetReplayMode(Play, Forward, Speed) && Play && Forward && Speed == -1) { + cMark *m = marks.GetPrev(Current + 1); + if (m && m->Index() & 1 && Current - m->position < 3 * FRAMESPERSEC) { + if (playjump) { + if (marks.GetNext(Current)) + Goto(marks.GetNext(Current)->position); + else { + Hide(); + Stop(); + return osEnd; + } + } + } + else + playjump = true; + } + } + if (Key != kNone) + playjump = false; bool DisplayedFrames = displayFrames; displayFrames = false; if (timeSearchActive && Key != kNone) { diff -Naur vdr-1.2.6.orig/menu.h vdr-1.2.6/menu.h --- vdr-1.2.6.orig/menu.h Sun Aug 3 11:37:18 2003 +++ vdr-1.2.6/menu.h Sat Jan 31 13:58:12 2004 @@ -149,6 +149,7 @@ private: cMarks marks; bool visible, modeOnly, shown, displayFrames; + bool playjump; int lastCurrent, lastTotal; time_t timeoutShow; bool timeSearchActive, timeSearchHide;