On Sun, Jul 10, 2011 at 5:28 PM, Ronald S. Bultje <[email protected]> wrote:
> This fixes a crash when seeking in some webm files with many
> threads (e.g. 8).

OK, except there's a whitespace change.

> ---
>  libavcodec/pthread.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
> index 08ef4ba..bb8a343 100644
> --- a/libavcodec/pthread.c
> +++ b/libavcodec/pthread.c
> @@ -408,9 +408,10 @@ static void release_delayed_buffers(PerThreadContext *p)
>     FrameThreadContext *fctx = p->parent;
>
>     while (p->num_released_buffers > 0) {
> -        AVFrame *f = &p->released_buffers[--p->num_released_buffers];
> +        AVFrame *f;
>
>         pthread_mutex_lock(&fctx->buffer_mutex);
> +        f = &p->released_buffers[--p->num_released_buffers];
>         free_progress(f);
>         f->thread_opaque = NULL;
>
> @@ -836,6 +837,7 @@ int ff_thread_get_buffer(AVCodecContext *avctx, AVFrame 
> *f)
>  void ff_thread_release_buffer(AVCodecContext *avctx, AVFrame *f)
>  {
>     PerThreadContext *p = avctx->thread_opaque;
> +    FrameThreadContext *fctx = p->parent;
>
>     if (!(avctx->active_thread_type&FF_THREAD_FRAME)) {
>         avctx->release_buffer(avctx, f);
> @@ -846,12 +848,13 @@ void ff_thread_release_buffer(AVCodecContext *avctx, 
> AVFrame *f)
>         av_log(p->avctx, AV_LOG_ERROR, "too many thread_release_buffer 
> calls!\n");
>         return;
>     }
> -
>     if(avctx->debug & FF_DEBUG_BUFFERS)
>         av_log(avctx, AV_LOG_DEBUG, "thread_release_buffer called on pic %p, 
> %d buffers used\n",
>                                     f, f->owner->internal_buffer_count);
>
> +    pthread_mutex_lock(&fctx->buffer_mutex);
>     p->released_buffers[p->num_released_buffers++] = *f;
> +    pthread_mutex_unlock(&fctx->buffer_mutex);
>     memset(f->data, 0, sizeof(f->data));
>  }
>
> --
> 1.7.2.1
>
>
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to