[FFmpeg-cvslog] ffplay: fix frame_delay calculation in new avfilter code

Marton Balint git at videolan.org
Thu Jun 7 22:00:50 CEST 2012


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed Jun  6 23:06:23 2012 +0200| [a78bc6f78c922158cc6afc6eaf5cfea7dab80cfd] | committer: Marton Balint

ffplay: fix frame_delay calculation in new avfilter code

Signed-off-by: Marton Balint <cus at passwd.hu>

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

 ffplay.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index 86e347f..070db4b 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1540,9 +1540,6 @@ static int get_video_frame(VideoState *is, AVFrame *frame, int64_t *pts, AVPacke
             SDL_UnlockMutex(is->pictq_mutex);
         }
 
-        if (ret)
-            is->frame_last_returned_time = av_gettime() / 1000000.0;
-
         return ret;
     }
     return 0;
@@ -1679,10 +1676,6 @@ static int video_thread(void *arg)
             continue;
         }
 
-        is->frame_last_filter_delay = av_gettime() / 1000000.0 - is->frame_last_returned_time;
-        if (fabs(is->frame_last_filter_delay) > AV_NOSYNC_THRESHOLD / 10.0)
-            is->frame_last_filter_delay = 0;
-
 #if CONFIG_AVFILTER
         if (   last_w != is->video_st->codec->width
             || last_h != is->video_st->codec->height
@@ -1725,12 +1718,18 @@ static int video_thread(void *arg)
         av_free_packet(&pkt);
 
         while (ret >= 0) {
+            is->frame_last_returned_time = av_gettime() / 1000000.0;
+
             ret = av_buffersink_get_buffer_ref(filt_out, &picref, 0);
             if (ret < 0) {
                 ret = 0;
                 break;
             }
 
+            is->frame_last_filter_delay = av_gettime() / 1000000.0 - is->frame_last_returned_time;
+            if (fabs(is->frame_last_filter_delay) > AV_NOSYNC_THRESHOLD / 10.0)
+                is->frame_last_filter_delay = 0;
+
             avfilter_fill_frame_from_video_buffer_ref(frame, picref);
 
             pts_int = picref->pts;



More information about the ffmpeg-cvslog mailing list