Revision d782bca4

View differences:

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