[FFmpeg-devel] [PATCH] fftools/ffmpeg: Added ability to set a input burst time before readrate is enforced

Anton Khirnov anton at khirnov.net
Fri Apr 28 11:01:25 EEST 2023


Your email client mangled the patch, so it cannot be applied as is.

Quoting Davy Durham (2023-04-07 09:57:54)
> Implemented is the -irb <seconds> flag (i.e. "initial read burst") that
> causes ffmpeg to read the specified number of seconds of input before a
> given readrate starts to be enforced.  All inputs have to reach this
> point before the readrate is enforced.  The reason for this change is,
> in the scenario of live-streaming by transcoding from an pre-recorded or
> delayed source to an HLS or DASH webroot, we can more quickly prime the
> system of the first few seconds before the real-world read rate is
> imposed.  Else, one must wait for an entire segment length before the
> data can be fetched from the web server.
> 
> Signed-off-by: Davy Durham <ddurham at users.sourceforge.net>
> ---
>   doc/ffmpeg.texi        |  2 ++
>   fftools/ffmpeg.h       |  2 ++
>   fftools/ffmpeg_demux.c | 13 ++++++++++++-
>   fftools/ffmpeg_opt.c   |  3 +++
>   4 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
> index d433d60ce9..a519fea192 100644
> --- a/doc/ffmpeg.texi
> +++ b/doc/ffmpeg.texi
> @@ -1709,6 +1709,8 @@ it may cause packet loss.
>   It is useful for when flow speed of output packets is important, such 
> as live streaming.
>   @item -re (@emph{input})
>   Read input at native frame rate. This is equivalent to setting 
> @code{-readrate 1}.
> + at item -irb @var{seconds}

I think 'irb' is too short for an option that modifies behavior of
another, rather obscure, option. How about -readrate_burst or
-readrate_delay or something along these lines?

> @@ -1159,6 +1160,16 @@ int ifile_open(const OptionsContext *o, const 
> char *filename)
>           f->rate_emu = 0;
>       }
>   +    f->initial_read_burst = o->initial_read_burst ? 
> o->initial_read_burst : 0.0;
> +    if (f->initial_read_burst < 0.0) {
> +        av_log(NULL, AV_LOG_ERROR, "Option -irb for Input #%d is %0.3f; 

Use f as the log context, then you can drop the input file number in the
string itself.

Same below.

Otherwise seems reasonable.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list