[FFmpeg-cvslog] ffplay: do not wait for flushing the picture queue on flush packet

Marton Balint git at videolan.org
Sat Dec 7 18:54:25 CET 2013


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sun Nov 24 22:51:13 2013 +0100| [318bf57c3fb89a96008b114731e59063301ad6d1] | committer: Marton Balint

ffplay: do not wait for flushing the picture queue on flush packet

It is no longer necessary. Also do frame timer and video current pos reset in
the main thread because with the wait removed, the timing would not be optimal
in the read thread.

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

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

 ffplay.c |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index bcbc30d..104598b 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1376,10 +1376,14 @@ retry:
 
             if (vp->serial != is->videoq.serial) {
                 pictq_next_picture(is);
+                is->video_current_pos = -1;
                 redisplay = 0;
                 goto retry;
             }
 
+            if (lastvp->serial != vp->serial && !redisplay)
+                is->frame_timer = av_gettime() / 1000000.0;
+
             if (is->paused)
                 goto display;
 
@@ -1670,15 +1674,6 @@ static int get_video_frame(VideoState *is, AVFrame *frame, AVPacket *pkt, int *s
 
     if (pkt->data == flush_pkt.data) {
         avcodec_flush_buffers(is->video_st->codec);
-
-        SDL_LockMutex(is->pictq_mutex);
-        // Make sure there are no long delay timers (ideally we should just flush the queue but that's harder)
-        while (is->pictq_size && !is->videoq.abort_request) {
-            SDL_CondWait(is->pictq_cond, is->pictq_mutex);
-        }
-        is->video_current_pos = -1;
-        is->frame_timer = (double)av_gettime() / 1000000.0;
-        SDL_UnlockMutex(is->pictq_mutex);
         return 0;
     }
 



More information about the ffmpeg-cvslog mailing list