[FFmpeg-devel] [PATCHv3] On2 VP7 decoder

Peter Ross pross at xvid.org
Tue Feb 18 12:01:45 CET 2014


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,

Additional Q&A from #ffmpeg-devel:

>> do segmentation features in vp7 require an error and return instead of a warning and continue

For the interlacing feature, the output is still somewhat viewable. I dont know about the other
features as there are no samples.

>> how are vp7_decode_mvs and vp8_decode_mvs different

VP7 uses a much more complex mv prediction loop. It also also doesn't count CNT_SPLITMVs.
(the On2 reference decoder actually does count SPLITMVs, but a bug causes it to be discarded,
in favour of CNT_NEAR...). Do you think its worth merging the two?


-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140218/554c24d6/attachment.asc>


More information about the ffmpeg-devel mailing list