Mailing List archive

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

[vdr] Re: VDR 1.3.12 buffer optimizations



I have uploaded an improved patch against VDR version 1.3.12 to

  ftp://ftp.cadsoft.de/vdr/Developer/vdr-1.3.12-optbuf2.diff

From what I can see it works a lot better now when several recordings
and maybe even a Transfer Mode is going on.

One of the main things I did was to completely avoid thread locking
in cRingBufferLinear, which made things a lot smoother. Also, I have
replaced the buffer handling in sTSBuffer with a cRingBufferLinear.

However, even though I have increased the size of the recording
buffers to 7MB, sometimes they do run full.

I'd like to avoid the 'usleep(1)' in cRecorder::Action() and use
ringBuffer->SetTimeouts(0, 100) (see cRecorder::cRecorder()) instead,
but if I do so, the recording buffers run full even faster.
It almost looks as if something is wrong with the way cRingBuffer::WaitForPut()
and cRingBuffer::WaitForGet() are implemented...

Maybe some of you can take a look at this patch and try it out.

What I'm aiming at is to make things stable enough to allow at least
two parallel recordings each on my second (FF) and third (budget) DVB card,
as well as one recording on my primary FF DVB card plus a Transfer Mode
originating from any of the three DVB cards. My machine runs at 450 MHz
and can write to the disk at a continuous rate of 10MB/s, which should
be more than enough for 5 parallel recordings.

Klaus




Home | Main Index | Thread Index