|
|
@@ -48,6 +48,7 @@ |
|
|
|
static int volatile entangled_thread_counter=0; |
|
|
|
static int (*ff_lockmgr_cb)(void **mutex, enum AVLockOp op); |
|
|
|
static void *codec_mutex; |
|
|
|
static void *avformat_mutex; |
|
|
|
|
|
|
|
void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) |
|
|
|
{ |
|
|
@@ -1270,6 +1271,8 @@ int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)) |
|
|
|
if (ff_lockmgr_cb) { |
|
|
|
if (ff_lockmgr_cb(&codec_mutex, AV_LOCK_DESTROY)) |
|
|
|
return -1; |
|
|
|
if (ff_lockmgr_cb(&avformat_mutex, AV_LOCK_DESTROY)) |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
ff_lockmgr_cb = cb; |
|
|
@@ -1277,6 +1280,26 @@ int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)) |
|
|
|
if (ff_lockmgr_cb) { |
|
|
|
if (ff_lockmgr_cb(&codec_mutex, AV_LOCK_CREATE)) |
|
|
|
return -1; |
|
|
|
if (ff_lockmgr_cb(&avformat_mutex, AV_LOCK_CREATE)) |
|
|
|
return -1; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int avpriv_lock_avformat(void) |
|
|
|
{ |
|
|
|
if (ff_lockmgr_cb) { |
|
|
|
if ((*ff_lockmgr_cb)(&avformat_mutex, AV_LOCK_OBTAIN)) |
|
|
|
return -1; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int avpriv_unlock_avformat(void) |
|
|
|
{ |
|
|
|
if (ff_lockmgr_cb) { |
|
|
|
if ((*ff_lockmgr_cb)(&avformat_mutex, AV_LOCK_RELEASE)) |
|
|
|
return -1; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|