--- mpeg2fix.cpp~ 2013-10-21 08:58:31.000000000 -0500 +++ mpeg2fix.cpp 2013-10-27 11:18:09.516570857 -0600 @@ -1667,6 +1667,7 @@ it != orderedFrames->end(); it++) { int i = GetFrameNum((*it)); + AVPacket pkttmp; if ((spare = DecodeToFrame(i, headPos == 0)) == NULL) { LOG(VB_GENERAL, LOG_WARNING, @@ -1677,7 +1678,7 @@ if (GetFrameTypeT(spare) == 'I') continue; - pkt = spare->pkt; + pkt = pkttmp = spare->pkt; //pkt.data is a newly malloced area { @@ -1697,6 +1698,9 @@ } spare->set_pkt(&pkt); + // restore frame pts and dts + spare->pkt.pts = pkttmp.pts; + spare->pkt.dts = pkttmp.dts; av_free(pkt.data); SetFrameNum(spare->pkt.data, GetFrameNum(spare)); ProcessVideo(spare, header_decoder); //process this new frame