[FFmpeg-devel] [PATCH 0/4] frame-mt: hevc: implement and use step progress API

Christophe Gisquet christophe.gisquet at gmail.com
Wed Jul 23 21:13:42 CEST 2014

The idea is that the current granularity is too small for bigger
coding structures, than can be 64x64 for both hevc and vp9. Instead,
the simplest way to describe the new type of progress is that of
a step function.

I bet the patchset will be far from consensual, and it's unlikely I'll
get it through in a shape that satisfies everyone. It's mostly a
proof of concept.

In the table below, 1T indicates the performance on one core, while
max means the default thread count. Furthermore, to benchmark the
modification, I also added some intrinsics (denoted by +idct). The
effect of the patchset is in the column +patch.

The configurations tested are:
1) HEAD on a 6-cores system
2) HEAD + intrinsics (~openhevc) on the same system
3) HEAD + intrinsics on a 2-cores system (with hyperthreading)

Finally, the numbers reported are the decoding times in seconds.

     1T    max  +idct +patch
1:  26.2   9.5   7.2    6.2
2:               5.7    4.9
3:  13.2         6.5    6.3

Christophe Gisquet (4):
  libavcodec: new API for frame threading by step
  hevc: use new step progress API
  hevc: actual benefits from new step threading API
  hevc: use new step threading API for DBF-only cases

 libavcodec/hevc.c          | 19 +++++++------
 libavcodec/hevc_filter.c   | 26 ++++++++++++------
 libavcodec/hevc_mvs.c      |  4 +--
 libavcodec/hevc_refs.c     |  2 +-
 libavcodec/pthread_frame.c | 68 ++++++++++++++++++++++++++++++++++++++++++++--
 libavcodec/thread.h        | 24 ++++++++++++++++
 6 files changed, 121 insertions(+), 22 deletions(-)


More information about the ffmpeg-devel mailing list