diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-06-15 02:15:25 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-06-15 02:15:25 +0200 |
commit | c137fdd778e1bb82c2f0d7fa4a88adc97058d6d4 (patch) | |
tree | 6ba8284ec414ae9cc98d70a80fcb81a719d66272 /libavcodec/arm/mpegvideo_armv5te_s.S | |
parent | 9e2f448d68d9df7ad79d968db315c6b0cc79c4df (diff) | |
parent | 4e0583020567dd2062a908fe59aacba484e68049 (diff) | |
download | ffmpeg-c137fdd778e1bb82c2f0d7fa4a88adc97058d6d4.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
swscale: remove misplaced comment.
ffmpeg: fix streaming to ffserver.
swscale: split out RGB48 output functions from yuv2packed[12X]_c().
build: move vpath directives to main Makefile
swscale: fix JPEG-range YUV scaling artifacts.
build: move ALLFFLIBS to a more logical place
ARM: factor some repetitive code into macros
Fix SVQ3 after adding 4:4:4 H.264 support
H.264: fix CODEC_FLAG_GRAY
4:4:4 H.264 decoding support
ac3enc: fix allocation of floating point samples.
Conflicts:
ffmpeg.c
libavcodec/dsputil_template.c
libavcodec/h264.c
libavcodec/mpegvideo.c
libavcodec/snow.c
libswscale/swscale.c
libswscale/swscale_internal.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/arm/mpegvideo_armv5te_s.S')
-rw-r--r-- | libavcodec/arm/mpegvideo_armv5te_s.S | 61 |
1 files changed, 23 insertions, 38 deletions
diff --git a/libavcodec/arm/mpegvideo_armv5te_s.S b/libavcodec/arm/mpegvideo_armv5te_s.S index 0606bb43b6..82095ab15d 100644 --- a/libavcodec/arm/mpegvideo_armv5te_s.S +++ b/libavcodec/arm/mpegvideo_armv5te_s.S @@ -35,6 +35,21 @@ * * Inner loop should take 6 cycles per element on arm926ej-s (Nokia 770) */ + +.macro dequant_t dst, src, mul, add, tmp + rsbs \tmp, ip, \src, asr #16 + addgt \tmp, \add, #0 + rsblt \tmp, \add, #0 + smlatbne \dst, \src, \mul, \tmp +.endm + +.macro dequant_b dst, src, mul, add, tmp + rsbs \tmp, ip, \src, lsl #16 + addgt \tmp, \add, #0 + rsblt \tmp, \add, #0 + smlabbne \dst, \src, \mul, \tmp +.endm + function ff_dct_unquantize_h263_armv5te, export=1 push {r4-r9,lr} mov ip, #0 @@ -44,50 +59,20 @@ function ff_dct_unquantize_h263_armv5te, export=1 1: ldrd r6, [r0, #8] - rsbs r9, ip, r4, asr #16 - addgt r9, r2, #0 - rsblt r9, r2, #0 - smlatbne r9, r4, r1, r9 - - rsbs lr, ip, r5, asr #16 - addgt lr, r2, #0 - rsblt lr, r2, #0 - smlatbne lr, r5, r1, lr - - rsbs r8, ip, r4, asl #16 - addgt r8, r2, #0 - rsblt r8, r2, #0 - smlabbne r4, r4, r1, r8 - - rsbs r8, ip, r5, asl #16 - addgt r8, r2, #0 - rsblt r8, r2, #0 - smlabbne r5, r5, r1, r8 + dequant_t r9, r4, r1, r2, r9 + dequant_t lr, r5, r1, r2, lr + dequant_b r4, r4, r1, r2, r8 + dequant_b r5, r5, r1, r2, r8 strh r4, [r0], #2 strh r9, [r0], #2 strh r5, [r0], #2 strh lr, [r0], #2 - rsbs r9, ip, r6, asr #16 - addgt r9, r2, #0 - rsblt r9, r2, #0 - smlatbne r9, r6, r1, r9 - - rsbs lr, ip, r7, asr #16 - addgt lr, r2, #0 - rsblt lr, r2, #0 - smlatbne lr, r7, r1, lr - - rsbs r8, ip, r6, asl #16 - addgt r8, r2, #0 - rsblt r8, r2, #0 - smlabbne r6, r6, r1, r8 - - rsbs r8, ip, r7, asl #16 - addgt r8, r2, #0 - rsblt r8, r2, #0 - smlabbne r7, r7, r1, r8 + dequant_t r9, r6, r1, r2, r9 + dequant_t lr, r7, r1, r2, lr + dequant_b r6, r6, r1, r2, r8 + dequant_b r7, r7, r1, r2, r8 strh r6, [r0], #2 strh r9, [r0], #2 |