diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index b16c1b9928..2919e9546b 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -500,7 +500,7 @@ void ff_thread_report_progress(ThreadFrame *f, int n, int field) atomic_int *progress = f->progress ? (atomic_int*)f->progress->data : NULL; if (!progress || - atomic_load_explicit(&progress[field], memory_order_acquire) >= n) + atomic_load_explicit(&progress[field], memory_order_relaxed) >= n) return; p = f->owner->internal->thread_ctx; @@ -510,7 +510,7 @@ void ff_thread_report_progress(ThreadFrame *f, int n, int field) pthread_mutex_lock(&p->progress_mutex); - atomic_store(&progress[field], n); + atomic_store_explicit(&progress[field], n, memory_order_release); pthread_cond_broadcast(&p->progress_cond); pthread_mutex_unlock(&p->progress_mutex); @@ -816,8 +816,8 @@ static int thread_get_buffer_internal(AVCodecContext *avctx, ThreadFrame *f, int } progress = (atomic_int*)f->progress->data; - atomic_store(&progress[0], -1); - atomic_store(&progress[1], -1); + atomic_init(&progress[0], -1); + atomic_init(&progress[1], -1); } pthread_mutex_lock(&p->parent->buffer_mutex);