Patch supplied by Maksym Veremeyenko.
mlt_frame m_frame;
unsigned m_dropped;
bool m_isAudio;
mlt_frame m_frame;
unsigned m_dropped;
bool m_isAudio;
IDeckLinkKeyer* m_deckLinkKeyer;
IDeckLinkDisplayMode* getDisplayMode()
IDeckLinkKeyer* m_deckLinkKeyer;
IDeckLinkDisplayMode* getDisplayMode()
// Set the keyer
if ( m_deckLinkKeyer && ( m_isKeyer = mlt_properties_get_int( properties, "keyer" ) ) )
{
// Set the keyer
if ( m_deckLinkKeyer && ( m_isKeyer = mlt_properties_get_int( properties, "keyer" ) ) )
{
+ bool external = (m_isKeyer == 2);
double level = mlt_properties_get_double( properties, "keyer_level" );
if ( m_deckLinkKeyer->Enable( external ) != S_OK )
double level = mlt_properties_get_double( properties, "keyer_level" );
if ( m_deckLinkKeyer->Enable( external ) != S_OK )
- mlt_log_error( getConsumer(), "Failed to enable keyer\n" );
+ mlt_log_error( getConsumer(), "Failed to enable %s keyer\n",
+ external ? "external" : "internal" );
m_deckLinkKeyer->SetLevel( level <= 1 ? ( level > 0 ? 255 * level : 255 ) : 255 );
m_preroll = 0;
m_isAudio = false;
m_deckLinkKeyer->SetLevel( level <= 1 ? ( level > 0 ? 255 * level : 255 ) : 255 );
m_preroll = 0;
m_isAudio = false;
the keyer supports alpha-blending. You can not control the compositing
rectangle. Rather, the entire MLT output overlays the entire video
input. Therefore, you must use MLT's compositing services to control
the keyer supports alpha-blending. You can not control the compositing
rectangle. Rather, the entire MLT output overlays the entire video
input. Therefore, you must use MLT's compositing services to control
+ the size and position. The value 1 enables the internal keyer, the
+ value 2 enables the external keyer, and the value 0 disables it.
readonly: no
required: no
mutable: no
default: 0
minimum: 0
readonly: no
required: no
mutable: no
default: 0
minimum: 0
- maximum: 1
- widget: checkbox
- identifier: keyer_level
title: Key Opacity
- identifier: keyer_level
title: Key Opacity