1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Increased the required free buffer space in the resultBuffer of cRemux

This commit is contained in:
Klaus Schmidinger 2004-10-24 09:26:23 +02:00
parent d507645323
commit 343df6266e
2 changed files with 8 additions and 4 deletions

View File

@ -3037,7 +3037,7 @@ Video Disk Recorder Revision History
checking if the channel has a non-zero number. checking if the channel has a non-zero number.
- Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen). - Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen).
2004-10-23: Version 1.3.14 2004-10-24: Version 1.3.14
- Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan - Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan
Meyknecht). Meyknecht).
@ -3059,3 +3059,7 @@ Video Disk Recorder Revision History
- Some minor code cleanups (thanks to Prakash K. Cheemplavam). - Some minor code cleanups (thanks to Prakash K. Cheemplavam).
- Fixed missing cleanup at program exit in case there is a problem with a plugin - Fixed missing cleanup at program exit in case there is a problem with a plugin
(thanks to Mattias Grönlund for pointing this out). (thanks to Mattias Grönlund for pointing this out).
- Increased the required free buffer space in the resultBuffer of cRemux to
2 * IPACKS to avoid a buffer overflow in case a cTS2PES writes one complete
packet and then (within processing the same TS packet) wants to write another
small packet.

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.20 2004/10/23 12:06:13 kls Exp $ * $Id: remux.c 1.21 2004/10/24 09:25:33 kls Exp $
*/ */
#include "remux.h" #include "remux.h"
@ -491,8 +491,8 @@ int cRemux::Put(const uchar *Data, int Count)
break; break;
if (Data[i] != TS_SYNC_BYTE) if (Data[i] != TS_SYNC_BYTE)
break; break;
if (resultBuffer->Free() < IPACKS) if (resultBuffer->Free() < 2 * IPACKS)
break; break; // A cTS2PES might write one full packet and also a small rest
int pid = GetPid(Data + i + 1); int pid = GetPid(Data + i + 1);
if (Data[i + 3] & 0x10) { // got payload if (Data[i + 3] & 0x10) { // got payload
if (pid == vPid) vTS2PES->ts_to_pes(Data + i); if (pid == vPid) vTS2PES->ts_to_pes(Data + i);