From e66e16e691ac7bd5a70faa88259bfd9fe9ada651 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 12 Dec 2013 23:36:52 +0100 Subject: demux_lavf: fix timebase confusion This set last_pts to bogus values, which is used for relative seeks. The player usually uses absolute seeks, so this didn't matter much. --- demux/demux_lavf.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'demux/demux_lavf.c') diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index 8f9c49a618..357e173322 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -709,15 +709,10 @@ static int demux_lavf_fill_buffer(demuxer_t *demux) dp = new_demux_packet_fromdata(pkt->data, pkt->size); dp->avpacket = talloc_steal(dp, pkt); - if (pkt->pts != AV_NOPTS_VALUE) { + if (pkt->pts != AV_NOPTS_VALUE) dp->pts = pkt->pts * av_q2d(st->time_base); - priv->last_pts = dp->pts; - } - if (pkt->dts != AV_NOPTS_VALUE) { + if (pkt->dts != AV_NOPTS_VALUE) dp->dts = pkt->dts * av_q2d(st->time_base); - if (priv->last_pts == AV_NOPTS_VALUE) - priv->last_pts = pkt->dts; - } dp->duration = pkt->duration * av_q2d(st->time_base); if (pkt->convergence_duration > 0) dp->duration = pkt->convergence_duration * av_q2d(st->time_base); @@ -729,6 +724,11 @@ static int demux_lavf_fill_buffer(demuxer_t *demux) if (stream_control(demux->stream, STREAM_CTRL_GET_CURRENT_TIME, &pts) > 0) dp->stream_pts = pts; } + if (dp->pts != MP_NOPTS_VALUE) { + priv->last_pts = dp->pts * AV_TIME_BASE; + } else if (dp->dts != MP_NOPTS_VALUE) { + priv->last_pts = dp->dts * AV_TIME_BASE; + } demuxer_add_packet(demux, stream, dp); return 1; } -- cgit v1.2.3