From c1b0498c1fd347ffcf47c8962d39c1d0ce4640a7 Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 6 Jun 2010 13:59:44 +0000 Subject: demuxer.c: Make ds_get_next_pts work for the first packet of a stream git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31338 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demuxer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 71e75e2efb..767542b250 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -801,7 +801,9 @@ int ds_get_packet_sub(demux_stream_t *ds, unsigned char **start) double ds_get_next_pts(demux_stream_t *ds) { demuxer_t *demux = ds->demuxer; - while (!ds->first) { + // if we have not read from the "current" packet, consider it + // as the next, otherwise we never get the pts for the first packet. + while (!ds->first && (!ds->current || ds->buffer_pos)) { if (demux->audio->packs >= MAX_PACKS || demux->audio->bytes >= MAX_PACK_BYTES) { mp_tmsg(MSGT_DEMUXER, MSGL_ERR, "\nToo many audio packets in the buffer: (%d in %d bytes).\n", @@ -819,6 +821,9 @@ double ds_get_next_pts(demux_stream_t *ds) if (!demux_fill_buffer(demux, ds)) return MP_NOPTS_VALUE; } + // take pts from "current" if we never read from it. + if (ds->current && !ds->buffer_pos) + return ds->current->pts; return ds->first->pts; } -- cgit v1.2.3