Signed-off-by: Mans Rullgard <mans@mansr.com>
| ... | ... |
@@ -27,6 +27,7 @@ void ff_ac3_exponent_min_neon(uint8_t *exp, int num_reuse_blocks, int nb_coefs); |
| 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,5 +36,6 @@ av_cold void ff_ac3dsp_init_arm(AC3DSPContext *c, int bit_exact) |
| 35 | 35 |
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_neon; |
| 36 | 36 |
c->ac3_lshift_int16 = ff_ac3_lshift_int16_neon; |
| 37 | 37 |
c->ac3_rshift_int32 = ff_ac3_rshift_int32_neon; |
| 38 |
+ c->float_to_fixed24 = ff_float_to_fixed24_neon; |
|
| 38 | 39 |
} |
| 39 | 40 |
} |
| ... | ... |
@@ -78,3 +78,17 @@ function ff_ac3_rshift_int32_neon, export=1 |
| 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 |