summaryrefslogtreecommitdiff
path: root/remux.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2005-08-21 09:00:31 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2005-08-21 09:00:31 +0200
commit9dd6796702fa6487e3be8d5c6d4083dd25791f47 (patch)
tree2207b7d73e1065c41764ee377051c367d9d56761 /remux.c
parent6de23d7d96720f89cbc864bbf504fe466e224497 (diff)
downloadvdr-9dd6796702fa6487e3be8d5c6d4083dd25791f47.tar.gz
vdr-9dd6796702fa6487e3be8d5c6d4083dd25791f47.tar.bz2
Fixed cVideoRepacker to better handle errors in data
Diffstat (limited to 'remux.c')
-rw-r--r--remux.c20
1 files changed, 6 insertions, 14 deletions
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 <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");