Increased the maximum possible packet size to avoid corrupted streams

This commit is contained in:
Klaus Schmidinger 2003-01-24 14:30:02 +01:00
parent cdcf28b051
commit a3d9b92615
3 changed files with 12 additions and 4 deletions

View File

@ -525,3 +525,7 @@ Walter Stroebel <walter.stroebel@lifeline.nl>
Paul Gohn <pgohn@nexgo.de> Paul Gohn <pgohn@nexgo.de>
for adding 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf for adding 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf
Teemu Rantanen <tvr@iki.fi>
for increased the maximum possible packet size in remux.c to avoid corrupted streams
with broadcasters that send extremely large PES packets

View File

@ -1917,7 +1917,7 @@ Video Disk Recorder Revision History
EPG data, that string is now limited in length when used in a recording's EPG data, that string is now limited in length when used in a recording's
file name. file name.
2003-01-19: Version 1.1.22 2003-01-24: Version 1.1.22
- Added 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf (thanks to - Added 'Hrvatska radiotelevizija' and 'RTV Slovenija' to ca.conf (thanks to
Paul Gohn). Paul Gohn).
@ -1925,3 +1925,5 @@ Video Disk Recorder Revision History
- Since disk file systems apparently don't honor the O_NONBLOCK flag to read from - Since disk file systems apparently don't honor the O_NONBLOCK flag to read from
a file in non-blocking mode the cDvbPlayer now uses a non blocking file reader a file in non-blocking mode the cDvbPlayer now uses a non blocking file reader
class to make sure replay remains smooth even under heavy system load. class to make sure replay remains smooth even under heavy system load.
- Increased the maximum possible packet size in remux.c to avoid corrupted streams
with broadcasters that send extremely large PES packets (thanks to Teemu Rantanen).

View File

@ -8,7 +8,7 @@
* the Linux DVB driver's 'tuxplayer' example and were rewritten to suit * the Linux DVB driver's 'tuxplayer' example and were rewritten to suit
* VDR's needs. * VDR's needs.
* *
* $Id: remux.c 1.12 2002/10/12 13:33:54 kls Exp $ * $Id: remux.c 1.13 2003/01/24 14:21:17 kls Exp $
*/ */
/* The calling interface of the 'cRemux::Process()' function is defined /* The calling interface of the 'cRemux::Process()' function is defined
@ -103,8 +103,8 @@
#define ADAPT_FIELD 0x20 #define ADAPT_FIELD 0x20
//XXX TODO //XXX TODO
#define MAX_PLENGTH 0xFFFF #define MAX_PLENGTH 0xFFFF // the maximum PES packet length (theoretically)
#define MMAX_PLENGTH (4*MAX_PLENGTH) #define MMAX_PLENGTH (8*MAX_PLENGTH) // some stations send PES packets that are extremely large, e.g. DVB-T in Finland
#define IPACKS 2048 #define IPACKS 2048
@ -384,6 +384,8 @@ void cTS2PES::instant_repack(const uint8_t *Buf, int Count)
} }
if (plength && found == plength + 6) { if (plength && found == plength + 6) {
if (plength == MMAX_PLENGTH - 6)
esyslog("ERROR: PES packet length overflow in remuxer (stream corruption)");
send_ipack(); send_ipack();
reset_ipack(); reset_ipack();
if (c < Count) if (c < Count)