[FFmpeg-devel] [PATCH 1/3] avformat/fifo: add option to delay output

Nicolas George george at nsup.org
Wed Apr 29 16:31:22 EEST 2020


leozhang (12020-04-29):
> Signed-off-by: leozhang <leozhang at qiyi.com>
> ---
>  doc/muxers.texi    | 3 +++
>  libavformat/fifo.c | 7 +++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/doc/muxers.texi b/doc/muxers.texi
> index cb2bb42..a74cbc4 100644
> --- a/doc/muxers.texi
> +++ b/doc/muxers.texi
> @@ -2271,6 +2271,9 @@ certain (usually permanent) errors the recovery is not attempted even when
>  Specify whether to wait for the keyframe after recovering from
>  queue overflow or failure. This option is set to 0 (false) by default.
>  

> + at item output_delay
> +Time to delay output, in microseconds. Default value is 0.

This is not accurate enough. This will block every output packet for the
extra specified duration.

Not sure if it is very useful, compared with the other patch.

> +
>  @end table
>  
>  @subsection Examples
> diff --git a/libavformat/fifo.c b/libavformat/fifo.c
> index d11dc66..bdecf2d 100644
> --- a/libavformat/fifo.c
> +++ b/libavformat/fifo.c
> @@ -77,6 +77,8 @@ typedef struct FifoContext {
>      /* Value > 0 signals queue overflow */
>      volatile uint8_t overflow_flag;
>  
> +    /* Time to delay output, in microseconds */
> +    uint64_t output_delay;
>  } FifoContext;
>  
>  typedef struct FifoThreadContext {
> @@ -397,6 +399,8 @@ static void *fifo_consumer_thread(void *data)
>      memset(&fifo_thread_ctx, 0, sizeof(FifoThreadContext));
>      fifo_thread_ctx.avf = avf;
>  
> +    av_usleep(fifo->output_delay);
> +
>      while (1) {
>          uint8_t just_flushed = 0;
>  
> @@ -630,6 +634,9 @@ static const AVOption options[] = {
>          {"recover_any_error", "Attempt recovery regardless of type of the error", OFFSET(recover_any_error),
>           AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
>  

> +        {"output_delay", "Time to delay output, in microseconds", OFFSET(output_delay),
> +         AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},

AV_OPT_TYPE_DURATION and adapt the description and documentation.

> +
>          {NULL},
>  };
>  

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20200429/5c2944b5/attachment.sig>


More information about the ffmpeg-devel mailing list