diff options
author | Uoti Urpala <uau@mplayer2.org> | 2012-12-16 11:02:42 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-01-13 13:25:57 +0100 |
commit | e0d9ec60ad02e09d246e8de63f4dde7b11790032 (patch) | |
tree | 99e7aeb1637972f39dc970647554ad58ca5527f3 /demux | |
parent | c1232c9a01b7a6ae70fb0f919a4a6ffec986c613 (diff) | |
download | mpv-e0d9ec60ad02e09d246e8de63f4dde7b11790032.tar.bz2 mpv-e0d9ec60ad02e09d246e8de63f4dde7b11790032.tar.xz |
demux_mkv: work around bad OutputSamplingFrequency values
Something produces corrupt Matroska files with audio tracks that have
SamplingFrequency set to 44100 and OutputSamplingFrequency to 96000,
when the correct playback rate is 44100. Add a special case for this
44100/96000 combination and override it to 44100/44100; it's unlikely
that anyone would ever want to use this 44100/96000 combination for
real in valid files.
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux_mkv.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 37b2c7e9b9..da1dd13c6e 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -503,6 +503,14 @@ static void parse_trackaudio(struct demuxer *demuxer, struct mkv_track *track, "[mkv] | + Output sampling frequency: %f\n", track->a_osfreq); } else track->a_osfreq = track->a_sfreq; + // Something creates files with osfreq incorrectly set + if (track->a_sfreq == 44100 && track->a_osfreq == 96000) { + mp_msg(MSGT_DEMUX, MSGL_WARN, "[mkv] Audio track has codec frequency " + "%.1f and playback frequency %.1f.\n[mkv] This looks wrong. " + "Assuming this file is corrupt and ignoring the latter.\n", + track->a_sfreq, track->a_osfreq); + track->a_osfreq = track->a_sfreq; + } if (audio->n_bit_depth) { track->a_bps = audio->bit_depth; mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Bit depth: %u\n", |