From: Michael Niedermayer Date: Thu, 19 Jan 2006 00:54:10 +0000 (+0000) Subject: pts fix by (Bryan Mayland / bmayland O leoninedev o com) X-Git-Tag: v0.5~13289 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d271481f1a308a36b139a03d145b2cd4e994f09f;p=platform%2Fupstream%2Flibav.git pts fix by (Bryan Mayland / bmayland O leoninedev o com) Originally committed as revision 4867 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavformat/ffm.c b/libavformat/ffm.c index 338e51e6f..db9c2c7fd 100644 --- a/libavformat/ffm.c +++ b/libavformat/ffm.c @@ -44,6 +44,7 @@ typedef struct FFMContext { /* read and write */ int first_packet; /* true if first packet, needed to set the discontinuity tag */ + int first_frame_in_packet; /* true if first frame in packet, needed to know if PTS information is valid */ int packet_size; int frame_offset; int64_t pts; @@ -347,6 +348,7 @@ static int ffm_read_data(AVFormatContext *s, get_be16(pb); /* PACKET_ID */ fill_size = get_be16(pb); ffm->pts = get_be64(pb); + ffm->first_frame_in_packet = 1; frame_offset = get_be16(pb); get_buffer(pb, ffm->packet, ffm->packet_size - FFM_HEADER_SIZE); ffm->packet_end = ffm->packet + (ffm->packet_size - FFM_HEADER_SIZE - fill_size); @@ -614,7 +616,11 @@ static int ffm_read_packet(AVFormatContext *s, AVPacket *pkt) av_free_packet(pkt); return -EAGAIN; } - pkt->pts = ffm->pts; + if (ffm->first_frame_in_packet) + { + pkt->pts = ffm->pts; + ffm->first_frame_in_packet = 0; + } pkt->duration = duration; break; }