From dec32162b5e31d66142be47ab92c82a7be7726fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 6 Sep 2010 10:41:05 +0000 Subject: [PATCH] One should be suspicious when subtracting "samples" from "frames". LateNoticeReceived() would have skipped two many buffers depending on the channel count. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38542 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../media_node_framework/audio/AudioProducer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/apps/mediaplayer/media_node_framework/audio/AudioProducer.cpp b/src/apps/mediaplayer/media_node_framework/audio/AudioProducer.cpp index fd17d87c67..773fd192ea 100644 --- a/src/apps/mediaplayer/media_node_framework/audio/AudioProducer.cpp +++ b/src/apps/mediaplayer/media_node_framework/audio/AudioProducer.cpp @@ -520,12 +520,15 @@ AudioProducer::LateNoticeReceived(const media_source& what, bigtime_t howMuch, SetEventLatency(fLatency + fInternalLatency); } else { + // Skip one buffer ahead in the audio data. size_t sampleSize = fOutput.format.u.raw_audio.format & media_raw_audio_format::B_AUDIO_SIZE_MASK; - size_t nSamples + size_t samplesPerBuffer = fOutput.format.u.raw_audio.buffer_size / sampleSize; - fFramesSent += nSamples; + size_t framesPerBuffer + = samplesPerBuffer / fOutput.format.u.raw_audio.channel_count; + fFramesSent += framesPerBuffer; } } }