From 5e623525e96192ace4befed721e026cfedf1f591 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 28 Jan 2006 14:25:06 +0100 Subject: [PATCH] Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with recent driver/firmware versions --- HISTORY | 2 ++ dvbosd.c | 9 +-------- transfer.c | 37 +------------------------------------ 3 files changed, 4 insertions(+), 44 deletions(-) diff --git a/HISTORY b/HISTORY index 68085ee1..4f82a524 100644 --- a/HISTORY +++ b/HISTORY @@ -4251,3 +4251,5 @@ Video Disk Recorder Revision History - Increased the timeout in cInterface::GetKey() to avoid problems with remote controls that don't deliver "repeat" keypresses very fast (problem with the new handling of k_Repeat keypresses in channel switching reported by Udo Richter). +- Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with + recent driver/firmware versions. diff --git a/dvbosd.c b/dvbosd.c index 76afecbf..469ef1fb 100644 --- a/dvbosd.c +++ b/dvbosd.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbosd.c 1.29 2005/12/30 15:41:54 kls Exp $ + * $Id: dvbosd.c 1.30 2006/01/28 14:24:04 kls Exp $ */ #include "dvbosd.h" @@ -48,13 +48,6 @@ cDvbOsd::cDvbOsd(int Left, int Top, int OsdDev) cap.cmd = OSD_CAP_MEMSIZE; if (ioctl(osdDev, OSD_GET_CAPABILITY, &cap) == 0) osdMem = cap.val; - #define FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - #ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - //XXX This is a very ugly hack to allow cDvbOsd to reduce the buffer - //XXX requirements in cTransfer if it detects a 4MB full featured DVB card. - extern bool DvbCardWith4MBofSDRAM; - DvbCardWith4MBofSDRAM = osdMem >= 1000000; - #endif #endif // must clear all windows here to avoid flashing effects - doesn't work if done // in Flush() only for the windows that are actually used... diff --git a/transfer.c b/transfer.c index 8a0db4d6..b8313df0 100644 --- a/transfer.c +++ b/transfer.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: transfer.c 1.31 2006/01/21 14:13:16 kls Exp $ + * $Id: transfer.c 1.32 2006/01/28 14:23:38 kls Exp $ */ #include "transfer.h" @@ -49,41 +49,12 @@ void cTransfer::Receive(uchar *Data, int Length) } } -#define FW_NEEDS_BUFFER_RESERVE_FOR_AC3 -#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 -//XXX This is a very ugly hack to allow cDvbOsd to reduce the buffer -//XXX requirements in cTransfer if it detects a 4MB full featured DVB card. -bool DvbCardWith4MBofSDRAM = false; -#endif - void cTransfer::Action(void) { int PollTimeouts = 0; uchar *p = NULL; int Result = 0; -#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - bool GotBufferReserve = false; - GotBufferReserve = true; //XXX remove this line if you absolutely need the buffer reserve - int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 288 : 576); -#endif while (Running()) { -#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - if (needsBufferReserve && !GotBufferReserve) { - //XXX For dolby we've to fill the buffer because the firmware does - //XXX not decode dolby but use a PCM stream for transport, therefore - //XXX the firmware has not enough buffer for noiseless skipping early - //XXX PCM samples (each dolby frame requires 6144 bytes in PCM and - //XXX audio is mostly to early in comparison to video). - //XXX To resolve this, the remuxer or PlayPes() should synchronize - //XXX audio with the video frames. 2004/09/09 Werner - if (ringBuffer->Available() < RequiredBufferReserve) { // used to be MAXFRAMESIZE, but the HDTV value of KILOBYTE(512) is way too much here - cCondWait::SleepMs(20); // allow the buffer to collect some reserve - continue; - } - else - GotBufferReserve = true; - } -#endif int Count; uchar *b = ringBuffer->Get(Count); if (b) { @@ -98,9 +69,6 @@ void cTransfer::Action(void) remux->Clear(); PlayPes(NULL, 0); p = NULL; -#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - GotBufferReserve = false; -#endif continue; } Count = remux->Put(b, Count); @@ -133,9 +101,6 @@ void cTransfer::Action(void) remux->Clear(); PlayPes(NULL, 0); p = NULL; -#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3 - GotBufferReserve = false; -#endif } } }