[FFmpeg-cvslog] avcodec/utils: improve guess_correct_pts() by considerng mixed dts/ pts use caused by NOPTSs

Michael Niedermayer git at videolan.org
Fri Feb 14 20:52:21 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Feb 14 20:27:07 2014 +0100| [68a959cb271767d65a7f0e382e518d8270588308] | committer: Michael Niedermayer

avcodec/utils: improve guess_correct_pts() by considerng mixed dts/pts use caused by NOPTSs

No testcase known, this is a theoretical improvment

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=68a959cb271767d65a7f0e382e518d8270588308
---

 libavcodec/utils.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 135fd83..ea77654 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1966,11 +1966,15 @@ static int64_t guess_correct_pts(AVCodecContext *ctx,
     if (dts != AV_NOPTS_VALUE) {
         ctx->pts_correction_num_faulty_dts += dts <= ctx->pts_correction_last_dts;
         ctx->pts_correction_last_dts = dts;
-    }
+    } else if (reordered_pts != AV_NOPTS_VALUE)
+        ctx->pts_correction_last_dts = reordered_pts;
+
     if (reordered_pts != AV_NOPTS_VALUE) {
         ctx->pts_correction_num_faulty_pts += reordered_pts <= ctx->pts_correction_last_pts;
         ctx->pts_correction_last_pts = reordered_pts;
-    }
+    } else if(dts != AV_NOPTS_VALUE)
+        ctx->pts_correction_last_pts = dts;
+
     if ((ctx->pts_correction_num_faulty_pts<=ctx->pts_correction_num_faulty_dts || dts == AV_NOPTS_VALUE)
        && reordered_pts != AV_NOPTS_VALUE)
         pts = reordered_pts;



More information about the ffmpeg-cvslog mailing list