[FFmpeg-devel] [PATCH 4/7] avformat/format: convert to stdatomic

James Almer jamrial at gmail.com
Thu Mar 23 01:34:09 EET 2017


Signed-off-by: James Almer <jamrial at gmail.com>
---
 libavformat/format.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavformat/format.c b/libavformat/format.c
index 38ca2a3465..403dc41b03 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -19,7 +19,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "libavutil/atomic.h"
+#include <stdatomic.h>
+
 #include "libavutil/avstring.h"
 #include "libavutil/bprint.h"
 #include "libavutil/opt.h"
@@ -61,9 +62,10 @@ AVOutputFormat *av_oformat_next(const AVOutputFormat *f)
 void av_register_input_format(AVInputFormat *format)
 {
     AVInputFormat **p = last_iformat;
+    const AVInputFormat *cmp = NULL;
 
     // Note, format could be added after the first 2 checks but that implies that *p is no longer NULL
-    while(p != &format->next && !format->next && avpriv_atomic_ptr_cas((void * volatile *)p, NULL, format))
+    while(p != &format->next && !format->next && !atomic_compare_exchange_strong(p, &cmp, format))
         p = &(*p)->next;
 
     if (!format->next)
@@ -73,9 +75,10 @@ void av_register_input_format(AVInputFormat *format)
 void av_register_output_format(AVOutputFormat *format)
 {
     AVOutputFormat **p = last_oformat;
+    const AVOutputFormat *cmp = NULL;
 
     // Note, format could be added after the first 2 checks but that implies that *p is no longer NULL
-    while(p != &format->next && !format->next && avpriv_atomic_ptr_cas((void * volatile *)p, NULL, format))
+    while(p != &format->next && !format->next && !atomic_compare_exchange_strong(p, &cmp, format))
         p = &(*p)->next;
 
     if (!format->next)
-- 
2.12.0



More information about the ffmpeg-devel mailing list