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: d53d75e080
This commit is contained in:
Kacper Michajłow
2025-03-08 21:28:58 +01:00
parent a0d164ccaa
commit de52c6276e
+2 -2
View File
@@ -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