[DEBUGING] VDR VNSI Playback-Problems
#1
As postet in some threads, i am suffering problems with playback some channels.

I'am try to debug the problem. After quick check the transport-protocol if notice some odd fact.

I modified the VNSIDemux.cpp -> DemuxPacket* cVNSIDemux::Read() as followed:
Code:
pkt->duration = (double)resp->getDuration() * DVD_TIME_BASE / 1000000;
pkt->dts = (double)resp->getDTS() * DVD_TIME_BASE / 1000000;
pkt->pts = (double)resp->getPTS() * DVD_TIME_BASE / 1000000;

pkt->iStreamId  = -1;
for(int i = 0; i < m_Streams.nstreams; i++)
{
if(m_Streams.stream[i].physid == (int)resp->getStreamID())
{
  pkt->iStreamId = i;
  break;
}
}
XBMC->Log(LOG_ERROR, "cVNSIDemux::Duration %f", pkt->duration);
XBMC->Log(LOG_ERROR, "cVNSIDemux::DTS %f", pkt->dts);
XBMC->Log(LOG_ERROR, "cVNSIDemux::PTS %f", pkt->pts);
XBMC->Log(LOG_ERROR, "cVNSIDemux::iStreamId %f", pkt->iStreamId);

playback channels without a problem values grows continuously:
Code:
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830183389.000000
cVNSIDemux::PTS 76830183389.000000
cVNSIDemux::iStreamId 76830183389.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830295389.000000
cVNSIDemux::PTS 76830295389.000000
cVNSIDemux::iStreamId 76830295389.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 76830226800.000000
cVNSIDemux::PTS 76830226800.000000
cVNSIDemux::iStreamId 76830226800.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830335389.000000
cVNSIDemux::PTS 76830335389.000000
cVNSIDemux::iStreamId 76830335389.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830223389.000000
cVNSIDemux::PTS 76830223389.000000
cVNSIDemux::iStreamId 76830223389.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 76830250800.000000
cVNSIDemux::PTS 76830250800.000000
cVNSIDemux::iStreamId 76830250800.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830375389.000000
cVNSIDemux::PTS 76830495389.000000
cVNSIDemux::iStreamId 76830495389.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 76830274800.000000
cVNSIDemux::PTS 76830274800.000000
cVNSIDemux::iStreamId 76830274800.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830263389.000000
cVNSIDemux::PTS 76830263389.000000
cVNSIDemux::iStreamId 76830263389.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 76830298800.000000
cVNSIDemux::PTS 76830298800.000000
cVNSIDemux::iStreamId 76830298800.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830415389.000000
cVNSIDemux::PTS 76830415389.000000
cVNSIDemux::iStreamId 76830415389.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 76830322800.000000
cVNSIDemux::PTS 76830322800.000000
cVNSIDemux::iStreamId 76830322800.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830455389.000000
cVNSIDemux::PTS 76830455389.000000
cVNSIDemux::iStreamId 76830455389.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 76830303389.000000
cVNSIDemux::PTS 76830303389.000000
cVNSIDemux::iStreamId 76830303389.000000

Channels with problems causes "jumps" down to zero
Code:
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 0.000000
cVNSIDemux::PTS 0.000000
cVNSIDemux::iStreamId 0.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073655311.000000
cVNSIDemux::PTS 3073655311.000000
cVNSIDemux::iStreamId 3073655311.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 3073585422.000000
cVNSIDemux::PTS 3073585422.000000
cVNSIDemux::iStreamId 3073585422.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073679311.000000
cVNSIDemux::PTS 3073679311.000000
cVNSIDemux::iStreamId 3073679311.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 3073625422.000000
cVNSIDemux::PTS 3073625422.000000
cVNSIDemux::iStreamId 3073625422.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073703311.000000
cVNSIDemux::PTS 3073703311.000000
cVNSIDemux::iStreamId 3073703311.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073727311.000000
cVNSIDemux::PTS 3073727311.000000
cVNSIDemux::iStreamId 3073727311.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 3073665422.000000
cVNSIDemux::PTS 3073665422.000000
cVNSIDemux::iStreamId 3073665422.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073751311.000000
cVNSIDemux::PTS 3073751311.000000
cVNSIDemux::iStreamId 3073751311.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 3074287300.000000
cVNSIDemux::PTS 3074407300.000000
cVNSIDemux::iStreamId 3074407300.000000
cVNSIDemux::Duration 24000.000000
cVNSIDemux::DTS 3073775311.000000
cVNSIDemux::PTS 3073775311.000000
cVNSIDemux::iStreamId 3073775311.000000
cVNSIDemux::Duration 40000.000000
cVNSIDemux::DTS 0.000000
cVNSIDemux::PTS 0.000000
cVNSIDemux::iStreamId 0.000000

This block frequently, after a smale number (10 till 20) of normal continuously growing values a DTS/PTS Value 0 is logged.


i try to debug the vnsi-vdr code and found out, that these 0 values are generated by the cParserMPEG2Video:Tonguearse_MPEG2Video. But i can't figure out how and why some MPEG2 Streams runs well and some make problems. Does anybody have an idea?
Reply
#2
never looked to vdr-vnsi code much, sorry.
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#3
I found the "Problem". Not all MPEG2 Packets don't supply DTS/PTS information. But ParsePESHeader is called for calc the size of the packets. Unfortunately the local variables m_curDTS/m_curPTS are set to zero.

So i prevent this by if-blocks. It works well.

Pull Request submitted.
Reply

Logout Mark Read Team Forum Stats Members Help
[DEBUGING] VDR VNSI Playback-Problems0