[FFmpeg-devel] [PATCHv3] On2 VP7 decoder
Vittorio Giovara
vittorio.giovara at gmail.com
Wed Mar 26 04:37:43 CET 2014
On Tue, Mar 25, 2014 at 1:25 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Tue, Feb 18, 2014 at 09:52:30PM +1100, Peter Ross wrote:
>> Signed-off-by: Peter Ross <pross at xvid.org>
>> ---
>> Here is my first attempt at addressing the VP8 performance regressions
>> introduced by the VP7 decoder.
>>
>> This uses 'always inline & static template' approach to generate vp7_ and
>> vp8_ variants of performance critical functions. Every function containing
>> an 'if vp7' branch below vp8_decode_mb_row_sliced is duplicated.
>>
>> As a sanity check --disable-decoder=vp7 makes the resulting vp8.o binary is
>> virtually identical to the current vp8.o file. The only difference being the
>> use of function pointers for decode_mb_row_no_filter and filter_mb_row.
>>
>> user times from VP8 'A_4K_Video_Reel_by_Bright_Side_Network_Inc..webm' on
>> Core2 Q9400. In seconds.
>> VP8 only: 82.013 82.049 82.059 82.089 82.095 : AVERAGE 82.061
>> VP7+VP8: 82.206 82.234 82.249 82.253 82.261 : AVERAGE 82.241
>> VP8 only: 82.056 82.065 82.114 82.211 82.224 : AVERAGE 82.134
>> VP7+VP8: 82.257 82.339 82.356 82.391 82.482 : AVERAGE 82.365
>>
>> There is a fairly consistent ~0.25% performance drop for this input. It would
>> be nice to get performance data on other platforms where VP8 is popular. ARM
>> especially.
>>
>> Other changes in PATCHv3:
>> - combine fade operation with gold frame preservation
>> - optimise inter_predict_dc usage
>> - described vp7_calculate_mb_offset
>> - dont bother zeroing block/block_dc as done by idct now
>>
>> Thanks to Ronald and Jason for their thorough reviews. Cheers,
>>
>> Changelog | 1 +
>> doc/general.texi | 2 +
>> libavcodec/Makefile | 1 +
>> libavcodec/allcodecs.c | 1 +
>> libavcodec/arm/h264pred_init_arm.c | 6 +-
>> libavcodec/arm/vp8.h | 2 +-
>> libavcodec/avcodec.h | 1 +
>> libavcodec/codec_desc.c | 7 +
>> libavcodec/h264pred.c | 16 +-
>> libavcodec/vp8.c | 759 +++++++++++++++++++++++++++++------
>> libavcodec/vp8.h | 26 ++
>> libavcodec/vp8data.h | 138 ++++++-
>> libavcodec/x86/Makefile | 3 +
>> libavcodec/x86/h264_intrapred_init.c | 10 +-
>> 14 files changed, 829 insertions(+), 144 deletions(-)
>
> applied
>
Hi,
the decoder doesn't compile standalone.
Also lacks a lavc MINOR version bump.
Furthermore it introduces at least a possible NULL pointer
dereferences in vp7_decode_frame_header() when prev_frame is NULL.
Cheers,
--
Vittorio
More information about the ffmpeg-devel
mailing list