]> git.sesse.net Git - mlt/commitdiff
Fix to compositing/watermark; miracle/mlt shutdown cleanup
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 22 Sep 2004 10:32:29 +0000 (10:32 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 22 Sep 2004 10:32:29 +0000 (10:32 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@434 d19143bc-622f-0410-bfdd-b5b2a6649095

src/framework/mlt_factory.c
src/framework/mlt_properties.c
src/miracle/miracle.c
src/miracle/miracle_local.c
src/miracle/miracle_server.c
src/miracle/miracle_server.h
src/modules/core/filter_watermark.c
src/modules/core/transition_composite.c

index 699dca30898d3462a331bc27a0d2e1544c7f338a..ae0bade1024980e6068e2405ad62f7937f16c254 100644 (file)
@@ -75,6 +75,9 @@ int mlt_factory_init( char *prefix )
                filters = mlt_repository_init( object_list, prefix, "filters", "mlt_create_filter" );
                transitions = mlt_repository_init( object_list, prefix, "transitions", "mlt_create_transition" );
                consumers = mlt_repository_init( object_list, prefix, "consumers", "mlt_create_consumer" );
+
+               // Force a clean up when app closes
+               atexit( mlt_factory_close );
        }
 
        return 0;
index 1d13714634b051a3e815981dd76650378de08452..972ad939efa237cc49248e6950921f236a79f9ab 100644 (file)
@@ -47,7 +47,7 @@ property_list;
 /** Memory leak checks.
 */
 
-//#define _MLT_PROPERTY_CHECKS_
+#define _MLT_PROPERTY_CHECKS_
 
 #ifdef _MLT_PROPERTY_CHECKS_
 static int properties_created = 0;
index 2e098307427e70d1334e41ada410c47564c8d254..913f78552ccabd9f5abffb60bdb70b505858ecd0 100644 (file)
@@ -45,7 +45,7 @@ static miracle_server server = NULL;
 
 static void main_cleanup( )
 {
-       miracle_server_shutdown( server );
+       miracle_server_close( server );
 }
 
 /** Report usage and exit.
@@ -67,6 +67,8 @@ int main( int argc, char **argv )
        int background = 1;
        struct timespec tm = { 5, 0 };
 
+       mlt_factory_init( NULL );
+
        server = miracle_server_init( argv[ 0 ] );
 
        for ( index = 1; index < argc; index ++ )
index 9f3e706e09d45aa37d28b9da012a4364428bbf2d..3056744704179eac08e1d9b3baa231779ae6bb57 100644 (file)
@@ -548,7 +548,7 @@ static void miracle_local_close( miracle_local local )
 #ifdef linux
        //pthread_kill_other_threads_np();
        miracle_log( LOG_DEBUG, "Clean shutdown." );
-       free( local );
-       mlt_factory_close( );
+       //free( local );
+       //mlt_factory_close( );
 #endif
 }
index 50d5bf046bb147c4814ea3afd88698475bd6f7fd..c5a00eea793c7ae2a67a51b984f5d4e54b713bcf 100644 (file)
@@ -275,8 +275,21 @@ void miracle_server_shutdown( miracle_server server )
        {
                server->shutdown = 1;
                pthread_join( server->thread, NULL );
-               valerie_parser_close( server->parser );
                miracle_server_set_config( server, NULL );
+               valerie_parser_close( server->parser );
+               server->parser = NULL;
                close( server->socket );
        }
 }
+
+/** Close the server.
+*/
+
+void miracle_server_close( miracle_server server )
+{
+       if ( server != NULL )
+       {
+               miracle_server_shutdown( server );
+               free( server );
+       }
+}
index d79b98731e8101b1b48bd53dcfbe8ee97c98370c..5ed27986bbc7803cd63252ff9f20e830c002dbaa 100644 (file)
@@ -64,6 +64,7 @@ extern void miracle_server_set_port( miracle_server, int );
 extern void miracle_server_set_proxy( miracle_server, char * );
 extern int miracle_server_execute( miracle_server );
 extern void miracle_server_shutdown( miracle_server );
+extern void miracle_server_close( miracle_server );
 
 #ifdef __cplusplus
 }
index 33df73a235eb3525b16cfac419d2df6159c26df5..cfd9e82e857d9de8433484df81308344e4cebcca 100644 (file)
@@ -132,8 +132,14 @@ static int filter_get_image( mlt_frame frame, uint8_t **image, mlt_image_format
                // Get the b frame and process with composite if successful
                if ( mlt_service_get_frame( service, &b_frame, 0 ) == 0 )
                {
-                       // Set the b frame to be in the same position
+                       // Get the a and b frame properties
+                       mlt_properties a_props = mlt_frame_properties( frame );
+                       mlt_properties b_props = mlt_frame_properties( b_frame );
+
+                       // Set the b frame to be in the same position and have same consumer requirements
                        mlt_frame_set_position( b_frame, position );
+                       mlt_properties_set_double( b_props, "consumer_aspect_ratio", mlt_properties_get_double( a_props, "consumer_aspect_ratio" ) );
+                       mlt_properties_set_int( b_props, "consumer_progressive", mlt_properties_get_double( a_props, "consumer_progressive" ) );
 
                        if ( mlt_properties_get_int( properties, "reverse" ) == 0 )
                        {
@@ -148,12 +154,9 @@ static int filter_get_image( mlt_frame frame, uint8_t **image, mlt_image_format
                        }
                        else
                        {
-                               mlt_properties a_props = mlt_frame_properties( frame );
-                               mlt_properties b_props = mlt_frame_properties( b_frame );
                                mlt_transition_process( composite, b_frame, frame );
                                mlt_properties_set( a_props, "rescale.interp", "nearest" );
                                mlt_properties_set( b_props, "rescale.interp", "nearest" );
-                               mlt_properties_set_int( b_props, "consumer_aspect_ratio", mlt_properties_get_double( a_props, "consumer_aspect_ratio" ) );
                                mlt_service_apply_filters( mlt_filter_service( this ), frame, 0 );
                                error = mlt_frame_get_image( b_frame, image, format, width, height, 1 );
                                mlt_properties_set_data( b_props, "image", *image, 0, NULL, NULL );
index 4ffb3d5dd5469e765924dcd187e209a7b5c9f58b..e7376718ae172c9cf47d65d7cbd7981bf131268d 100644 (file)
@@ -573,6 +573,7 @@ static int composite_yuv( uint8_t *p_dest, int width_dest, int height_dest, uint
        {
                y_src = -y;
                height_src -= y_src;
+               y = 0;
        }
        
        // crop overlay below bottom edge of frame