| 1 | --- mpeg2fix.cpp~ 2013-10-21 08:58:31.000000000 -0500
|
|---|
| 2 | +++ mpeg2fix.cpp 2013-10-27 11:18:09.516570857 -0600
|
|---|
| 3 | @@ -1667,6 +1667,7 @@
|
|---|
| 4 | it != orderedFrames->end(); it++)
|
|---|
| 5 | {
|
|---|
| 6 | int i = GetFrameNum((*it));
|
|---|
| 7 | + AVPacket pkttmp;
|
|---|
| 8 | if ((spare = DecodeToFrame(i, headPos == 0)) == NULL)
|
|---|
| 9 | {
|
|---|
| 10 | LOG(VB_GENERAL, LOG_WARNING,
|
|---|
| 11 | @@ -1677,7 +1678,7 @@
|
|---|
| 12 | if (GetFrameTypeT(spare) == 'I')
|
|---|
| 13 | continue;
|
|---|
| 14 |
|
|---|
| 15 | - pkt = spare->pkt;
|
|---|
| 16 | + pkt = pkttmp = spare->pkt;
|
|---|
| 17 | //pkt.data is a newly malloced area
|
|---|
| 18 |
|
|---|
| 19 | {
|
|---|
| 20 | @@ -1697,6 +1698,9 @@
|
|---|
| 21 | }
|
|---|
| 22 |
|
|---|
| 23 | spare->set_pkt(&pkt);
|
|---|
| 24 | + // restore frame pts and dts
|
|---|
| 25 | + spare->pkt.pts = pkttmp.pts;
|
|---|
| 26 | + spare->pkt.dts = pkttmp.dts;
|
|---|
| 27 | av_free(pkt.data);
|
|---|
| 28 | SetFrameNum(spare->pkt.data, GetFrameNum(spare));
|
|---|
| 29 | ProcessVideo(spare, header_decoder); //process this new frame
|
|---|