summaryrefslogtreecommitdiff
path: root/vp8/encoder
diff options
context:
space:
mode:
authorAttila Nagy <attilanagy@google.com>2011-10-14 09:19:03 +0300
committerAttila Nagy <attilanagy@google.com>2011-10-14 10:53:04 +0300
commita5cd42feb9d5944cbc4043aca2829ef78e270431 (patch)
treea98dc73ceeaec8ebb10459c5a0ef0247a00a4c22 /vp8/encoder
parent6505adf271ff9ad79d024f63ebbdc2819e6ef259 (diff)
downloadlibvpx-a5cd42feb9d5944cbc4043aca2829ef78e270431.tar
libvpx-a5cd42feb9d5944cbc4043aca2829ef78e270431.tar.gz
libvpx-a5cd42feb9d5944cbc4043aca2829ef78e270431.tar.bz2
libvpx-a5cd42feb9d5944cbc4043aca2829ef78e270431.zip
Fix: vp8cx_pack_tokens_into_partitions_armv5 crash
It was crashing when number of partitions was bigger than the number of MB rows (ex. 128x96 with 8 partitions). Start point was not checked against mb_rows, plus extra "empty" partitions were not written out. Change-Id: I9c2f013b9ec022354b658fab4ef799ff8b1de93d
Diffstat (limited to 'vp8/encoder')
-rw-r--r--vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm5
1 files changed, 4 insertions, 1 deletions
diff --git a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm
index c00375e88..c061b2fab 100644
--- a/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm
+++ b/vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.asm
@@ -65,7 +65,7 @@
numparts_loop
ldr r10, [sp, #40] ; ptr
ldr r5, [sp, #36] ; move mb_rows to the counting section
- sub r5, r5, r11 ; move start point with each partition
+ subs r5, r5, r11 ; move start point with each partition
; mb_rows starts at i
str r5, [sp, #12]
@@ -80,6 +80,8 @@ numparts_loop
str r2, [r0, #vp8_writer_pos]
str r10, [r0, #vp8_writer_buffer]
+ ble end_partition ; if (mb_rows <= 0) end partition
+
mb_row_loop
ldr r1, [r7, #tokenlist_start]
@@ -344,6 +346,7 @@ check_p_lt_stop
str r6, [sp, #12]
bgt mb_row_loop
+end_partition
mov r12, #32
stop_encode_loop