From 5a42f6b29fa46307c4b98e6f1fe1e4d1bf367fdc Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 5 Apr 2009 13:04:33 +0200 Subject: [PATCH] Fixed replay of TS recordings in case the index file is missing --- dvbplayer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dvbplayer.c b/dvbplayer.c index 69a434e3..9de0fca9 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 2.10 2009/04/05 12:29:27 kls Exp $ + * $Id: dvbplayer.c 2.11 2009/04/05 13:04:33 kls Exp $ */ #include "dvbplayer.h" @@ -456,7 +456,7 @@ void cDvbPlayer::Action(void) eof = true; } else // allows replay even if the index file is missing - Length = MAXFRAMESIZE; + Length = MAXFRAMESIZE / TS_SIZE * TS_SIZE;// FIXME: use a linear ringbuffer in this case, and fix cDevice::PlayPes() if (Length == -1) Length = MAXFRAMESIZE; // this means we read up to EOF (see cIndex) else if (Length > MAXFRAMESIZE) { @@ -470,11 +470,11 @@ void cDvbPlayer::Action(void) if (r > 0) { WaitingForData = false; uint32_t Pts = 0; - if (readIndependent) + if (readIndependent) { Pts = isPesRecording ? PesGetPts(b) : TsGetPts(b, r); - readFrame = new cFrame(b, -r, ftUnknown, readIndex, Pts); // hands over b to the ringBuffer - if (readIndependent) LastReadIFrame = readIndex; + } + readFrame = new cFrame(b, -r, ftUnknown, readIndex, Pts); // hands over b to the ringBuffer b = NULL; } else if (r == 0)