[FFmpeg-devel] [PATCH] avcodec/audiotoolboxenc: return EAGAIN if frame_queue.available is 0 and not at->eof

Jan Ekström jeebjp at gmail.com
Tue Jun 28 18:22:05 EEST 2022


On Tue, Jun 28, 2022 at 5:43 PM Steven Liu <lq at chinaffmpeg.org> wrote:
>
> There will return success and failure after commit 7c05b7951cb47716230c95744240bc60ec5f9433.
> But the AudioConverterFillComplexBuffer will return 1 and *got_packet_ptr is 0
> when frame_queue.available == 0 and at->eof == 0. So should return EAGAIN here,
> this because the encode function should return either 0 or negative error code.
>

This mirrors what I noted to you on IRC.

Can you document what ret == 1 actually is?
AudioConverterFillComplexBuffer documentation says it returns
OSStatus, but with a quick look I can't see any AudioToolbox related
errors in f.ex.
https://www.osstatus.com/search/results?platform=all&framework=all&search=1
.

If it is just equivalent of EAGAIN, then since there is no need to
check for got_packet_ptr ?

In any case, with errors or special cases early exit should always be
preferred. See an example @
https://github.com/jeeb/ffmpeg/commits/audiotoolboxenc_return_codes .
(this was originally quickly whipped up before I saw your patch, and
thus does not take care of the EAGAIN case).

Jan


More information about the ffmpeg-devel mailing list