aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-03-15 01:08:45 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-03-15 01:08:45 +0100
commit41d08ca57564e1b9d8a4a12cfafe67a2a85914aa (patch)
treeacd1e6831d5699c7adf0f6db59ed8fcf2764c954
parent2b8d28439b6e0d368d31cecedb2edbc64375b3bf (diff)
downloadffmpeg-41d08ca57564e1b9d8a4a12cfafe67a2a85914aa.tar.gz
avcodec/arm/cabac: fix inline cabac reader with the UNCHECKED bitstream reader
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/arm/cabac.h6
-rw-r--r--libavcodec/h264_cabac.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/arm/cabac.h b/libavcodec/arm/cabac.h
index f581d86e70..fdbf86b45e 100644
--- a/libavcodec/arm/cabac.h
+++ b/libavcodec/arm/cabac.h
@@ -59,12 +59,18 @@ static av_always_inline int get_cabac_inline_arm(CABACContext *c,
"tst %[r_c] , %[r_c] \n\t"
"bne 2f \n\t"
"ldr %[r_c] , [%[c], %[byte]] \n\t"
+#if UNCHECKED_BITSTREAM_READER
+ "ldrh %[tmp] , [%[r_c]] \n\t"
+ "add %[r_c] , %[r_c] , #2 \n\t"
+ "str %[r_c] , [%[c], %[byte]] \n\t"
+#else
"ldr %[r_b] , [%[c], %[end]] \n\t"
"ldrh %[tmp] , [%[r_c]] \n\t"
"cmp %[r_c] , %[r_b] \n\t"
"itt lt \n\t"
"addlt %[r_c] , %[r_c] , #2 \n\t"
"strlt %[r_c] , [%[c], %[byte]] \n\t"
+#endif
"sub %[r_c] , %[low] , #1 \n\t"
"add %[r_b] , %[tables] , %[norm_off] \n\t"
"eor %[r_c] , %[low] , %[r_c] \n\t"
diff --git a/libavcodec/h264_cabac.c b/libavcodec/h264_cabac.c
index e6fc652794..1f7320c277 100644
--- a/libavcodec/h264_cabac.c
+++ b/libavcodec/h264_cabac.c
@@ -1620,7 +1620,7 @@ decode_cabac_residual_internal(H264Context *h, int16_t *block,
cc.range = h->cabac.range;
cc.low = h->cabac.low;
cc.bytestream= h->cabac.bytestream;
-#if !UNCHECKED_BITSTREAM_READER || ARCH_ARM || ARCH_AARCH64
+#if !UNCHECKED_BITSTREAM_READER || ARCH_AARCH64
cc.bytestream_end = h->cabac.bytestream_end;
#endif
#else