From c583b3984f290b4d27027767fc1517a905993b66 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 14 Nov 2020 22:54:33 +0100 Subject: [PATCH] Take slot size into account when calculating MPEG audio frame size --- mpegaudio/mpegaudioframe.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mpegaudio/mpegaudioframe.cpp b/mpegaudio/mpegaudioframe.cpp index 1869f5e..c7ec3c1 100644 --- a/mpegaudio/mpegaudioframe.cpp +++ b/mpegaudio/mpegaudioframe.cpp @@ -196,12 +196,13 @@ std::uint32_t MpegAudioFrame::sampleCount() const std::uint32_t MpegAudioFrame::size() const { switch (m_header & 0x60000u) { - case 0x60000u: + case 0x60000u: // layer 1 return static_cast( - ((static_cast(bitrate()) * 1024.0 / 8.0) / static_cast(samplingFrequency())) * static_cast(sampleCount()) - + static_cast(paddingSize())); - case 0x40000u: - case 0x20000u: + ((static_cast(bitrate()) * 1024.0 / 8.0) / static_cast(samplingFrequency())) * static_cast(sampleCount()) + + static_cast(paddingSize())) + * 4; + case 0x40000u: // layer 2 + case 0x20000u: // layer 3 return static_cast( ((static_cast(bitrate()) * 1024.0 / 8.0) / static_cast(samplingFrequency())) * static_cast(sampleCount()) + static_cast(paddingSize()));