diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2013-03-24 15:52:28 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2013-04-04 14:04:51 +0200 |
commit | 83affcde5124601a9dc6ad149bf5dbdb569fc10b (patch) | |
tree | 2e0e6236599df142f4119314e34a575a4af066db | |
parent | cdafcf838cc7f559b67863183ad1283c97a9ae70 (diff) | |
download | ffmpeg-83affcde5124601a9dc6ad149bf5dbdb569fc10b.tar.gz |
lavc: use packet duration for subtitles if necessary.
Fix trac ticket #2397.
-rw-r--r-- | libavcodec/utils.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 064b473c86..76f7e8e142 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2229,6 +2229,14 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, ret = avctx->codec->decode(avctx, sub, got_sub_ptr, &pkt_recoded); av_assert1((ret >= 0) >= !!*got_sub_ptr && !!*got_sub_ptr >= !!sub->num_rects); + + if (sub->num_rects && !sub->end_display_time && avpkt->duration && + avctx->pkt_timebase.num) { + AVRational ms = { 1, 1000 }; + sub->end_display_time = av_rescale_q(avpkt->duration, + avctx->pkt_timebase, ms); + } + if (tmp.data != pkt_recoded.data) { // did we recode? /* prevent from destroying side data from original packet */ pkt_recoded.side_data = NULL; |