comparison avcodec.h @ 9742:0d6f887d91fb libavcodec

Add a lock manager API to libavcodec. Allows an application to register a callback that manages mutexes on behalf of FFmpeg. With this callback registered FFmpeg is fully thread safe.
author andoma
date Sun, 31 May 2009 06:51:18 +0000
parents 0bfb23c7633d
children 48572d70c95f
comparison
equal deleted inserted replaced
9741:e52891e48ceb 9742:0d6f887d91fb
28 28
29 #include <errno.h> 29 #include <errno.h>
30 #include "libavutil/avutil.h" 30 #include "libavutil/avutil.h"
31 31
32 #define LIBAVCODEC_VERSION_MAJOR 52 32 #define LIBAVCODEC_VERSION_MAJOR 52
33 #define LIBAVCODEC_VERSION_MINOR 29 33 #define LIBAVCODEC_VERSION_MINOR 30
34 #define LIBAVCODEC_VERSION_MICRO 1 34 #define LIBAVCODEC_VERSION_MICRO 1
35 35
36 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ 36 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
37 LIBAVCODEC_VERSION_MINOR, \ 37 LIBAVCODEC_VERSION_MINOR, \
38 LIBAVCODEC_VERSION_MICRO) 38 LIBAVCODEC_VERSION_MICRO)
3709 * if hwaccel is non-NULL, returns the next registered hardware accelerator 3709 * if hwaccel is non-NULL, returns the next registered hardware accelerator
3710 * after hwaccel, or NULL if hwaccel is the last one. 3710 * after hwaccel, or NULL if hwaccel is the last one.
3711 */ 3711 */
3712 AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); 3712 AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel);
3713 3713
3714
3715 /**
3716 * Lock operation used by lockmgr
3717 */
3718 enum AVLockOp {
3719 AV_LOCK_CREATE, ///< Create a mutex
3720 AV_LOCK_OBTAIN, ///< Lock the mutex
3721 AV_LOCK_RELEASE, ///< Unlock the mutex
3722 AV_LOCK_DESTROY, ///< Free mutex resources
3723 };
3724
3725 /**
3726 * Register a user provided lock manager supporting the operations
3727 * specified by AVLockOp. \p mutex points to a (void *) where the
3728 * lockmgr should store/get a pointer to a user allocated mutex. It's
3729 * NULL upon AV_LOCK_CREATE and != NULL for all other ops.
3730 *
3731 * @param cb User defined callback. Note: FFmpeg may invoke calls to this
3732 * callback during the call to av_lockmgr_register().
3733 * Thus, the application must be prepared to handle that.
3734 * If cb is set to NULL the lockmgr will be unregistered.
3735 * Also note that during unregistration the previously registered
3736 * lockmgr callback may also be invoked.
3737 */
3738 int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op));
3739
3714 #endif /* AVCODEC_AVCODEC_H */ 3740 #endif /* AVCODEC_AVCODEC_H */