|
|
|
@@ -5121,16 +5121,26 @@ enum AVLockOp { |
|
|
|
|
|
|
|
/** |
|
|
|
* Register a user provided lock manager supporting the operations |
|
|
|
* specified by AVLockOp. mutex points to a (void *) where the |
|
|
|
* lockmgr should store/get a pointer to a user allocated mutex. It's |
|
|
|
* NULL upon AV_LOCK_CREATE and != NULL for all other ops. |
|
|
|
* |
|
|
|
* @param cb User defined callback. Note: FFmpeg may invoke calls to this |
|
|
|
* callback during the call to av_lockmgr_register(). |
|
|
|
* Thus, the application must be prepared to handle that. |
|
|
|
* If cb is set to NULL the lockmgr will be unregistered. |
|
|
|
* Also note that during unregistration the previously registered |
|
|
|
* lockmgr callback may also be invoked. |
|
|
|
* 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. |
|
|
|
*/ |
|
|
|
int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); |
|
|
|
|
|
|
|
|