[vdr] Architecture difference between recording and viewing?

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Tue Dec 28 11:36:09 CET 2010


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



More information about the vdr mailing list