On 27.12.2010 20:59, Torsten Kunkel wrote:
Hello,
I still have problems with my Tevii S470 with DVB-S2-channels. The problem (as already posted long ago at http://www.vdr-portal.de/board/thread.php?threadid=93713) is: The buffer runs full
buffer usage: 70% (tid=12493) buffer usage: 60% (tid=12493) buffer usage: 70% (tid=12493) buffer usage: 60% (tid=12493) buffer usage: 70% (tid=12493) buffer usage: 60% (tid=12493) buffer usage: 70% (tid=12493) buffer usage: 60% (tid=12493) buffer usage: 100% (tid=12493) ERROR: driver buffer overflow on device 2 ERROR: skipped 11 bytes to sync on TS packet on device 2
This repeats over and over again in a timeloop of about 2mins.
Remarkable for me is the fact, I can record any HD-channel without any problems and I even can watch this recording at once. In my oppinion this cannot be a problem with the S470, because I wouldn't be able to record anything.
I'm running vdr vdr-1.7.16 with latest xineliboutput (git) and latest xine-sources (hg). The system load is low (<5%) and the menue is smooth and this only happens with DVB-S2-channels.
This brings me to the question where is the difference between watching a channel and recording it?
When recording, the data is written to the disk, which usually works a lot faster than the incoming data rate.
In live mode, if the primary device doesn't receive the channel by itself (i.e. is not a Full Featured card), the data stream is conveyed from the receiving device to the primary (replaying) device in "Transfer Mode". The replaying device must consume the data at the same overall rate as it comes in from the receiving device. If the replaying device is "slower" than the incoming data stream, data will accumulate in some buffer, and eventually that buffer will run full.
So my guess is that your output device isn't working at the correct rate.
For testing this theory, you could make a recording of well known length and replay that, measuring the time with a stopwatch. If the replay takes longer than the recording, the theory is proven.
To rule out any differences in behavior between record/replay and Transfer Mode, you could try to find a channel that shows a clock, watch that channel in live mode and see if the clock runs slower than real time. In order to make sure the buffer doesn't overflow during that test, you could increase
tsBuffer = new cTSBuffer(fd_dvr, MEGABYTE(2), CardIndex() + 1);
in dvbdevice.c to like MEGABYTE(100) or even more (assuming this is the buffer that actually overflows).
If you have a commercial receiver, you could tune to the same channel with VDR and that receiver, and check whether the two live programmes always are in sync (a minor constant offset is ok), or drift apart.
Klaus