summaryrefslogtreecommitdiff
path: root/libavdevice/decklink_common.h
diff options
context:
space:
mode:
authorAaron Levinson <alevinsn@aracnet.com>2017-04-15 08:41:46 +0200
committerMarton Balint <cus@passwd.hu>2017-04-15 12:26:21 +0200
commit9e86a61870c1652cdcc6a34646aee40d973ba23b (patch)
tree219d266c41b2f2a1f13d99742cea1618ff5c0a16 /libavdevice/decklink_common.h
parente8547647292ee827db593a4d5b60f041a6af9769 (diff)
downloadffmpeg-9e86a61870c1652cdcc6a34646aee40d973ba23b.tar.gz
avdevice/decklink: remove pthread dependency
Purpose: avdevice/decklink: Removed pthread dependency by replacing semaphore used in code appropriately. Doing so makes it easier to build ffmpeg using Visual C++ on Windows. This is a contination of Kyle Schwarz's "avdevice/decklink: Remove pthread dependency" patch that is available at https://patchwork.ffmpeg.org/patch/2654/ . This patch wasn't accepted, and as far as I can tell, there was no follow-up after it was rejected. Notes: Used Visual Studio 2015 (with update 3) for this. Comments: -- configure: Eliminated pthreads dependency for decklink_indev_deps and decklink_outdev_deps and replaced with threads dependency -- libavdevice/decklink_common.cpp / .h: a) Eliminated semaphore and replaced with a combination of a mutex, condition variable, and a counter (frames_buffer_available_spots). b) Removed include of pthread.h and semaphore.h and now using libavutil/thread.h instead. -- libavdevice/decklink_dec.cpp: Eliminated include of pthread.h and semaphore.h. -- libavdevice/decklink_enc.cpp: a) Eliminated include of pthread.h and semaphore.h. b) Replaced use of semaphore with the equivalent using a combination of a mutex, condition variable, and a counter (frames_buffer_available_spots). In theory, libavutil/thread.h and the associated code could have been modified instead to add cross-platform implementations of the sem_ functions, but an inspection of the ffmpeg source base indicates that there are only two cases in which semaphores are used (including this one that was replaced), so it was deemed to not be worth the effort. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavdevice/decklink_common.h')
-rw-r--r--libavdevice/decklink_common.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavdevice/decklink_common.h b/libavdevice/decklink_common.h
index 4753287ecf..c12cf18d70 100644
--- a/libavdevice/decklink_common.h
+++ b/libavdevice/decklink_common.h
@@ -24,6 +24,7 @@
#include <DeckLinkAPIVersion.h>
+#include "libavutil/thread.h"
#include "decklink_common_c.h"
class decklink_output_callback;
@@ -89,7 +90,9 @@ struct decklink_ctx {
int frames_preroll;
int frames_buffer;
- sem_t semaphore;
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+ int frames_buffer_available_spots;
int channels;
};