From ee4a6586952ba0ac8309468b04631da12767cebd Mon Sep 17 00:00:00 2001 From: Giorgio Vazzana Date: Mon, 11 Mar 2013 16:39:52 +0100 Subject: lavd/v4l2: fix bug in init_convert_timestamp() The current code returned a period=0, resulting in identical pts for all frames after time-filtering. This is because AV_TIME_BASE_Q={1, AV_TIME_BASE} and not {AV_TIME_BASE, 1}. With this patch the correct period in microseconds is computed. --- libavdevice/v4l2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libavdevice/v4l2.c') diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index dec82b6..0c1eb85 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -527,8 +527,8 @@ static int init_convert_timestamp(AVFormatContext *ctx, int64_t ts) now = av_gettime_monotonic(); if (s->ts_mode == V4L_TS_MONO2ABS || (ts <= now + 1 * AV_TIME_BASE && ts >= now - 10 * AV_TIME_BASE)) { - int64_t period = av_rescale_q(1, AV_TIME_BASE_Q, - ctx->streams[0]->avg_frame_rate); + AVRational tb = {AV_TIME_BASE, 1}; + int64_t period = av_rescale_q(1, tb, ctx->streams[0]->avg_frame_rate); av_log(ctx, AV_LOG_INFO, "Detected monotonic timestamps, converting\n"); /* microseconds instead of seconds, MHz instead of Hz */ s->timefilter = ff_timefilter_new(1, period, 1.0E-6); -- cgit v1.1