]> git.sesse.net Git - mlt/commitdiff
Change get_effect/add_effect to take in mlt_service.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 5 Jan 2014 12:34:56 +0000 (13:34 +0100)
committerDan Dennedy <dan@dennedy.org>
Mon, 6 Jan 2014 03:27:10 +0000 (19:27 -0800)
We want to be able to set effects on transitions as well, but in MLT,
transitions are not filters, only services.

15 files changed:
src/modules/opengl/filter_deconvolution_sharpen.cpp
src/modules/opengl/filter_glsl_manager.cpp
src/modules/opengl/filter_glsl_manager.h
src/modules/opengl/filter_lift_gamma_gain.cpp
src/modules/opengl/filter_movit_blur.cpp
src/modules/opengl/filter_movit_crop.cpp
src/modules/opengl/filter_movit_diffusion.cpp
src/modules/opengl/filter_movit_glow.cpp
src/modules/opengl/filter_movit_mirror.cpp
src/modules/opengl/filter_movit_opacity.cpp
src/modules/opengl/filter_movit_resample.cpp
src/modules/opengl/filter_movit_resize.cpp
src/modules/opengl/filter_movit_saturation.cpp
src/modules/opengl/filter_movit_vignette.cpp
src/modules/opengl/filter_white_balance.cpp

index 716d0252900a910865b79450e867ad9b4bea8605..8a33f4947508ef8183fcd35e1a2d2144d5751a00 100644 (file)
@@ -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 );
index 35c6074e89e05a270ff5d54be72e224159bb02c7..3cf7568347b76b605f546f1cdaf70bfe3399ab1c 100644 (file)
@@ -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;
 }
index 2c08f6e456da6da7bfab386e65b76621fa0364da..1d4a16534e912d4290d6d7e77dc5deb26ad983ff 100644 (file)
@@ -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);
index 7f1e0f685bdb528253efed7fccf031b5fc904d9e..015ab672bae941611b361bc48ce1ec09d0ef6c8e 100644 (file)
@@ -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 );
index 162db82a6bce130375b25b165321287036a92315..54ccd92f4b2262b8bec7a5ae3210c5584032d88d 100644 (file)
@@ -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);
                }
        }
index 1c346460ae69ade1d880409f904326c56bdab8e3..f35fc7f2f60ed84529f1092f17e8601688cabd8e 100644 (file)
@@ -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);
index 7c86b62f68ee7dfe706caebe14827314a3d46d5f..e6341f34bf6b23579e71c4c3378204b9e9629319 100644 (file)
@@ -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 );
index 61d9289b0e7fffea08ebf7afa15a845e38004203..1d849c1b73d2b3bbe1bd1062d5bcb337c7c24a9f 100644 (file)
@@ -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 );
index be71ca65e0244c83d7e5c580953f3f90638c1d84..55fa637667f1badec97b5beac1881ede69d38b14 100644 (file)
@@ -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;
 }
index 377eb77364feb39e04b0f735767f15f637e2ae26..be80239d76f344182a71ba3aa3ec5215d3ff2361 100644 (file)
@@ -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 );
index adb60b07cd9f0d5355de12b72c023248b1715576..93e7b6ce19d07f92a0fd2fdfdc1cc038de4916a5 100644 (file)
@@ -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;
index cc8f46cd9e3f85e852b98a5cd3e62b56f3f24073..ef87c7e9c7a6f87b4396d36ef74c053d46298860 100644 (file)
@@ -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;
index 3376b9fbaf4392be69d853485c13782ea9d6675c..04d1d0a05095df1e935201a65a3a79976140e988 100644 (file)
@@ -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 );
index 2fc35d4ec213ad36b898838fa8bcac430f63eb18..589931b60a319258902dc2dbd6c9c6a0f3c38573 100644 (file)
@@ -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 );
index 1c39969b7f1cbd3682d1e8985dfa112fd8876e4c..fa04776148ee53f80a2791d0172489626c237fd7 100644 (file)
@@ -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 );