static void create_filter( mlt_profile profile, mlt_producer producer, char *effect, int *created )
{
+ mlt_filter filter;
char *id = strdup( effect );
char *arg = strchr( id, ':' );
if ( arg != NULL )
// The swscale and avcolor_space filters require resolution as arg to test compatibility
if ( strncmp( effect, "swscale", 7 ) == 0 || strncmp( effect, "avcolo", 6 ) == 0 )
- arg = (char*) mlt_properties_get_int( MLT_PRODUCER_PROPERTIES( producer ), "meta.media.width" );
-
- mlt_filter filter = mlt_factory_filter( profile, id, arg );
- if ( filter != NULL )
+ {
+ int width = mlt_properties_get_int( MLT_PRODUCER_PROPERTIES( producer ), "meta.media.width" );
+ filter = mlt_factory_filter( profile, id, &width );
+ }
+ else
+ {
+ filter = mlt_factory_filter( profile, id, arg );
+ }
+ if ( filter )
{
mlt_properties_set_int( MLT_FILTER_PROPERTIES( filter ), "_loader", 1 );
mlt_producer_attach( producer, filter );