summaryrefslogtreecommitdiff
path: root/vp8/decoder/decodeframe.c
diff options
context:
space:
mode:
authorJerome Jiang <jianj@google.com>2018-12-19 11:18:55 -0800
committerJerome Jiang <jianj@google.com>2018-12-21 07:20:47 +0000
commit6dbf738a43cf2380b9b5cc6fb867b52919ca2a20 (patch)
treed7842775ed13d45fff322e3b471fab57cbe05997 /vp8/decoder/decodeframe.c
parent3756a3b65877be82fe497539f42bb2c11ddb373d (diff)
downloadlibvpx-6dbf738a43cf2380b9b5cc6fb867b52919ca2a20.tar
libvpx-6dbf738a43cf2380b9b5cc6fb867b52919ca2a20.tar.gz
libvpx-6dbf738a43cf2380b9b5cc6fb867b52919ca2a20.tar.bz2
libvpx-6dbf738a43cf2380b9b5cc6fb867b52919ca2a20.zip
vp8: kill all threads on corrupted frame.
If decoder keeps going, threads will be brought up. BUG=902650,webm:1577 Change-Id: I7765ba134aeed76ec0f58bd05e3a35383e6861c3
Diffstat (limited to 'vp8/decoder/decodeframe.c')
-rw-r--r--vp8/decoder/decodeframe.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/vp8/decoder/decodeframe.c b/vp8/decoder/decodeframe.c
index f4842ef03..617abf77c 100644
--- a/vp8/decoder/decodeframe.c
+++ b/vp8/decoder/decodeframe.c
@@ -1220,8 +1220,10 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
if (vpx_atomic_load_acquire(&pbi->b_multithreaded_rd) &&
pc->multi_token_partition != ONE_PARTITION) {
unsigned int thread;
- if (vp8mt_decode_mb_rows(pbi, xd))
+ if (vp8mt_decode_mb_rows(pbi, xd)) {
+ vp8_decoder_remove_threads(pbi);
vpx_internal_error(&pbi->common.error, VPX_CODEC_CORRUPT_FRAME, NULL);
+ }
vp8_yv12_extend_frame_borders(yv12_fb_new);
for (thread = 0; thread < pbi->decoding_thread_count; ++thread) {
corrupt_tokens |= pbi->mb_row_di[thread].mbd.corrupted;