[FFmpeg-devel] [PATCH v3] lavc: convert frame threading to the receive_frame() pattern
James Almer
jamrial at gmail.com
Fri Dec 9 15:11:34 EET 2022
On 12/9/2022 10:09 AM, Timo Rothenpieler wrote:
> On 07/12/2022 23:22, Michael Niedermayer wrote:
>> On Wed, Dec 07, 2022 at 02:20:23PM +0100, Timo Rothenpieler wrote:
>>> From: Anton Khirnov <anton at khirnov.net>
>>>
>>> Reorganize the code such that the frame threading code does not call the
>>> decoders directly, but instead calls back into the generic decoding
>>> code. This avoids duplicating the logic that wraps the decoder
>>> invocation and will be useful in the following commits.
>>> ---
>>> libavcodec/decode.c | 57 +++++----
>>> libavcodec/decode.h | 7 +
>>> libavcodec/internal.h | 7 +
>>> libavcodec/pthread_frame.c | 256 ++++++++++++++++++++++++-------------
>>> libavcodec/thread.h | 18 +--
>>> 5 files changed, 222 insertions(+), 123 deletions(-)
>>
>> This breaks on arm (probably lack of pthread support) in this env
>>
>> libavcodec/libavcodec.a(decode.o): In function
>> `decode_receive_frame_internal':
>> arm/src/libavcodec/decode.c:616: undefined reference to
>> `ff_thread_receive_frame'
>> arm/src/libavcodec/decode.c:616: undefined reference to
>> `ff_thread_receive_frame'
>> collect2: error: ld returned 1 exit status
>> Makefile:131: recipe for target 'ffprobe_g' failed
>> make: *** [ffprobe_g] Error 1
>
> Probably just missing an #if somewhere.
Yes.
> +static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
> +{
> + if (avctx->active_thread_type & FF_THREAD_FRAME)
Should be if (HAVE_THREADS && ...
> + return ff_thread_receive_frame(avctx, frame);
> + return ff_decode_receive_frame_internal(avctx, frame);
> +}
More information about the ffmpeg-devel
mailing list