[Libav-user] Problem with slice based multithread decoding of h264 video

zgs zhengguanshi at 126.com
Fri Nov 6 08:38:49 CET 2015


Hi, all,
I am trying to decode h264 video using FFmpeg h264 decoder and got some problem:
Although the number of threads was the same as I set, the decoder seems to fail to utilize these threads.
--------------------------------------------------------------------------------
THE PROBLEM:
    I traced the program by GDB and found that when executing ff_h264_execute_decode_slices()
    in libavcodec/h264_slice.c, the context_count is always 1, so it failed to execute the branch that
    invokes avctx->execute() (which seems to be the correct multithread version).


THE PROGRAM: 
    the program I used was the example program demuxing_decoding.c under ffmpeg/doc/examples/,
    and I inserted dec_ctx->thread_count = thread_count; dec_ctx->thread_type = thread_type; before
    line 179 which executing avcodec_open2()
    the version of FFmpeg I used was: ffmpeg version git-2015-09-24-7179add


THE SAMPLE VIDEO:
    the video I used was big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4 under 
    http://download.openbricks.org/sample/H264/


    One more thing, some videos trigger warning like:
    [h264 @ 0x17ac3e0] Cannot parallelize slice decoding with deblocking filter type 1, decoding such frames in sequential order
    but this video is fine.
--------------------------------------------------------------------------------
    How can I make use of slice based multithread decoding?
    Thanks for your help.


    zheng



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20151106/fbe887fb/attachment.html>


More information about the Libav-user mailing list