From de52c6276ec60bf04acc809014da02af0677ce29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Sat, 8 Mar 2025 11:20:30 +0100 Subject: [PATCH] demux_mkv: set number of samples correctly for The True Audio 14-17 Data length in samples (binary, Little Endian) This has been validated with sample generated with: ffmpeg -i $(ffmpeg_fate)/lossless-audio/luckynight-partial.tak -c:a tta lucky.mka The length is correctly calculated to be 418950 for that sample. Basically this is a port of https://github.com/FFmpeg/FFmpeg/commit/af248fa1174200acb537a6ab1198bb2fed38e884 Fixes: d53d75e0807747b59b54f6febe774cd2d0f6546e --- demux/demux_mkv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 560f250130..3b142fcc63 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -2092,8 +2092,8 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track) AV_WL16(data + 6, sh_a->channels.num); AV_WL16(data + 8, sh_a->bits_per_coded_sample); AV_WL32(data + 10, track->a_osfreq); - // Bogus: last frame won't be played. - AV_WL32(data + 14, 0); + mkv_demuxer_t *mkv_d = demuxer->priv; + AV_WL32(data + 14, mkv_d->duration * track->a_osfreq); } 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