don't shut down enigma 2 when deleting a timer which has an after event "shutdown...
[enigma2.git] / lib / dvb / pesparse.cpp
1 #include <lib/base/eerror.h>
2 #include <lib/dvb/pesparse.h>
3 #include <memory.h>
4
5 ePESParser::ePESParser()
6 {
7         m_pes_position = 0;
8         m_pes_length = 0;
9         m_header[0] = 0;
10         m_header[1] = 0;
11         m_header[2] = 1;
12         setStreamID(0); /* must be overridden */
13 }
14
15 void ePESParser::setStreamID(unsigned char id)
16 {
17         m_header[3] = id;
18 }
19
20 void ePESParser::processData(const __u8 *p, int len)
21 {
22         int i;
23         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]);
24 #if 0
25                 /* this is a state machine, handling arbitary amounts of pes-formatted data. */
26         while (len)
27         {
28                 if (m_pes_position >= 6) // length ok?
29                 {
30                         int max = m_pes_length - m_pes_position;
31                         if (max > len)
32                                 max = len;
33                         memcpy(m_pes_buffer + m_pes_position, p, max);
34                         m_pes_position += max;
35                         p += max;
36                         
37                         len -= max;
38                         
39                         if (m_pes_position == m_pes_length)
40                         {
41                                 processPESPacket(m_pes_buffer, m_pes_position);
42                                 m_pes_position = 0;
43                         }
44                 } else
45                 {
46                         if (m_pes_position < 4)
47                                 if (*p != m_header[m_pes_position])
48                                 {
49                                         eDebug("sync lost at %d (%02x)", m_pes_position, *p);
50                                         m_pes_position = 0;
51                                         while (m_header[m_pes_position] == *p) /* guaranteed to stop at the old m_pes_position */
52                                                 m_pes_position++;
53                                         p++;
54                                         len--;
55                                         continue;
56                                 }
57                         m_pes_buffer[m_pes_position++] = *p++; len--;
58                         if (m_pes_position == 6)
59                         {
60                                 m_pes_length = ((m_pes_buffer[4] << 8) | m_pes_buffer[5]) + 6;
61                                 eDebug("pes length: %d", m_pes_length);
62                         }
63                 }
64         }
65 #endif
66 }