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

Rostislav Pehlivanov rpehlivanov at ob-encoder.com
Thu Jun 23 19:06:54 CEST 2016


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



More information about the ffmpeg-devel mailing list