On 3/22/2017 10:01 PM, Michael Niedermayer wrote: > On Wed, Mar 22, 2017 at 08:34:05PM -0300, James Almer wrote: >> This set deals with most of the remaining cases of libavutil/atomic.h usage. >> "make fate THREADS=4" passes here on mingw-w64, but I'm not 100% sure fate >> has proper coverage of some of these functions. >> >> Only ones remaining are Decklink (It's C++98 and I'm not sure how wise would >> it be to include a C11 header in there, so i'm leaving that to someone else), >> and error_resilience. >> >> James Almer (7): >> avcodec/mediacodec: convert to stdatomic >> avcodec/utils: convert to stdatomic >> avcodec/parser: convert to stdatomic >> avformat/format: convert to stdatomic >> avfilter/avfilter: convert to stdatomic >> avutil/opencl: convert to stdatomic >> avcodec/videotoolboxenc: remove unused atomic header >> >> libavcodec/mediacodec.c | 5 ++--- >> libavcodec/mediacodecdec.c | 1 - >> libavcodec/mediacodecdec_common.c | 14 ++++++-------- >> libavcodec/mediacodecdec_common.h | 5 +++-- >> libavcodec/parser.c | 14 ++++++++++---- >> libavcodec/utils.c | 19 +++++++++++-------- >> libavcodec/videotoolboxenc.c | 1 - >> libavfilter/avfilter.c | 6 ++++-- >> libavformat/format.c | 9 ++++++--- >> libavutil/opencl.c | 5 +++-- >> 10 files changed, 45 insertions(+), 34 deletions(-) > > This breaks building with clang > > CC libavfilter/avfilter.o > CC libavformat/format.o > CC libavcodec/parser.o > CC libavcodec/utils.o > src/libavformat/format.c:68:51: error: address argument to atomic operation > must be a pointer to _Atomic type ('AVInputFormat **' (aka 'struct > AVInputFormat **') invalid) > while(p != &format->next && !format->next && > !__c11_atomic_compare_exchange_strong(p, &cmp, format, 5, 5)) > ^ > ~ > src/libavformat/format.c:81:51: error: address argument to atomic operation > must be a pointer to _Atomic type ('AVOutputFormat **' (aka 'struct > AVOutputFormat **') invalid) > while(p != &format->next && !format->next && > !__c11_atomic_compare_exchange_strong(p, &cmp, format, 5, 5)) > ^ > ~ > 2 errors generated. > make: *** [libavformat/format.o] Error 1
Casting the first argument to (atomic_intptr_t *) on GCC 6 gives me a warning about making integer from pointer, but still works nonetheless. I'm not sure how to fix this. Got any idea? _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel