[FFmpeg-devel] [PATCH 1/3] avformat/fifo: add option to delay output
leozhang
leozhang at qiyi.com
Wed Apr 29 16:25:00 EEST 2020
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.
+
@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},
+
{NULL},
};
--
1.8.3.1
More information about the ffmpeg-devel
mailing list