[Mlt-devel] SF.net SVN: mlt: [1043] trunk/mlt/src/modules/motion_est/ filter_autotrack_rectangle.c
Brought to you by:
ddennedy,
lilo_booter
From: <j-...@us...> - 2007-12-08 08:51:13
|
Revision: 1043 http://mlt.svn.sourceforge.net/mlt/?rev=1043&view=rev Author: j-b-m Date: 2007-12-08 00:51:09 -0800 (Sat, 08 Dec 2007) Log Message: ----------- Autotrack rectangle can now be defined using geometry="x,y:wxh" instead of having to pass it in the filter name Modified Paths: -------------- trunk/mlt/src/modules/motion_est/filter_autotrack_rectangle.c Modified: trunk/mlt/src/modules/motion_est/filter_autotrack_rectangle.c =================================================================== --- trunk/mlt/src/modules/motion_est/filter_autotrack_rectangle.c 2007-12-08 07:43:18 UTC (rev 1042) +++ trunk/mlt/src/modules/motion_est/filter_autotrack_rectangle.c 2007-12-08 08:51:09 UTC (rev 1043) @@ -129,7 +129,7 @@ mlt_properties_debug( frame_properties, "error after mlt_frame_get_image() in autotrack_rectangle", stderr ); // Get the geometry object - mlt_geometry geometry = mlt_properties_get_data(filter_properties, "geometry", NULL); + mlt_geometry geometry = mlt_properties_get_data(filter_properties, "filter_geometry", NULL); // Get the current geometry item struct mlt_geometry_item_s boundry; @@ -204,10 +204,26 @@ // Get the frame position mlt_position position = mlt_frame_get_position( frame ); - + // Get the geometry object - mlt_geometry geometry = mlt_properties_get_data(filter_properties, "geometry", NULL); + mlt_geometry geometry = mlt_properties_get_data(filter_properties, "filter_geometry", NULL); + if (geometry == NULL) { + mlt_geometry geom = mlt_geometry_init(); + char *arg = mlt_properties_get(filter_properties, "geometry"); + // Initialize with the supplied geometry + struct mlt_geometry_item_s item; + mlt_geometry_parse_item( geom, &item, arg ); + + item.frame = 0; + item.key = 1; + item.mix = 100; + + mlt_geometry_insert( geom, &item ); + mlt_properties_set_data( filter_properties, "filter_geometry", geom, 0, (mlt_destructor)mlt_geometry_close, (mlt_serialiser)mlt_geometry_serialise ); + geometry = mlt_properties_get_data(filter_properties, "filter_geometry", NULL); + } + // Get the current geometry item mlt_geometry_item geometry_item = mlt_pool_alloc( sizeof( struct mlt_geometry_item_s ) ); mlt_geometry_fetch(geometry, geometry_item, position); @@ -285,27 +301,12 @@ { this->process = filter_process; + // Initialize with the supplied geometry if ther is one + if( arg != NULL ) + mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "geometry", arg ); + else + mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "geometry", "100,100:100x100" ); - mlt_geometry geometry = mlt_geometry_init(); - - // Initialize with the supplied geometry - if( arg != NULL ) { - - struct mlt_geometry_item_s item; - - mlt_geometry_parse_item( geometry, &item, arg ); - - item.frame = 0; - item.key = 1; - item.mix = 100; - - mlt_geometry_insert( geometry, &item ); - - } - - // ... and attach it to the filter - mlt_properties_set_data( MLT_FILTER_PROPERTIES(this), "geometry", geometry, 0, (mlt_destructor)mlt_geometry_close, (mlt_serialiser)mlt_geometry_serialise ); - // create an instance of the motion_est and obscure filter mlt_filter motion_est = mlt_factory_filter( "motion_est", NULL ); if( motion_est != NULL ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |