diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libffmpegFLAC/arm.S | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/apps/codecs/libffmpegFLAC/arm.S b/apps/codecs/libffmpegFLAC/arm.S index eba2251908..27b38efa8d 100644 --- a/apps/codecs/libffmpegFLAC/arm.S +++ b/apps/codecs/libffmpegFLAC/arm.S | |||
@@ -217,18 +217,15 @@ lpc_decode_arm: | |||
217 | /* we do the filtering in an unrolled by 4 loop as far as we can, and then | 217 | /* we do the filtering in an unrolled by 4 loop as far as we can, and then |
218 | do the rest by jump table. */ | 218 | do the rest by jump table. */ |
219 | add r5, r4, r2, lsl #2 @ need to start in the other end of coefs | 219 | add r5, r4, r2, lsl #2 @ need to start in the other end of coefs |
220 | mov r6, r3 @ working copy of history pointer | ||
221 | mov r7, r2, lsr #2 @ r7 = coefs/4 | 220 | mov r7, r2, lsr #2 @ r7 = coefs/4 |
222 | mov r14, #0 @ init accumulator | 221 | mov r14, #0 @ init accumulator |
223 | .dloop1: | 222 | .dloop1: |
224 | ldmdb r5!, { r8-r11 } | 223 | ldmdb r5!, { r8-r11 } |
225 | ldr r12, [r6], #4 | 224 | ldmia r3!, { r6, r12 } |
226 | mla r14, r12, r11, r14 | 225 | mla r14, r6, r11, r14 |
227 | ldr r12, [r6], #4 | ||
228 | mla r14, r12, r10, r14 | 226 | mla r14, r12, r10, r14 |
229 | ldr r12, [r6], #4 | 227 | ldmia r3!, { r6, r12 } |
230 | mla r14, r12, r9, r14 | 228 | mla r14, r6, r9, r14 |
231 | ldr r12, [r6], #4 | ||
232 | mla r14, r12, r8, r14 | 229 | mla r14, r12, r8, r14 |
233 | subs r7, r7, #1 | 230 | subs r7, r7, #1 |
234 | bne .dloop1 | 231 | bne .dloop1 |
@@ -242,24 +239,25 @@ lpc_decode_arm: | |||
242 | b .twoleft | 239 | b .twoleft |
243 | @ implicit .threeleft | 240 | @ implicit .threeleft |
244 | ldr r12, [r5, #-4]! | 241 | ldr r12, [r5, #-4]! |
245 | ldr r8, [r6], #4 | 242 | ldr r8, [r3], #4 |
246 | mla r14, r12, r8, r14 | 243 | mla r14, r12, r8, r14 |
247 | .twoleft: | 244 | .twoleft: |
248 | ldr r12, [r5, #-4]! | 245 | ldr r12, [r5, #-4]! |
249 | ldr r8, [r6], #4 | 246 | ldr r8, [r3], #4 |
250 | mla r14, r12, r8, r14 | 247 | mla r14, r12, r8, r14 |
251 | .oneleft: | 248 | .oneleft: |
252 | ldr r12, [r5, #-4]! | 249 | ldr r12, [r5, #-4]! |
253 | ldr r8, [r6], #4 | 250 | ldr r8, [r3], #4 |
254 | mla r14, r12, r8, r14 | 251 | mla r14, r12, r8, r14 |
255 | 252 | ||
256 | .dsave: | 253 | .dsave: |
257 | ldr r12, [r6] @ load residual | 254 | ldr r12, [r3] @ load residual |
258 | add r14, r12, r14, asr r1 @ shift sum by qlevel bits and add residual | 255 | add r14, r12, r14, asr r1 @ shift sum by qlevel bits and add residual |
259 | str r14, [r6] @ store result | 256 | str r14, [r3], #4 @ store result |
260 | add r3, r3, #4 @ increment history pointer | 257 | sub r3, r3, r2, lsl #2 @ and wrap history pointer back to next first pos |
261 | subs r0, r0, #1 @ are we done? | 258 | subs r0, r0, #1 @ are we done? |
262 | bne .default @ no, prepare for next sample | 259 | bne .default @ no, prepare for next sample |
263 | 260 | ||
264 | .exit: | 261 | .exit: |
265 | ldmia sp!, { r4-r11, pc } | 262 | ldmia sp!, { r4-r11, pc } |
263 | |||