summaryrefslogtreecommitdiffstats
path: root/libavcodec/vp56.h
diff options
context:
space:
mode:
authorBen Jackson <ben@ben.com>2012-09-15 10:32:43 -0700
committerMichael Niedermayer <michaelni@gmx.at>2012-09-15 20:26:47 +0200
commit39a3894ad50f97592ca68081095c5c2bcbcad841 (patch)
treefe3f9f40b82d01ac418c41f4797f65343b6d92d8 /libavcodec/vp56.h
parent1c20fcf0b0d30b63c33e4302c3d92b66b1665b33 (diff)
downloadffmpeg-streaming-39a3894ad50f97592ca68081095c5c2bcbcad841.zip
ffmpeg-streaming-39a3894ad50f97592ca68081095c5c2bcbcad841.tar.gz
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>
Diffstat (limited to 'libavcodec/vp56.h')
-rw-r--r--libavcodec/vp56.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h
index 7a32342..44bd229 100644
--- a/libavcodec/vp56.h
+++ b/libavcodec/vp56.h
@@ -161,8 +161,11 @@ struct vp56_context {
VP56ParseCoeffModels parse_coeff_models;
VP56ParseHeader parse_header;
+ /* for "slice" parallelism between YUV and A */
+ VP56Context *alpha_context;
+
VP56Model *modelp;
- VP56Model models[2];
+ VP56Model model;
/* huffman decoding */
int use_huffman;
OpenPOWER on IntegriCloud