Browse Source

avcodec: Allow locking and unlocking an avformat specific mutex

This extends the lock manager in avcodec to manage two separate
mutexes via the user-specified lock functions.

Signed-off-by: Martin Storsjö <martin@martin.st>
tags/n0.9
Martin Storsjö 13 years ago
parent
commit
2d1b6fb72b
3 changed files with 27 additions and 1 deletions
  1. +3
    -0
      libavcodec/internal.h
  2. +23
    -0
      libavcodec/utils.c
  3. +1
    -1
      libavcodec/version.h

+ 3
- 0
libavcodec/internal.h View File

@@ -55,4 +55,7 @@ int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b);

unsigned int avpriv_toupper4(unsigned int x);

int avpriv_lock_avformat(void);
int avpriv_unlock_avformat(void);

#endif /* AVCODEC_INTERNAL_H */

+ 23
- 0
libavcodec/utils.c View File

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


+ 1
- 1
libavcodec/version.h View File

@@ -21,7 +21,7 @@
#define AVCODEC_VERSION_H

#define LIBAVCODEC_VERSION_MAJOR 53
#define LIBAVCODEC_VERSION_MINOR 15
#define LIBAVCODEC_VERSION_MINOR 16
#define LIBAVCODEC_VERSION_MICRO 0

#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \


Loading…
Cancel
Save