From: Felix Domke Date: Wed, 30 Jan 2008 13:45:23 +0000 (+0000) Subject: parse mpeg4 AVC UADs X-Git-Tag: 2.6.0~1575 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/d7026a3a9370970633dd938b3b5ab9b2dc0a297f?hp=c797d4040a1dfac3873b481111a84a5c557432f3 parse mpeg4 AVC UADs --- diff --git a/lib/dvb/pvrparse.cpp b/lib/dvb/pvrparse.cpp index a6113329..c96669b0 100644 --- a/lib/dvb/pvrparse.cpp +++ b/lib/dvb/pvrparse.cpp @@ -316,8 +316,16 @@ int eMPEGStreamParserTS::processPacket(const unsigned char *pkt, off_t offset) /* advance to payload */ pkt += pkt[8] + 9; - + + /* sometimes, there are zeros before the startcode. */ + while (pkt < (end-4)) + if (pkt[0] || pkt[1] || pkt[2]) + break; + else + pkt++; + /* if startcode found */ +// eDebug("%02x %02x %02x %02x", pkt[0], pkt[1], pkt[2], pkt[3]); if (!(pkt[0] || pkt[1] || (pkt[2] != 1))) { if (pkt[3] == 0xb3) /* sequence header */ @@ -329,6 +337,16 @@ int eMPEGStreamParserTS::processPacket(const unsigned char *pkt, off_t offset) } else eDebug("Sequence header but no valid PTS value."); } + + if (pkt[3] == 0x09) /* MPEG4 AVC unit access delimiter */ + { + if (ptsvalid) + { + m_streaminfo.m_access_points[offset] = pts; + eDebug("MPEG4 AVC UAD at %llx, pts %llx", offset, pts); + } else + eDebug("MPEG4 AVC UAD but no valid PTS value."); + } } return 0; }