diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2021-12-27 11:00:05 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2021-12-27 11:00:05 +0100 |
commit | ba5eee6cb825b3820bda9310d6c3a4f56463b615 (patch) | |
tree | 9f1cc31458729ea78ae60303721e04bb01321d8d | |
parent | 1861074241f1a6ee71372ce3cd474f19a4a2867c (diff) | |
download | vdr-ba5eee6cb825b3820bda9310d6c3a4f56463b615.tar.gz vdr-ba5eee6cb825b3820bda9310d6c3a4f56463b615.tar.bz2 |
Fixed cTsPayload::AtPayloadStart() to ignore TS packets from other PIDs
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | remux.c | 8 | ||||
-rw-r--r-- | remux.h | 4 |
3 files changed, 7 insertions, 6 deletions
@@ -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. @@ -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; } @@ -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; } |