diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-07-29 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-07-29 18:00:00 +0200 |
commit | 8f9cc68f76c4fd0960f919a77fb16a6455922deb (patch) | |
tree | 83f607160a07966e97069397580acfb0d9b1be7a /ringbuffer.c | |
parent | 610c5600df98b35226536ffe92b1fd231128c7d4 (diff) | |
download | vdr-patch-lnbsharing-8f9cc68f76c4fd0960f919a77fb16a6455922deb.tar.gz vdr-patch-lnbsharing-8f9cc68f76c4fd0960f919a77fb16a6455922deb.tar.bz2 |
Version 0.85vdr-0.85
- Added Norwegian language texts (thanks to Jørgen Tvedt).
- Increased the usleep value in cDvbOsd::Cmd() to 5000 in order to work on
systems with the KURT/utime-patch (thanks to Guido Fiala).
- Changed the check whether the driver is loaded in runvdr to check for the
'dvb' module (the last one loaded).
- Fixed repeat function with LIRC (thanks to Stefan Huelswitt).
- Increased the upper limit for the symbol rate to 30000 (thanks to Ulrich
Röder).
- Made the position of the channel display configurable (thanks to Stefan
Huelswitt).
- Made the width and height of the OSD configurable (thanks to Stefan Huelswitt).
- DiSEqC support can now be generally enabled/disabled in the Setup menu. This
may be necessary if your multiswitch gets irritated by the default DiSEqC
codes '0' (thanks to Markus Lang).
- Fixed replaying in case there is no index file.
- Fixed jumping to an editing mark when replay has been paused.
- Avoiding unnecessary code execution in the replay progress display (thanks
to Guido Fiala).
- When entering time values the digits that still have to be entered are now
shown as '-' (as in "1-:--").
- When setting an editing mark while the progress display is not active, the
display will now be turned on for a short while to indicate the successful
setting of the mark.
- Updated 'channels.conf' for Premiere World (thanks to Helmut Schächner).
Check your timers if you use this channels.conf file, since the sequence of
several PW channels has been changed.
- Changed the color of "Info" messages to "black on green" and that of the
confirmation messages (like "Delete...") to "black on yellow".
- Fixed display with DEBUG_OSD (it still crashes sometimes, esp. when replaying,
but I can't seem to find what causes this... any ideas anybody?).
- Avoiding audio/video distortions in 'Transfer Mode' by no longer actually
tuning the primary interface (which can't receive this channel, anyway).
Apparently the driver gets irritated when the channel is switched and a
replay session is started immediately after that.
- Increased timeout until reporting "video data stream broken" when recording.
- Explicitly switching back to the previously active channel after ending a
replay session (to have it shown correctly in case it was in 'Transfer Mode').
Diffstat (limited to 'ringbuffer.c')
-rw-r--r-- | ringbuffer.c | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/ringbuffer.c b/ringbuffer.c index 4870713..8511a1c 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -7,7 +7,7 @@ * Parts of this file were inspired by the 'ringbuffy.c' from the * LinuxDVB driver (see linuxtv.org). * - * $Id: ringbuffer.c 1.1 2001/03/10 17:11:34 kls Exp $ + * $Id: ringbuffer.c 1.2 2001/05/20 11:58:08 kls Exp $ */ #include "ringbuffer.h" @@ -37,9 +37,10 @@ public: // --- cRingBuffer ------------------------------------------------------------ -cRingBuffer::cRingBuffer(int Size) +cRingBuffer::cRingBuffer(int Size, bool Statistics) { size = Size; + statistics = Statistics; buffer = NULL; inputThread = NULL; outputThread = NULL; @@ -60,7 +61,17 @@ cRingBuffer::~cRingBuffer() delete inputThread; delete outputThread; delete buffer; - dsyslog(LOG_INFO, "buffer stats: %d (%d%%) used", maxFill, maxFill * 100 / (size - 1)); + if (statistics) + dsyslog(LOG_INFO, "buffer stats: %d (%d%%) used", maxFill, maxFill * 100 / (size - 1)); +} + +int cRingBuffer::Available(void) +{ + mutex.Lock(); + int diff = head - tail; + int cont = (diff >= 0) ? diff : size + diff; + mutex.Unlock(); + return cont; } void cRingBuffer::Clear(void) @@ -78,17 +89,17 @@ int cRingBuffer::Put(const uchar *Data, int Count) int diff = tail - head; mutex.Unlock(); int free = (diff > 0) ? diff - 1 : size + diff - 1; - // Statistics: - int fill = size - free - 1 + Count; - if (fill >= size) - fill = size - 1; - if (fill > maxFill) { - maxFill = fill; - int percent = maxFill * 100 / (size - 1); - if (percent > 75) - dsyslog(LOG_INFO, "buffer usage: %d%%", percent); + if (statistics) { + int fill = size - free - 1 + Count; + if (fill >= size) + fill = size - 1; + if (fill > maxFill) { + maxFill = fill; + int percent = maxFill * 100 / (size - 1); + if (percent > 75) + dsyslog(LOG_INFO, "buffer usage: %d%%", percent); + } } - // if (free <= 0) return 0; if (free < Count) |