summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-06-27 21:47:18 +0200
committerwm4 <wm4@nowhere>2015-06-27 21:47:18 +0200
commita8711001c5c14ba6b06fddcccb46a78d815d1edf (patch)
tree07fb8031cc48da0e8538ed4d6af9f28e74518bda
parentdde2a5f0e8b3e23e407fe06c585adb54f12fae0a (diff)
downloadmpv-a8711001c5c14ba6b06fddcccb46a78d815d1edf.tar.bz2
mpv-a8711001c5c14ba6b06fddcccb46a78d815d1edf.tar.xz
demux_mkv: ignore deprecated FrameRate, do not assume PAL
The "FrameRate" element is probably deprecated (it's greyed out in the "spec", and described as "Informational only" in bold). Normally files use DefaultDuration. In fact, the FrameRate field was preferred over DefaultDuration for determining framerate if present. Do not do this and rely on DefaultDuration only. Also, if no framerate is set, do not assume PAL (25 FPS). Such a fallback makes little sense and will cause more problems than it solves.
-rw-r--r--demux/demux_mkv.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 51f7d2efa3..cadb1a3a7f 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -507,10 +507,7 @@ static void parse_trackvideo(struct demuxer *demuxer, struct mkv_track *track,
struct ebml_video *video)
{
if (video->n_frame_rate) {
- track->v_frate = video->frame_rate;
- MP_VERBOSE(demuxer, "| + Frame rate: %f\n", track->v_frate);
- if (track->v_frate > 0)
- track->default_duration = 1 / track->v_frate;
+ MP_VERBOSE(demuxer, "| + Frame rate: %f (ignored)\n", video->frame_rate);
}
if (video->n_display_width) {
track->v_dwidth = video->display_width;
@@ -639,8 +636,7 @@ static void parse_trackentry(struct demuxer *demuxer,
if (entry->default_duration == 0) {
MP_VERBOSE(demuxer, "| + Default duration: 0");
} else {
- if (!track->v_frate)
- track->v_frate = 1e9 / entry->default_duration;
+ track->v_frate = 1e9 / entry->default_duration;
MP_VERBOSE(demuxer, "| + Default duration: %.3fms ( = %.3f fps)\n",
entry->default_duration / 1000000.0, track->v_frate);
}
@@ -1320,8 +1316,6 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
"CodecPrivate data (track %u).\n",
track->codec_id, track->tnum);
}
- if (track->v_frate == 0.0)
- track->v_frate = 25.0;
sh_v->fps = track->v_frate;
sh_v->disp_w = track->v_width;
sh_v->disp_h = track->v_height;