deps-libff: Add atomic long inc/dec functions

This commit is contained in:
kc5nra 2015-03-19 00:25:58 -05:00 committed by John Bradley
parent 47783f26c7
commit 164cbeeede
4 changed files with 87 additions and 0 deletions

View file

@ -17,6 +17,7 @@ set(libff_HEADERS
libff/ff-clock.h
libff/ff-frame.h
libff/ff-packet-queue.h
libff/ff-threading.h
libff/ff-timer.h
#
libff/ff-demuxer.h
@ -36,6 +37,14 @@ set(libff_SOURCES
libff/ff-audio-decoder.c
libff/ff-video-decoder.c)
if (WIN32)
list(APPEND libff_SOURCES
libff/ff-threading-windows.c)
else(WIN32)
list(APPEND libff_SOURCES
libff/ff-threading-posix.c)
endif(WIN32)
add_library (libff STATIC
${libff_HEADERS}
${libff_SOURCES})

27
deps/libff/libff/ff-threading-posix.c vendored Normal file
View file

@ -0,0 +1,27 @@
/*
* Copyright (c) 2014 Hugh Bailey <obs.jim@gmail.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "ff-threading.h"
long ff_atomic_inc_long(volatile long *val)
{
return __sync_add_and_fetch(val, 1);
}
long ff_atomic_dec_long(volatile long *val)
{
return __sync_sub_and_fetch(val, 1);
}

31
deps/libff/libff/ff-threading-windows.c vendored Normal file
View file

@ -0,0 +1,31 @@
/*
* Copyright (c) 2014 Hugh Bailey <obs.jim@gmail.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "ff-threading.h"
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
long ff_atomic_inc_long(volatile long *val)
{
return InterlockedIncrement(val);
}
long ff_atomic_dec_long(volatile long *val)
{
return InterlockedDecrement(val);
}

20
deps/libff/libff/ff-threading.h vendored Normal file
View file

@ -0,0 +1,20 @@
/*
* Copyright (c) 2015 John R. Bradley <jrb@turrettech.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#pragma once
long ff_atomic_inc_long(volatile long *val);
long ff_atomic_dec_long(volatile long *val);