From 36d962931d4d985d3208550f0f8a7814865bdfcd Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sun, 18 Mar 2012 18:41:48 +0000 Subject: [PATCH] Eliminate overly-early rounding that resulted in the waveform renderer being significantly wrong at some zoom levels Originally committed to SVN as r6589. --- aegisub/src/audio_renderer_waveform.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aegisub/src/audio_renderer_waveform.cpp b/aegisub/src/audio_renderer_waveform.cpp index 062faf688..7304d0edf 100644 --- a/aegisub/src/audio_renderer_waveform.cpp +++ b/aegisub/src/audio_renderer_waveform.cpp @@ -81,7 +81,7 @@ void AudioWaveformRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle const AudioColorScheme *pal = &colors[style]; - int pixel_samples = (pixel_ms * provider->GetSampleRate() + 500) / 1000; + double pixel_samples = pixel_ms * provider->GetSampleRate() / 1000.0; // Fill the background dc.SetBrush(wxBrush(pal->get(0.0f))); @@ -96,7 +96,7 @@ void AudioWaveformRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle audio_buffer = new char[buffer_needed]; } - int64_t cur_sample = start * pixel_samples; + double cur_sample = start * pixel_samples; assert(provider->GetBytesPerSample() == 2); assert(provider->GetChannels() == 1); @@ -106,7 +106,7 @@ void AudioWaveformRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle for (int x = 0; x < rect.width; ++x) { - provider->GetAudio(audio_buffer, cur_sample, pixel_samples); + provider->GetAudio(audio_buffer, (int64_t)cur_sample, (int64_t)pixel_samples); cur_sample += pixel_samples; int peak_min = 0, peak_max = 0;