X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/141be00b0febd77db0bca46e9a788f018d07aeb8..60c8087aa78a5fa24617b0f2ef86fa54f6083101:/lib/dvb/pesparse.cpp diff --git a/lib/dvb/pesparse.cpp b/lib/dvb/pesparse.cpp index 7e05c96a..30e05894 100644 --- a/lib/dvb/pesparse.cpp +++ b/lib/dvb/pesparse.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -16,8 +17,10 @@ void ePESParser::setStreamID(unsigned char id) m_header[3] = id; } -void ePESParser::processData(unsigned char *p, int len) +void ePESParser::processData(const __u8 *p, int len) { + int i; + /* this is a state machine, handling arbitary amounts of pes-formatted data. */ while (len) { @@ -40,9 +43,12 @@ void ePESParser::processData(unsigned char *p, int len) } else { if (m_pes_position < 4) - if (*p != "\x00\x00\x01\xbd"[m_pes_position]) + if (*p != m_header[m_pes_position]) { +// eDebug("sync lost at %d (%02x)", m_pes_position, *p); m_pes_position = 0; + while (m_header[m_pes_position] == *p) /* guaranteed to stop at the old m_pes_position */ + m_pes_position++; p++; len--; continue;