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

Michael Niedermayer michaelni at gmx.at
Sun Jul 27 18:09:33 CEST 2014


On Wed, Jul 23, 2014 at 07:13:42PM +0000, Christophe Gisquet wrote:
> 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(-)

fails to build without pthreads
./configure --disable-pthreads && make
libavcodec/libavcodec.a(hevc.o): In function `hevc_await_progress':
ffmpeg/libavcodec/hevc.c:1609: undefined reference to `ff_thread_await_progress3'
ffmpeg/libavcodec/hevc.c:1609: undefined reference to `ff_thread_await_progress3'
libavcodec/libavcodec.a(hevc.o): In function `decode_nal_units':
ffmpeg/libavcodec/hevc.c:2978: undefined reference to `ff_thread_report_progress3_raster_end'
libavcodec/libavcodec.a(hevc.o): In function `hevc_frame_start':
ffmpeg/libavcodec/hevc.c:2619: undefined reference to `ff_thread_report_progress3_raster_end'
libavcodec/libavcodec.a(hevc_filter.o): In function `ff_hevc_hls_filter':
ffmpeg/libavcodec/hevc_filter.c:724: undefined reference to `ff_thread_report_progress3_increment'
ffmpeg/libavcodec/hevc_filter.c:718: undefined reference to `ff_thread_report_progress3_raster_end'
ffmpeg/libavcodec/hevc_filter.c:703: undefined reference to `ff_thread_report_progress3_increment'
ffmpeg/libavcodec/hevc_filter.c:708: undefined reference to `ff_thread_report_progress3_increment'
ffmpeg/libavcodec/hevc_filter.c:713: undefined reference to `ff_thread_report_progress3_raster_end'
ffmpeg/libavcodec/hevc_filter.c:722: undefined reference to `ff_thread_report_progress3_raster_end'
libavcodec/libavcodec.a(hevc_mvs.o): In function `temporal_luma_motion_vector':
ffmpeg/libavcodec/hevc_mvs.c:261: undefined reference to `ff_thread_await_progress3'
ffmpeg/libavcodec/hevc_mvs.c:247: undefined reference to `ff_thread_await_progress3'
libavcodec/libavcodec.a(hevc_refs.o): In function `generate_missing_ref':
ffmpeg/libavcodec/hevc_refs.c:416: undefined reference to `ff_thread_report_progress3_raster_end'
collect2: ld returned 1 exit status

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140727/faf381ca/attachment.asc>


More information about the ffmpeg-devel mailing list