[FFmpeg-devel] [PATCH 00/10] Dirac decoder improvements for the HQ profile

Rostislav Pehlivanov atomnuker at gmail.com
Tue Jul 12 01:47:32 EEST 2016


On 23 June 2016 at 18:06, Rostislav Pehlivanov <rpehlivanov at ob-encoder.com>
wrote:

> This set of commits significantly improves the stability and performance
> of the decoder, both with other profiles and the VC-2 HQ profile.
>
> Suggestions on how to improve the performance of the VLC parser are highly
> apperciated since it's the biggest bottleneck so far. Another bottleneck
> is the lack of SIMD for iDWT for over 8 bit depths.
>
> All of the changes were ported over from this branch which specialized the
> Dirac decoder for the HQ profile:
> https://github.com/atomnuker/ffmpeg_dirac_trimmed
>
> The only feature missing from the current FFmpeg decoder is the lack of
> support
> for field coded interlaced content. This was the reason why that decoder
> exists,
> it was too messy and interfered with the reference frames code.
> Suggestions or
> patches on how to bring that to the current decoder would be nice.
> Other than that, that decoder is still more stable as it's far simpler to
> fuzz.
>
> Rostislav Pehlivanov (10):
>   diracdsp: add SIMD for the 10 bit version of put_signed_rect_clamped
>   diracdsp: add dequantization SIMD
>   diracdec: simplify golomb parsing and dequantization
>   diracdec: decode HQ profile slices in rows
>   diractab: expose the maximum quantization index as a macro
>   diracdec: rewrite HQ slice decoding
>   diracdec: implement a LUT-based Golomb code parser
>   diracdec: do not allocate and free slice parameters every frame
>   diracdec: run the final decoding stage/idwt for every plane in
>     parallel
>   diracdec: do not memset the entire coefficient buffer for HQ pictures
>
>  libavcodec/Makefile            |   3 +-
>  libavcodec/dirac_vlc.c         | 242 ++++++++++++++++++++++++++
>  libavcodec/dirac_vlc.h         |  51 ++++++
>  libavcodec/diracdec.c          | 387
> +++++++++++++++++++++++++----------------
>  libavcodec/diracdsp.c          |  24 +++
>  libavcodec/diracdsp.h          |   4 +
>  libavcodec/diractab.h          |   2 +
>  libavcodec/vc2enc.c            |   9 +-
>  libavcodec/x86/diracdsp.asm    |  88 ++++++++++
>  libavcodec/x86/diracdsp_init.c |   8 +
>  10 files changed, 659 insertions(+), 159 deletions(-)
>  create mode 100644 libavcodec/dirac_vlc.c
>  create mode 100644 libavcodec/dirac_vlc.h
>
> --
> 2.8.1.369.geae769a
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Pushed all except the parallel idwt.
Thanks.


More information about the ffmpeg-devel mailing list