diff --git a/libaegisub/audio/provider_hd.cpp b/libaegisub/audio/provider_hd.cpp index 2969b244a..e26404abc 100644 --- a/libaegisub/audio/provider_hd.cpp +++ b/libaegisub/audio/provider_hd.cpp @@ -38,7 +38,7 @@ class HDAudioProvider final : public AudioProviderWrapper { void FillBuffer(void *buf, int64_t start, int64_t count) const override { auto missing = std::min(count, start + count - decoded_samples); if (missing > 0) { - memset(static_cast(buf) + count - missing, 0, missing * bytes_per_sample); + memset(static_cast(buf) + count - missing, 0, missing * bytes_per_sample * channels); count -= missing; } @@ -69,7 +69,7 @@ public: for (int64_t i = 0; i < num_samples; i += block) { if (cancelled) break; block = std::min(block, num_samples - i); - source->GetAudio(file.write(i * bytes_per_sample, block * bytes_per_sample), i, block); + source->GetAudio(file.write(i * bytes_per_sample * channels, block * bytes_per_sample * channels), i, block); decoded_samples += block; } });