ARM: ac3: fix ac3_bit_alloc_calc_bap_armv6

This function was broken when the start bin was not at the start
of a band.

Signed-off-by: Mans Rullgard <mans@mansr.com>
pull/3/merge
Mans Rullgard 13 years ago
parent 148bc235b0
commit cd2f98f365
  1. 15
      libavcodec/arm/ac3dsp_armv6.S

@ -34,24 +34,23 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1
add r0, r0, r4, lsl #1 @ mask + band add r0, r0, r4, lsl #1 @ mask + band
add r4, lr, r4 add r4, lr, r4
add r7, r7, r2 @ bap + start add r7, r7, r2 @ bap + start
ldrb r10, [r4], #1
1: 1:
ldrsh r9, [r0], #2 @ mask[band] ldrsh r9, [r0], #2 @ mask[band]
mov r8, #0xff0 mov r8, #0xff0
sub r9, r9, r12 @ - snr_offset sub r9, r9, r12 @ - snr_offset
mov r11, r10 ldrb r10, [r4, #1]! @ band_start_tab[++band]
ldrb r10, [r4], #1 @ band_start_tab[band++]
subs r9, r9, r5 @ - floor subs r9, r9, r5 @ - floor
it lt it lt
movlt r9, #0 movlt r9, #0
cmp r10, r3 @ - end cmp r10, r3 @ - end
and r9, r9, r8, lsl #1 @ & 0x1fe0 and r9, r9, r8, lsl #1 @ & 0x1fe0
ite gt ite gt
subgt r8, r3, r11 subgt r8, r3, r2
suble r8, r10, r11 suble r8, r10, r2
mov r2, r10
add r9, r9, r5 @ + floor => m add r9, r9, r5 @ + floor => m
tst r8, #1 tst r8, #1
add r2, r7, r8 add r11, r7, r8
bne 3f bne 3f
b 5f b 5f
2: 2:
@ -65,9 +64,9 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1
ldrb lr, [r6, lr] ldrb lr, [r6, lr]
strb r8, [r7], #1 @ bap[bin] strb r8, [r7], #1 @ bap[bin]
strb lr, [r7], #1 strb lr, [r7], #1
5: cmp r7, r2 5: cmp r7, r11
blo 2b blo 2b
cmp r3, r11 cmp r3, r10
bgt 1b bgt 1b
pop {r4-r11,pc} pop {r4-r11,pc}
3: 3:

Loading…
Cancel
Save