1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-26 09:02:38 +00:00

demux_mkv: add hack to fix opus gapless behavior

I think the conclusion is that AV_PKT_DATA_SKIP_SAMPLES is misdesigned
(at least for some formats), and an alternative mechanism using
durations would be better. (Combining it with a proper timebase would
keep sample-accuracy.)
This commit is contained in:
wm4 2016-02-21 16:25:02 +01:00
parent 3ca0208566
commit 943f76e6ce

View File

@ -1679,6 +1679,12 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
AV_WL32(data + 10, track->a_osfreq); AV_WL32(data + 10, track->a_osfreq);
// Bogus: last frame won't be played. // Bogus: last frame won't be played.
AV_WL32(data + 14, 0); AV_WL32(data + 14, 0);
} else if (strcmp(codec, "opus")) {
// Hardcode the rate libavcodec's opus decoder outputs, so that
// AV_PKT_DATA_SKIP_SAMPLES actually works. The Matroska header only
// has an arbitrary "input" samplerate, while libavcodec is fixed to
// output 48000.
sh_a->samplerate = 48000;
} }
// Some files have broken default DefaultDuration set, which will lead to // Some files have broken default DefaultDuration set, which will lead to