+ void createFrame()
+ {
+ m_videoFrame = 0;
+ // Generate a DeckLink video frame
+ if ( S_OK != m_deckLinkOutput->CreateVideoFrame( m_width, m_height,
+ m_width * 2, bmdFormat8BitYUV, bmdFrameFlagDefault, &m_videoFrame ) )
+ {
+ mlt_log_verbose( &m_consumer, "Failed to create video frame\n" );
+ stop();
+ return;
+ }
+
+ // Make the first line black for field order correction.
+ uint8_t *buffer = 0;
+ if ( S_OK == m_videoFrame->GetBytes( (void**) &buffer ) && buffer )
+ {
+ for ( int i = 0; i < m_width; i++ )
+ {
+ *buffer++ = 128;
+ *buffer++ = 16;
+ }
+ }
+ mlt_log_debug( &m_consumer, "created video frame\n" );
+ mlt_deque_push_back( m_videoFrameQ, m_videoFrame );
+ }
+