X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmodules%2Fdecklink%2Fconsumer_decklink.cpp;h=df9e89ae60f971b6a757509d8d3edba8b980915d;hb=2f1e4b8ac94ac6f21c77be374f164480f9d73230;hp=1d3eaab7e55c8be7bfede501e2c2cbbe3488dfe4;hpb=1476302a291c1626d155731846235ad45f7f9591;p=mlt diff --git a/src/modules/decklink/consumer_decklink.cpp b/src/modules/decklink/consumer_decklink.cpp index 1d3eaab7..df9e89ae 100644 --- a/src/modules/decklink/consumer_decklink.cpp +++ b/src/modules/decklink/consumer_decklink.cpp @@ -54,6 +54,7 @@ private: int m_isKeyer; IDeckLinkKeyer* m_deckLinkKeyer; bool m_terminate_on_pause; + uint32_t m_preroll; IDeckLinkDisplayMode* getDisplayMode() { @@ -233,6 +234,8 @@ public: return false; } + m_preroll = preroll; + // preroll frames for( i = 0; i < preroll; i++ ) ScheduleNextFrame( true ); @@ -281,7 +284,12 @@ public: { uint32_t written = 0; BMDTimeValue streamTime = m_count * frequency * m_duration / m_timescale; - + m_deckLinkOutput->GetBufferedAudioSampleFrameCount(&written); + if ( written > (m_preroll + 1) * samples ) + { + mlt_log_verbose( getConsumer(), "renderAudio: will flush %d audiosamples\n", written); + m_deckLinkOutput->FlushBufferedAudioSamples(); + }; #ifdef WIN32 m_deckLinkOutput->ScheduleAudioSamples( pcm, samples, streamTime, frequency, (unsigned long*) &written ); #else