From 7276c54bafbcb5bac3371effb773918df84acc87 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 16 Jan 2005 15:30:43 +0100 Subject: [PATCH] Extended some buffer sizes to allow handling HDTV streams --- CONTRIBUTORS | 1 + HISTORY | 2 ++ recording.h | 6 +++--- remux.c | 4 ++-- transfer.c | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 987112f6..621ff12e 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -909,6 +909,7 @@ Reinhard Nissl call from cDvbPlayer::Action() for reporting a race condition in starting a thread for implementing cDolbyRepacker for better handling of Dolby Digital PES packets + for extending some buffer sizes to allow handling HDTV streams Richard Robson for reporting freezing replay if a timer starts while in Transfer Mode from the diff --git a/HISTORY b/HISTORY index e6ac729b..27385077 100644 --- a/HISTORY +++ b/HISTORY @@ -3320,3 +3320,5 @@ Video Disk Recorder Revision History cRemux::cRemux() - Fixed a possible race condition in cDevice::Action() and cTSBuffer::Action() (thanks to Stefan Huelswitt). +- Extended some buffer sizes to allow handling HDTV streams (thanks to Reinhard + Nissl). diff --git a/recording.h b/recording.h index a0f864f3..be1a5c44 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 1.33 2004/12/26 11:47:35 kls Exp $ + * $Id: recording.h 1.34 2005/01/16 15:11:31 kls Exp $ */ #ifndef __RECORDING_H @@ -121,8 +121,8 @@ public: //XXX+ #define FRAMESPERSEC 25 -// The maximum size of a single frame: -#define MAXFRAMESIZE KILOBYTE(192) +// The maximum size of a single frame (up to HDTV 1920x1080): +#define MAXFRAMESIZE KILOBYTE(512) // The maximum file size is limited by the range that can be covered // with 'int'. 4GB might be possible (if the range is considered diff --git a/remux.c b/remux.c index e81909b5..307f7ab9 100644 --- a/remux.c +++ b/remux.c @@ -11,7 +11,7 @@ * The cDolbyRepacker code was originally written by Reinhard Nissl , * and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de. * - * $Id: remux.c 1.25 2005/01/16 14:34:25 kls Exp $ + * $Id: remux.c 1.26 2005/01/16 15:22:16 kls Exp $ */ #include "remux.h" @@ -324,7 +324,7 @@ int cDolbyRepacker::BreakAt(const uchar *Data, int Count) #define ADAPT_FIELD 0x20 #define MAX_PLENGTH 0xFFFF // the maximum PES packet length (theoretically) -#define MMAX_PLENGTH (8*MAX_PLENGTH) // some stations send PES packets that are extremely large, e.g. DVB-T in Finland +#define MMAX_PLENGTH (64*MAX_PLENGTH) // some stations send PES packets that are extremely large, e.g. DVB-T in Finland or HDTV 1920x1080 #define IPACKS 2048 diff --git a/transfer.c b/transfer.c index 537bb8f7..b151971e 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.23 2005/01/16 13:26:38 kls Exp $ + * $Id: transfer.c 1.24 2005/01/16 15:12:58 kls Exp $ */ #include "transfer.h" @@ -80,7 +80,7 @@ void cTransfer::Action(void) //XXX To resolve this, the remuxer or PlayPes() should synchronize //XXX audio with the video frames. 2004/09/09 Werner if (!GotBufferReserve) { - if (ringBuffer->Available() < 3 * MAXFRAMESIZE / 2) { + if (ringBuffer->Available() < 3 * KILOBYTE(192) / 2) { // 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; }