From 64e220beb5fb7f32800c1eed1e9e903022e41d19 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 1 Nov 2015 13:44:59 +0100 Subject: [PATCH] ffserver: Do not add or rescale AV_NOPTS_VALUE from the demuxer Signed-off-by: Michael Niedermayer --- ffserver.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ffserver.c b/ffserver.c index 577ca6ff45..a32ba08c13 100644 --- a/ffserver.c +++ b/ffserver.c @@ -2276,7 +2276,7 @@ static int http_prepare_data(HTTPContext *c) } else { int source_index = pkt.stream_index; /* update first pts if needed */ - if (c->first_pts == AV_NOPTS_VALUE) { + if (c->first_pts == AV_NOPTS_VALUE && pkt.dts != AV_NOPTS_VALUE) { c->first_pts = av_rescale_q(pkt.dts, c->fmt_in->streams[pkt.stream_index]->time_base, AV_TIME_BASE_Q); c->start_time = cur_time; } @@ -2315,8 +2315,10 @@ static int http_prepare_data(HTTPContext *c) * XXX: need more abstract handling */ if (c->is_packetized) { /* compute send time and duration */ - c->cur_pts = av_rescale_q(pkt.dts, ist->time_base, AV_TIME_BASE_Q); - c->cur_pts -= c->first_pts; + if (pkt.dts != AV_NOPTS_VALUE) { + c->cur_pts = av_rescale_q(pkt.dts, ist->time_base, AV_TIME_BASE_Q); + c->cur_pts -= c->first_pts; + } c->cur_frame_duration = av_rescale_q(pkt.duration, ist->time_base, AV_TIME_BASE_Q); /* find RTP context */ c->packet_stream_index = pkt.stream_index;