X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/93ff1a63d34e62db3f83779de962b13a0464500f..85c657f6b19abcc0c33bde1e308f969b1f1dee55:/lib/dvb/pvrparse.cpp diff --git a/lib/dvb/pvrparse.cpp b/lib/dvb/pvrparse.cpp index 1b827d3c..59313669 100644 --- a/lib/dvb/pvrparse.cpp +++ b/lib/dvb/pvrparse.cpp @@ -266,7 +266,7 @@ int eMPEGStreamInformation::getNextAccessPoint(pts_t &ts, const pts_t &start, in return 0; } -eMPEGStreamParserTS::eMPEGStreamParserTS(eMPEGStreamInformation &streaminfo): m_streaminfo(streaminfo), m_pktptr(0), m_pid(-1), m_need_next_packet(0), m_skip(0) +eMPEGStreamParserTS::eMPEGStreamParserTS(eMPEGStreamInformation &streaminfo): m_streaminfo(streaminfo), m_pktptr(0), m_pid(-1), m_need_next_packet(0), m_skip(0), m_last_pts_valid(0) { } @@ -313,6 +313,9 @@ int eMPEGStreamParserTS::processPacket(const unsigned char *pkt, off_t offset) pts |= ((unsigned long long)(pkt[12]&0xFF)) << 7; pts |= ((unsigned long long)(pkt[13]&0xFE)) >> 1; ptsvalid = 1; + + m_last_pts = pts; + m_last_pts_valid = 1; #if 0 int sec = pts / 90000; @@ -347,9 +350,9 @@ int eMPEGStreamParserTS::processPacket(const unsigned char *pkt, off_t offset) if (ptsvalid) { m_streaminfo.m_access_points[offset] = pts; - eDebug("Sequence header at %llx, pts %llx", offset, pts); +// eDebug("Sequence header at %llx, pts %llx", offset, pts); } else - eDebug("Sequence header but no valid PTS value."); + /*eDebug("Sequence header but no valid PTS value.")*/; } if (pkt[3] == 0x09) /* MPEG4 AVC unit access delimiter */ @@ -357,9 +360,9 @@ int eMPEGStreamParserTS::processPacket(const unsigned char *pkt, off_t offset) if (ptsvalid) { m_streaminfo.m_access_points[offset] = pts; - eDebug("MPEG4 AVC UAD at %llx, pts %llx", offset, pts); +// eDebug("MPEG4 AVC UAD at %llx, pts %llx", offset, pts); } else - eDebug("MPEG4 AVC UAD but no valid PTS value."); + /*eDebug("MPEG4 AVC UAD but no valid PTS value.")*/; } } return 0; @@ -503,3 +506,15 @@ void eMPEGStreamParserTS::setPid(int _pid) m_pktptr = 0; m_pid = _pid; } + +int eMPEGStreamParserTS::getLastPTS(pts_t &last_pts) +{ + if (!m_last_pts_valid) + { + last_pts = 0; + return -1; + } + last_pts = m_last_pts; + return 0; +} +