DisplayVideoFrameSync - call never returns

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

juanjot

  • Posts: 1
  • Joined: Thu Jul 08, 2021 2:21 pm
  • Real Name: Juanjo Torres

DisplayVideoFrameSync - call never returns

PostThu Jul 08, 2021 2:55 pm

I've developed a playout. For playing I use Scheduling of video frames and for seeks I use DisplayVideoFrameSync.

The playout works well. When I reach the last frame of a file, I stop the scheduling process and display last frame with DisplayVideoFrameSync. Sometimes (rarely) this call never returns leaving the playout thread frozen.

I haven't been able to reproduce this issue in my development machine so final user got me a dump.
Analyzing this dump with windbg I have:

Code: Select all
000000b0`e6dff478 00007fff`f1baf616 ntdll!ZwDeviceIoControlFile+0x14
000000b0`e6dff480 00007fff`f2c35310 KERNELBASE!DeviceIoControl+0x1c6
000000b0`e6dff4f0 00000001`8035990f kernel32!DeviceIoControlImplementation+0x80
000000b0`e6dff540 00000001`803599cf DeckLinkAPI64!DllCanUnloadNow+0x32923f
000000b0`e6dff590 00000001`80359b34 DeckLinkAPI64!DllCanUnloadNow+0x3292ff
000000b0`e6dff620 00000001`80358e1e DeckLinkAPI64!DllCanUnloadNow+0x329464
000000b0`e6dff6b0 00000001`800685ea DeckLinkAPI64!DllCanUnloadNow+0x32874e
000000b0`e6dff780 00000001`80349721 DeckLinkAPI64!DllCanUnloadNow+0x37f1a
000000b0`e6dff7e0 00000001`8003eb45 DeckLinkAPI64!DllCanUnloadNow+0x319051
000000b0`e6dff9b0 00007fff`ea1e50e8 DeckLinkAPI64!DllCanUnloadNow+0xe475
000000b0`e6dffbb0 00007fff`ea1e5958 DigiPlayRec!CDeckLinkPlayoutManager::PlayoutControlProcess+0x788 [c:\users\torr_jua\documents\projectes tv3\digiplayrec\digiplayrec\digiplayrec\decklinkplayoutmanager.cpp @ 1316]
000000b0`e6dffc80 00007fff`f2c37974 DigiPlayRec!CDeckLinkPlayoutManager::PlayoutThreadControl+0x68 [c:\users\torr_jua\documents\projectes tv3\digiplayrec\digiplayrec\digiplayrec\decklinkplayoutmanager.cpp @ 1025]
000000b0`e6dffcf0 00007fff`f5a4a2f1 kernel32!BaseThreadInitThunk+0x14
000000b0`e6dffd20 00000000`00000000 ntdll!RtlUserThreadStart+0x21


DigiPlayRec!CDeckLinkPlayoutManager::PlayoutControlProcess+0x788 frame is a call to DisplayVideoFrameSync.

Why does this happen? How does DisplayVideoFrameSync work? Is DisplayVideoFrameSync waiting forever for an event to get signalled?
Are Symbols for DeckLinkAPI64 available for further debugging?

Thank you very much for your help!

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 19 guests