mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
avcodec/mpegaudiodec: Make decoders init-threadsafe
Simple now that ff_mpadsp_init() and ff_mpa_synth_init_* are thread-safe. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
b29a3f3e0f
commit
c778f2266d
@ -53,6 +53,7 @@ AVCodec ff_mp1_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_S16,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP2_DECODER
|
||||
@ -70,6 +71,7 @@ AVCodec ff_mp2_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_S16,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3_DECODER
|
||||
@ -87,6 +89,7 @@ AVCodec ff_mp3_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_S16,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3ADU_DECODER
|
||||
@ -104,6 +107,7 @@ AVCodec ff_mp3adu_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_S16,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3ON4_DECODER
|
||||
@ -121,6 +125,6 @@ AVCodec ff_mp3on4_decoder = {
|
||||
.flush = flush_mp3on4,
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
|
||||
};
|
||||
#endif
|
||||
|
@ -53,6 +53,7 @@ AVCodec ff_mp1float_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
|
||||
AV_SAMPLE_FMT_FLT,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP2FLOAT_DECODER
|
||||
@ -70,6 +71,7 @@ AVCodec ff_mp2float_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
|
||||
AV_SAMPLE_FMT_FLT,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3FLOAT_DECODER
|
||||
@ -87,6 +89,7 @@ AVCodec ff_mp3float_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
|
||||
AV_SAMPLE_FMT_FLT,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3ADUFLOAT_DECODER
|
||||
@ -104,6 +107,7 @@ AVCodec ff_mp3adufloat_decoder = {
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
|
||||
AV_SAMPLE_FMT_FLT,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
};
|
||||
#endif
|
||||
#if CONFIG_MP3ON4FLOAT_DECODER
|
||||
@ -121,6 +125,6 @@ AVCodec ff_mp3on4float_decoder = {
|
||||
.flush = flush_mp3on4,
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
|
||||
};
|
||||
#endif
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "libavutil/crc.h"
|
||||
#include "libavutil/float_dsp.h"
|
||||
#include "libavutil/libm.h"
|
||||
#include "libavutil/thread.h"
|
||||
#include "avcodec.h"
|
||||
#include "get_bits.h"
|
||||
#include "internal.h"
|
||||
@ -405,14 +406,9 @@ static av_cold void decode_init_static(void)
|
||||
|
||||
static av_cold int decode_init(AVCodecContext * avctx)
|
||||
{
|
||||
static int initialized_tables = 0;
|
||||
static AVOnce init_static_once = AV_ONCE_INIT;
|
||||
MPADecodeContext *s = avctx->priv_data;
|
||||
|
||||
if (!initialized_tables) {
|
||||
decode_init_static();
|
||||
initialized_tables = 1;
|
||||
}
|
||||
|
||||
s->avctx = avctx;
|
||||
|
||||
#if USE_FLOATS
|
||||
@ -438,6 +434,8 @@ static av_cold int decode_init(AVCodecContext * avctx)
|
||||
if (avctx->codec_id == AV_CODEC_ID_MP3ADU)
|
||||
s->adu_mode = 1;
|
||||
|
||||
ff_thread_once(&init_static_once, decode_init_static);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user