mirror of
https://github.com/mpv-player/mpv
synced 2025-03-18 17:40:30 +00:00
Fix movie duration calculation in case when TimecodeScale element comes after
Duration element. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19815 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
840a77bd06
commit
3f1e7dd9a8
@ -663,6 +663,8 @@ demux_mkv_read_info (demuxer_t *demuxer)
|
||||
stream_t *s = demuxer->stream;
|
||||
uint64_t length, l;
|
||||
int il;
|
||||
uint64_t tc_scale = 1000000;
|
||||
long double duration;
|
||||
|
||||
length = ebml_read_length (s, NULL);
|
||||
while (length > 0)
|
||||
@ -674,9 +676,9 @@ demux_mkv_read_info (demuxer_t *demuxer)
|
||||
uint64_t num = ebml_read_uint (s, &l);
|
||||
if (num == EBML_UINT_INVALID)
|
||||
return 1;
|
||||
mkv_d->tc_scale = num;
|
||||
tc_scale = num;
|
||||
mp_msg (MSGT_DEMUX, MSGL_V, "[mkv] | + timecode scale: %"PRIu64"\n",
|
||||
mkv_d->tc_scale);
|
||||
tc_scale);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -685,9 +687,9 @@ demux_mkv_read_info (demuxer_t *demuxer)
|
||||
long double num = ebml_read_float (s, &l);
|
||||
if (num == EBML_FLOAT_INVALID)
|
||||
return 1;
|
||||
mkv_d->duration = num * mkv_d->tc_scale / 1000000000.0;
|
||||
mp_msg (MSGT_DEMUX, MSGL_V, "[mkv] | + duration: %.3fs\n",
|
||||
mkv_d->duration);
|
||||
duration = num;
|
||||
mp_msg (MSGT_DEMUX, MSGL_V, "[mkv] | + duration: %.3Lfs\n",
|
||||
duration * tc_scale / 1000000000.0);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -697,6 +699,8 @@ demux_mkv_read_info (demuxer_t *demuxer)
|
||||
}
|
||||
length -= l + il;
|
||||
}
|
||||
mkv_d->tc_scale = tc_scale;
|
||||
mkv_d->duration = duration * tc_scale / 1000000000.0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user