From 971dc3b2d0bcb82c14ece5b23e090fd83c7f93fa Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Fri, 1 Oct 2021 08:13:35 +0200 Subject: [PATCH] DeckLink disp.: check for buffer underflow + fixed message for overflow --- src/video_display/decklink.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/video_display/decklink.cpp b/src/video_display/decklink.cpp index 74bf76844..d765cb60a 100644 --- a/src/video_display/decklink.cpp +++ b/src/video_display/decklink.cpp @@ -1515,6 +1515,12 @@ static void display_decklink_put_audio_frame(void *state, struct audio_frame *fr auto t0 = chrono::high_resolution_clock::now(); + uint32_t buffered = 0; + s->state[0].deckLinkOutput->GetBufferedAudioSampleFrameCount(&buffered); + if (buffered == 0) { + LOG(LOG_LEVEL_WARNING) << MOD_NAME << "audio buffer underflow!\n"; + } + if (s->low_latency) { HRESULT res = s->state[0].deckLinkOutput->WriteAudioSamplesSync(frame->data, sampleFrameCount, &sampleFramesWritten); @@ -1524,8 +1530,9 @@ static void display_decklink_put_audio_frame(void *state, struct audio_frame *fr } else { s->state[0].deckLinkOutput->ScheduleAudioSamples(frame->data, sampleFrameCount, 0, 0, &sampleFramesWritten); - if(sampleFramesWritten != sampleFrameCount) - log_msg(LOG_LEVEL_WARNING, MOD_NAME "audio buffer underflow!\n"); + if (sampleFramesWritten != sampleFrameCount) { + LOG(LOG_LEVEL_WARNING) << MOD_NAME << "audio buffer overflow!\n"; + } } LOG(LOG_LEVEL_DEBUG) << MOD_NAME "putf audio - lasted " << setprecision(2) << chrono::duration_cast>(chrono::high_resolution_clock::now() - t0).count() * 1000.0 << " ms.\n";