[FFmpeg-devel] Add threaded decode for alpha channel of VP6A

Ben Jackson ben at ben.com
Fri Sep 14 06:43:01 CEST 2012


This patch series is all in support of patch 5/6:

    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.

The first 4 are small bits of reorganization.  The 6th is an optional
re-indent to fix the mess left by removing a level of nesting in 5.

There should be essentially no change in performance for VP6/VP6F or
for decodes under --threads 1.  The wall clock time taken to decode
VP6A with two threads is now bounded by the time to decode the YUV
planes.

If anyone else cares about VP6 decode performance I'd be happy to
discuss the problems I see with taking advantage of "MultiStream" VP6
or with trying to add frame threading.

--Ben

[PATCH 1/6] lavc/vp56: Refactor ff_vp56_init into ff_vp56_init/ff_vp56_init_context
[PATCH 2/6] lavc/vp6: Refactor vp6_decode_init into vp6_decode_init/vp6_decode_init_context
[PATCH 3/6] lavc/vp56: Move golden_frame into VP56Context
[PATCH 4/6] lavc/vp56: Simplify get/release_buffer code
[PATCH 5/6] lavc/vp6: Implement "slice" threading for VP6A decode
[PATCH 6/6] lavc/vp56: Re-indent functions affected by threading refactor


More information about the ffmpeg-devel mailing list