DisplayVideoFrameSync vs ScheduleVideoFrame

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

Jonas Geduldig

  • Posts: 13
  • Joined: Tue Jun 17, 2014 7:04 pm

DisplayVideoFrameSync vs ScheduleVideoFrame

PostWed May 03, 2017 3:30 pm

What is the difference between these two methods? I would like to write frames to the video output at the frame rate of the card. Which method should I use?
Offline

Waqqas Sharif

Blackmagic Design

  • Posts: 21
  • Joined: Tue Oct 04, 2016 1:47 am

Re: DisplayVideoFrameSync vs ScheduleVideoFrame

PostThu May 04, 2017 1:19 am

Hello Jonas,

IDeckLinkOutput::DisplayVideoFrameSync and IDeckLinkOutput::ScheduleVideoFrame will both cause video frames to be output at the next clock interval for the specified video mode.

The primary difference is that DisplayVideoFrameSync will write/overwrite the next frame for video output, while scheduled playback (ScheduleVideoFrame / IDeckLinkVideoOutputCallback::ScheduledFrameCompleted) will push the next video frame onto a queue to be output (making it possible to insulate the video output from application latency by increasing the preroll).

If the application were using scheduled playback, the frame result in ScheduledFrameCompleted provides a means to identify if a frame was displayed late or dropped, and to correct for this situation.

If it fits the structure of your application, scheduled playback is the preferred playback mechanism, if not, it is perfectly reasonable to use DisplayVideoFrameSync.

Importantly, the minimum latency with both methods is 1 frame.

Hope this helps.

Regards
Waqqas
Offline

Sayit Belet

  • Posts: 1
  • Joined: Thu Jan 11, 2018 9:23 am

Re: DisplayVideoFrameSync vs ScheduleVideoFrame

PostThu Jan 11, 2018 9:50 am

Hi, I also use DisplayVideoFrameSync and WriteAudioSamplesSync methods.

I'm using an internal timer for frame duration implemented as absolute clock with
Code: Select all
clock_nanosleep


My question is: is there a way to application to wait for next clock interval for the specified video mode and immediately return, as in BlueFish SDK's
Code: Select all
wait_output_video_synch(.., ..);
method.
Which causes the application wait next frame interval (I believe this is implemented as in h/w that generates interrupt when vertical retrace happens).

And also: is my method optimal (clock_nanosleep to wait for 1 frame_duration) ?

My system is Ubuntu Linux Server and I don't use Scheduled output for various reasons.

Thanks.
Offline

Cameron Nichols

Blackmagic Design

  • Posts: 47
  • Joined: Mon Sep 04, 2017 4:05 am

Re: DisplayVideoFrameSync vs ScheduleVideoFrame

PostMon Jan 15, 2018 11:32 pm

Hi Sayit,

The DeckLinkAPI has been developed with non-blocking function calls. As such, there are no wait functions in the DeckLinkAPI.

I suggest instead of calling DisplayVideoFrameSync/WriteAudioSamplesSync, use the ScheduleVideoFrame/ScheduleAudioSamples [1][2]. With scheduled video/audio, you can then implement ScheduledFrameCompleted callback [3] and provide a blocking thread in your application.

Regards
Cameron

Refs (DeckLink SDK manual)
[1] 2.5.3.11 IDeckLinkOutput::ScheduleVideoFrame method
[2] 2.5.3.19 IDeckLinkOutput::ScheduleAudioSamples method
[3] 2.5.6.1 IDeckLinkVideoOutputCallback:: ScheduledFrameCompleted method

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 2 guests