diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2005-08-21 09:00:31 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2005-08-21 09:00:31 +0200 |
commit | 9dd6796702fa6487e3be8d5c6d4083dd25791f47 (patch) | |
tree | 2207b7d73e1065c41764ee377051c367d9d56761 /remux.c | |
parent | 6de23d7d96720f89cbc864bbf504fe466e224497 (diff) | |
download | vdr-9dd6796702fa6487e3be8d5c6d4083dd25791f47.tar.gz vdr-9dd6796702fa6487e3be8d5c6d4083dd25791f47.tar.bz2 |
Fixed cVideoRepacker to better handle errors in data
Diffstat (limited to 'remux.c')
-rw-r--r-- | remux.c | 20 |
1 files changed, 6 insertions, 14 deletions
@@ -11,7 +11,7 @@ * The cDolbyRepacker code was originally written by Reinhard Nissl <rnissl@gmx.de>, * 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"); |