[FFmpeg-devel] [PATCH 0/7] convert most of the remaining files to stdatomic
James Almer
jamrial at gmail.com
Thu Mar 23 05:28:15 EET 2017
On 3/22/2017 11:01 PM, James Almer wrote:
> 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?
Does the attached patch compile with Clang? GCC 6 seems happy with it.
It's getting kind of ugly in any case.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-avformat-format-convert-to-stdatomic.patch
Type: text/x-patch
Size: 1944 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170323/6fd7336e/attachment.bin>
More information about the ffmpeg-devel
mailing list