avformat/apngdec: set pts to AV_NOPTS_VALUE
authorMarton Balint <cus@passwd.hu>
Thu, 28 Jun 2018 19:07:30 +0000 (21:07 +0200)
committerMarton Balint <cus@passwd.hu>
Mon, 2 Jul 2018 09:58:08 +0000 (11:58 +0200)
And let the generic code figure out the proper PTS. This is needed because apng
does not provide seek functions, but after a generic seek (e.g. to file start)
timestamps are not reset which causes broken timestamps when looping apngs,
like in ticket #6121.

Signed-off-by: Marton Balint <cus@passwd.hu>
libavformat/apngdec.c

index ffff037..f9a97e5 100644 (file)
@@ -44,7 +44,6 @@ typedef struct APNGDemuxContext {
     int max_fps;
     int default_fps;
 
-    int64_t pkt_pts;
     int pkt_duration;
 
     int is_key_frame;
@@ -390,9 +389,8 @@ static int apng_read_packet(AVFormatContext *s, AVPacket *pkt)
 
         if (ctx->is_key_frame)
             pkt->flags |= AV_PKT_FLAG_KEY;
-        pkt->pts = ctx->pkt_pts;
+        pkt->pts = pkt->dts = AV_NOPTS_VALUE;
         pkt->duration = ctx->pkt_duration;
-        ctx->pkt_pts += ctx->pkt_duration;
         return ret;
     case MKTAG('I', 'E', 'N', 'D'):
         ctx->cur_loop++;