]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
muxer libav: do more precise pts/dts rescale
authorJaroslav Kysela <perex@perex.cz>
Thu, 24 Aug 2017 12:30:51 +0000 (14:30 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 24 Aug 2017 12:31:00 +0000 (14:31 +0200)
src/muxer/muxer_libav.c

index 1841be55b46128b7ad51f4fd5c55fd685dc77361..da6b6cff655dc7374a7282e4c3cb14dfe2f1992d 100644 (file)
@@ -499,9 +499,12 @@ lav_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
 
     packet.stream_index = st->index;
  
-    packet.pts      = av_rescale_q(pkt->pkt_pts     , mpeg_tc, st->time_base);
-    packet.dts      = av_rescale_q(pkt->pkt_dts     , mpeg_tc, st->time_base);
-    packet.duration = av_rescale_q(pkt->pkt_duration, mpeg_tc, st->time_base);
+    packet.pts      = av_rescale_q_rnd(pkt->pkt_pts, mpeg_tc, st->time_base,
+                                       AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+    packet.dts      = av_rescale_q_rnd(pkt->pkt_dts, mpeg_tc, st->time_base,
+                                       AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+    packet.duration = av_rescale_q_rnd(pkt->pkt_duration, mpeg_tc, st->time_base,
+                                       AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
 
     if(!SCT_ISVIDEO(pkt->pkt_type) || pkt->v.pkt_frametype < PKT_P_FRAME)
       packet.flags |= AV_PKT_FLAG_KEY;