mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avcodec/mpegaudiodsp: Make ff_mpadsp_init() thread-safe
The only thing missing for this is to make ff_mpadsp_init_x86() thread-safe; it currently isn't because a static table is initialized every time ff_mpadsp_init() is called (when ARCH_X86 is true). Solve this by initializing this table only once, namely together with the ordinary not-arch specific tables. This also allows to reuse their AVOnce. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
b9c1ab8907
commit
ead3134150
@ -73,6 +73,9 @@ static av_cold void mpadsp_init_tabs(void)
|
||||
ff_mdct_win_fixed[j + 4][i + 1] = -ff_mdct_win_fixed[j][i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
if (ARCH_X86)
|
||||
ff_mpadsp_init_x86_tabs();
|
||||
}
|
||||
|
||||
av_cold void ff_mpadsp_init(MPADSPContext *s)
|
||||
|
@ -63,6 +63,7 @@ void ff_mpadsp_init_aarch64(MPADSPContext *s);
|
||||
void ff_mpadsp_init_arm(MPADSPContext *s);
|
||||
void ff_mpadsp_init_ppc(MPADSPContext *s);
|
||||
void ff_mpadsp_init_x86(MPADSPContext *s);
|
||||
void ff_mpadsp_init_x86_tabs(void);
|
||||
void ff_mpadsp_init_mipsfpu(MPADSPContext *s);
|
||||
void ff_mpadsp_init_mipsdsp(MPADSPContext *s);
|
||||
|
||||
|
@ -239,10 +239,8 @@ DECL_IMDCT_BLOCKS(avx,avx)
|
||||
#endif
|
||||
#endif /* HAVE_X86ASM */
|
||||
|
||||
av_cold void ff_mpadsp_init_x86(MPADSPContext *s)
|
||||
av_cold void ff_mpadsp_init_x86_tabs(void)
|
||||
{
|
||||
av_unused int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
int i, j;
|
||||
for (j = 0; j < 4; j++) {
|
||||
for (i = 0; i < 40; i ++) {
|
||||
@ -256,6 +254,11 @@ av_cold void ff_mpadsp_init_x86(MPADSPContext *s)
|
||||
mdct_win_sse[1][j][4*i + 3] = ff_mdct_win_float[j + 4][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
av_cold void ff_mpadsp_init_x86(MPADSPContext *s)
|
||||
{
|
||||
av_unused int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
#if HAVE_6REGS && HAVE_SSE_INLINE
|
||||
if (INLINE_SSE(cpu_flags)) {
|
||||
|
Loading…
Reference in New Issue
Block a user