From f2e592578d5cfe98d03ebb4c9a911c350ff341d0 Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Fri, 22 Jul 2011 14:16:13 -0700 Subject: [PATCH] Avoid float rounding error when calculating audio timestamp. --- src/modules/decklink/consumer_decklink.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/decklink/consumer_decklink.cpp b/src/modules/decklink/consumer_decklink.cpp index 0fb23619..b6b5fa59 100644 --- a/src/modules/decklink/consumer_decklink.cpp +++ b/src/modules/decklink/consumer_decklink.cpp @@ -280,11 +280,12 @@ public: if ( !mlt_frame_get_audio( frame, (void**) &pcm, &format, &frequency, &m_channels, &samples ) ) { uint32_t written = 0; + BMDTimeValue streamTime = m_count * frequency * m_duration / m_timescale; #ifdef WIN32 - m_deckLinkOutput->ScheduleAudioSamples( pcm, samples, m_count * frequency / m_fps, frequency, (unsigned long*) &written ); + m_deckLinkOutput->ScheduleAudioSamples( pcm, samples, streamTime, frequency, (unsigned long*) &written ); #else - m_deckLinkOutput->ScheduleAudioSamples( pcm, samples, m_count * frequency / m_fps, frequency, &written ); + m_deckLinkOutput->ScheduleAudioSamples( pcm, samples, streamTime, frequency, &written ); #endif if ( written != (uint32_t) samples ) -- 2.39.2