From 9ed48cb8ea6709dcd264e4d9e4b80e0035763b0f Mon Sep 17 00:00:00 2001 From: Bill Date: Tue, 28 Aug 2012 12:02:48 -0700 Subject: [PATCH] Fix lossless transcode artifacts Fixes #11044 Signed-off-by: Gavin Hurlbut --- mythtv/programs/mythtranscode/mpeg2fix.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mythtv/programs/mythtranscode/mpeg2fix.cpp b/mythtv/programs/mythtranscode/mpeg2fix.cpp index 2221ed03d33..0550e0b8161 100644 --- a/mythtv/programs/mythtranscode/mpeg2fix.cpp +++ b/mythtv/programs/mythtranscode/mpeg2fix.cpp @@ -1530,7 +1530,7 @@ MPEG2frame *MPEG2fixup::FindFrameNum(int frameNum) void MPEG2fixup::RenumberFrames(int start_pos, int delta) { - int maxPos = vFrame.count(); + int maxPos = vFrame.count() - 1; for (int pos = start_pos; pos < maxPos; pos++) { @@ -1736,8 +1736,8 @@ int MPEG2fixup::InsertFrame(int frameNum, int64_t deltaPTS, inc2x33(&pkt.pts, ptsIncrement * GetNbFields(spare) / 2 + initPTS); - index = vFrame.indexOf(spare); - while (index < vFrame.count() - 1 && + index = vFrame.indexOf(spare) + 1; + while (index < vFrame.count() && GetFrameTypeT(vFrame.at(index)) == 'B') spare = vFrame.at(index++); @@ -1762,7 +1762,8 @@ int MPEG2fixup::InsertFrame(int frameNum, int64_t deltaPTS, av_free(pkt.data); - // update frame # for all frames in this group + // update frame # for all later frames in this group + index++; RenumberFrames(index, increment); return increment;