From 4b425d84e9afc3cbcee587344a7852f1b36f152f Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 5 Jan 2014 13:34:56 +0100 Subject: [PATCH] Change get_effect/add_effect to take in mlt_service. We want to be able to set effects on transitions as well, but in MLT, transitions are not filters, only services. --- src/modules/opengl/filter_deconvolution_sharpen.cpp | 6 +++--- src/modules/opengl/filter_glsl_manager.cpp | 12 ++++++------ src/modules/opengl/filter_glsl_manager.h | 6 +++--- src/modules/opengl/filter_lift_gamma_gain.cpp | 6 +++--- src/modules/opengl/filter_movit_blur.cpp | 6 +++--- src/modules/opengl/filter_movit_crop.cpp | 4 ++-- src/modules/opengl/filter_movit_diffusion.cpp | 6 +++--- src/modules/opengl/filter_movit_glow.cpp | 6 +++--- src/modules/opengl/filter_movit_mirror.cpp | 4 ++-- src/modules/opengl/filter_movit_opacity.cpp | 6 +++--- src/modules/opengl/filter_movit_resample.cpp | 6 +++--- src/modules/opengl/filter_movit_resize.cpp | 6 +++--- src/modules/opengl/filter_movit_saturation.cpp | 6 +++--- src/modules/opengl/filter_movit_vignette.cpp | 6 +++--- src/modules/opengl/filter_white_balance.cpp | 6 +++--- 15 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/modules/opengl/filter_deconvolution_sharpen.cpp b/src/modules/opengl/filter_deconvolution_sharpen.cpp index 716d0252..8a33f494 100644 --- a/src/modules/opengl/filter_deconvolution_sharpen.cpp +++ b/src/modules/opengl/filter_deconvolution_sharpen.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -53,8 +53,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new DeconvolutionSharpenEffect() ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new DeconvolutionSharpenEffect() ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_glsl_manager.cpp b/src/modules/opengl/filter_glsl_manager.cpp index 35c6074e..3cf75683 100644 --- a/src/modules/opengl/filter_glsl_manager.cpp +++ b/src/modules/opengl/filter_glsl_manager.cpp @@ -349,30 +349,30 @@ void GlslManager::reset_finalized( mlt_service service ) mlt_properties_set_int( MLT_SERVICE_PROPERTIES(service), "_movit finalized", 0 ); } -Effect* GlslManager::get_effect( mlt_filter filter, mlt_frame frame ) +Effect* GlslManager::get_effect( mlt_service service, mlt_frame frame ) { Mlt::Producer producer( mlt_producer_cut_parent( mlt_frame_get_original_producer( frame ) ) ); - char *unique_id = mlt_properties_get( MLT_FILTER_PROPERTIES(filter), "_unique_id" ); + char *unique_id = mlt_properties_get( MLT_SERVICE_PROPERTIES(service), "_unique_id" ); return (Effect*) GlslManager::get_instance()->effect_list( producer ).get_data( unique_id ); } -Effect* GlslManager::add_effect( mlt_filter filter, mlt_frame frame, Effect* effect ) +Effect* GlslManager::add_effect( mlt_service service, mlt_frame frame, Effect* effect ) { Mlt::Producer producer( mlt_producer_cut_parent( mlt_frame_get_original_producer( frame ) ) ); EffectChain* chain = (EffectChain*) producer.get_data( "movit chain" ); chain->add_effect( effect ); - char *unique_id = mlt_properties_get( MLT_FILTER_PROPERTIES(filter), "_unique_id" ); + char *unique_id = mlt_properties_get( MLT_SERVICE_PROPERTIES(service), "_unique_id" ); GlslManager::get_instance()->effect_list( producer ).set( unique_id, effect, 0 ); return effect; } -Effect* GlslManager::add_effect( mlt_filter filter, mlt_frame frame, Effect* effect, Effect* input_b ) +Effect* GlslManager::add_effect( mlt_service service, mlt_frame frame, Effect* effect, Effect* input_b ) { Mlt::Producer producer( mlt_producer_cut_parent( mlt_frame_get_original_producer( frame ) ) ); EffectChain* chain = (EffectChain*) producer.get_data( "movit chain" ); chain->add_effect( effect, chain->last_added_effect(), input_b? input_b : chain->last_added_effect() ); - char *unique_id = mlt_properties_get( MLT_FILTER_PROPERTIES(filter), "_unique_id" ); + char *unique_id = mlt_properties_get( MLT_SERVICE_PROPERTIES(service), "_unique_id" ); GlslManager::get_instance()->effect_list( producer ).set( unique_id, effect, 0 ); return effect; } diff --git a/src/modules/opengl/filter_glsl_manager.h b/src/modules/opengl/filter_glsl_manager.h index 2c08f6e4..1d4a1653 100644 --- a/src/modules/opengl/filter_glsl_manager.h +++ b/src/modules/opengl/filter_glsl_manager.h @@ -87,9 +87,9 @@ public: static EffectChain* get_chain(mlt_service); static MltInput* get_input(mlt_service); static void reset_finalized(mlt_service); - static Effect* get_effect(mlt_filter, mlt_frame); - static Effect* add_effect(mlt_filter, mlt_frame, Effect*); - static Effect* add_effect(mlt_filter, mlt_frame, Effect*, Effect* input_b); + static Effect* get_effect(mlt_service, mlt_frame); + static Effect* add_effect(mlt_service, mlt_frame, Effect*); + static Effect* add_effect(mlt_service, mlt_frame, Effect*, Effect* input_b); static void render_fbo(mlt_service, void *chain, GLuint fbo, int width, int height); int render_frame_texture(mlt_service, mlt_frame, int width, int height, uint8_t **image); int render_frame_rgba(mlt_service, mlt_frame, int width, int height, uint8_t **image); diff --git a/src/modules/opengl/filter_lift_gamma_gain.cpp b/src/modules/opengl/filter_lift_gamma_gain.cpp index 7f1e0f68..015ab672 100644 --- a/src/modules/opengl/filter_lift_gamma_gain.cpp +++ b/src/modules/opengl/filter_lift_gamma_gain.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -57,8 +57,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new LiftGammaGainEffect ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new LiftGammaGainEffect ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_movit_blur.cpp b/src/modules/opengl/filter_movit_blur.cpp index 162db82a..54ccd92f 100644 --- a/src/modules/opengl/filter_movit_blur.cpp +++ b/src/modules/opengl/filter_movit_blur.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { double radius = mlt_properties_anim_get_double( properties, "radius", mlt_filter_get_position( filter, frame ), @@ -45,9 +45,9 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( !effect ) { - effect = GlslManager::add_effect( filter, frame, new BlurEffect() ); + effect = GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new BlurEffect() ); assert(effect); } } diff --git a/src/modules/opengl/filter_movit_crop.cpp b/src/modules/opengl/filter_movit_crop.cpp index 1c346460..f35fc7f2 100644 --- a/src/modules/opengl/filter_movit_crop.cpp +++ b/src/modules/opengl/filter_movit_crop.cpp @@ -77,7 +77,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_log_debug( MLT_FILTER_SERVICE(filter), "%dx%d -> %dx%d\n", *width, *height, owidth, oheight); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { bool ok = effect->set_int( "width", owidth ); ok |= effect->set_int( "height", oheight ); @@ -97,7 +97,7 @@ static mlt_frame process( mlt_filter filter, mlt_frame frame ) { mlt_producer producer = mlt_producer_cut_parent( mlt_frame_get_original_producer( frame ) ); if ( !GlslManager::init_chain( MLT_PRODUCER_SERVICE(producer) ) ) { - Effect* effect = GlslManager::add_effect( filter, frame, new PaddingEffect ); + Effect* effect = GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new PaddingEffect ); RGBATuple border_color( 0.0f, 0.0f, 0.0f, 1.0f ); bool ok = effect->set_vec4( "border_color", (float*) &border_color ); assert(ok); diff --git a/src/modules/opengl/filter_movit_diffusion.cpp b/src/modules/opengl/filter_movit_diffusion.cpp index 7c86b62f..e6341f34 100644 --- a/src/modules/opengl/filter_movit_diffusion.cpp +++ b/src/modules/opengl/filter_movit_diffusion.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -47,8 +47,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new DiffusionEffect() ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new DiffusionEffect() ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_movit_glow.cpp b/src/modules/opengl/filter_movit_glow.cpp index 61d9289b..1d849c1b 100644 --- a/src/modules/opengl/filter_movit_glow.cpp +++ b/src/modules/opengl/filter_movit_glow.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -49,8 +49,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new GlowEffect() ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new GlowEffect() ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_movit_mirror.cpp b/src/modules/opengl/filter_movit_mirror.cpp index be71ca65..55fa6376 100644 --- a/src/modules/opengl/filter_movit_mirror.cpp +++ b/src/modules/opengl/filter_movit_mirror.cpp @@ -27,9 +27,9 @@ static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( !effect ) - GlslManager::add_effect( filter, frame, new MirrorEffect() ); + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new MirrorEffect() ); } return frame; } diff --git a/src/modules/opengl/filter_movit_opacity.cpp b/src/modules/opengl/filter_movit_opacity.cpp index 377eb773..be80239d 100644 --- a/src/modules/opengl/filter_movit_opacity.cpp +++ b/src/modules/opengl/filter_movit_opacity.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -45,9 +45,9 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( !effect ) { - effect = GlslManager::add_effect( filter, frame, new MixEffect, 0 ); + effect = GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new MixEffect, 0 ); assert(effect); bool ok = effect->set_float( "strength_first", 1.0f ); ok |= effect->set_float( "strength_second", 0.0f ); diff --git a/src/modules/opengl/filter_movit_resample.cpp b/src/modules/opengl/filter_movit_resample.cpp index adb60b07..93e7b6ce 100644 --- a/src/modules/opengl/filter_movit_resample.cpp +++ b/src/modules/opengl/filter_movit_resample.cpp @@ -66,7 +66,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format error = mlt_frame_get_image( frame, image, format, &iwidth, &iheight, writable ); if ( !error ) { GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { bool ok = effect->set_int( "width", owidth ); ok |= effect->set_int( "height", oheight ); @@ -82,8 +82,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new ResampleEffect ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new ResampleEffect ); mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); return frame; diff --git a/src/modules/opengl/filter_movit_resize.cpp b/src/modules/opengl/filter_movit_resize.cpp index cc8f46cd..ef87c7e9 100644 --- a/src/modules/opengl/filter_movit_resize.cpp +++ b/src/modules/opengl/filter_movit_resize.cpp @@ -157,7 +157,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format if ( !error ) { GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { bool ok = effect->set_int( "width", *width ); ok |= effect->set_int( "height", *height ); @@ -173,8 +173,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new PaddingEffect ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new PaddingEffect ); mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); return frame; diff --git a/src/modules/opengl/filter_movit_saturation.cpp b/src/modules/opengl/filter_movit_saturation.cpp index 3376b9fb..04d1d0a0 100644 --- a/src/modules/opengl/filter_movit_saturation.cpp +++ b/src/modules/opengl/filter_movit_saturation.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -45,8 +45,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new SaturationEffect() ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new SaturationEffect() ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_movit_vignette.cpp b/src/modules/opengl/filter_movit_vignette.cpp index 2fc35d4e..589931b6 100644 --- a/src/modules/opengl/filter_movit_vignette.cpp +++ b/src/modules/opengl/filter_movit_vignette.cpp @@ -29,7 +29,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -47,8 +47,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new VignetteEffect() ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new VignetteEffect() ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); diff --git a/src/modules/opengl/filter_white_balance.cpp b/src/modules/opengl/filter_white_balance.cpp index 1c39969b..fa047761 100644 --- a/src/modules/opengl/filter_white_balance.cpp +++ b/src/modules/opengl/filter_white_balance.cpp @@ -40,7 +40,7 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format mlt_filter filter = (mlt_filter) mlt_frame_pop_service( frame ); mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); GlslManager::get_instance()->lock_service( frame ); - Effect* effect = GlslManager::get_effect( filter, frame ); + Effect* effect = GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ); if ( effect ) { mlt_position position = mlt_filter_get_position( filter, frame ); mlt_position length = mlt_filter_get_length2( filter, frame ); @@ -63,8 +63,8 @@ static int get_image( mlt_frame frame, uint8_t **image, mlt_image_format *format static mlt_frame process( mlt_filter filter, mlt_frame frame ) { if ( !mlt_frame_is_test_card( frame ) ) { - if ( !GlslManager::get_effect( filter, frame ) ) - GlslManager::add_effect( filter, frame, new WhiteBalanceEffect ); + if ( !GlslManager::get_effect( MLT_FILTER_SERVICE( filter ), frame ) ) + GlslManager::add_effect( MLT_FILTER_SERVICE( filter ), frame, new WhiteBalanceEffect ); } mlt_frame_push_service( frame, filter ); mlt_frame_push_get_image( frame, get_image ); -- 2.39.2