Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH 2/3] lavu/fifo: clarify interaction of AV_FIFO_FLAG_AUTO_GROW with av_fifo_can_write()
Date: Mon, 29 Aug 2022 12:00:54 -0300
Message-ID: <1263f749-8e56-9ba9-0b77-c031a73c8124@gmail.com> (raw)
In-Reply-To: <20220829140717.26557-2-anton@khirnov.net>

On 8/29/2022 11:07 AM, Anton Khirnov wrote:
> ---
>   libavutil/fifo.h | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/libavutil/fifo.h b/libavutil/fifo.h
> index 6c6bd78842..89872d0972 100644
> --- a/libavutil/fifo.h
> +++ b/libavutil/fifo.h
> @@ -97,7 +97,13 @@ void av_fifo_auto_grow_limit(AVFifo *f, size_t max_elems);
>   size_t av_fifo_can_read(const AVFifo *f);
>   
>   /**
> - * @return number of elements that can be written into the given FIFO.
> + * @return Number of elements that can be written into the given FIFO without
> + *         growing it.
> + *
> + *         In other words, this number of elements or less is guaranteed to fit
> + *         into the FIFO. More data may be written when the
> + *         AV_FIFO_FLAG_AUTO_GROW flag was specified at FIFO creation, but this
> + *         may involve memory allocation, which can fail.

This patch is an API break, because before it i was told 
av_fifo_can_write() would tell me the amount of elements i could write 
into the FIFO, regardless of how it was created, but now it legitimates 
the one scenario where it was not reliable. An scenario i stumbled upon 
in my code by following the documentation, which is in at least one 
release, the LTS one.

Instead of changing the documentation to fit the behavior, the behavior 
should match the documentation. This means that if a call to 
av_fifo_write() can succeed, then av_fifo_can_write() should reflect that.

That said, it would be great if making av_fifo_can_write() tell the real 
amount of elements one can write into the FIFO was possible without 
breaking anything, but the doxy for av_fifo_grow2() says "On success, 
the FIFO will be large enough to hold exactly inc + av_fifo_can_read() + 
av_fifo_can_write()", a line that was obviously aware of the fact 
av_fifo_can_write() ignored the autogrow feature, and would no longer be 
true if said function is fixed.

This could have been avoided if we added an av_fifo_size2() function 
that returned nb_elems, so the line above may have been replaced by one 
simply referring the user to it. But as is, we're breaking the API no 
matter what we do.

>    */
>   size_t av_fifo_can_write(const AVFifo *f);
>   
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2022-08-29 15:01 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-29 14:07 [FFmpeg-devel] [PATCH 1/3] lavu/fifo: add the header to its own doxy group Anton Khirnov
2022-08-29 14:07 ` [FFmpeg-devel] [PATCH 2/3] lavu/fifo: clarify interaction of AV_FIFO_FLAG_AUTO_GROW with av_fifo_can_write() Anton Khirnov
2022-08-29 15:00   ` James Almer [this message]
2022-08-29 16:03     ` James Almer
2022-08-29 21:35       ` Marvin Scholz
2022-08-30  6:35     ` Anton Khirnov
2022-08-30 12:56       ` James Almer
2022-08-30 14:07         ` Anton Khirnov
2022-08-29 14:07 ` [FFmpeg-devel] [PATCH 3/3] lavu/fifo: clarify interaction of AV_FIFO_FLAG_AUTO_GROW with av_fifo_write() Anton Khirnov
2022-08-29 20:30 ` [FFmpeg-devel] [PATCH 1/3] lavu/fifo: add the header to its own doxy group Michael Niedermayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1263f749-8e56-9ba9-0b77-c031a73c8124@gmail.com \
    --to=jamrial@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git