Register a user provided lock manager supporting the operations
specified by AVLockOp. The "mutex" argument to the function points
to a (void *) where the lockmgr should store/get a pointer to a user
allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the
value left by the last call for all other ops. If the lock manager is
unable to perform the op then it should leave the mutex in the same
state as when it was called and return a non-zero value. However,
when called with AV_LOCK_DESTROY the mutex will always be assumed to
have been successfully destroyed. If av_lockmgr_register succeeds
it will return a non-negative value, if it fails it will return a
negative value and destroy all mutex and unregister all callbacks.
av_lockmgr_register is not thread-safe, it must be called from a
single thread before any calls which make use of locking are used.
@param cb User defined callback. av_lockmgr_register invokes calls
to this callback and the previously registered callback.
The callback will be used to create more than one mutex
each of which must be backed by its own underlying locking
mechanism (i.e. do not use a single static object to
implement your lock manager). If cb is set to NULL the
lockmgr will be unregistered.
@deprecated This function does nothing, and always returns 0. Be sure to
build with thread support to get basic thread safety.
Register a user provided lock manager supporting the operations specified by AVLockOp. The "mutex" argument to the function points to a (void *) where the lockmgr should store/get a pointer to a user allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the value left by the last call for all other ops. If the lock manager is unable to perform the op then it should leave the mutex in the same state as when it was called and return a non-zero value. However, when called with AV_LOCK_DESTROY the mutex will always be assumed to have been successfully destroyed. If av_lockmgr_register succeeds it will return a non-negative value, if it fails it will return a negative value and destroy all mutex and unregister all callbacks. av_lockmgr_register is not thread-safe, it must be called from a single thread before any calls which make use of locking are used.
@param cb User defined callback. av_lockmgr_register invokes calls to this callback and the previously registered callback. The callback will be used to create more than one mutex each of which must be backed by its own underlying locking mechanism (i.e. do not use a single static object to implement your lock manager). If cb is set to NULL the lockmgr will be unregistered.
@deprecated This function does nothing, and always returns 0. Be sure to build with thread support to get basic thread safety.