Fixed cDvbPlayer::SkipFrames() to properly handle radio recordings

This commit is contained in:
Klaus Schmidinger 2005-08-29 15:45:38 +02:00
parent 97b65c6645
commit 3f73166049
3 changed files with 8 additions and 2 deletions

View File

@ -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

View File

@ -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).

View File

@ -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;