[FFmpeg-cvslog] avcodec/utils: use atomic operations on entangled_thread_counter

Michael Niedermayer git at videolan.org
Sat Mar 14 00:00:55 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Mar 13 22:28:25 2015 +0100| [b14de8e6895cf1191e2c2f94e1c33db296a34342] | committer: Michael Niedermayer

avcodec/utils: use atomic operations on entangled_thread_counter

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

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

 libavcodec/utils.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 14a4d7b..82f74d6 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -3610,8 +3610,8 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, AVCodec *codec)
         if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_OBTAIN))
             return -1;
     }
-    entangled_thread_counter++;
-    if (entangled_thread_counter != 1 &&
+
+    if (avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, 1) != 1 &&
         !(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE)) {
         av_log(log_ctx, AV_LOG_ERROR,
                "Insufficient thread locking. At least %d threads are "
@@ -3632,7 +3632,7 @@ int ff_unlock_avcodec(void)
 {
     av_assert0(ff_avcodec_locked);
     ff_avcodec_locked = 0;
-    entangled_thread_counter--;
+    avpriv_atomic_int_add_and_fetch(&entangled_thread_counter, -1);
     if (lockmgr_cb) {
         if ((*lockmgr_cb)(&codec_mutex, AV_LOCK_RELEASE))
             return -1;



More information about the ffmpeg-cvslog mailing list