]> git.sesse.net Git - ffmpeg/commitdiff
threads: always call thread_finish_setup for intra codecs
authorJanne Grunau <janne-libav@jannau.net>
Mon, 22 Apr 2013 13:31:58 +0000 (15:31 +0200)
committerJanne Grunau <janne-libav@jannau.net>
Mon, 22 Apr 2013 15:11:20 +0000 (17:11 +0200)
Intra codecs do not need an update_thread_context() function and never
call ff_thread_finish_setup(). They rely on ff_thread_get_buffer()
calling it. So call it even if the get_buffer2 function pointer is
avcodec_default_get_buffer2 and it has not been called before.

libavcodec/pthread.c

index 404804dec1845c2fb0fcade80bd277c31c53045c..1dbfe3d221c515b3274a9701e2abe42ce620f17c 100644 (file)
@@ -947,9 +947,9 @@ int ff_thread_get_buffer(AVCodecContext *avctx, ThreadFrame *f, int flags)
 
         pthread_mutex_unlock(&p->progress_mutex);
 
-        if (!avctx->codec->update_thread_context)
-            ff_thread_finish_setup(avctx);
     }
+    if (!avctx->thread_safe_callbacks && !avctx->codec->update_thread_context)
+        ff_thread_finish_setup(avctx);
 
     if (err)
         av_buffer_unref(&f->progress);