summaryrefslogtreecommitdiff
path: root/libavcodec/arm/vp56_arith.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-29 02:55:19 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-29 03:34:35 +0200
commitb8a43bc1b50f409414493a05f6c4b7895ca4ddf9 (patch)
tree95dda1b7289aac9bdb1f457417baf9515aa4383a /libavcodec/arm/vp56_arith.h
parent39d607e5bbc25ad9629683702b510e865434ef21 (diff)
parent90da52f01f8b6c22af22a002eb226989b1cf7ef8 (diff)
Merge remote-tracking branch 'qatar/master' into master
* qatar/master: (27 commits) ac3enc: fix LOCAL_ALIGNED usage in count_mantissa_bits() ac3dsp: do not use the ff_* prefix when referencing ff_ac3_bap_bits. ac3dsp: fix loop condition in ac3_update_bap_counts_c() ARM: unbreak build ac3enc: modify mantissa bit counting to keep bap counts for all values of bap instead of just 0 to 4. ac3enc: split mantissa bit counting into a separate function. ac3enc: store per-block/channel bap pointers by reference block in a 2D array rather than in the AC3Block struct. get_bits: add av_unused tag to cache variable sws: replace all long with int. ARM: aacdec: fix constraints on inline asm ARM: remove unnecessary volatile from inline asm ARM: add "cc" clobbers to inline asm where needed ARM: improve FASTDIV asm ac3enc: use LOCAL_ALIGNED macro APIchanges: fill in git hash for av_get_pix_fmt_name (0420bd7). lavu: add av_get_pix_fmt_name() convenience function cmdutils: remove OPT_FUNC2 swscale: fix crash in bilinear scaling. vpxenc: add VP8E_SET_STATIC_THRESHOLD mapping webm: support stereo videos in matroska/webm muxer ... Conflicts: Changelog cmdutils.c cmdutils.h doc/APIchanges doc/muxers.texi ffmpeg.c ffplay.c libavcodec/ac3enc.c libavcodec/ac3enc_float.c libavcodec/avcodec.h libavcodec/get_bits.h libavcodec/libvpxenc.c libavcodec/version.h libavdevice/libdc1394.c libavformat/matroskaenc.c libavutil/avutil.h libswscale/rgb2rgb.c libswscale/swscale.c libswscale/swscale_template.c libswscale/x86/swscale_template.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/arm/vp56_arith.h')
-rw-r--r--libavcodec/arm/vp56_arith.h64
1 files changed, 33 insertions, 31 deletions
diff --git a/libavcodec/arm/vp56_arith.h b/libavcodec/arm/vp56_arith.h
index 50a164d51c..cd02579e5b 100644
--- a/libavcodec/arm/vp56_arith.h
+++ b/libavcodec/arm/vp56_arith.h
@@ -31,24 +31,25 @@ static inline int vp56_rac_get_prob_armv6(VP56RangeCoder *c, int pr)
unsigned high = c->high << shift;
unsigned bit;
- __asm__ volatile ("adds %3, %3, %0 \n"
- "cmpcs %7, %4 \n"
- "ldrcsh %2, [%4], #2 \n"
- "rsb %0, %6, #256 \n"
- "smlabb %0, %5, %6, %0 \n"
- "rev16cs %2, %2 \n"
- "orrcs %1, %1, %2, lsl %3 \n"
- "subcs %3, %3, #16 \n"
- "lsr %0, %0, #8 \n"
- "cmp %1, %0, lsl #16 \n"
- "subge %1, %1, %0, lsl #16 \n"
- "subge %0, %5, %0 \n"
- "movge %2, #1 \n"
- "movlt %2, #0 \n"
- : "=&r"(c->high), "=&r"(c->code_word), "=&r"(bit),
- "+&r"(c->bits), "+&r"(c->buffer)
- : "r"(high), "r"(pr), "r"(c->end - 1),
- "0"(shift), "1"(code_word));
+ __asm__ ("adds %3, %3, %0 \n"
+ "cmpcs %7, %4 \n"
+ "ldrcsh %2, [%4], #2 \n"
+ "rsb %0, %6, #256 \n"
+ "smlabb %0, %5, %6, %0 \n"
+ "rev16cs %2, %2 \n"
+ "orrcs %1, %1, %2, lsl %3 \n"
+ "subcs %3, %3, #16 \n"
+ "lsr %0, %0, #8 \n"
+ "cmp %1, %0, lsl #16 \n"
+ "subge %1, %1, %0, lsl #16 \n"
+ "subge %0, %5, %0 \n"
+ "movge %2, #1 \n"
+ "movlt %2, #0 \n"
+ : "=&r"(c->high), "=&r"(c->code_word), "=&r"(bit),
+ "+&r"(c->bits), "+&r"(c->buffer)
+ : "r"(high), "r"(pr), "r"(c->end - 1),
+ "0"(shift), "1"(code_word)
+ : "cc");
return bit;
}
@@ -62,19 +63,20 @@ static inline int vp56_rac_get_prob_branchy_armv6(VP56RangeCoder *c, int pr)
unsigned low;
unsigned tmp;
- __asm__ volatile ("adds %3, %3, %0 \n"
- "cmpcs %7, %4 \n"
- "ldrcsh %2, [%4], #2 \n"
- "rsb %0, %6, #256 \n"
- "smlabb %0, %5, %6, %0 \n"
- "rev16cs %2, %2 \n"
- "orrcs %1, %1, %2, lsl %3 \n"
- "subcs %3, %3, #16 \n"
- "lsr %0, %0, #8 \n"
- "lsl %2, %0, #16 \n"
- : "=&r"(low), "+&r"(code_word), "=&r"(tmp),
- "+&r"(c->bits), "+&r"(c->buffer)
- : "r"(high), "r"(pr), "r"(c->end - 1), "0"(shift));
+ __asm__ ("adds %3, %3, %0 \n"
+ "cmpcs %7, %4 \n"
+ "ldrcsh %2, [%4], #2 \n"
+ "rsb %0, %6, #256 \n"
+ "smlabb %0, %5, %6, %0 \n"
+ "rev16cs %2, %2 \n"
+ "orrcs %1, %1, %2, lsl %3 \n"
+ "subcs %3, %3, #16 \n"
+ "lsr %0, %0, #8 \n"
+ "lsl %2, %0, #16 \n"
+ : "=&r"(low), "+&r"(code_word), "=&r"(tmp),
+ "+&r"(c->bits), "+&r"(c->buffer)
+ : "r"(high), "r"(pr), "r"(c->end - 1), "0"(shift)
+ : "cc");
if (code_word >= tmp) {
c->high = high - low;