[FFmpeg-cvslog] ffplay: fix a crash caused by aborting the video queue

Marton Balint git at videolan.org
Fri Aug 26 17:56:31 CEST 2011


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Thu Aug 25 22:06:40 2011 +0200| [0a1cf6621067c4a85b519c8cad5c345c29017f89] | committer: Michael Niedermayer

ffplay: fix a crash caused by aborting the video queue

If the video queue is aborted, we have to pop the pending ALLOC event or wait
for the allocation to complete, because the current code assumes that
VideoState->pictq_windex does not change until the allocation is complete.

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

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

 ffplay.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index 8d22b48..27dda94 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1356,6 +1356,12 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
         while (!vp->allocated && !is->videoq.abort_request) {
             SDL_CondWait(is->pictq_cond, is->pictq_mutex);
         }
+        /* if the queue is aborted, we have to pop the pending ALLOC event or wait for the allocation to complete */
+        if (is->videoq.abort_request && SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(FF_ALLOC_EVENT)) != 1) {
+            while (!vp->allocated) {
+                SDL_CondWait(is->pictq_cond, is->pictq_mutex);
+            }
+        }
         SDL_UnlockMutex(is->pictq_mutex);
 
         if (is->videoq.abort_request)



More information about the ffmpeg-cvslog mailing list