Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] VDR - doesn't play the last seconds of a recording



Hi Klaus,

I don't know if somebody else observed it yet:

This happens always with my system when the recording switches to a new file:

Jan 31 02:26:05 ikarus vdr[1142]: buffer usage: 79%
Jan 31 02:26:05 ikarus last message repeated 5 times
Jan 31 02:26:05 ikarus vdr[1142]: buffer usage: 80%
Jan 31 02:26:06 ikarus last message repeated 3 times
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 82%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 83%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 85%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 86%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 88%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 90%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 91%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 93%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 94%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 96%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 97%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 99%
Jan 31 02:26:06 ikarus vdr[1142]: buffer usage: 100%
Jan 31 02:36:58 ikarus vdr[1141]: recording to '/video0/Buffy_-_Im_Bann_der_D.monen/2002-01-31.01:10.50.99.rec/005.vdr'
Jan 31 02:43:51 ikarus vdr[1141]: ERROR: can't record MPEG1!
Jan 31 02:57:40 ikarus -- MARK --
Jan 31 02:58:41 ikarus vdr[1141]: recording to '/video0/Buffy_-_Im_Bann_der_D.monen/2002-01-31.01:10.50.99.rec/006.vdr'                                         

This points at problems writing the data to disk fast enought. (This is
with DMA on, if DMA is off this will cause even VDR to quit recording).

My fix for that was to raise VIDEOBUFSIZE in
dvbapi.c:line54 to MEGABYTE(4)

Now there is a strange effect. The system would finish replaying a file
already approx. 10 seconds before the file end (checked with OSD replay display
on). It apeares that the ouput thread is finished when the input thread has no
more data to read.

To fix it I used a seperate buffer size definition for replaying:
dvbapi.c:line55
#define PLAYBUFSIZE = KILOBYTE(128)

dvbapi.c:line747
cPlayBuffer::cPlayBuffer(cDvbApi *DvbApi, int VideoDev, int AudioDev)
:cRingBufferFrame(PLAYBUFSIZE)

This reduces the unplayable rest of the recording now to <0.5 seconds.
The better way would be of cause to play until the output thead has emptied the
buffer before finishing replaying.

regards	Peter Dittmann <Peter.Dittmann@freenet.de>

--------------------------
+ VDR-0.99pre3 + EIT fix
+ kernel 2.4.0 (Suse 7.1)
+ P2/300MHz/256MB



Home | Main Index | Thread Index