+#include <lib/base/eerror.h>
#include <lib/dvb/pesparse.h>
#include <memory.h>
m_header[3] = id;
}
-void ePESParser::processData(unsigned char *p, int len)
+void ePESParser::processData(const __u8 *p, int len)
{
+ int i;
+ eDebug("process %d bytes of pes data, %02x, %02x, %02x, %02x, %02x, %02x", len, p[0], p[1], p[2], p[3], p[4], p[5]);
+#if 0
/* this is a state machine, handling arbitary amounts of pes-formatted data. */
while (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;
if (m_pes_position == 6)
{
m_pes_length = ((m_pes_buffer[4] << 8) | m_pes_buffer[5]) + 6;
+ eDebug("pes length: %d", m_pes_length);
}
}
}
+#endif
}
#ifndef __lib_dvb_pesparse_h
#define __lib_dvb_pesparse_h
+#include <asm/types.h>
+
class ePESParser
{
public:
ePESParser();
void setStreamID(unsigned char id);
- void processData(unsigned char *data, int len);
- virtual void processPESPacket(unsigned char *pkt, int len) = 0;
+ void processData(const __u8 *data, int len);
+ virtual void processPESPacket(__u8 *pkt, int len) = 0;
private:
unsigned char m_pes_buffer[65536];
int m_pes_position, m_pes_length;