+static int extractPTS(pts_t &pts, unsigned char *pkt)
+{
+ pkt += 7;
+ int flags = *pkt++;
+
+ pkt++; // header length
+
+ if (flags & 0x80) /* PTS present? */
+ {
+ /* damn gcc bug */
+ pts = ((unsigned long long)(((pkt[0] >> 1) & 7))) << 30;
+ pts |= pkt[1] << 22;
+ pts |= (pkt[2]>>1) << 15;
+ pts |= pkt[3] << 7;
+ pts |= (pkt[5]>>1);
+
+ return 0;
+ } else
+ return -1;
+}
+