summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-06-01 19:54:34 +0200
committerwm4 <wm4@nowhere>2013-06-03 22:40:06 +0200
commit6dbedd27d53b61744d512e27bb0c3853cf6d7bba (patch)
tree338f2c5ff1f900f6593b6bc1e15b2fd48efac2e8 /demux
parentb11bd1fe5e82fb7cd9aa912c2b1c98de8704bb87 (diff)
downloadmpv-6dbedd27d53b61744d512e27bb0c3853cf6d7bba.tar.bz2
mpv-6dbedd27d53b61744d512e27bb0c3853cf6d7bba.tar.xz
demux_lavf: always set packet duration
Makes WebVTT actually work. Also simplify the logic for setting duration. Only the subtitle path uses the packet duration, so the checks for STREAM_SUB as well as the keyframe flag are redundant. Apparently duration and convergence_duration are the same thing, but convergence_duration was added as Matroska-specific hack to get a higher value range (int vs. int64_t) with high resolution Matroska timebases. For us it doesn't matter, because double floats are used for timestamps and durations.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_lavf.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index a978bc9cee..a482f736c6 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -671,11 +671,8 @@ static int demux_lavf_fill_buffer(demuxer_t *demux, demux_stream_t *dsds)
if (ts != AV_NOPTS_VALUE) {
dp->pts = ts * av_q2d(st->time_base);
priv->last_pts = dp->pts * AV_TIME_BASE;
- // always set duration for subtitles, even if AV_PKT_FLAG_KEY isn't set,
- // otherwise they will stay on screen to long if e.g. ASS is demuxed
- // from mkv
- if ((stream->type == STREAM_SUB || (pkt->flags & AV_PKT_FLAG_KEY)) &&
- pkt->convergence_duration > 0)
+ dp->duration = pkt->duration * av_q2d(st->time_base);
+ if (pkt->convergence_duration > 0)
dp->duration = pkt->convergence_duration * av_q2d(st->time_base);
}
dp->pos = demux->filepos;