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