[FFmpeg-devel] [PATCH 38/42] avcodec/codec_internal: Remove FF_CODEC_CAP_ALLOCATE_PROGRESS
Anton Khirnov
anton at khirnov.net
Wed Oct 25 16:38:23 EEST 2023
Quoting Andreas Rheinhardt (2023-09-19 21:57:30)
> Before commit f025b8e110b36c1cdb4fb56c4cd57aeca1767b5b,
> every frame-threaded decoder used ThreadFrames, even when
> they did not have any inter-frame dependencies at all.
> In order to distinguish those decoders that need the AVBuffer
> for progress communication from those that do not (to avoid
> the allocation for the latter), the former decoders were marked
> with the FF_CODEC_CAP_ALLOCATE_PROGRESS internal codec cap.
>
> Yet distinguishing these two can be done in a more natural way:
> Don't use ThreadFrames when not needed and split ff_thread_get_buffer()
> into a core function that calls the user's get_buffer2 callback
> and a wrapper around it that also allocates the progress AVBuffer.
> This has been done in 02220b88fc38ef9dd4f2d519f5d3e4151258b60c
> and since that commit the ALLOCATE_PROGRESS cap was nearly redundant.
>
> The only exception was WebP and VP8. WebP can contain VP8
> and uses the VP8 decoder directly (i.e. they share the same
> AVCodecContext). Both decoders are frame-threaded and VP8
> has inter-frame dependencies (in general, not in valid WebP)
> and therefore the ALLOCATE_PROGRESS cap. In order to avoid
> allocating progress in case of a frame-threaded WebP decoder
> the cap and the check for the cap has been kept in place.
>
> Yet now the VP8 decoder has been switched to use ProgressFrames
> and therefore there is just no reason any more for this check
> and the cap. This commit therefore removes both.
>
> Also change the value of FF_CODEC_CAP_USES_PROGRESSFRAMES
> to leave no gaps.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> doc/multithreading.txt | 8 ++++----
> libavcodec/codec_internal.h | 7 +------
> libavcodec/ffv1dec.c | 3 +--
> libavcodec/h264dec.c | 2 +-
> libavcodec/hevcdec.c | 2 +-
> libavcodec/mpeg4videodec.c | 3 +--
> libavcodec/pngdec.c | 3 +--
> libavcodec/pthread_frame.c | 12 +++++-------
> libavcodec/rv30.c | 1 -
> libavcodec/rv40.c | 1 -
> libavcodec/tests/avcodec.c | 7 +------
> 11 files changed, 16 insertions(+), 33 deletions(-)
LGTM
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list