diff options
Diffstat (limited to 'lib/rbcodec/dsp/dsp_arm_v6.S')
-rw-r--r-- | lib/rbcodec/dsp/dsp_arm_v6.S | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/rbcodec/dsp/dsp_arm_v6.S b/lib/rbcodec/dsp/dsp_arm_v6.S index a9a88ce5bf..a36760f744 100644 --- a/lib/rbcodec/dsp/dsp_arm_v6.S +++ b/lib/rbcodec/dsp/dsp_arm_v6.S | |||
@@ -20,19 +20,21 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | /**************************************************************************** | 22 | /**************************************************************************** |
23 | * void sample_output_mono(int count, struct dsp_data *data, | 23 | * void sample_output_mono(struct sample_io_data *this, |
24 | * const int32_t *src[], int16_t *dst) | 24 | * struct dsp_buffer *src, |
25 | * struct dsp_buffer *dst) | ||
25 | */ | 26 | */ |
26 | .section .text, "ax", %progbits | 27 | .section .text |
27 | .align 2 | ||
28 | .global sample_output_mono | 28 | .global sample_output_mono |
29 | .type sample_output_mono, %function | 29 | .type sample_output_mono, %function |
30 | sample_output_mono: | 30 | sample_output_mono: |
31 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst | 31 | @ input: r0 = this, r1 = src, r2 = dst |
32 | stmfd sp!, { r4, lr } @ | 32 | stmfd sp!, { r4, lr } @ |
33 | @ | 33 | @ |
34 | ldr r1, [r1] @ r1 = data->output_scale | 34 | ldr r0, [r0] @ r0 = this->outcount |
35 | ldr r2, [r2] @ r2 = src[0] | 35 | ldr r3, [r2, #4] @ r3 = dst->p16out |
36 | ldr r2, [r1, #4] @ r2 = src->p32[0] | ||
37 | ldrb r1, [r1, #19] @ r1 = src->format.output_scale | ||
36 | @ | 38 | @ |
37 | mov r4, #1 @ r4 = 1 << (scale - 1) | 39 | mov r4, #1 @ r4 = 1 << (scale - 1) |
38 | mov r4, r4, lsl r1 @ | 40 | mov r4, r4, lsl r1 @ |
@@ -68,19 +70,21 @@ sample_output_mono: | |||
68 | .size sample_output_mono, .-sample_output_mono | 70 | .size sample_output_mono, .-sample_output_mono |
69 | 71 | ||
70 | /**************************************************************************** | 72 | /**************************************************************************** |
71 | * void sample_output_stereo(int count, struct dsp_data *data, | 73 | * void sample_output_stereo(struct sample_io_data *this, |
72 | * const int32_t *src[], int16_t *dst) | 74 | * struct dsp_buffer *src, |
75 | * struct dsp_buffer *dst) | ||
73 | */ | 76 | */ |
74 | .section .text, "ax", %progbits | 77 | .section .text |
75 | .align 2 | ||
76 | .global sample_output_stereo | 78 | .global sample_output_stereo |
77 | .type sample_output_stereo, %function | 79 | .type sample_output_stereo, %function |
78 | sample_output_stereo: | 80 | sample_output_stereo: |
79 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst | 81 | @ input: r0 = this, r1 = src, r2 = dst |
80 | stmfd sp!, { r4-r7, lr } @ | 82 | stmfd sp!, { r4-r7, lr } @ |
81 | @ | 83 | @ |
82 | ldr r1, [r1] @ r1 = data->output_scale | 84 | ldr r0, [r0] @ r0 = this->outcount |
83 | ldmia r2, { r2, r4 } @ r2 = src[0], r4 = src[1] | 85 | ldr r3, [r2, #4] @ r3 = dst->p16out |
86 | ldmib r1, { r2, r4 } @ r2 = src->p32[0], r4 = src->p32[1] | ||
87 | ldrb r1, [r1, #19] @ r1 = src->format.output_scale | ||
84 | @ | 88 | @ |
85 | mov r5, #1 @ r5 = 1 << (scale - 1) | 89 | mov r5, #1 @ r5 = 1 << (scale - 1) |
86 | mov r5, r5, lsl r1 @ | 90 | mov r5, r5, lsl r1 @ |