diff options
author | wm4 <wm4@nowhere> | 2016-03-04 23:58:44 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-03-05 00:12:58 +0100 |
commit | cda0dc907094bcc75ac00f24f05b5a577961e47e (patch) | |
tree | 29a050c23142109d5d6cba22863d50de77ce2720 /demux | |
parent | 9972847265f760ec6d7f813750325f11f7e0077f (diff) | |
download | mpv-cda0dc907094bcc75ac00f24f05b5a577961e47e.tar.bz2 mpv-cda0dc907094bcc75ac00f24f05b5a577961e47e.tar.xz |
demux_mkv: correctly export unknown packet durations
Instead of just setting the duration to 0.
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux_mkv.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index c932b45f39..5e6de8619d 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -152,7 +152,7 @@ typedef struct mkv_index { struct block_info { uint64_t duration, discardpadding; - bool simple, keyframe; + bool simple, keyframe, duration_known; int64_t timecode; mkv_track_t *track; bstr data; @@ -2461,7 +2461,7 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info) dp->pts = current_pts + i * track->default_duration; if (stream->codec->avi_dts) MPSWAP(double, dp->pts, dp->dts); - if (i == 0) + if (i == 0 && block_info->duration_known) dp->duration = block_duration / 1e9; if (stream->type == STREAM_AUDIO) { unsigned int srate = stream->codec->samplerate; @@ -2504,6 +2504,7 @@ static int read_block_group(demuxer_t *demuxer, int64_t end, if (block->duration == EBML_UINT_INVALID) goto error; block->duration *= mkv_d->tc_scale; + block->duration_known = true; break; case MATROSKA_ID_DISCARDPADDING: |