This is a modified version of Anton's earlier patchset [1]. The main changes are that the new FIFO API is a clean break with the old API (the new API uses a new structure (called AVFifo) instead of sharing AVFifoBuffer with the old API) and that it is now documented that one may attempt to read/write more from/to the FIFO than is currently possible and that such an attempt leads to an error being returned. This allows to replace loops of the form
while (av_fifo_size(fifo)) { TYPE element; av_fifo_generic_read(fifo, &element, sizeof(element), NULL); // do something with element, typically: free it } by TYPE element; while (av_fifo_read(fifo, &element, 1) >= 0) // do something with element - Andreas [1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2022-January/291156.html Andreas Rheinhardt (2): avutil/fifo: Use av_fifo_generic_peek_at() for av_fifo_generic_peek() avcodec/qsvenc: Reindent after the previous commit Anton Khirnov (29): lavu/fifo: disallow overly large fifo sizes lavu/fifo: Add new AVFifo API based upon the notion of element size lavu/fifo: add a flag for automatically growing the FIFO as needed lavu/tests/fifo: switch to the new API lavc/avcodec: switch to new FIFO API lavc/amfenc: switch to new FIFO API lavc/cuviddec: do not reallocate the fifo unnecessarily lavc/cuviddec: convert to the new FIFO API lavc/libvorbisenc: switch to new FIFO API lavc/libvpxenc: switch to the new FIFO API lavc/libvpxenc: remove unneeded context variable lavc/nvenc: switch to the new FIFO API lavc/qsvdec: switch to the new FIFO API lavc/qsvenc: switch to new FIFO API lavf/dvenc: return an error on audio/video desync lavf/dvenc: switch to new FIFO API lavf/mpegenc: switch to new FIFO API lavf/swfenc: switch to new FIFO API lavf/udp: switch to new FIFO API lavf/async: switch to new FIFO API lavd/jack: switch to the new FIFO API lavu/audio_fifo: drop an unnecessary include lavu/audio_fifo: switch to new FIFO API lavu/threadmessage: switch to new FIFO API lavfi/qsvvpp: switch to new FIFO API lavfi/vf_deshake_opencl: switch to new FIFO API ffplay: switch to new FIFO API ffmpeg: switch to new FIFO API avutil/fifo: Deprecate old FIFO API doc/APIchanges | 17 ++ fftools/ffmpeg.c | 69 +++----- fftools/ffmpeg.h | 6 +- fftools/ffmpeg_filter.c | 14 +- fftools/ffmpeg_opt.c | 4 +- fftools/ffplay.c | 22 +-- libavcodec/amfenc.c | 43 ++--- libavcodec/amfenc.h | 2 +- libavcodec/avcodec.c | 17 +- libavcodec/cuviddec.c | 28 ++- libavcodec/decode.c | 24 +-- libavcodec/internal.h | 2 +- libavcodec/libvorbisenc.c | 20 +-- libavcodec/libvpxenc.c | 42 ++--- libavcodec/nvenc.c | 49 +++--- libavcodec/nvenc.h | 8 +- libavcodec/qsvdec.c | 88 ++++------ libavcodec/qsvenc.c | 134 +++++++------- libavcodec/qsvenc.h | 2 +- libavdevice/jack.c | 30 ++-- libavfilter/qsvvpp.c | 46 ++--- libavfilter/qsvvpp.h | 2 +- libavfilter/vf_deshake_opencl.c | 92 ++++------ libavformat/async.c | 68 ++++---- libavformat/dvenc.c | 28 +-- libavformat/mpegenc.c | 40 +++-- libavformat/swfenc.c | 22 ++- libavformat/udp.c | 34 ++-- libavutil/audio_fifo.c | 44 ++--- libavutil/audio_fifo.h | 1 - libavutil/fifo.c | 298 +++++++++++++++++++++++++++++--- libavutil/fifo.h | 237 ++++++++++++++++++++++++- libavutil/tests/fifo.c | 47 +++-- libavutil/threadmessage.c | 38 ++-- libavutil/version.h | 3 +- 35 files changed, 986 insertions(+), 635 deletions(-) -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".