I am outputting 1080i50 UYVY video through a DeckLink Quad 2 and cannot get the correct transmission rate.

The frames look OK individually, just jerky due to slow output. Using what I think are the correct parameters I am logging 80ms between calls to the output callback. I am expecting one interlaced frame per 40 milliseconds (i.e. 1/25 second).

This is true in a big production project from which I distilled a simple test harness to show the key points. This behaves the same way. These are the key steps of my code - error checking and intermediate fluff removed.

HRESULT DeckLinkFrameDispatchCompleteCallback::ScheduledFrameCompleted( IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompletionResult result ){ if (! stopRequest) // A flag variable set when the main loop detects a keypress to halt the program { ScheduleNextFrame(completedFrame);

Just confirming, the number of frames required for preroll varies based on the device in use. Pre-4k architecture devices require a minimum of three frames provided for preroll, while 4k architecture devices (incl. the DeckLink Quad 2) require a minimum of two frames.

In your original case, it would also be possible to diagnose this situation by inspecting the BMDOutputFrameCompletionResult [1] parameter in the ScheduledFrameCompleted [2] callback, which would indicate that the frames provided for playback with insufficient preroll will be completed as late or dropped, as the frames cannot be filled in time for the transfer to the device.

Please note one common issue encountered when using the SDK samples as reference, is prerolling the same frame multiple times. This is suitable in the SDK SignalGenerator / TestPattern sample applications as the content of the video frames is static.

In normal applications, if the same frame is prerolled multiple times, and the frame buffer is modified (e.g. in the context of ScheduledFrameCompleted, before the frame is scheduled for playback), this will lead to tearing artifacts in the output video, as the buffer is modified while being output by the device.

I recommend always prerolling distinct IDeckLinkVideoFrame instances, in order to avoid these issues.

we are displaying YUV file with dynamic data. Each frame has different data.Our input has 100 frames. We are reading from PC and diplaying YUV file of 4k resolution 422 10bit.Do we need to create "distinct IDeckLinkVideoFrame instances, in order to avoid these issues"?If yes then with default allocator we can create only 35 frames for 4K resolution. To check the above behaviour, we created the chunk of 35 frame buffers in the same code.we could iterate only 2 times. In the second iteration after 64th frame the first frame is repeating. Please let us know your opinion on the same.

If we use custom allocator we can create 100 IDeckLinkVideoFrame instances however after 64th frame first frame data will be repeated.Please let us know your opinion on this.