This is the first modification of VP8 multi-thread decoder, which uses same threads to decode macroblocks and then do loopfiltering for each frame. Inspired by Rob Clark, synchronization was done on every 8 macroblocks instead of every macroblock to reduce lock contention. Comparing with the original code, this implementation gave about 15%- 20% performance gain while decoding my test clips on a Core2 Quad platform (Linux). The work is not done yet. Test on other platforms are needed.
Showing the changes to vp8/decoder/decoderthreading.h (1 of 4 files). Show all
Unified · Split
| @@ -18,6 +18,7 @@ · 17 unmodified lines | ||
| 18 | 18 | |
| 19 | 19 | extern void vp8_mtdecode_mb_rows(VP8D_COMP *pbi, |
| 20 | 20 | MACROBLOCKD *xd); |
| 21 | +extern void vp8_mt_loop_filter_frame(VP8D_COMP *pbi); | |
| 21 | 22 | extern void vp8_stop_lfthread(VP8D_COMP *pbi); |
| 22 | 23 | extern void vp8_start_lfthread(VP8D_COMP *pbi); |
| 23 | 24 | extern void vp8_decoder_remove_threads(VP8D_COMP *pbi); |