--- configure | 13 ++++++++++--- libavdevice/jack.c | 10 ++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/configure b/configure index 287896f..78f9618 100755 --- a/configure +++ b/configure @@ -1732,6 +1732,7 @@ BUILTIN_LIST=" mm_empty rdtsc sarestart + sem_timedwait sync_val_compare_and_swap " HAVE_LIST_CMDLINE=" @@ -1753,6 +1754,7 @@ HEADERS_LIST=" asm_types_h cdio_paranoia_h cdio_paranoia_paranoia_h + dispatch_dispatch_h dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h dev_ic_bt8xx_h @@ -2757,7 +2759,7 @@ gdigrab_indev_deps="CreateDIBSection" gdigrab_indev_extralibs="-lgdi32" gdigrab_indev_select="bmp_decoder" iec61883_indev_deps="libiec61883" -jack_indev_deps="jack_jack_h sem_timedwait" +jack_indev_deps="jack_jack_h" lavfi_indev_deps="avfilter" libcdio_indev_deps="libcdio" libdc1394_indev_deps="libdc1394" @@ -5266,6 +5268,7 @@ check_builtin atomic_compare_exchange "" "int *ptr, *oldval; int newval; __atomi check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()" check_builtin MemoryBarrier windows.h "MemoryBarrier()" check_builtin sarestart signal.h "SA_RESTART" +check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)" check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)" @@ -5330,6 +5333,7 @@ check_func_headers glob.h glob enabled xlib && check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext +check_header dispatch/dispatch.h check_header direct.h check_header dirent.h check_header dlfcn.h @@ -5702,8 +5706,11 @@ check_header soundcard.h enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound -enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait && - check_func jack_port_get_latency_range -ljack +enabled jack_indev && + check_lib2 jack/jack.h jack_client_open -ljack && + check_func jack_port_get_latency_range -ljack && + enabled_any sem_timedwait dispatch_dispatch_h || + disable jack_indev enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio diff --git a/libavdevice/jack.c b/libavdevice/jack.c index 9ecbf9e..5455484 100644 --- a/libavdevice/jack.c +++ b/libavdevice/jack.c @@ -35,6 +35,16 @@ #include "timefilter.h" #include "avdevice.h" +#if HAVE_DISPATCH_DISPATCH_H +#include <dispatch/dispatch.h> +#define sem_t dispatch_semaphore_t +#define sem_init(psem,x,val) *psem = dispatch_semaphore_create(val) +#define sem_post(psem) dispatch_semaphore_signal(*psem) +#define sem_wait(psem) dispatch_semaphore_wait(*psem, DISPATCH_TIME_FOREVER) +#define sem_timedwait(psem, val) dispatch_semaphore_wait(*psem, dispatch_walltime(val, 0)) +#define sem_destroy(psem) dispatch_release(*psem) +#endif + /** * Size of the internal FIFO buffers as a number of audio packets */ -- 2.5.4 (Apple Git-61) > this breaks build when libjack is not available > > for example on mingw64 > without explicitly enabling jack it fails with: > ERROR: input device jack could not be enabled For some reason I assumed that the JACK indev had to be manually enabled, and therefore if it would be an error if it's dependencies. However, looking at the other indevs, I found that none of them threw errors, making it likely that all the indevs were on by default, and turned off when they weren't available (which would make sense). I've removed the die statement which, hopefully, will fix all remaining issues. Thanks for your patience, Josh _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel