]> git.sesse.net Git - mlt/commitdiff
Avoid float rounding error when calculating audio timestamp.
authorMaksym Veremeyenko <verem@m1stereo.tv>
Fri, 22 Jul 2011 21:16:13 +0000 (14:16 -0700)
committerDan Dennedy <dan@dennedy.org>
Fri, 22 Jul 2011 21:16:13 +0000 (14:16 -0700)
src/modules/decklink/consumer_decklink.cpp

index 0fb23619393e19ed92e923057a09e0eba888b080..b6b5fa59bbcaf95466be99e0293517425e804a06 100644 (file)
@@ -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 )