[FFmpeg-devel] [PATCH] avfilter/vsrc_ddagrab: add option to control pts offset removal
Jan Ekström
jeebjp at gmail.com
Tue Apr 11 23:18:47 EEST 2023
This keeps the default behavior as-is by defaulting to true,
while allowing to start the timestamps with the offset from
av_gettime_relative epoch start. This allows for synchronization
with other capture modules that utilize the same epoch start, such
as DShow audio capture.
---
libavfilter/vsrc_ddagrab.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vsrc_ddagrab.c b/libavfilter/vsrc_ddagrab.c
index 042842104f..14fb4abd10 100644
--- a/libavfilter/vsrc_ddagrab.c
+++ b/libavfilter/vsrc_ddagrab.c
@@ -100,6 +100,7 @@ typedef struct DdagrabContext {
int out_fmt;
int allow_fallback;
int force_fmt;
+ int start_pts_at_zero;
} DdagrabContext;
#define OFFSET(x) offsetof(DdagrabContext, x)
@@ -123,6 +124,8 @@ static const AVOption ddagrab_options[] = {
OFFSET(allow_fallback), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS },
{ "force_fmt", "exclude BGRA from format list (experimental, discouraged by Microsoft)",
OFFSET(force_fmt), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS },
+ { "start_pts_at_zero", "start timestamps at PTS=0, removing any initial offset",
+ OFFSET(start_pts_at_zero), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FLAGS },
{ NULL }
};
@@ -913,7 +916,7 @@ static int ddagrab_request_frame(AVFilterLink *outlink)
av_usleep(delay);
}
- if (!dda->first_pts)
+ if (dda->start_pts_at_zero && !dda->first_pts)
dda->first_pts = now;
now -= dda->first_pts;
--
2.40.0
More information about the ffmpeg-devel
mailing list