lavf: fix update_initial_durations() so it handles missing durations with the initial timestamp being known.

This fixes duplicate timestamps on mp2 in ts with non seekable input.
It also fixed the fate pva demux timestamps.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-03-02 06:22:20 +01:00
parent 83c418e68e
commit 0b90db01b5
2 changed files with 6 additions and 6 deletions

View File

@ -902,17 +902,17 @@ static void update_initial_durations(AVFormatContext *s, AVStream *st, AVPacket
for(; pktl; pktl= pktl->next){
if(pktl->pkt.stream_index != pkt->stream_index)
continue;
if(pktl->pkt.pts == pktl->pkt.dts && pktl->pkt.dts == AV_NOPTS_VALUE
if(pktl->pkt.pts == pktl->pkt.dts && (pktl->pkt.dts == AV_NOPTS_VALUE || pktl->pkt.dts == st->first_dts)
&& !pktl->pkt.duration){
pktl->pkt.dts= cur_dts;
if(!st->codec->has_b_frames)
pktl->pkt.pts= cur_dts;
cur_dts += pkt->duration;
pktl->pkt.duration= pkt->duration;
}else
break;
cur_dts = pktl->pkt.dts + pktl->pkt.duration;
}
if(st->first_dts == AV_NOPTS_VALUE)
if(!pktl)
st->cur_dts= cur_dts;
}

View File

@ -1,9 +1,9 @@
#tb 0: 1/25
#tb 1: 1/90000
1, 0, 0, 2160, 384, 0x071abcc8
1, 0, 0, 2160, 384, 0x31c9aee0
1, 2160, 2160, 2160, 384, 0xa50eaa94
1, 4320, 4320, 2160, 384, 0x9e86ba0e
1, 2160, 2160, 2160, 384, 0x31c9aee0
1, 4320, 4320, 2160, 384, 0xa50eaa94
1, 6480, 6480, 2160, 384, 0x9e86ba0e
1, 8640, 8640, 2160, 384, 0x2321b800
1, 10800, 10800, 2160, 384, 0x2347afa8
1, 12960, 12960, 2160, 384, 0x0831b8d3