avcodec/bitstream_filter: make av_register_bitstream_filter() thread safe
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
08f6fdc3e4
commit
b36b5edb8f
@ -21,6 +21,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
|
#include "libavutil/atomic.h"
|
||||||
#include "libavutil/mem.h"
|
#include "libavutil/mem.h"
|
||||||
|
|
||||||
static AVBitStreamFilter *first_bitstream_filter= NULL;
|
static AVBitStreamFilter *first_bitstream_filter= NULL;
|
||||||
@ -31,8 +32,9 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void av_register_bitstream_filter(AVBitStreamFilter *bsf){
|
void av_register_bitstream_filter(AVBitStreamFilter *bsf){
|
||||||
|
do {
|
||||||
bsf->next = first_bitstream_filter;
|
bsf->next = first_bitstream_filter;
|
||||||
first_bitstream_filter= bsf;
|
} while(bsf->next != avpriv_atomic_ptr_cas((void * volatile *)&first_bitstream_filter, bsf->next, bsf));
|
||||||
}
|
}
|
||||||
|
|
||||||
AVBitStreamFilterContext *av_bitstream_filter_init(const char *name){
|
AVBitStreamFilterContext *av_bitstream_filter_init(const char *name){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user