summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2021-12-27 11:00:05 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2021-12-27 11:00:05 +0100
commitba5eee6cb825b3820bda9310d6c3a4f56463b615 (patch)
tree9f1cc31458729ea78ae60303721e04bb01321d8d
parent1861074241f1a6ee71372ce3cd474f19a4a2867c (diff)
downloadvdr-ba5eee6cb825b3820bda9310d6c3a4f56463b615.tar.gz
vdr-ba5eee6cb825b3820bda9310d6c3a4f56463b615.tar.bz2
Fixed cTsPayload::AtPayloadStart() to ignore TS packets from other PIDs
-rw-r--r--HISTORY1
-rw-r--r--remux.c8
-rw-r--r--remux.h4
3 files changed, 7 insertions, 6 deletions
diff --git a/HISTORY b/HISTORY
index 81001413..0f9c6d53 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9578,3 +9578,4 @@ Video Disk Recorder Revision History
2021-12-27:
- Fixed a possible crash in the Schedule menu, in case Setup.EPGLinger is 0.
+- Fixed cTsPayload::AtPayloadStart() to ignore TS packets from other PIDs.
diff --git a/remux.c b/remux.c
index 0bf41f36..7cbae57b 100644
--- a/remux.c
+++ b/remux.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: remux.c 4.9 2020/06/22 12:15:52 kls Exp $
+ * $Id: remux.c 4.9.1.1 2021/12/27 10:59:22 kls Exp $
*/
#include "remux.h"
@@ -1292,7 +1292,7 @@ int cMpeg2Parser::Parse(const uchar *Data, int Length, int Pid)
tsPayload.Statistics();
break;
}
- if (tsPayload.AtPayloadStart() // stop at any new payload start to have the buffer refilled if necessary
+ if (tsPayload.AtPayloadStart() // stop at a new payload start to have the buffer refilled if necessary
|| tsPayload.Eof()) // or if we're out of data
break;
}
@@ -1445,7 +1445,7 @@ int cH264Parser::Parse(const uchar *Data, int Length, int Pid)
default: ;
}
}
- if (tsPayload.AtPayloadStart() // stop at any new payload start to have the buffer refilled if necessary
+ if (tsPayload.AtPayloadStart() // stop at a new payload start to have the buffer refilled if necessary
|| tsPayload.Eof()) // or if we're out of data
break;
}
@@ -1603,7 +1603,7 @@ int cH265Parser::Parse(const uchar *Data, int Length, int Pid)
break;
}
}
- if (tsPayload.AtPayloadStart() // stop at any new payload start to have the buffer refilled if necessary
+ if (tsPayload.AtPayloadStart() // stop at a new payload start to have the buffer refilled if necessary
|| tsPayload.Eof()) // or if we're out of data
break;
}
diff --git a/remux.h b/remux.h
index 6ff3c971..9638dea6 100644
--- a/remux.h
+++ b/remux.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: remux.h 4.6 2020/09/16 13:48:33 kls Exp $
+ * $Id: remux.h 4.6.1.1 2021/12/27 10:58:36 kls Exp $
*/
#ifndef __REMUX_H
@@ -249,7 +249,7 @@ public:
bool AtTsStart(void) { return index < length && (index % TS_SIZE) == 0; }
///< Returns true if this payload handler is currently pointing to first byte
///< of a TS packet.
- bool AtPayloadStart(void) { return AtTsStart() && TsPayloadStart(data + index); }
+ bool AtPayloadStart(void) { return AtTsStart() && TsPayloadStart(data + index) && TsPid(data + index) == pid; }
///< Returns true if this payload handler is currently pointing to the first byte
///< of a TS packet that starts a new payload.
int Available(void) { return length - index; }