From 9dd6796702fa6487e3be8d5c6d4083dd25791f47 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 21 Aug 2005 09:00:31 +0200 Subject: Fixed cVideoRepacker to better handle errors in data --- remux.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) (limited to 'remux.c') diff --git a/remux.c b/remux.c index 4a8682b7..c980bd83 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.36 2005/07/30 10:23:00 kls Exp $ + * $Id: remux.c 1.37 2005/08/21 08:58:58 kls Exp $ */ #include "remux.h" @@ -171,11 +171,9 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar int Bite = fragmentLen + (Count >= 0 ? 0 : Count); // put data into result buffer int n = Put(ResultBuffer, fragmentData, Bite); - if (n != Bite) { - Reset(); - return false; - } fragmentLen = 0; + if (n != Bite) + return false; } else if (pesHeaderLen > 0) { // ... which is contained in the PES header buffer int PacketLen = pesHeaderLen + Count - 6; @@ -186,11 +184,9 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar int Bite = pesHeaderLen + (Count >= 0 ? 0 : Count); // put data into result buffer int n = Put(ResultBuffer, pesHeader, Bite); - if (n != Bite) { - Reset(); - return false; - } pesHeaderLen = 0; + if (n != Bite) + return false; } // append further payload if (Count > 0) { @@ -198,10 +194,8 @@ bool cVideoRepacker::PushOutPacket(cRingBufferLinear *ResultBuffer, const uchar int Bite = Count; // put data into result buffer int n = Put(ResultBuffer, Data, Bite); - if (n != Bite) { - Reset(); + if (n != Bite) return false; - } } // we did it ;-) return true; @@ -250,12 +244,10 @@ void cVideoRepacker::Repack(cRingBufferLinear *ResultBuffer, const uchar *Data, switch (*data) { case 0xB9 ... 0xFF: // system start codes esyslog("cVideoRepacker: found system start code: stream seems to be scrambled or not demultiplexed"); - Reset(); break; case 0xB0 ... 0xB1: // reserved start codes case 0xB6: esyslog("cVideoRepacker: found reserved start code: stream seems to be scrambled"); - Reset(); break; case 0xB4: // sequence error code isyslog("cVideoRepacker: found sequence error code: stream seems to be damaged"); -- cgit v1.2.3