[Libav-user] Multithread decode and scaler

Andrew Randrianasulu randrianasulu at gmail.com
Thu Aug 25 07:03:08 EEST 2022

чт, 25 авг. 2022 г., 06:16 wolverin via Libav-user <libav-user at ffmpeg.org>:

> The only advice I can give you at this point is to examine how ffmpeg
> itself does and see how your program differs.
> But I do not know where to look in ffmpeg, the source text of it is very
> confusing and there are few examples
> ffmpeg -i some_file_with_mjpeg -f null -
> and at the same time:
> top
> and see how much CPU it uses. If it is >>100%, then multithreading is
> used. If not, then it probably is not possible easily.
> Thank you!
> I created a file
>        ffmpeg -f v4l2 -input_format mjpeg -video_size 1920x1080 -i
> /dev/video0 -c:v copy test.mjpeg
> Then I executed your command and saw the CPU usage of 99-100%
>        ffmpeg -i test.mjpeg -f null -
> You said "it probably is not possible easily" but not impossible!? so I
> need to create my own thread queue for decoding or are there other
> solutions?

Oh, really ..I thought mjpeg already multithreaded ...but it seems mpeg1/2
is, and not mjpeg ..

>From slightly outdated ffmpeg git copy:

grep  THREADS libavcodec/mpeg12dec.c
        if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_FRAME))
                if (HAVE_THREADS &&
            if (HAVE_THREADS && (avctx->active_thread_type &
                if (HAVE_THREADS &&
                             AV_CODEC_CAP_DELAY |
    .update_thread_context =
~/ffmpeg $ grep  THREADS libavcodec/mjpegdec.c


So ... I read somewhere at least IDCT stage of mjpeg can be parallelized,
but before that we have Huffman decoding and this often not that much
parallelizable ..:(

Random paper from google search:

On the other hand mjpeg *encoder* in ffmpeg actually threaded :

~/ffmpeg $ grep  THREADS libavcodec/mjpegenc.c
    .p.capabilities = AV_CODEC_CAP_SLICE_THREADS |

So, may be you can port ideas from encoder into decoder?

> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20220825/036b73b2/attachment.htm>

More information about the Libav-user mailing list