diff options
author | Jerome Jiang <jianj@google.com> | 2018-12-19 11:18:55 -0800 |
---|---|---|
committer | Jerome Jiang <jianj@google.com> | 2018-12-21 07:20:47 +0000 |
commit | 6dbf738a43cf2380b9b5cc6fb867b52919ca2a20 (patch) | |
tree | d7842775ed13d45fff322e3b471fab57cbe05997 /vp8/decoder/decodeframe.c | |
parent | 3756a3b65877be82fe497539f42bb2c11ddb373d (diff) | |
download | libvpx-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.c | 4 |
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; |