mirror of
https://github.com/mpv-player/mpv
synced 2024-12-26 00:42:57 +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:
parent
3ca0208566
commit
943f76e6ce
@ -1679,6 +1679,12 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
|
||||
AV_WL32(data + 10, track->a_osfreq);
|
||||
// Bogus: last frame won't be played.
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user