[FFmpeg-devel] [PATCHv3] VP4 video decoder

James Almer jamrial at gmail.com
Thu May 16 16:49:41 EEST 2019


On 5/16/2019 8:35 AM, Peter Ross wrote:
> ---
> 
> what's changed:
> * reordered AV_CODEC_ID_VP4
> * minor read_mb_values improvement (reproducible 0.5% speedup)
> * configure/Makefile fix
> * squished data tables to fill 80 columns.
> 
> UNCHECKED_BITSTREAM_READER doesn't give any performance improvement
> on my i7, even with unrealisticly huge 4k vp4 video files.

I hope that was a typo and you tested CACHED_BITSTREAM_READER, not
UNCHECKED_BITSTREAM_READER :p

In any case, I wouldn't bother. Ricing a VP4 decoder is hardly worth
anyone's time.

> 
>  Changelog               |    1 +
>  configure               |    1 +
>  doc/general.texi        |    2 +
>  libavcodec/Makefile     |    1 +
>  libavcodec/allcodecs.c  |    1 +
>  libavcodec/avcodec.h    |    1 +
>  libavcodec/codec_desc.c |    7 +
>  libavcodec/vp3.c        |  732 ++++++++++++++++++++++--
>  libavcodec/vp4data.h    | 1186 +++++++++++++++++++++++++++++++++++++++
>  9 files changed, 1896 insertions(+), 36 deletions(-)
>  create mode 100644 libavcodec/vp4data.h
> 
> diff --git a/Changelog b/Changelog
> index e6b209ae0a..1c4e02d3aa 100644
> --- a/Changelog
> +++ b/Changelog
> @@ -30,6 +30,7 @@ version <next>:
>  - colorhold filter
>  - xmedian filter
>  - asr filter
> +- VP4 video decoder
>  
>  
>  version 4.1:
> diff --git a/configure b/configure
> index 9b4305cf0d..8281174afd 100755
> --- a/configure
> +++ b/configure
> @@ -2825,6 +2825,7 @@ vc1image_decoder_select="vc1_decoder"
>  vorbis_decoder_select="mdct"
>  vorbis_encoder_select="audio_frame_queue mdct"
>  vp3_decoder_select="hpeldsp vp3dsp videodsp"
> +vp4_decoder_select="hpeldsp vp3dsp videodsp"

Theora enables the vp3 decoder instead of only the related modules
because by compiling vp3.c it's already compiling the entirety of the
vp3 decoder, so might as well have it enabled and available. IMO for vp4
you should do the same.

Also, big vp4 specific functions and big chunks of code within shared
functions should ideally be wrapped inside CONFIG_VP4_DECODER checks.

>  vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
>  vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
>  vp6a_decoder_select="vp6_decoder"


More information about the ffmpeg-devel mailing list