@ -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 ;
}