[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