summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2005-08-29 15:45:38 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2005-08-29 15:45:38 +0200
commit3f73166049071f28bc44192b9eedc4f3021bb76d (patch)
tree1ec8fc525914277994d9a442f67f8fe7146fa4da
parent97b65c6645cc91a2067d6558b484d59edffb19cb (diff)
downloadvdr-3f73166049071f28bc44192b9eedc4f3021bb76d.tar.gz
vdr-3f73166049071f28bc44192b9eedc4f3021bb76d.tar.bz2
Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY2
-rw-r--r--dvbplayer.c7
3 files changed, 8 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index bf2df2fd..98a23c54 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -980,6 +980,7 @@ Reinhard Nissl <rnissl@gmx.de>
for modifying handling of audio packets for radio channels in remux.c
for suggesting to always use stream id 0xE0 for the video stream, to avoid problems
with post processing tools that choke on different ids
+ for fixing cDvbPlayer::SkipFrames() to properly handle radio recordings
Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the
diff --git a/HISTORY b/HISTORY
index f303f179..4f5cd93f 100644
--- a/HISTORY
+++ b/HISTORY
@@ -3757,3 +3757,5 @@ Video Disk Recorder Revision History
- Now always using stream id 0xE0 for the video stream, to avoid problems with
post processing tools that choke on different ids (suggested by Reinhard Nissl).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
+- Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings (thanks to
+ Reinhard Nissl).
diff --git a/dvbplayer.c b/dvbplayer.c
index e160697a..8f76ab6c 100644
--- a/dvbplayer.c
+++ b/dvbplayer.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbplayer.c 1.39 2005/08/28 21:14:04 kls Exp $
+ * $Id: dvbplayer.c 1.40 2005/08/29 15:43:30 kls Exp $
*/
#include "dvbplayer.h"
@@ -621,7 +621,10 @@ int cDvbPlayer::SkipFrames(int Frames)
int Current, Total;
GetIndex(Current, Total, true);
int OldCurrent = Current;
- Current = index->GetNextIFrame(Current + Frames, Frames > 0);
+ // As GetNextIFrame() increments/decrements at least once, the
+ // destination frame (= Current + Frames) must be adjusted by
+ // -1/+1 respectively.
+ Current = index->GetNextIFrame(Current + Frames + (Frames > 0 ? -1 : 1), Frames > 0);
return Current >= 0 ? Current : OldCurrent;
}
return -1;