Revision d782bca4
libavcodec/arm/ac3dsp_init_arm.c | ||
---|---|---|
27 | 27 |
int ff_ac3_max_msb_abs_int16_neon(const int16_t *src, int len); |
28 | 28 |
void ff_ac3_lshift_int16_neon(int16_t *src, unsigned len, unsigned shift); |
29 | 29 |
void ff_ac3_rshift_int32_neon(int32_t *src, unsigned len, unsigned shift); |
30 |
void ff_float_to_fixed24_neon(int32_t *dst, const float *src, unsigned int len); |
|
30 | 31 |
|
31 | 32 |
av_cold void ff_ac3dsp_init_arm(AC3DSPContext *c, int bit_exact) |
32 | 33 |
{ |
... | ... | |
35 | 36 |
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_neon; |
36 | 37 |
c->ac3_lshift_int16 = ff_ac3_lshift_int16_neon; |
37 | 38 |
c->ac3_rshift_int32 = ff_ac3_rshift_int32_neon; |
39 |
c->float_to_fixed24 = ff_float_to_fixed24_neon; |
|
38 | 40 |
} |
39 | 41 |
} |
libavcodec/arm/ac3dsp_neon.S | ||
---|---|---|
78 | 78 |
bgt 1b |
79 | 79 |
bx lr |
80 | 80 |
endfunc |
81 |
|
|
82 |
function ff_float_to_fixed24_neon, export=1 |
|
83 |
1: vld1.32 {q0-q1}, [r1,:128]! |
|
84 |
vcvt.s32.f32 q0, q0, #24 |
|
85 |
vld1.32 {q2-q3}, [r1,:128]! |
|
86 |
vcvt.s32.f32 q1, q1, #24 |
|
87 |
vcvt.s32.f32 q2, q2, #24 |
|
88 |
vst1.32 {q0-q1}, [r0,:128]! |
|
89 |
vcvt.s32.f32 q3, q3, #24 |
|
90 |
vst1.32 {q2-q3}, [r0,:128]! |
|
91 |
subs r2, r2, #16 |
|
92 |
bgt 1b |
|
93 |
bx lr |
|
94 |
endfunc |
Also available in: Unified diff