Corrections to geometry next key and serialise
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Sat, 8 Jan 2005 12:57:36 +0000 (12:57 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Sat, 8 Jan 2005 12:57:36 +0000 (12:57 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@605 d19143bc-622f-0410-bfdd-b5b2a6649095

src/framework/mlt_geometry.c

index 2bfbe77..8dc3611 100644 (file)
@@ -442,6 +442,7 @@ int mlt_geometry_fetch( mlt_geometry this, mlt_geometry_item item, float positio
        else
        {
                memset( item, 0, sizeof( struct mlt_geometry_item_s ) );
+               item->frame = position;
                item->mix = 100;
        }
 
@@ -574,6 +575,7 @@ int mlt_geometry_prev_key( mlt_geometry this, mlt_geometry_item item, int positi
 
 char *mlt_geometry_serialise_cut( mlt_geometry this, int in, int out )
 {
+       geometry self = this->local;
        struct mlt_geometry_item_s item;
        char *ret = malloc( 1000 );
        int used = 0;
@@ -602,6 +604,14 @@ char *mlt_geometry_serialise_cut( mlt_geometry this, int in, int out )
                                if ( mlt_geometry_fetch( this, &item, item.frame ) )
                                        break;
 
+                               // If the first key is larger than the current position
+                               // then do nothing here
+                               if ( self->item->data.frame > item.frame )
+                               {
+                                       item.frame ++;
+                                       continue;
+                               }
+
                                // To ensure correct seeding, ensure all values are fixed
                                item.f[0] = 1;
                                item.f[1] = 1;