lavc: set AVSubtitle.pts if possible.
authorNicolas George <nicolas.george@normalesup.org>
Sun, 9 Sep 2012 14:00:06 +0000 (16:00 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Sat, 15 Sep 2012 13:58:42 +0000 (15:58 +0200)
If the packet has a PTS and the corresponding time base is known,
set the pts field of the decoded subtitle structure before the
call to the decoder. The decoder is still allowed to change the
PTS if necessary.

libavcodec/utils.c

index 99e012a..30b0d21 100644 (file)
@@ -1701,6 +1701,9 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
     avctx->pkt = avpkt;
     *got_sub_ptr = 0;
     avcodec_get_subtitle_defaults(sub);
+    if (avctx->pkt_timebase.den && avpkt->pts != AV_NOPTS_VALUE)
+        sub->pts = av_rescale_q(avpkt->pts,
+                                avctx->pkt_timebase, AV_TIME_BASE_Q);
     ret = avctx->codec->decode(avctx, sub, got_sub_ptr, avpkt);
     if (*got_sub_ptr)
         avctx->frame_number++;