lavc/vp6: Implement "slice" threading for VP6A decode
authorBen Jackson <ben@ben.com>
Sat, 15 Sep 2012 17:32:43 +0000 (10:32 -0700)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 15 Sep 2012 18:26:47 +0000 (20:26 +0200)
commit39a3894ad50f97592ca68081095c5c2bcbcad841
treefe3f9f40b82d01ac418c41f4797f65343b6d92d8
parent1c20fcf0b0d30b63c33e4302c3d92b66b1665b33
lavc/vp6: Implement "slice" threading for VP6A decode

The YUV channels of VP6 are encoded in a highly linear fashion which does
not have any slice-like concept to thread.  The alpha channel of VP6A is
fairly independent of the YUV and comprises 40% of the work.  This patch
uses the THREAD_SLICE capability to split the YUV and A decodes into
separate threads.

Two bugs are fixed by splitting YUV and alpha state:
- qscale_table from VP6A decode was for alpha channel instead of YUV
- alpha channel filtering settings were overwritten by YUV header parse

Signed-off-by: Ben Jackson <ben@ben.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/vp56.c
libavcodec/vp56.h
libavcodec/vp6.c
tests/ref/fate/vp6a