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

avcoder ffmpeg at gmail.com
Sat Aug 27 05:17:51 CEST 2011


I fail to understand!

The following "if(is->videoq.abort_request) " will prevent the code
from going through. so there is no any chance to affect
VideoState->pictq_windex

On Fri, Aug 26, 2011 at 4:06 AM, Marton Balint <cus at passwd.hu> wrote:
> 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.
> ---
>  ffplay.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/ffplay.c b/ffplay.c
> index 80611e8..8a3e409 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -1355,6 +1355,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)

-- 
-----------------------------------------------------------------------------------------
My key fingerprint: d1:03:f5:32:26:ff:d7:3c:e4:42:e3:51:ec:92:78:b2


More information about the ffmpeg-devel mailing list