mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-08 06:09:50 +00:00
dcadsp: add int8x8_fmul_int32 to dsp context
It is currently declared as a macro who is set to inlinable functions, among which a Neon and a default C implementations. Add a DSP parameter to each inline function, unused except by the default C implementation which calls a function from the DSP context. On an Arrandale CPU, gain for an inlined SSE2 function vs. a call: - Win32: 29 to 26 cycles - Win64: 25 to 23 cycles Signed-off-by: Janne Grunau <janne-libav@jannau.net>
This commit is contained in:
parent
e3fec3f095
commit
2bd44cb705
4 changed files with 16 additions and 7 deletions
|
|
@ -1086,12 +1086,10 @@ static const uint8_t abits_sizes[7] = { 7, 10, 12, 13, 15, 17, 19 };
|
|||
static const uint8_t abits_levels[7] = { 3, 5, 7, 9, 13, 17, 25 };
|
||||
|
||||
#ifndef int8x8_fmul_int32
|
||||
static inline void int8x8_fmul_int32(float *dst, const int8_t *src, int scale)
|
||||
static inline void int8x8_fmul_int32(DCADSPContext *dsp, float *dst,
|
||||
const int8_t *src, int scale)
|
||||
{
|
||||
float fscale = scale / 16.0;
|
||||
int i;
|
||||
for (i = 0; i < 8; i++)
|
||||
dst[i] = src[i] * fscale;
|
||||
dsp->int8x8_fmul_int32(dst, src, scale);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -1219,7 +1217,7 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
|||
s->debug_flag |= 0x01;
|
||||
}
|
||||
|
||||
int8x8_fmul_int32(subband_samples[k][l],
|
||||
int8x8_fmul_int32(&s->dcadsp, subband_samples[k][l],
|
||||
&high_freq_vq[hfvq][subsubframe * 8],
|
||||
s->scale_factor[k][l][0]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue