- // Get the brightness level
- double level = mlt_properties_get_double( MLT_FRAME_PROPERTIES( this ), "brightness" );
+ double level = 1.0;
+
+ // Use animated "level" property only if it has been set since init
+ char* level_property = mlt_properties_get( MLT_FILTER_PROPERTIES( filter ), "level" );
+ if ( level_property != NULL )
+ {
+ level = mlt_properties_anim_get_double( properties, "level", position, length );
+ }
+ else
+ {
+ // Get level using old "start,"end" mechanics
+ // Get the starting brightness level
+ level = fabs( mlt_properties_get_double( MLT_FILTER_PROPERTIES( filter ), "start" ) );
+
+ // If there is an end adjust gain to the range
+ if ( mlt_properties_get( MLT_FILTER_PROPERTIES( filter ), "end" ) != NULL )
+ {
+ // Determine the time position of this frame in the transition duration
+ double end = fabs( mlt_properties_get_double( MLT_FILTER_PROPERTIES( filter ), "end" ) );
+ level += ( end - level ) * mlt_filter_get_progress( filter, frame );
+ }
+ }