Can't call internal error from the decoder thread. Add vpx_internal_error_info to MACROBLOCKD. When corrupted frame detected, the decoder thread returns to its own context and signal completion of decoding for current frame. The main decoding thread will detect error too and return error code to decoding API call. Each thread will signal end of decoding of the frame. Main thread waits for the signal of all other threads to start decoding next frame. BUG=875626,webm:1496 Change-Id: Icd05fbc558893a4e7d8532c1e7177e7550283a64
Showing the changes to vp8/decoder/decoderthreading.h (1 of 5 files). Show all
Unified · Split
| @@ -16,7 +16,7 @@ extern "C" { · 15 unmodified lines | ||
| 16 | 16 | #endif |
| 17 | 17 | |
| 18 | 18 | #if CONFIG_MULTITHREAD |
| 19 | −void vp8mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd); | |
| 19 | +int vp8mt_decode_mb_rows(VP8D_COMP *pbi, MACROBLOCKD *xd); | |
| 20 | 20 | void vp8_decoder_remove_threads(VP8D_COMP *pbi); |
| 21 | 21 | void vp8_decoder_create_threads(VP8D_COMP *pbi); |
| 22 | 22 | void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows); |